欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c语言课程设计———学生成绩管理系统(12页).doc

    • 资源ID:35382287       资源大小:156.50KB        全文页数:13页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言课程设计———学生成绩管理系统(12页).doc

    -c语言课程设计学生成绩管理系统-第 13 页C语言学生成绩管理系统程序 学院 计算机(软件)学院 班级 信管1002班 成员 陈昊 日期 2011-9-6 C可视化程序设计报告一.设计题目学生成绩管理系统二、课题的任务:1、 所有记录保存在一个数据文件中;2、 具备记录添加功能;3、 查询功能(如按学号查询成绩等);4、 计算统计功能(如统计某门课程的平均程序);5、 排序功能(如按成绩排序);6、 统计并显示信息功能;三课程设计目的了解软件工程中的一些系统分析,模块分析,代码设计的概念,利用visual c+实现学生成绩管理系统的录入、查询、删除、统计等基本操作,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等知识。通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境。四、成员承担的任务:陈梁:完成下面子程序的编写:a:主函数的编译b:定位指针的Locate()函数的编译,与调试。c:主菜单函数的编译,及其它外部函数的编译,与调试。 d: 任务分配,规定变量符号,及变量的初始化。 e:程序的组装及调试。:完成下面子程序的编写: a:统计数据函数的编译。 b::查找学生记录函数的编译。 c:增加学生记录的函数的编译。 陈俊: 完成下面子程序的编写:a:删除函数的编译b:修改函数的编译c:排序函数的编译陈昊:完成下面子程序的编写:a:显示函数的编译。b:欢迎界面的制作。c:保存函数的编译五、程序流程图保存学生资料排序学生资料统计学生资料件显示学生资料录修改学生资料录查询学生资料录删除学生资料录创建文件输入学生资料主程序获取帮组信息退出管理系统六.系统源代码#include "stdio.h" #include "stdlib.h" #include "string.h" int shoudsave=0; /定义一个全局变量 struct student char num11;/学号 char name20;/姓名 char sex4; /性别 int cgrade; /c语言成绩 int mgrade; /数学成绩 int egrade; /英语成绩 int totle; /总分 int ave; /平均分 char neartime10;/最近更新时间 typedef struct node /声明新的结构体类型Node struct student data; struct node *next; Node,*Link; void welcome()/欢迎界面 printf(" *n"); printf(" *欢 迎 使 用*n"); printf(" *河南理工大学大学学生成绩管理系统 *n"); printf(" *n"); printf(" 本系统由计算机学院 信管1002班nttt倾情奉献n"); printf("n"); printf(" 愿我们的努力n"); printf(" 能为您的学习工作带来方便n"); printf(" 您的支持将是我们不断创新的动力n"); void menu() /主菜单 printf("t*n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMM 1<输入学生资料> 2<删除学生资料> MMM *n"); printf("t* MMM 3<查询学生资料> 4<修改学生资料> MMM *n"); printf("t* MMM 5<显示学生资料> 6<统计学生成绩> MMM *n"); printf("t* MMM 7<排序学生成绩> 8<保存学生资料> MMM *n"); printf("t* MMM 9<菜单导航> 0<退出系统> MMM *n"); printf("t* MMM MMM *n"); printf("t* MMM MMM *n"); printf("t* MMM * MMM *n"); printf("t* MMM i 欢迎使用河南理工大学大学学生成绩管理系统i MMM *n"); printf("t* MMM * MMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t* MMM 出品人:梦幻小组 | 辅导老师:于金霞 MMM *n"); printf("t* MMM 组长:陈梁 | 梦幻组合 MMM *n"); printf("t* MMM 组员:陈梁 陈昊 陈俊 成就梦幻品质 MMM *n"); printf("t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *n"); printf("t*n"); void printstart() printf("-n"); void Wrong() printf("n对不起!你输入的信息有误!请重新输入!n"); void Nofind() printf(" _n"); printf("nt!提示:没有找到该学生!n"); printf(" _n"); printf("n"); void printc() / 本函数用于输出中文 printf(" 学号t 姓名 性别 英语 数学 C语言 总分 平均分n"); void printe(Node *p)/本函数用于输出英文 printf("%-12s%st%st%dt %dt %dt %dt %dn",p->data.num,p->data.name,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);/输出成绩 Node* Locate(Link l,char findmess,char nameornum) /该函数用于定位链表中符合要求的接点,并返回该指针 Node *r; if(strcmp(nameornum,"num")=0) /按学号查询 r=l->next; while(r!=NULL) if(strcmp(r->data.num,findmess)=0)/将输入学号与已有学号对比 return r; /返回地址 r=r->next; else if(strcmp(nameornum,"name")=0) /按姓名查询将输入姓名与已有姓名对比 r=l->next; while(r!=NULL) if(strcmp(r->data.name,findmess)=0) return r; /返回地址 r=r->next; return 0; void Add(Link l) /增加学生 Node *p,*r,*s; /定义Node型指针 char num11; r=l; s=l->next; while(r->next!=NULL) r=r->next; /将指针置于最末尾 while(1) printf("请您输入学号(以'0'返回上一级菜单:)"); scanf("%s",num); if(strcmp(num,"0")=0) break; while(s) if(strcmp(s->data.num,num)=0)/将新输入学号与已有学号对比 printf("!提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!n",num); printstart(); printc(); printe(s); printstart(); printf("n"); return; s=s->next;/指向下一个地址 p=(Node *)malloc(sizeof(Node);/在内存中分配长度与node相同的连续空间用于存储新数据 strcpy(p->data.num,num); printf("请你输入姓名:"); scanf("%s",p->data.name); getchar(); printf("请你输入性别:"); scanf("%s",p->data.sex); getchar(); printf("请你输入c语言成绩:"); scanf("%d",&p->data.cgrade); getchar(); printf("请你输入数学成绩:"); scanf("%d",&p->data.mgrade); getchar(); printf("请你输入英语成绩:"); scanf("%d",&p->data.egrade); getchar(); p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade; /求总分 p->data.ave=p->data.totle / 3;/信息输入已经完成 p->next=NULL; r->next=p; r=p; shoudsave=1; void Qur(Link l) /查询学生 int sel; char findmess20; Node *p; if(!l->next)/当l->next=NULL时成立 printf("n*>提示:没有资料可以查询!n"); return; printf("n*>1按学号查找n*>2按姓名查找n"); scanf("%d",&sel); if(sel=1)/学号 printf("请你输入要查找的学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) printf("tttt查找结果n"); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /姓名 printf("请你输入要查找的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) printf("tttt查找结果n"); printstart(); printc(); printe(p); printstart(); else Nofind(); else Wrong(); void Del(Link l) /删除函数 int sel; Node *p,*r; char findmess20; if(!l->next) printf("n*>提示:没有资料可以删除!n"); return; printf("n*>1按学号删除n*>2按姓名删除n"); scanf("%d",&sel); if(sel=1) printf("请你输入要删除的学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf("n*>提示:该学生已经成功删除!n"); printf("tttt请按任意键返回。n"); getchar(); shoudsave=1; else Nofind(); else if(sel=2) printf("请你输入要删除的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf("n*>提示:该学生已经成功删除!n"); shoudsave=1; else Nofind(); else Wrong(); void Modify(Link l) /修改函数模块 Node *p; char findmess20; if(!l->next) printf("n*>提示:没有资料可以修改!n"); return; printf("请你输入要修改的学生学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); void printstart1(); if(p) printf("请你输入新学号(原来是%s):",p->data.num); scanf("%s",p->data.num); printf("请你输入新姓名(原来是%s):",p->data.name); scanf("%s",p->data.name); getchar(); printf("请你输入新性别(原来是%s):",p->data.sex); scanf("%s",p->data.sex); printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade); scanf("%d",&p->data.cgrade); getchar(); printf("请你输入新的数学成绩(原来是%d分):",p->data.mgrade); scanf("%d",&p->data.mgrade); getchar(); printf("请你输入新的英语成绩(原来是%d分):",p->data.egrade); scanf("%d",&p->data.egrade); p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade; p->data.ave=p->data.totle/3; printf("n*>提示:资料修改成功!n"); shoudsave=1; else Nofind(); void Disp(Link l)/显示函数模块 int count=0; Node *p; p=l->next; if(!p) printf("n*>提示:没有资料可以显示!n"); return; printf("tttt显示结果n"); printstart(); printc(); printf("n"); while(p) printe(p); p=p->next; printstart(); printf("n"); void Tongji(Link l) Node *pm,*pe,*pc,*pt,*pa; /用于指向分数最高的接点 Node *r=l->next; if(!r) printf("n*>提示:没有资料可以统计!n"); return ; pm=pe=pc=pt=pa=r; while(r!=NULL) if(r->data.cgrade>=pc->data.cgrade) pc=r; if(r->data.mgrade>=pm->data.mgrade) pm=r; if(r->data.egrade>=pe->data.egrade) pe=r; if(r->data.totle>=pt->data.totle) pt=r; if(r->data.ave>=pa->data.ave) pa=r; r=r->next; printf("-统计结果-n"); printf("*总分最高者:t%s %d分n",pt->data.name,pt->data.totle); printf("*平均分最高者:t%s %d分n",pa->data.name,pa->data.ave); printf("*英语最高者:t%s %d分n",pe->data.name,pe->data.egrade); printf("*数学最高者:t%s %d分n",pm->data.name,pm->data.mgrade); printf("*c语言最高者:t%s %d分n",pc->data.name,pc->data.cgrade); printstart(); void Sort(Link l) Link ll; Node *p,*rr,*s; ll=(Link)malloc(sizeof(Node); /用于做新的连表 ll->next=NULL; if(l->next=NULL) printf("n*>提示:没有资料可以排序!n"); return ; p=l->next; while(p) s=(Node*)malloc(sizeof(Node); /新建接点用于保存信息 s->data=p->data; s->next=NULL; rr=ll; while(rr->next!=NULL && rr->next->data.totle>=p->data.totle) rr=rr->next; if(rr->next=NULL) rr->next=s; else s->next=rr->next; rr->next=s; p=p->next; free(l); l->next=ll->next; printf("n*>提示:排序已经完成!n"); void Save(Link l) FILE* fp; Node *p; int flag=1,count=0; fp=fopen("c:student","wb"); if(fp=NULL) printf("n*>提示:重新打开文件时发生错误!n"); exit(1); p=l->next; while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p->next; count+; else flag=0; break; if(flag) printf("n*>提示:文件保存成功.(有%d条记录已经保存.)n",count); shoudsave=0; fclose(fp); void help() printf("欢迎进入河南理工大学学生成绩管理系统菜单导航ntt我们将竭诚为您服务n"); printf("以下是各菜单功能简介:"); printf("1.<输入>:此功能用于录入新生学号,性别,及各科成绩。n"); printf("2.<删除>:用于注销离校学生资料。n"); printf("3.<查询>:此功能下设两个选项,分别用于学号查询和姓名查询。n"); printf("4.<修改>;用来改动已录入的学生信息。n"); printf("5.<显示>:用来显示所有学生信息。n"); printf("6.<统计>:选出总成绩第一,及单科第一的学生n"); printf("7.<排序>:用来对学生成绩进行排序,但不显示。n"); printf("8.<保存>:用于存储新录入的学生信息,在每次操作最后必须保存。n"); printf("如您人有疑问请联系我们"); printf("tttt请按任意键返回。n"); getchar(); void main() Link l;/链表 FILE *fp; /文件指针 int sel; char ch; char jian; int count=0; Node *p,*r; welcome(); printf("nnttttttt请按任意键继续n"); getchar(); printf("tt*"); printf("tttt 学生成绩管理系统n"); printf("tt*"); l=(Node*)malloc(sizeof(Node); l->next=NULL; r=l; fp=fopen("C:student","rb"); if(fp=NULL) printf("n*>提示:文件还不存在,是否创建?(y/n)n"); scanf("%c",&jian); if(jian='y'|jian='Y') fp=fopen("C:student","wb"); else exit(0); printf("n*>提示:文件已经打开,正在导入记录.n"); while(!feof(fp) p=(Node*)malloc(sizeof(Node); if(fread(p,sizeof(Node),1,fp) /将文件的内容放入接点中 p->next=NULL; r->next=p; r=p; /将该接点挂入连中 count+; fclose(fp); /关闭文件 printf("n*>提示:记录导入完毕,共导入%d条记录.n",count); while(1) menu(); printf("请你选择操作:"); scanf("%d",&sel); if(sel=0) if(shoudsave=1) getchar(); printf("n*>提示:资料已经改动,是否将改动保存到文件中(y/n)?n"); scanf("%c",&ch); if(ch='y'|ch='Y') Save(l); printf("n*>提示:你已经退出系统,再见!n"); break; switch(sel) case 1:Add(l);break; /增加学生 case 2:Del(l);break;/删除学生 case 3:Qur(l);break;/查询学生 case 4:Modify(l);break;/修改学生 case 5:Disp(l);break;/显示学生 case 6:Tongji(l);break;/统计学生 case 7:Sort(l);break;/排序学生 case 8:Save(l);break;/保存学生 case 9:help();break; default: Wrong();getchar();break;

    注意事项

    本文(c语言课程设计———学生成绩管理系统(12页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开