C语言课程设计学生成绩管理系统,DOC_第1页
C语言课程设计学生成绩管理系统,DOC_第2页
免费预览已结束,剩余21页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、欢迎阅读欢迎阅读信息技术工程学院C 语言课程设计报告题目:学生成绩管理系统(student achievement managemensystem目录FI一设计目的3!二课程设计的内容3三课程设计的要求与数据4四课程设计应完成的工作4五总体设计(包含几大功能模块)5六详细设计66.1各个模块的功能和实现66.2流程图7(管理员模式流程图)7(来宾模式流程图)88七调试分析(各模块测试结果)97.1源代码.97.2各模块测试结果.24八总结29九参考资料30一设计目的 I通过本课程设计巩固C C 语言程序设计课程的教学成果,深入理解结构 体、指针、链表、动态分配内存和文件操作的等C C 程序设计

2、中的中高级技术,通过课程设计的综合训练, 培养学生实际分析问题、编程和动手能力、提高学生利用 C C 语言进行程序设计的能力,初步培养良好的编程习惯和编程风格,初步学习程序的文档的撰写方法。课程设计的内容欢迎阅读欢迎阅读通过 C C 语言程序系统,设计一个可以对学生的成绩信息进行管理的程序,其中学生的信息可以包括:学号、各科目的成绩的平均分排序等,其功能 可以包括学生成绩的输入、输出、查询、排序、删除、统计、退出等。三课程设计的要求与数据1 1、用 C C 语言实现系统;2 2、 对学生信息( (包括学号、姓名、语文、数学、英语、平均分) )进行管理, ,包括学生成绩的信息输入、输出、查询、删

3、除、排序、统计、退出、显示,以及整个程序的切换登录模式和修改管理员的信息3 3、学生信息包括:、每一条记录包括一个学生的学号、姓名、3 3 门课成绩(2)(2)、成绩信息录入功能:( (成绩信息用文件保存,可以一次完成若干条记 录的输入。) )、成绩信息显示浏览功能:完成全部学生记录的显示。I、4、查询功能:完成按姓名查找学生记录,并显示。(5)(5)、成绩信息的删除:按学号进行删除某学生的成绩. .(6)(6)、排序功能:按学生平均成绩进行排序。(7)(7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应 尽可能清晰美观!四课程设计应完成的工作(1)(1)编写算法;(2)(2)

4、算法测试,并有具体的测试结果和结果分析;(3)(3)撰写课程设计报告。内容包括:欢迎阅读1)1)封面扉页欢迎阅读2 2)设计任务书3 3)目录4 4)总体设计方案(包括流程图)5 5)使用说明及运行实例(包括界面)6 6)成员设计内容简介7 7)项目源程序代码(注意注释的使用)8 8)指导教师评语五总体设计(包含几大功能模块)1 1、 成绩录入功能2 2、 成绩输出功能3 3、 成绩查询功能4 4、 删除模块5 5、 排序功能6 6、 统计功能| |7 7、 退出系统六详细设计6.1各个模块的功能和实现(1 1)整个成绩管理系统设计分为9 9 个模块:1 1输入学生成绩2 2删除学生成绩3 3

5、查询学生成绩欢迎阅读欢迎阅读4 4修改学生成绩5.5. 排序学生成绩6 6保存记录7.7.显示所有8 8退出系统9 9修改管理员信息(2 2)(主要函数的功能)1 1主函数 main()main():定义学生结构体数组,调用录入,统计等函数对成绩表 进行处理。广 1 12 2输入数据函数 input()input():输入学号、成绩。3.3. 排序函数 sort()sort():对总成绩或者平均成绩,进行排序,按从高到低或 者从低到高。4.4. 显示数据函数 displaydisplay。:显示各个学生的总成绩5.5. 新增数据函数 insert()insert():增加学生学生记录。6 6删

