C语言课程设计-学生成绩管理系统.doc

上传人:来看看 文档编号:5014239 上传时间:2020-01-28 格式:DOC 页数:33 大小:489.50KB
返回 下载 相关 举报
C语言课程设计-学生成绩管理系统.doc_第1页
第1页 / 共33页
C语言课程设计-学生成绩管理系统.doc_第2页
第2页 / 共33页
C语言课程设计-学生成绩管理系统.doc_第3页
第3页 / 共33页
C语言课程设计-学生成绩管理系统.doc_第4页
第4页 / 共33页
C语言课程设计-学生成绩管理系统.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《C语言课程设计-学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计-学生成绩管理系统.doc(33页珍藏版)》请在三一文库上搜索。

1、中国海洋大学青岛学院C语言课程设计报告书题 目学生成绩管理系统学生姓名指导教师学 院专业班级1 组内分工姓名主要任务占系统比例系统主菜单 删除学生信息 主函数30%录入学生信息 修改学生信息24%查询 排序24%排序 统计24%目 录1 前言12 需求分析33 模块设计图34 NS流程图清单45 存储结构及函数说明56 课程设计结果67 实践心得体会7IIC语言课程设计报告1 前言1.1 课程设计目的学生成绩管理是一个学校不可缺少的部分,它的内容对于学校的管理者和学生以及学生家长来说都至关重要,所以一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。学生成绩管理系统对学校加

2、强学生成绩管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生成绩数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。已不能适应时代的发展。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。例:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够

3、极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。因此,开发设计这样一套学生成绩管理软件成为很有必要的事情。该学生成绩管理系统采用C语言开发研制,针对学生成绩及其数据特点,可以全面实现对学生成绩的录入、查询、修改、删除和统计等功能的计算机管理。它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。1.2课程设计过程 分析程序的主要作用并写出需求分析; 确定组内分工并给出全局变量及结构体; 写代码并画出N-S图; 组合并调试代码,做出相应的修

4、改; 完成文档;为了方便数据的读取与保存,我们采用外部文件来进行数据保存能实现学生信息数据的维护。1.3课程设计目标 建立学生成绩信息管理系统,采用计算机对学生成绩信息进行管理,进一步提高学校现代化水平。帮助广大成绩信息管理者提高工作效率、减少工作时间,实现学生及其家长信息查询工作流程的系统化、公平化、规范化和自动化,也为广大在教师提供便利快捷的成绩录入功能。为了保证系统能够长期、安全、稳定、可靠、高效的运行,本课题将达到以下几个目的:(1)系统处理的准确性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够

5、满足高校对信息处理的需求。(2)系统处理的及时性由于学生非常关心自己的信息正确与否以便及时接受来自学校的学习成绩信息,学生成绩信息管理功能对于整个系统的功能和性能完成举足轻重。在系统开发过程中,必须采用一定的方法保证系统的准确性。(3)系统的保密性学生成绩信息是属于个人的隐私,所以系统在开发时,应该充分考虑系统的保密性,以保证学生的隐私权。(4)系统的开放性和可扩充性学生成绩信息管理系统在开发过程中,应该充分考虑以后的可扩充性。例如学生成绩信息管理的方式的改变,学生成绩信息的需求也会不断的更新和完善。2 需求分析一个学校需要管理学生的基本信息和各门功课的考试成绩,希望当用到时直接从计算机中输出

6、,从而减轻管理人员的负担,也使学生的信息能够长期保存,需要建立一个简单的学生成绩管理系统来管理学生的成绩和信息。学生信息管理系统作为一个应用软件为学校师生提供一个对学生信息进行管理和查询的平台。用户可根据系统界面的提示信息对学生的信息进行录入、删除、修改、排序、查询、统计等操作。系统功能需求描述如下: (1)系统主菜单:用户进入系统主菜单,可以按提示进行选择,从而完成不同的任务,此功能在显示子程序中实现。管理员界面用output1()函数实现、用户界面用output2()函数实现。 (2)录入学生信息及成绩:用户根据提示信息输入学生的学号、姓名、性别、班级、各科成绩等信息,系统会以文件形式存储

7、,以便进行管理,可将学生信息整合成结构体,用void input()函数实现。 (3)修改学生信息及成绩:用户根据提示信息输入学生的学号,在学生文件中查找到该学生的信息并根据提示信息进行成绩的修改,用void correct()函数实现。 (4)删除学生信息及成绩:用户根据提示信息输入学生的学号,在学生文件中查找到该学生的全部信息并将该信息全部删除,用 void delete()函数实现。 (5)查询学生信息及成绩:用户根据提示信息输入学生的学号或姓名的方式进行查询,在学生文件中查找到该信息并显示出来,用 void search_by_name()和void search_by_num()函数

