




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. 精选范本 武武汉汉长长江江工工商商学学院院 计计算算机机技技术术系系 项项目目名名称称: 学学生生成成绩绩管管理理系系统统 学学生生姓姓名名: 学学 号号: 班班 级级: 指指导导教教师师: . 精选范本 20132013 年年 6 6 月月 1818 日日 . 精选范本 目 录 1 1 实验目的和意义实验目的和意义.1 1 1.1 目的.1 1.2 意义.1 2 2 系统功能描述及设计系统功能描述及设计.2 2 3 3 系统存储结构设计与描述系统存储结构设计与描述.4 4 4 4 系统功能实现及算法描述系统功能实现及算法描述.7 7 4.1 学生信息的录入.7 4.2 学生信息的浏览.8 4.3 学生信息查询.9 4.4 学生信息排序.10 4.5 对学生信息进行删除 .11 4.6 对学生信息进行修改 .12 4.7 对学生信息进行添加 .13 4.8 对学生成绩进行统计 .14 5 5 系统性能测试系统性能测试.1 15 5 5.1 录入学生信息功能测试.15 5.2 浏览功能测试.15 5.3 查询学生信息.16 5.4 学生成绩排序.17 5.5 实现对学生信息的删除.18 5.6 实现对学生信息的修改.19 5.7 实现对学生信息的添加.20 5.8 实现对学生信息的统计.20 6 6 设计小结设计小结.2 21 1 致谢致谢 .2 22 2 参考文献参考文献.2 23 3 源代码清单:源代码清单:.2 25 5 . 精选范本 1 实验目的和意义 1.1 目的 本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学的知识, 补充未学的但又必要的内容。进行课程设计目的在于加深对程序设计基础理论和基本知识 的理解,促进理论与实践的结合,进一步提高程序设计能力。具体目的如下: (1) 使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 (2) 培养学生综合运用所学知识独立完成课程设计的能力。 (3) 培养学生勇于探索、严谨推理、实事求是、有错必改、用实践来检验理论,全方 位考虑问题等科学技术人员应具备的素质。 (4) 提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。 (5) 培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到 解决问题的新途径的悟性,出不培养工程意识和创新能力。 (6) 对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、 书面及口头表达能力进行考核。 1.2 意义 随着学校规模迅速扩大,学生管理工作信息量急剧增加,信息变化幅度大,依靠传统 的手工管理手段显然已不能适应新时期高校大学生的管理工作,无法完成大量的信息分析 和处理。同时,随着学校管理体制改革的深化,学校有关职能部门如何全面、准确、及时 地了解和掌握学生的信息,建立科学公正的学生个体和院系学生工作评价体系,已经成为 新时期高校学生管理工作面临的一个新课题。为此,建设一套切实可行的学生工作管理系 统,结合学校实际,充分利用校园网的资源优势,不仅使信息渠道更为畅通,而且可以资 源共享。既为全面了解学生的综合信息提供了方便,使得查询统计更为准确便捷,又可以 用电子档案逐步代替或辅佐传统的纸质档案,实现管理手段现代化。 该系统提供学生的基本状况、学习成绩、在校表现和奖惩等全方位的信息资料。在此 基础上,构建学生考核、测评标准,建立评价指标体系,对学生进行科学测评,减少传统 测评中的人为干扰,使对学生的评价更为客观、全面和科学。 提高学生工作办公自动化程度,建立学生信息库,把学生工作者从日常繁重重复的劳 动中解放出来,减轻工作强度,提高工作效率。 . 精选范本 2 系统功能描述及设计 本课程设计要求的几个功能在程序里面都能实现,有学生信息的输入、浏览、排序、 统计、修改、删除、查询、添加,退出等。根据用户的需求来执行程序。程序总体结构如 图(2-1)所示: 学生信息输入负责将学生的信息存储到对应的文本文件中,对学生的信息排序就包 括按总分排序和按计算机成绩排序。统计也包括对计算机成绩的统计和对数学和英语成绩 的统计。删除就负责对学生信息的删除。查询就可实现对学号的查询。 进入主菜单由函数 print() ;实现。里面有九个功能供其选择 菜单一:信息录入功能,输入选项一进入该功能,根据系统提示输入相应的数据。 菜单二:为学生信息浏览功能,当用户输入二选项时,系统自动用户输入的数据调入 内存在输出到显示器上。供用户浏览。 菜单三:为学生信息查询功能,当用户选择第三个功能后是按学号查询。 菜单四:对学生成绩进行排序,当用户进入该功能后有两个选项供其选择,分别是:按 计算机和总分排序。 菜单五:学生信息的删除,一般删除学生信息的时候是非常小心的,故当用户选择该 功能后为了防止误删,只有按学号查找出要删除信息的同学的信息进行删除操作,操作成 . 精选范本 功后,系统会给出相应的提示说明操作成功。 菜单六:学生信息的修改,用户在主菜单里里面可选择此功能,进入功能后,会将所 有的同学的信息输出供用户参考,当用户输入要查找的同学的学好后可进入选择界面,提 示用户是要修改的项目,当用户选择完毕后,直接输入新的数据即可,最后将数据保存到文 件中。 菜单五:学生信息的添加,用户可以根据自己的需要来选择添加学生的信息,此功能 会调用学生信息的输入来完成,事后给出提示添加成功! 菜单八:学生信息的统计,此选项可以根据用户的不同需要进行统计,可按计算机成 绩统计,按英语分数排序和数学分数统计。统计的项目包括:平均分、最高分、最低分、 及格率和六十分以下的,还有各个分数段的人数。 菜单九:用户选择此操作后可直接退出软件。 . 精选范本 3 3 系统存储结构设计与描述系统存储结构设计与描述 struct student long id; char name10; char sex10; float computer,math,english; float total; stu1000此存储结构包括学生的姓名、学生的性别、学生的学号及学生给门功课的成绩, 并且记录下该学生的总分。这些都用结构体变量数组来存储。 1.此外还有文件中数据的读取,此功能用 load()函数来实现; void load() FILE *fp; int i; if(fp=fopen(data.txt,rb)=NULL) printf(Can not open the file!n); exit(0); n=fgetc(fp); for(i=0;in;i+) if(fread( exit(0); fclose(fp); 此函数会将文件中的数据读取到内存中,并将有多少个学生多为函数的返回值; 此外还用到 save()函数对数据的存储。 2.void save() FILE *fp; int i; if(fp=fopen(data.txt,wb)=NULL) printf(Can not open the file!n); exit(0); fputc(n,fp); . 精选范本 for(i=0;in;i+) if(fwrite( exit(0); fclose(fp); 3.文件中数据的连续输出,此功能用 and()函数来实现 void and() FILE *fp; int i; if(fp=fopen(data.txt,ab)=NULL) printf(Can not open the file!n); exit(0); fputc(n,fp); for(i=0;in;i+) if(fwrite( exit(0); 4.每执行完一个函数后,都要返回主菜单,这时要用 back()函数来实现, void back()/返回 printf(是否返回主菜单(yes 或 no)?); gets(str); do scanf(%s,str); if(strcmp(str1,str)=0) system(cls); main(); else if(strcmp(str2,str)=0) printf(请按任意键退出!n); . 精选范本 exit(0); else printf(您输入的数据不正确!请重新输入:); while(1); 5进入功能选项,需用 select()函数; void select()/选择 int a; scanf(%d, switch(a) case 1:write();break; case 2:scan();break; case 3:numrefer();break; case 4:sort();break; case 5:remove();break; case 6:revamp();break; case 7:add();break; case 8:statistics();break; case 9:exit(0);break; default:printf(非法操作!n);back();break; . 精选范本 4 系统功能实现及算法描述 4.1 学生信息的录入 首先打开文件,用一个循环实现对学生信息的循环录入,再循环内部实现对单个学生 信息的录入,然后调用 save() ;函数将内存中的信息存入文件; 流程图 4-1 如下: 图 4-1 信息录入函数流程图 . 精选范本 4.2 学生信息的浏览 首先用只读的方式打开文件,调用 load() ;函数将文件中的信息读入内存,再将内存 中的信息逐个输出到显示器上。返回主菜单; 流程图 4-2 如下: 图 4-2 信息浏览函数 . 精选范本 4.3 学生信息查询 首先用只读的方式打开文件,调用 load() ;函数将文件中的信息读入内存,按照学号 查询,当两个学号相等时就输出,否则就输出“没有照此同学的信息” 流程图 4-3 如下: 图 4-3 查询函数流程图 . 精选范本 4.4 学生信息排序 首先用只读的方式打开文件,调用 load() ;函数将文件中的信息读入内存,由用户选 择要排序的项目(1.为对学号排序。2.为对计算机成绩的排序。 )最后将排好序的信息按要 求一一输出; 流程图 4-4 如下: 图 4-4 排序函数流程图 . 精选范本 4.5 对学生信息进行删除 首先用只读的方式打开文件,调用 load() ;函数将文件中的信息读入内存,由用户输 入要删除同学的学号,得到此同学的信息后,将此同学的信息输出,在进行一次确认“确 实要删除此同学的信息吗(Yes/No) ”若用户选择 yes。则进行删除操作。并最终提示“信 息删除成功” ,接着询问“还需要删除其他同学的信息吗?(Yes/No) ” ,若选择“y” ,则 重复删除操作。若为“no”,则退出, 流程图 4-5 如下所示: 图 4-5 信息删除函数流程图 . 精选范本 4.6 对学生信息进行修改 首先用只读的方式打开文件,调用 load() ;函数将文件中的信息读入内存,由用户输 入要修改的学生学号,系统找到对应的学生信息后输出:然后由用户选择要修改的项目(1:修 改学号;2:修改姓名 ;3:修改性别;4:修改计算机成绩;5 修改英语成绩;6:修改数学成绩)再由用 户输入新的值将来的值覆盖掉,将修改后的数据写入文件; 流程图 4-6 如下: 图 4-6 修改函数流程图 . 精选范本 4.7 对学生信息进行添加 先进入选项,后直接用 and()函数,提示用户想输入多少人,依次输入学号,姓名,性 别,计算机分数,英语分数,数学分数; 流程图 4-7 如下: 图 4-7 添加函数流程图 . 精选范本 4.8 对学生成绩进行统计 首先用只读的方式打开文件,调用 load() ;函数将文件中的信息读入内存,由用户选 择需要统计的项目(1:对计算机成绩进行统计 2:对英语成绩进行统计 3:对数学成绩进行统 计) , 流程图 4-8、4-9 如下: 图 4-8 统计函数流程图 . 精选范本 5 系统性能测试 5.1 录入学生信息功能测试 用户按要求输入学生的人数,输完后可根据提示分别输出他们的姓名,性别,计算 机分数,数学分数,英语分数,并且用户决定是否返回主菜单如图 5-1 图 5-1 信息录入功能测试 5.2 浏览功能测试 用户选二后进入,体统会将文件中的学生的信息读入内存,再将内存中的信息再输出 到显示器 上如图 5-2 图 5-2 浏览功能测 学生信息一目了然; . 精选范本 5.3 查询学生信息 选项三是查询学生信息功能,系统会根据用户输入的学号,再和内存中的数据一一 比较直到找到符合要求的学生信息,按学号查询测试如图 5-3 图 5-3 查询信息测试 根据学号查找精确,速度快,可靠性高; 5.4 学生成绩排序 进入对学生成绩排序的界面后,用户可以根据自己的需要选择相应的功能:对计算 机成绩排序,对总分排序。当用户选择了相应的功能后,可根据需要选择从高到低排序。 如图 5-5 对计算机进行降序排列功能测试: 图 5-5 成绩排序测试 可以再次循环排序,功能多; 如图 5-6 对总分成绩进行降序排列: . 精选范本 图 5-6 成绩降序测试 . 精选范本 5.5 实现对学生信息的删除 如果用户需要对学生信息进行删除的话,可以按 5,然后根据系统的提示输入需要 删除的学生的信息,当系统找出要删除同学的信息后,用户按确定,此时,学生的信息就 被彻底删除了。学生信息删除功能测试如图 5-7: 图 5-7 信息删除测试 学生信息的删除后的图片 . 精选范本 5.6 实现对学生信息的修改 输入要修改的信息的学生的学号,系统会自动找出,然后用户根据需要选择需要修改 的项目,可以修改姓名,性别,计算机分数,英语分数,数学分数,选择后输入新数据就 行了。信息修改功能测试如图 5-8 : 图 5-8 信息修改测试 修改后的信息如图 5-9 : 图 5-9 修改后测试 . 精选范本 5.7 实现对学生信息的添加 当选择了 7 后,会进入学生信息添加界面,此时用户根据学生的信息录入系统就行 了。完成后系统会自动将新的数据保存。学生信息添加功能测试如图 5-10: 图 5-10 信息添加测试 能实现对学生信息的循环添加,并且会有相应的提示; 5.8 实现对学生信息的统计 统计可是对不同科目进行统计,统计的项目计算机,英语,数学中的一门的最高分、最低 分、平均分以及各分数段之间人数的比例,返回后还可以继续对其他科目进行统计。如图 5-8: . 精选范本 . 精选范本 6 设计小结 经过一周的课程设计,我学到了很多东西: (1)定义全局变量 N 后如果后面的函数中需要使用全局变量 N 的时候不能再定义局 部变量 N 了,要不然局部变量 N 与全局变量 N 的性质不同! (2)培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究, 分析问题、解决问题的能力。 (3)过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方 法。 (4)用 #include “stdlib.h”做头文件,用 exit 可以结束整个程序! . 精选范本 致谢 课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于 加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固 了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。 在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这 次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及 时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢! . 精选范本 参考文献 1 谭浩强,C 语言课程设计(第三版) ,北京:清华大学出版社, 1996.5 2 杨路明,从语言程序设计教程(第二版) ,北京:邮电大学出版社,2009.7 3谭浩强,C 语言课程设计(第二版) ,北京:清华大学出版社, 1991.5 4谭浩强,C 语言程序设计题解与上机指导,北京:清华大学出版社,1991.3 . 精选范本 源代码清单:源代码清单: #includestdio.h #includestdlib.h #includetime.h #includestring.h void select();/选择 void write();/录入 void scan();/浏览 void numrefer();/查询 void sort();/分类 void remove();/删除 void revamp();/修改 void add();/添加 void statistics();/统计 void menu();/菜单 void main();/主函数 void save();/保存 void load();/导出 void back();/返回 void and();/继续 int n; char str10; char str110=yes,str210=no; struct student long id; char name10; char sex10; float computer,math,english; . 精选范本 float total; stu1000,temp; void main()/主函数 menu(); printf(请输入您的选择:); select(); void save()/保存 FILE *fp; int i; if(fp=fopen(data.txt,wb)=NULL) printf(Can not open the file!n); exit(0); fputc(n,fp); for(i=0;in;i+) if(fwrite( exit(0); fclose(fp); void load()/导出 . 精选范本 FILE *fp; int i; if(fp=fopen(data.txt,rb)=NULL) printf(Can not open the file!n); exit(0); n=fgetc(fp); for(i=0;in;i+) if(fread( exit(0); fclose(fp); void and()/继续 FILE *fp; int i; if(fp=fopen(data.txt,ab)=NULL) printf(Can not open the file!n); exit(0); fputc(n,fp); for(i=0;in;i+) if(fwrite( exit(0); void back()/返回 printf(是否返回主菜单(yes 或 no)?); gets(str); do scanf(%s,str); if(strcmp(str1,str)=0) system(cls); main(); else if(strcmp(str2,str)=0) printf(请按任意键退出!n); exit(0); else printf(您输入的数据不正确!请重新输入:); while(1); void write()/录入 int i,num,j; char str35=girl; . 精选范本 char str45=boy; printf(请输入您要录入多少个同学的信息:); scanf(%d, for(n=0,i=0;inum;i+) n+; printf(该同学的学号被系统自动定为:); srand(time(NULL); for(j=0;j1000;j+) stui.id=rand()%1000+2011000; if(stuj.id!=stui.id) break; printf(%ldn,stui.id); printf(请输入学生姓名:); scanf(%s,); printf(请输入学生性别(girl 或 boy):); gets(stui.sex); do scanf(%s,stui.sex); if(strcmp(stui.sex,str3)=0|strcmp(stui.sex,str4)=0) break; else printf(您输入的数据不合法!请重新输入:); while(1); printf(计算机分数0-100:); scanf(%f, printf(数学分数0-100:); . 精选范本 scanf(%f, printf(英语分数0-100:); scanf(%f, printf(总分:); stui.total=puter+stui.math+stui.english; printf(%.2fn,stui.total); save(); back(); void menu()/菜单 printf(*); printf( 学生成绩管理系统 n); printf(*); printf( 1.学生信息的录入 2.学生信息的浏览 n); printf( 3.学生信息的查询 4.学生信息的排序 n); printf( 5.学生成绩删除 6 学生成绩修改 n); printf( 7.学生成绩添加 8.学生信息的统计 n); printf( 9.退出系统 n); printf(*); void select()/选择 int a; . 精选范本 scanf(%d, switch(a) case 1:write();break; case 2:scan();break; case 3:numrefer();break; case 4:sort();break; case 5:remove();break; case 6:revamp();break; case 7:add();break; case 8:statistics();break; case 9:exit(0);break; default:printf(非法操作!n);back();break; void scan()/浏览 load(); int i; if(n=0) printf(没有学生信息!); printf(是否返回主菜单(yes 或 no)?); gets(str); do scanf(%s,str); if(strcmp(str1,str)=0) system(cls); . 精选范本 main(); else if(strcmp(str2,str)=0) printf(请按任意键退出!n); exit(0); else printf(您输入的数据不正确!请重新输入:); while(1); printf(学号t 姓名 性别t 计算机t 数学 英语 总分n); for(i=0;in;i+) printf(%ld%8s%7s%7.2f%9.2f%8.2f%9.2fn,stui.id,,stui.sex,puter,stui. math,stui.english,stui.total); back(); void numrefer()/学号查询 load(); long ID,i; printf(请输入您要查询该学生的学号:); scanf(%ld, for(i=0;in;i+) if(stui.id=ID) printf(学号t 姓名 性别t 计算机t 数学 英语 总分n); . 精选范本 printf(%ld%8s%7s%7.2f%9.2f%8.2f%9.2fn,stui.id,,stui.sex,puter,stui. math,stui.english,stui.total); break; if(i=n-1) printf(没有该同学信息!n); back(); void sort()/排序 load(); int i,j,a; printf(1.按照总分从大到小排序n); printf(2.按照计算机分数从大到小排序n); printf(请输入您要按照哪种方式排序:); scanf(%d, if(a=1) for(i=0;in-1;i+) for(j=0;jn-1-i;j+) if(stuj.totalstuj+1.total) temp=stuj; stuj=stuj+1; stuj+1=temp; printf(学号t 姓名 性别t 计算机t 数学 英语 总分n); for(i=0;in;i+) . 精选范本 printf(%ld%8s%7s%7.2f%9.2f%8.2f%9.2fn,stui.id,,stui.sex,puter,stui. math,stui.english,stui.total); else if(a=2) for(i=0;in-1;i+) for(j=0;jn-1-i;j+) if(puterstuj+1.computer) temp=stuj; stuj=stuj+1; stuj+1=temp; printf(学号t 姓名 性别t 计算机t 数学 英语 总分n); for(i=0;in;i+) printf(%ld%8s%7s%7.2f%9.2f%8.2f%9.2fn,stui.id,,stui.sex,puter,stui. math,stui.english,stui.total); void remove()/删除 load(); long ID,i,j; printf(请输入您要删除的学生的学号:); scanf(%ld, for(i=0;in;i+) if(stui.id=ID) . 精选范本 printf(学号t 姓名 性别t 计算机t 数学 英语 总分n); printf(%ld%8s%7s%7.2f%9.2f%8.2f%9.2fn,stui.id,,stui.sex,puter,stui. math,stui.english,stui.total); break; if(i=n-1) printf(没有该同学信息!n); back(); printf(您确定要删除该同学的信息(yes 或 no)?n); gets(str); do scanf(%s,str); if(strcmp(str1,str)=0) for(j=i;jn;j+) stuj=stuj+1; printf(该同学的信息被删除了!n); n-; save(); break; else if(strcmp(str2,str)=0) exit(0); else . 精选范本 printf(您输入的数据不正确!请重新输入:); while(1); back(); void revamp()/修改 load(); long ID,i,a; char str35=girl; char str45=boy; printf(请输入您要修改的学生的学号:); scanf(%ld, for(i=0;in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 热带作物栽培工测试考核试卷及答案
- 微晶玻璃工职业技能考核试卷及答案
- 物流无人机驾驶员设备调试考核试卷及答案
- 医疗技术类面试题及答案
- 汽车售后预约服务法规及OTR系统知识测试卷
- 地铁专业考试题库及答案
- 考研财务专业试题及答案
- 秦巴地区零碳生态县(区)建设指南编制说明
- 湖北省汉川市金益高级中学2025-2026学年高二上学期9月起点考试英语试卷(原卷版)
- 安徽省淮南市第二中学2025-2026学年高二上学期开学考试化学试题
- 2025年中国农村住宅行业市场运行现状及投资规划建议报告
- 《人工智能通识基础(慕课版)》-教学大纲、课程标准
- 中建八局三亚喜来登主体施工组织设计鲁班奖(157P)
- 2025年浙江省文化产业投资集团有限公司招聘笔试参考题库含答案解析
- 2025毕节辅警考试题库
- 采血后预防淤青的按压方式
- 自备口服药规范化管理
- 《解剖学》课程标准(新)
- 五倍子提取物对临床分离鸡源大肠杆菌的抑制作用研究
- 幼儿园获奖公开课:中班语言活动《哈哈镜》课件
- 2025年中外合资企业合作框架协议模板
评论
0/150
提交评论