6、除数据函数 del()del():由于各种原因,删除某些同学的成绩、学号等。7.7.平均值函数 averageaverage。:求各个同学总成绩的平均值。8.8.查询数据函数 qur():qur():查询学生的信息。9 9保存数据函数 save()save():再一次打开界面是,仍有上次所找的讯息。10.10.退出系统函数 exit()exit():当要退出整个系统时。6.2流程图(管理员模式流程图)j rT |开始欢迎阅读输出菜单/I欢迎阅读#in clude#in clude#in clude #in clude#defi ne HEADER2 学号#defi ne FORMAT %s #

7、defineDATAp-data.num,p_,p-data.mgrade,p-data.egrade,p-data.cgrade,p-data.total,p-data.ave intsaveflag=0;typedef un sig ned short WORD;struct stude ntchar num10;char n ame15;int mgrade;int egrade;int cgrade;int total;float ave;typedef struct nodestruct stude nt data;struct node *n ext; Node,

8、*Li nk; void menu ()time_t now;now=time(NULL);printf(”1学生成绩管理系统n);prin tf(n ”);prin tf(* n)prin tf(* n);prin tf(*1输入成绩2删除成绩*n);prin tf(* n);prin tf(*3查询成绩4修改成绩*n);prin tf(*n);prin tf(*5排序成绩6保存记录*n);prin tf(* n);prin tf(*7显示所有0退出系统*n);prin tf(* n);printf(* n)printf(*8切换登录模式9修改管理员信息*n);printf(* n)prin