8、实现。 (6)学生成绩排序:对学生成绩(总分)进行从高到低排序,用冒泡排序法,用void arrange()函数实现。 (7)统计学生成绩:统计并显示各科优、良、中、及格、不及格的人数,及及格率、最高分,用 void stat()函数实现。 (8)退出系统:完成你所需完成的任务之后并退出到系统主菜单,用exit(0)函数实现。3 模块设计图前面的分析中已经定义了系统各个模块。在系统运行时刻由系统的流程决定。当管理员运行该系统后可以来进行学生成绩信息录入管理、学生成绩信息查询管理、学生成绩信息删除管理、学生成绩信息修改管理、学生成绩信息排序管理及学生成绩信息统计管理操作;当用户运行该系统后可以进

9、行学生成绩信息查询操作,具体的流程如图3.2所示。图3.2系统流程图4 NS流程图清单录入功能N-S流程图system(cls) 定义变量 i=0,j,stuMAX,文件指针 *fp 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp);是(fp=fopen(学生信息及成绩表.txt,a+)=NULL) 否printf(open file erorr!n);exit(0); 输入 j num=num+j; ij录入并写入文件 关闭文件fclose(fp) 打开学生人数文件 将学生人数写入到

10、文件 fprintf(fp,%d,&num); 关闭学生人数文件 fclose(fp); system(cls); input_choose();删除功能N-S流程图system(cls) 定义变量 i,j,index,m=0,no20,stuMAX,文件指针 *fp 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp);是(fp=fopen(学生信息及成绩表.txt,a+)=NULL) 否printf(open file erorr!n);exit(0); 输入no Inum读取文件 关

11、闭文件fclose(fp) inum strcmp (Stui.no是 ,no)=0 否 显示学生信息此学生不存在J=i 定义文件指针fp2是(fp=fopen(学生信息及成绩表.txt,a+)=NULL) 否printf(open,file erorr!n);exit(0);Jnum删除信息jnum-1写入文件fclose(fp)delect() 删除成功 num=num-1; 打开学生人数文件将学生人数写入到文件 fprintf(fp,%d,&num); 关闭学生人数文件 fclose(fp); delect_choose();修改功能流程图 system(cls)定义变量int i,j;

12、 char ch,no20; FILE *fp; struct student stuMAX 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp);是(fp=fopen(学生信息及成绩表.txt,a+)=NULL) 否Printf(open file erorr!n);exit(0); 输入no inum读取文件 关闭文件fclose(fp)inum Strcmp(stui.no,no)=0是 否 显示学生信息printf();此学生不存在j=i;correct() 输入选择 ch cas

13、e ch,ch=1,2,3,4,5case1:case2case3case 4:case 5:scanf(%lf,&x);stuj.liner_score=x;breakscanf(%lf,&x);stuj.english_score=x break;scanf(%lf,&x);stuj.listening_score=x;breakscanf(%lf,&x); stuj.max_score=x;break;scanf(%lf,&x); stuj.c_score=x; break;计算总分计算平均分 显示学生信息printf(); (fp=fopen(学生表.txt,a+)=NULL)是 否i

14、numPrintf(open file erorr!n);exit(0)写入文件 fclose(fp)correct_choose();System(cls);查询功能N-S流程图system(cls) 定义变量 int choice;输入选择choice case(choice),choice=0,1,2case 0:case 1:case 2:defultsearch_by_num()search_by_name();printf(“输入无效选项”);Exit(0);break;break;(1)case2: search_by_name();int i,m=0; char name20;

15、 struct student pMAX; FILE *fp; 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp); (fp=fopen(学生信息及成绩表.txt,a+)=NULL)否 是输入姓名nameprintf(File open error!n);inum读取文件exit(0); strcmp(name,pi.name)=0是 否显示查询学生的信息printf()m+; m=0是 否 printf(没有找到符合的信息。n);search_choose();system(cls);

16、 (2)case1:search_by_num()N-S流程图int i,m=0;struct student pMAX;FILE *fp;char no20; 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp); (fp=fopen(学生信息及成绩表.txt,a+)=NULL)否 是 输入学号noprintf(File open error!n); inum读取文件 strcmp(num,pi.num)=0是 否显示查询学生的信息printf();M+; m=0是 否printf(没有

17、找到符合的信息。n); search_choose(); system(cls);统计功能N-S图 int number; 输入你的选择 numbercase number,number=1,2,3,4,5 case 1case 2:case 3:case 4:case 5:liner_stat();break;english_stat();break;listening_stat();break;max_stat();break;c_stat();break; stat_choose(); system(cls);case 1:liner_stat(); N-S流程图int i,f,j=0,

