《C语言案例实践》学生成绩管理系统.doc_第1页
《C语言案例实践》学生成绩管理系统.doc_第2页
《C语言案例实践》学生成绩管理系统.doc_第3页
《C语言案例实践》学生成绩管理系统.doc_第4页
《C语言案例实践》学生成绩管理系统.doc_第5页
免费预览已结束,剩余22页可下载查看

下载本文档

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

文档简介

常熟理工学院2016年春季学期C语言案例实践报告题 目:学生成绩管理系统设计学 号:092715217姓 名:梁伟指导教师:赵秀兰日 期:2016.05.10目录主要包含下列内容:(1)系统分析:包括设计题目、设计内容以及系统功能需求分析;(2)系统设计:包括总体设计(主要功能模块的划分)及详细设计(各功能模块的算法设计以及对应的流程图);(3)系统实现:包括使用的所有变量、自定义函数、结构体的说明,以及完整源程序清单,关键代码应加注释。(4)系统运行:包括系统操作使用的简单说明,使用测试数据运行的结果。(5)总结:包括课程设计过程中的学习体会与收获,出现的问题和解决的方法,没有完成的部分及原因,对C项目实践课程的认识以及自己的建议等内容。目录正 文41.系统需求分析42.系统总体设计53.详细设计74.系统测试105.软件使用说明书13总结14附录:部分原程序代码17正文随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展要高效率的把内部活动有机的组织起来,就必须建立自身特点相适应的管理信息系统。本组设计的是一个关于学生信息管理的数据库系统,通过这个系统,管理员可以简捷方便的对学生信息进行增加、删除、修改等功能,而用户也可以通过这个系统对学生信息进行查询等功能。1.系统需求分析1.1需求概述:(1)学生信息录入功能;(2)学生信息浏览功能;(3)学生信息查询(或排序)功能;(4)学生信息删除功能;(5)学生信息修改功能;1.2 需求说明:(1)学生信息包括姓名学号和成绩,并且要求学生号不重复。(2)学生信息的显示要求有一定的规范格式。 (3)对学生信息应能够分别按学号及按姓名两种方式进行查询,要求能返回所有符合条件的学生的信息。(4)对学生信息的修改应逐个地进行,在一个学生的信息的更改不影响其他的学生记录。(5)所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并要求在此过程中能尽可能地兼容用户使用过程中的异常情况。2. 系统总体设计一、编写目的根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案,并写出书面文档总体设计说明书,为下一步进行详细设计做准备。二、总体设计1.功能划分该系统可以按功能进行模块划分,如图1所示。 学生信息管理系统信息输入信息浏览信息查询信息修改信息删除按编号查询按姓名查询菜单选择 图1 系统模块图其中:(1) 菜单选择模块完成用户命令的接受,此模块也是学生信息管理的入口,用户所要进行的各种操作均需在此模块中进行选择,并进而调用其他模块实现相应的功能。(2) 信息输入模块完成学生信息的输入功能,输入信息包括姓名学号和成绩。(3) 信息浏览模块完成已录入学生信息的显示。(4) 信息查询模块完成学生信息的查询,查询时对应有按编号查询和按姓名查询两种方式。(5) 信息修改模块完成学生信息的修改功能。(6) 信息删除功能模块完成学生信息的删除功能。2.数据结构本系统中主要的数据结构就是学生的信息,包含姓名学号和成绩,在处理过程中各项可以作为一个学生的不同属性来进行处理。3.程序流程系统的执行应从功能菜单选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如图2所示:开始菜单选择输入?浏览?查询?修改?否否删除?信息输入信息浏览信息查询信息修改信息删除是是是是是结束否否否 图2 程序流程图3.详细设计1.数据结构(1)性别:emum Sexmale,female;(2)学历:enum Educationhigh,junior,college,master,doctor;(3)日期: Struct Date int year; int month; int day; ;(4)学生信息:Struct Info char num5; /*学生号*/ char name8; /*姓名*/ enum Sex sex; /*性别*/ struct Date birthday; /*出生年月*/ enum Education education; /*学历*/ char duty8; /*职务*/ double wage; /*工资*/ char addr12; /*地址*/ char phone8; /*电话*/; 2.各个功能模块的处理流程对应于总体设计时的系统模块图,各个功能模块的处理流程如下:(1)信息输入模块 输入三个学生信息以初始化系统; 读入学生信息;(2)信息浏览模块 依次输出学生信息;(3)信息查询模块 while(继续查询) if(按编号查询) 读入查询的学生编号; 顺序读出一个学生的信息; if(该学生信息的编号符合条件) 输出该学生的信息; else if(按姓名查询) 读入查询的学生姓名; 顺序读出一个学生的信息; if(该学生信息的姓名符合条件) 输出该学生的信息; else 提示输入不合适; 提示是否继续查询; (4)信息修改模版 while (继续修改) 提示并读入待修改的学生的编号; 顺序读出一个学生的信息; if (该学生信息的编号符合条件) 将学生的信息进行修改; 显示修改后所有学生的信息; (5)信息删除模块 while (继续删除) 提示并读入待删除的学生号; 查找是否有符合条件的学生记录; if (有符合条件的记录) while (所有学生信息未读完) 读出下一条记录; if (此条记录不是待删除记录) 删除该学生信息记录; else 提示没有符合条件的记录存在; (7) 信息排序模块 if(按姓名排序) 将第i个学生姓名和他的下一个学生姓名作对比 通过对比大小将学生信息交换依次排序; else if(按学号排序) 将第i个学生学号和他的下一个学生学号作对比 通过对比大小将学生信息交换依次排序; else if(按成绩排序) 将第i个学生学号和他的下一个学生学号作对比 通过对比大小将学生信息交换依次排序; 打印排序后的学生信息;4.系统测试一、设置测试数据根据以下几个列子分析测试:1. 录入:姓名tom 学号0001 成绩982. 录入:姓名lili 学号0002 成绩563. 录入:姓名alin 学号0003 成绩742.显示所有学生的信息。3.增加一个学生的信息姓名john 学号0004 成绩88。4.删除学生号为0002的学生信息。5.将alin学号的信息由0003改为0005。6.查找学号为0001的学生信息。7.将所有学生的信息按成绩排序。8.退出。二、测试结果及分析(1) 学生信息录入分析图如图1所示:(2)学生信息系统菜单界面如图2所示:(3)显示学生信息如图3所示(4)学生信息录入图如图4所示:(5)学生信息删除如图5所示(6)学生信息修改图如图6所示:(7)学生信息查找图如图7所示:(8)学生信息排序图如图8所示:5.软件使用说明书(1)根据正确的提示安装软件。(2)Intel486以上系列、AMD K6 以上系列等PC台式机和便携式电脑都可运行。 (3) 打开该程序系统,浏览菜单,根据需要选择功能,进行各项操作。操作如下:输入三名学生信息以初始化程序根据菜单提示输入需要的信息即可完成指令。当信息输入正确,进入你所需要的菜单程序中:学生信息:显示姓名、学号、成绩。设计总结 在本系统的开发过程中,由于组是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对学生信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。通过开发这个系统,我组掌握了的项目基本开发过程,用到的知识巩固了我组对C语言的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。附录:部分源程序代码#include /写入头文件#include #include #include #include #include typedef struct STU /建立链表 char name10; char num10; int grade;st; typedef struct node st data; struct node *next;node;node* jianli(); /函数定义 int se(); void xianshi(node *head);void zengjia(node *head);node* shanchu(node *head);void xiugai(node *head);void chazhao(node *head);void paixu(node *head);node* jianli() /建立函数 int i; node *he,*tail,*p; he=tail=NULL; printf(*nt学生管理系统初始化n*nnn请先输入3位学生的有效信息:n); for(i=0;inext=NULL; printf(请输入第%d位学生的信息n,i+1); scanf(%s %s %d,,p-data.num,&p-data.grade); while(atoi(p-data.num)=0|,p-data.num,&p-data.grade); if(he=NULL) he=p; else tail-next=p; tail=p; p=he; system(cls);printf(*nt学生管理系统初始化n*nnnn); while(p!=NULL) printf(姓名:%s 学号:%s 分数:%dn,,p-data.num,p-data.grade); p=p-next;printf(已录入三个基础学生信息,按任意键进入学生管理系统菜单n);getch();return he;void main() /主函数入口 int a; node *head;system(color 2e);head=jianli();dosystem(cls); a=se();switch(a) /输入选择 case 1:xianshi(head);break; case 2:zengjia(head);break; case 3:head=shanchu(head);break; case 4:xiugai(head);break; case 5:chazhao(head);break; case 6:paixu(head);break; case 7:exit(0);break;while(1);int se() /菜单界面 int i,t; char s10; char *menu=*学生管理系统*nn,1:显示学生信息n,2:增加学生信息n,3:删除学生信息n,4:修改学生信息n,5:查找学生信息n,6:排序学生信息n,7:exitnn,*n;for(i=0;i9;i+)printf(%s,menui);doprintf(请输入数字命令:);scanf(%s,s);t=atoi(s);while(t7);return t;void xianshi(node *head) /显示学生信息函数 node *p;system(cls); p=head; printf(*学生管理系统*nn); while(p!=NULL) printf(姓名:%s 学号:%s 分数:%dn,,p-data.num,p-data.grade); p=p-next;getch();void zengjia(node *head) /增加学生信息函数node *p,*tail,*t;system(cls); p=head; printf(*学生管理系统*nn); while(p!=NULL) tail=p;p=p-next; p=(node *)malloc(sizeof(node); p-next=NULL; printf(请输入新增学生的学号:); scanf(%s,p-data.num); while(atoi(p-data.num)=0) system(cls); printf(*学生管理系统*nn); printf(您输入的学号有误,请重新输入!); printf(请输入新增学生的学号:); scanf(%s,p-data.num); t=head; while(t!=NULL) if(atoi(p-data.num)=atoi(t-data.num) t=head; system(cls); printf(*学生管理系统*nn学生的学号已被使用,请重新输入学号!n); printf(请输入新增学生的学号:); scanf(%s,p-data.num); continue; t=t-next; printf(请输入该学生的名字、分数n); scanf(%s %d,,&p-data.grade); tail-next=p; tail=p; p=head; system(cls); p=head; printf(*学生管理系统*nn); while(p!=NULL) printf(姓名:%s 学号:%s 分数:%dn,,p-data.num,p-data.grade); p=p-next;printf(n按任意键返回n); getch();node* shanchu(node *head) /删除学生信息函数char d10; node *p,*t,*flag=NULL;system(cls); printf(*学生管理系统*nn); printf(请输入需要删除学生的学号:); scanf(%s,d); t=head;while(strcmp(d,t-data.num)!=0&t-next!=NULL)flag=t; t=t-next;if(strcmp(d,t-data.num)=0) if(strcmp(d,head-data.num)=0) p=head;head=head-next;free(p); else flag-next=t-next; free(t); else printf(没有搜索到需要删除的学生信息,请核对后再输入); getch();p=head;system(cls); printf(*学生管理系统*nn); while(p!=NULL) printf(姓名:%s 学号:%s 分数:%dn,,p-data.num,p-data.grade); p=p-next;printf(n按任意键返回n); getch();return(head); void xiugai(node *head) /修改学生信息函数 int d,m,flag;char c10,n10,ex;node *p; p=head; dosystem(cls); printf(*学生管理系统*nn); printf(按姓名查找需要修改的学生信息输入1,按学号查找需要修改的学生信息输入2t); scanf(%s,c);while(atoi(c)!=1&atoi(c)!=2) printf(输入的指令有误,请重新输入n); printf(按姓名查找需要修改的学生信息输入1,按学号查找需要修改的学生信息输入2t); scanf(%s,c);if(atoi(c)=1)printf(请输入需要修改学生的姓名:); scanf(%s,n);m=strcmp(n,);while(m!=0&p-next!=NULL) p=p-next;m=strcmp(n,); if(m=0) printf(n姓名:%s 学号:%s 分数:%dn,,p-data.num,p-data.grade); flag=1; else printf(没有搜索到需要修改的学生信息,请核对后再输入n); flag=0; if(atoi(c)=2)printf(请输入需要修改学生的学号:); scanf(%d,&d);while(d!=atoi(p-data.num)&p-next!=NULL) p=p-next; if(d=atoi(p-data.num) printf(n姓名:%s 学号:%s 分数:%dn,,p-data.num,p-data.grade); flag=1; else printf(没有搜索到需要修改的学生信息,请核对后再输入n); flag=0; if(flag=1) printf(请重新输入该学生的名字、学号、分数n); scanf(%s %s %d,,p-data.num,&p-data.grade);printf(姓名:%s 学号:%s 分数:%dn,,p-data.num,p-data.grade);printf(n修改成功!n还需修改学生信息请按1,退出请按任意键:n); ex=getchar();ex=getchar();else printf(还需删除学生信息输入1,退出请按任意键:n); ex=getchar();ex=getchar();while(ex=1);void chazhao(node *head) /查找学生信息函数 int c,d,m;char ex,n10;node *p; p=head; dosystem(cls); printf(*学生管理系统*nn);printf(按姓名查找输入1,按学号查找输入2t); scanf(%d,&c);while(c!=1&c!=2) printf(输入的指令有误,请重新输入); printf(按姓名查找输入1,按学号查找输入2t); scanf(%d,&c);if(c=1)printf(请输入需要查找学生的姓名:); scanf(%s,n);m=strcmp(n,);while(m!=0&p-next!=NULL) p=p-next;m=strcmp(n,); if(m=0) printf(nnn); printf(姓名:%s 学号:%s 分数:%dn,,p-data.num,p-data.grade); else printf(没有搜索到需要查找的学生信息,请核对后再输入); if(c=2)printf(请输入需要查找学生的学号:); scanf(%d,&d);while(d!=atoi(p-data.num)&p-next!=NULL) p=p-next; if(d=atoi(p-data.num) printf(nnn); printf(姓名:%s 学号:%s 分数:%dn,,p-data.num,p-data.grade); else printf(没有搜索到需要查找的学生信息,请核对后再输入); p=head; printf(还需查询请按1,退出请按任意键:n); ex=getchar(); ex=getchar();while(ex=1);void paixu(node *head) /排序学生信息函数int c,d;char min10; node *p,*q,*x;st t;p=head;system(cls);

温馨提示

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

评论

0/150

提交评论