9、 tf(n请你选择操作命令前的的数字(09):);姓名数学英语C语言总分平均分n%s%d%d%d%d%.2fn输出菜单1切换登录1程序欢迎阅读(来宾模式流程图)根据菜单,选择程序结束排序欢迎阅读欢迎阅读int me nu2()int select;time_t now; now=time(NULL); system(cls); /清屏prin tf(nprintf(”学生成绩管理系统n);prin tf(n ”);prin tf(n请你选择操作命令前的数字(04):);return 0;void prin theader()prin tf(HEADER2);void prin tdata(No

10、de *pp)Node *p;p=pp;prin tf(FORMAT,DATA); ivoid Wron g()prin tf(nnnn*错误:输入不合法!*an);getch();void Nofin d()printf(n没有该学生!n”);Node* locate(Link l,char findmess,char nameornum)Node *r;if(strcmp( nameornum, nu m)=0)r=l-n ext;while(r)printf(”*n);printf(”*1查询成绩2排序成绩_ *n);printf(”*n);printf(”*3显示所有0退出系统 i*n

11、);printf(”*n);printf(”* n)i prin tf(*4切换登录模式*n);printf(”*n);printf(”*n);学生模式nnn);欢迎阅读欢迎阅读if(strcmp(r-data .nu m,fi ndmess)=O)return r;r=r-n ext;else if(strcmp( nameor nu m, name)=0)r=l-n ext;while(r)if(strcmp(r-data .n ame,fi ndmess)=0)return r;r=r-n ext;return 0;void stri ngin put(char*t, in t le n

12、s,char* no tice)char n225;doprintf(no tice);scan f(%s, n);if(strle n(n )le ns)printf(n超出宽度!!n”);while(strle n(n )le ns);strcpy(t, n);int nu mberi nput(char *no tice)int t=0;doprintf(no tice);scan f(%d, &t);if(t100|t100|tn ext;if(!p)prin tf(n目前无学生成绩记录!n);欢迎阅读欢迎阅读getch();return;prin tf(nn);prin th

13、eader();while(p)prin tdata(p);p=p-next;/移至下一个结点void Add(L ink l)/printf(增加学生记录模块n);system(PAUSE);Node *p,*r,*s;char ch,flag=0,nu m10;r=l;system(cls);Disp(l);/先打印已有的学生信息while(r- next!=NULL)r=r-next;/将只指针移至链表末尾,准备添加记录while(1)/一次可输入条记录,直至输入的学号我0的记录节点添加操作s=l-n ext;while(1)stringinput(num,10,学号(按0退出):);f

14、lag=0;if(strcmp( num,0)=0)return;J I .s=l-n ext;while(s)/查询学号是否存在,若存在则要求重新输入if(strcmp(s-data. nu m, nu m)=0)flag=1;break;s=s-n ext;if(flag=1)/提示用户是否重新输入getchar(); printf(=学号s已存在,是否重新输入?(y/n)a:,num); scan f(%c,&ch);if(ch=y|ch=Y)con ti nue;欢迎阅读欢迎阅读elsereturn ;elsebreak;p=(Node *)malloc(sizeof(Node

15、);strcpy(p-data.num,num); 将字符串mun拷贝至U p-data.num中stri ngin put(p-data .n ame,15,name:);p-data.cgrade=numberinput(c语言0-100:);p-data.mgrade=numberinput(数学0-100:);p-data.egrade=numberinput(英语0-100:);p-data.total=p-data.cgrade+p-data.mgrade+p-data.egrade; p-data.ave=(float)(p-data.total/3);p- next=NULL;

16、while(r- next!=NULL)r=r-n ext;r-n ext=p;saveflag=1;void Del(Li nk l)/ printf(”删除学生记录模块n);system(PAUSE);int sel;Node *p,*r;char fin dmess20;if(!l- next)system(cls);printf(n=暂无学生记录!n);getch();return;system(cls);Disp(l);printf(n1通过学号删除2通过姓名删除n);printf(请选择1,2);scan f(%d, &sel);if(sel=1)stringinput(f

17、indmess,10,请输入学号:);p=locate(l,fi ndmess, nu m);if(P)r=l;while(r- n ext!=p)欢迎阅读欢迎阅读r=r-n ext;r-n ext=p-n ext;free(p);/释放内存空间printf(n删除成功!n);saveflag=1;elseNofi nd();else if(sel=2)stringinput(findmess,15,请输入学生姓名:);p=locate(l,fi ndmess, name);if(p)r=l;while(r- n ext!=p)r=r-n ext;r-n ext=p-n ext;free(p)

18、;printf(n删除成功!!n);saveflag=1;elseNofi nd();elseWron g();J I .getch();void Qur(L ink l)int select;char search in put20;Node *p;system(cls);if(!l- next)printf(n暂无学生记录!n);return;printf(n=1通过学号查找=2通过姓名查找n); printf(”请选择12:);scan f(%d, &select);if(select=1)stringinput(searchinput,10,请输入要查找的学号:); p=loc

19、ate(l,search in put, nu m);if(p)欢迎阅读欢迎阅读pri ntheader();prin tdata(p);elseNofi nd();else if(select=2)stringinput(searchinput,15,请输入学生姓名:); p=locate(l,search in put, name);if(p)prin theader();-. _ . I1prin tdata(p);elseNofi nd();elseWron g();system(PAUSE);void Modify(Li nk l)Node *p;char fin dmess20;i

20、f(!l- next)system(cls);printf(n没有该学生记录!n);getch(); return;system(cls);printf(修改学生记录);Disp(l);stringinput(findmess,10,请输入学号:);p=locate(l,fi ndmess, nu m);if(p)printf(”学号:s,n,p-data.num);printf(姓名:%s,);stringinput(,15,输入新的姓名:);printf(c语言:%d,p-data.cgrade);p-data.cgrade=numberinpu

21、t(c语言0100:);printf(数学:%d,p-data.mgrade);p-data.mgrade=numberinput(数学0100:);欢迎阅读欢迎阅读printf(英语:%d,p-data.egrade);p-data.egrade=numberinput(英语0100:);p-data.total=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=(float)(p-data.total)/3;printf(n=修改成功!);saveflag=1;elseNofi nd();getch();void Sort(Link

22、 l)Li nk ll;Node *p,*rr,*s;int i=0;system(cls);if(l- next=NULL)printf(n暂无学生记录!n);return;ll=(Node*)malloc(sizeof(Node); 用于创建新的节点ll- next=NULL;printf(当前状态:n);Disp(l);system(PAUSE); Ip=l-n ext;while(p)s=(Node*)malloc(sizeof(Node);s-data=p-data;s- next=NULL;rr=ll;while(rr- n ext!=NULL &rr-n ext-data

23、.total=p-data.total)rr=rr- n ext;if(rr-n ext=NULL)rr-n ext=s;欢迎阅读s-n ext=rr- n ext;rr-n ext=s;p=p-n ext;l-n ext=ll-n ext; p=l-n ext; while(p!=NULL) i+; p=p-n ext;printf(n*Disp(l);saveflag=1;printf(n*排序完成*n);system(PAUSE);void Save(L ink l)printf(保存模块n);system(PAUSE);FILE *fp;Node *p;int coun t=0;fp=

24、fope n( stude nt.txt,wb);p=l-n ext;while(p)if(fwrite(p,sizeof(Node),1,fp)=1)p=p-n ext;coun t+;elsebreak;if(cou nt0)printf(nnnnn保存完毕,当前共有%d名学生记录saveflag=0;elseprintf(空文件,保存失败!!n);fclose(fp);/关闭文件else,co unt);欢迎阅读欢迎阅读欢迎阅读getch();int logi n()FILE *fp1,*fp2;int state;char str120,str220,str_z20,str_m7;if

25、(fp1= fope n(admi n. txt,rb)=NULL)printf(本系统无管理员,请创建!nn请输入管理员账号:);scan f(%s,str_z);printf(请设置一个六位数密码:”);fp2=fope n(admi n. txt,wb);fprin tf(fp2,%s%c,str_z,n);fprin tf(fp2,%s%c,str_m,);fclose(fp2);fp仁fope n(admi n. txt,rb);fsca nf(fp1,%s,str1);fsca nf(fp1,%s,str2);fclose(fp1);while(1)printf(请选择你的登录方式

26、:nn);printf(1.管理员模式0.来宾模式n);printf(请选择:(01);scan f(%d, &state);if(state=0)return 0;else if(state=1)printf(请输入账号:);sca nf(%s,str_z);if (strcmp(str1,str_z)=0&strcmp(str2,str_m)=0)return 1;elseprintf(账号或密码错误!an);system(PAUSE);system(cls);elseprintf(输入不合法!an);exit(0);欢迎阅读void Modify_admi n()FILE

27、 *fp;char str_z20,str_m7=; fp=fope n(admi n. txt,wb); printf(”请输入管理员账号:); sca nf(%s,str_z,n);printf(请输入密码:);fprin tf(fp,%s%c,str_z,n);fprin tf(fp,%s%c,str_m,);fclose(fp);printf(管理员信息更新完毕!an);getch();int mai n()Li nk L;FILE *fp;int select,State=O;char ch,admi n20,admin_p20;int coun t=0;Node *p,*r;sys

28、tem(color 0A);L=(Node*)malloc(sizeof(Node);L- next=NULL;r=L;fp=fope n( stude nt.txt,ab+);Loop:State=logi n();while(!feof(fp)p=(Node*)malloc(sizeof(Node);if(fread(p,sizeof(Node),1,fp)=1)p- next=NULL;r-n ext=p;r=p;coun t+;fclose(fp);if(State=1)欢迎阅读欢迎阅读欢迎阅读while(1)system(cls);printf(n管理员模式nn);menu();p=

29、r;scan f(%d, &select);if(select=0)if(saveflag=1)getchar();printf(n记录已修改,是否保存当时记录?scan f(%c,&ch);if(ch=y|ch=Y)Save(L);printf(谢谢您的使用!!n);break;switch(select)case 1:Add(L);break; 增加模块case 2:Del(L);break; 删除记录case 3:Qur(L);break; 查询模块case 4:Modify(L);break; 修改模块case 5:Sort(L);break; 排序模块case 6:S

30、ave(L);break; 保存成绩case 7:Disp(L);system(PAUSE);break; 显示成绩case 8:system(cls);goto Loop;case 9:Modify_adm in() ;break;default:Wr on g();getch();break;elsewhile(1)system(cls);menu 2();scan f(%d, &select);if(select=0)printf(谢谢您的使用! !n);exit(1);(y/n):);欢迎阅读欢迎阅读switch(select)case 1:Qur(L);break;case 2:Sort(L);break;case 3:Disp(L);system(PAUSE);break;case 4:system(cls);goto Loop; default:Wr on g();getch();break;return 0;7.2各模块测试结果创1” X_- 建 管理员模(% J( 厂“.厂块主X XJt i产、 X|;1界

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论