18、k=0,l=0,m=0,n=0,Pass_no=0; double liner_rate,max_score,temp; FILE *fp; struct student stuMAX; 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp);是(fp=fopen(学生信息及成绩表.txt,r)=NULL 否printf(File open error!n); inum读取文件exit(0); f=90.00 T F j+; stuf.liner_score=80.00&Tstuf.line

19、r_ core=70.00&Tstuf.liner_score=60.00&Tstuf.liner_score70.00 F m+T stuf.liner_score60.00 F n+ liner_rate=(double)(j+k+l+m)/(j+k+l+m+n); pass_no=j+k+l+m; istui+1.liner_score TFtemp=stui.liner_score;stui.liner_score=stui+1.liner_score; stui+1.liner_score=temp;max_score=stui+1.liner_score; 输出学生线性代数统计的内

20、容 fclose(fp) (fp1=fopen(学生成绩表统表.txt,a+)=NULLF T写入文件Exit(0); fclose(fp1)case 3: listening_stat();N-S流程图int i,f,j=0,k=0,l=0,m=0,n=0,Pass_no=0; double listening_rate,max_score,temp; FILE *fp; struct student stuMAX; 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp);是(fp=fop

21、en(学生信息及成绩表.txt,r)=NULL 否printf(File open error!n); inum读取文件exit(0); f=90.00 T F j+; stuf.listening_score=80.00&Tstuf.listening_score=70.00&Tstuf.llistening_score=60.00&Tstuf.llistening_score70.00 F m+T stuf.listening_score60.00 F n+ Listening_rate=(double)(j+k+l+m)/(j+k+l+m+n); pass_no=j+k+l+m; ist

22、ui+1.listening_score TFtemp=stui.listening_score;stui.listening_score=stui+1.listening_score; stui+1.listening_score=temp;max_score=stui+1.listening_score;输出听说统计内容 fclose(fp) (fp1=fopen(学生成绩表统表.txt,a+)=NULLF T写入文件Exit(0); fclose(fp1)case 4: marx_stat();N-S流程图int i,f,j=0,k=0,l=0,m=0,n=0,Pass_no=0; do

23、uble marx_rate,max_score,temp; FILE *fp; struct student stuMAX; 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp);是(fp=fopen(学生信息及成绩表.txt,r)=NULL 否printf(File open error!n); inum读取文件exit(0); f=90.00 T F j+; stuf.marx_score=80.00&Tstuf.marx_score=70.00&Tstuf.marx_score=6

24、0.00&Tstuf.marx_score70.00 F m+T stuf.marx_score60.00 F n+ marx_rate=(double)(j+k+l+m)/(j+k+l+m+n); pass_no=j+k+l+m; istui+1.marx_score TFtemp=stui.marx_score;stui.marx_score=stui+1.marx_score; stui+1.marx_score=temp;max_score=stui+1.marx_score; 输出马克思统计内容 fclose(fp) (fp1=fopen(学生成绩表统表.txt,a+)=NULLF

25、T写入文件Exit(0); fclose(fp1)case 5: C_stat();N-S流程图int i,f,j=0,k=0,l=0,m=0,n=0,Pass_no=0; double c_rate,max_score,temp; FILE *fp; struct student stuMAX; 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp);是(fp=fopen(学生信息及成绩表.txt,r)=NULL 否printf(File open error!n); inum读取文件ex

26、it(0); f=90.00 T F j+; stuf.c_score=80.00&Tstuf.c_score=70.00&Tstuf.c_score=60.00&Tstuf.c_score70.00 F m+T stuf.c_score60.00 F n+ c_rate=(double)(j+k+l+m)/(j+k+l+m+n); pass_no=j+k+l+m; istui+1.c_score TFtemp=stui.c_score;stui.c_score=stui+1.c_score; stui+1.c_score=temp;max_score=stui+1.c_score; 输出C语

27、言统计内容 fclose(fp) (fp1=fopen(学生成绩表统表.txt,a+)=NULLF T写入文件Exit(0); fclose(fp1)case 2: english _stat();N-S流程图int i,f,j=0,k=0,l=0,m=0,n=0,Pass_no=0; double english_rate,max_score,temp; FILE *fp; struct student stuMAX; 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp);是(fp=fo

28、pen(学生信息及成绩表.txt,r)=NULL 否printf(File open error!n); inum读取文件exit(0); f=90.00 T F j+; stuf.english_score=80.00&Tstuf.english_score=70.00&Tstuf.lenglish_score=60.00&Tstuf.lenglish_score70.00 F m+T stuf.english_score60.00 F n+ English_rate=(double)(j+k+l+m)/(j+k+l+m+n); pass_no=j+k+l+m; istui+1.englis

29、hr_score TFtemp=stui.english_score;stui.english_score=stui+1.english_score; stui+1.english_score=temp;max_score=stui+1.english_score; 输出英语统计内容 fclose(fp)排序功能N-S流程图 system(cls); int I, k, index,j; double aMAX; double temp; FILE *fp; 打开学生人数文件 if(fp=fopen(学生人数.txt,a+)=NULL) 读文件 fscanf(fp,%d,&num); 关闭文件 fclose(fp); (fp=fopen(学生信息及成绩表.txt,r)=NULL否 是 inumprintf(File open error!n);读取文件 ai=fi.tot_score; knum-1 index=kexit(0); iaindex是 否index=i; temp=aindex;aindex=ak;ak=temp; jnum knum fk.tot_score=aj T F fk.number=j+1; break;continue; i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1