




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、广州XX学院课程设计(实训I)报告课 程 C语言课程设计题目 学生成绩管理系统专业 计算机科学与技术指导教师 XX班级 181 学号 201822 姓名 李XX2019年5月30日目录1需求分析 22设计思路2.3详细设计3.3.1 编译预处理3.3.2 数据结构定义3.3.3 菜单函数界面的设计3.3.4 添加学生信息模块4.3.5 显示学生信息 5.3.6 按学号排序.6.3.7 按总成绩排序7.3.8 删除单个学生7.3.9 查找指定学生9.3.10 修改学生信息 9.3.11 查看各门课程的成绩情况 1.03.12 保存并退出 1.1.4调试分析.124.1 运行工具介绍124.2 调
2、试操作.125测试结果.135.1 添加学生信息1.35.2 显示学生信息1.35.3 查看各门课程的成绩情况 146用户使用说明.147参考资料.1551、需求分析学校工作流程分析:学校工作总体规划由教务人员在学生成绩管理系统中输入学 生的基本信息并对其进行维护管理, 包括对信息的增加、修改及对信息的各项处理操 作等。新的学年,教务人员首先编排班级,冉对在校学生进行基本的信息录入,新生入 学后由教务人员在管理系统中完成新学生信息的维护。在每个学期开始,教务处根据班级的情况,以班为单位,为每个班级安排一个班主任,并对各科老师进行安排。每 举行一次考试后由任课老师对成绩进行录入。班主任对本班的成
3、绩汇总。并进行排名, 并对本年级各科成绩及总成绩进行排名。教务处、班主任及任课老师跟据实际情况对 录入的成绩进行维护管理,各位同学对以上录入的信息可以跟据自己的需要进行适当 的查询。而且,学生管理系统可以对数据库中的信息进行有效处理,防止数据错乱。 也能够按照用户选择的不同条件进行简单查询,方便用户操作,并减少用户的操作。 2、设计思路(1)系统主界面允许用户选择想要的操作,包括输入学生信息、显示学生信息、 查询学生信息、修改学生信息、删除学生信息、计算成绩以及成绩的排序等。通过输 入相应的序号选择相应的操作。(2)录入学生成绩信息,用户根据提示输入学生的学号、姓名、以及三门课的成 绩,高等数
4、学的成绩、大学英语的成绩和C语言的成绩。输入完成一条学生记录,可 根据提示信息继续输入下一条学生记录或者继续其他的操作。允许输入多条学生的成 绩信息记录。输入完的学生记录暂时保持在电脑内存中,等待下一步的操作。(3)查询学生信息,用户可以根据学号或者姓名从系统保存的文件中对学生所有 的信息进行查询,如果没有查询到任何信息,系统会提示信息。(4)修改学生信息,首先提示用户输入要进行修改的学生的名字, 如果文件中有 该学生的信息存在,则提示用户输入要修改的学生的基本信息、 各科成绩等,并将修 改结果重新存储在文件中。如果用户没有找到要修改的学生信息,系统将给出提示。(5)删除学生信息,首先提示用户
5、输入要删除学生的名字,系统根据用户输入的 信息在文件中查找,如果找到,直接删除该学生全部信息,如果没有找到,系统给出 提示信息。(6)计算各科成绩平均分,主要进行学生成绩的平均分计算,进入计算界面,并 选择相对应的序号,系统自动对各科进行平均分计算。(7)显示学生信息,用户在选择了显示学生信息后,将刚输入的学生信息从文件 中调出来显示,如果没有数据,则提示无“没有该学生”。(8)学生排序,成绩信息输入完整后,根据学生的总分或者学号对学生从小到大 进行排序,在显示学生信息的时候可以看到学生的其他信息。(10)操作完成后对操作结果进行保存。运行完毕,退出系统。3、详细设计3.1 编译预处理C语言的
6、预处理功能主要有:(1)宏定义;(2)文件包含;(3)条件编译。#include<stdio.h>#include<stdlib.h>#include<string.h>3.2 数据结构定义学生成绩管理系统中的变量有学号,性别,名字和三科成绩,这些数据类型 各不相同,因此需要定义结构体类型。typedef struct/*学号*/*姓名*/*性别*/*成绩*/*平均分*/*总成绩*/char num10;char name20;char sex2;int score3;float avg;int sum;Student;Student studentAll8
7、0; /* 结构体数组变量 */3.3 菜单函数界面的设计系统与用户交换的界面是通过菜单实现的,菜单按预定义格式显示主菜 单界面,等待用户输入0-8中的任一数据,系统会根据用户的输入调用相应的功 能模块,实现用户所要求的操作。菜单主要通过 printf函数显示一些文本选项来 构建一个简单的字符界面,并且让用户通过输入关键字从0-8之间选择相应的操作,函数通过switch调用各功能模块:/*菜单函数*/int menu_select()int check_number;dosystem("cls");/*运行前清屏 */printf("t*学生成绩管理系统 *n)/
8、* 菜单添加学生信息 显示学生信息 按学号排序 按总成绩排序*n")*n")*n")*n")选择*/printf("t*| 1.printf("t*| 2.printf("t*| 3.printf("t*| 4.printf("t*|5.查找单个学生*nprintf("t*|6.删除指定学生*nprintf("t*|7.修改学生信息*nprintf("t*|8.查看各门课程的成绩情况*nprintf("t*|9.待定功能*nprintf("t*n"
9、;);")")")")")")printf("t*|0.保存退出*n/*读入选择*/printf("请输入选择(0-9):");scanf("%d”,&check_number);while(check_number<0|check_number>9);return(check_number);/* 返回选择*/3.4 添加学生信息模块创建学生信息函数由void Input函数实现,首先定义各个数据的类型,然后判 断学生信息是否存在,倘若没有该学生,则开始输入新学生的全部信息
10、。录入完 毕可以选择继续录入或者返回。具体函数如下:void Input(Student student)int i=0,j;char flag,clear10;/*clear10为清除多余的数据所用*/char studentNum10;存放判断学生学号int exist = 0;/判断学生信息标志/判断是否已经存在相同学生的学号while(flag!='n'&&flag!='N')/判断 flag 是不是 n/N,以此判断是否继续输入学生信息printf("请输入学生学号:");scanf("%s",s
11、tudentNum);while(strcmp(studenti.num,studentNum)!=0&&i<student_number) i+;/*查找判断*/查找到学生,无法增加学生信息,返回主函数if(i<student_number)printf("已有相同学号的学生,请重新输入n");/如果没有查找到学生,即可增加学生信息else if(i=student_number)memset(studenti.num, 0, sizeof(studenti.num);/字符串清空 strcpy(studenti.num,studentNum)
12、;printf("学生姓名:");scanf("%s",studentstudent_);printf("学生性别:");scanf("%s",studentstudent_number.sex);printf("学生高数成绩:");scanf("%d”,&studentstudent_number.score0);/高数成绩录入总成绩/studentstudent_number.sum += studentstudent_number.score0; p
13、rintf("学生大英成绩:");scanf("%d”,&studentstudent_number.score1);/大英成绩录入总成绩/studentstudent_number.sum += studentstudent_number.score1;printf("学生C语言成绩:");scanf("%d”,&studentstudent_number.score2);/C语言成绩录入总成绩/studentstudent_number.sum += studentstudent_number.score2;stu
14、dentstudent_number.sum=0;for(j=0;j<3;j+)studentstudent_number.sum+=studentstudent_number.scorej;studentstudent_number.avg = (float)studentstudent_number.sum/3;/printf("%.2fn",studentstudent_number.avg);gets(clear);/*消除多余的输入printf("此学生信息录入完毕,是否继续?(Y/N)");scanf("%c",&a
15、mp;flag);/输入判断student_number+;i=0;3.5显示学生信息显示函数void Display主要显示学生基本信息,每当操作完成的时候一般 都会调用此函数进行预览。该函数运行后会逐条显示学生信息,直到运行结束, 返回到主菜单界面。具体显示函数如下:void Display(Student student) int i=0; FILE *fp;/*定义文件指针*/if(fp=fopen("D:Studentstudent.txt","rb")=NULL)/* 打开文件*/ printf("不能打开文件n");/*
16、打开失败信息*/ printf(""); system("pause"); exit(0); printf("%dn",student_number);/* 循环duqu数据*/ while(i<student_number) printf("%-8s%-8s%-s %3d%3d%3d%.2f %3dn",studenti.num,,studenti.sex,studenti.score0,studenti.score1,studenti.score2,stu denti.avg,s
17、tudenti.sum); i+; system("pause"); fclose(fp); 3.6按学号排序学生成绩排序函数void Sort_by_num用来对学生成绩按从小到大的顺序 排序,在函数里主要运用了 “冒泡法”进行排序。通过两个for循环实现冒泡排序的全过程,外层for循环决定冒泡排序的趟数,内层for循环决定每趟所进行 两两比较的次数。具体函数如下:void Sort_by_num(Student student)Student temp;for ( i = 0; i < student_number; i+)for ( j = 0; j <
18、student_number-1; j+)if (strcmp(studentj.num , studentj + 1.num)>0)temp=studentj;studentj=studentj+1;studentj+1=temp;3.7 按总成绩排序成绩排序函数void Sort_by_sum与学号排序函数具有异曲同工之妙,具 体函数如下:void Sort_by_sum(Student student)int i,j;Student temp;for ( i = 0; i < student_number; i+)for ( j = 0; j < student_num
19、ber-1; j+)if (studentj.sum >studentj + 1.sum)temp=studentj;studentj=studentj+1;studentj+1=temp;3.8 删除单个学生删除函数void Delete_a_record,首先确定找到你输入名字的这个学生的 所有信息,然后用后一个学生的信息覆盖该学生的相应信息,再写入文件中,从 而达到删除该学生信息的目的。具体函数如下:void Delete_a_record(Student student()char name20;int i,j;char ch2;FILE *fp;printf("请输入
20、要delete的名字:");scanf("%s”,&name);for(i=0;i<student_number;i+) if(strcmp(name,)=0) j=i;printf("学号:sn性别:sn高数成绩:dn大英成绩:%dnC 语言成绩: %dn 平均成绩: %fn 总成 绩:dn",studenti.num,studenti.sex,studenti.score0,studenti.score1,student i.score2,studenti.avg,studenti.sum); else pri
21、ntf("没有这个学生!"); break; printf("find the student,delete?(y/n)"); scanf("%s",ch);if(strcmp(ch,"Y")=0|strcmp(ch,"y")=0)/* 判断是否要进行删除 */ for(j=i;j<student_number;j+)studentj=studentj+1;student_number-;printf("delete successfully!n");for(i=0;i
22、<student_number;i+)if(fp=fopen("D:Studentstudent.txt","rb")=NULL)/*打开文件*/printf("不能打开文件n");/*打开失败信息*/printf("");system("pause");exit(0);3.9 查找指定学生查找函数void Query_a_record,通过输入名字遍历文件中相同的char类型的字符串来确认该学生,并且打印显示该学生的所有信息。具体函数如下:void Query_a_record(Stud
23、ent student) char name20;int i;printf("请输入要查找的名字:");scanf("%s”,&name);for(i=0;i<student_number;i+) if(strcmp(name,)=0) printf("学号:sn性别:sn高数成绩:dn大英成绩:%dnC 语言成绩: %dn 平均成绩: %fn 总成 绩:dn",studenti.num,studenti.sex,studenti.score0,studenti.score1,student i.scor
24、e2,studenti.avg,studenti.sum); else printf("没有这个学生!"); break; 3.10 修改学生信息修改函数oid modifyStudentinformation是对之前所输入的信息出现错误, 或者需要修改时使用。用户根据提示输入要编辑学生信息的学号,并按名字查找 该学生的基本信息,如果找到该学生,系统提示要修改的各项内容,修改完成后 提示成功。具体函数如下:void modifyStudentinformation(Student student口)char name20; int i,j;FILE *fp;printf(&
25、quot;请输入要修改信息的学生名字:”);scanf("%s”,&name);for(i=0;i<student_number;i+)if(strcmp(name,)=0)printf("学号:n");scanf("%s",studenti.num);printf("性别:n");scanf("%s",studenti.sex);printf("高数:n");scanf("%d”,&studenti.score0);print
26、f("大英:n");scanf("%d”,&studenti.score1);printf("C 语言:n");scanf("%d”,&studenti.score2);elseprintf("没有这个学生!");break;/*/*打开失败for(i=0;i<student_number;i+)if(fp=fopen("D:Studentstudent.txt","rb")=NULL)打开文件*/printf("不能打开文件n");
27、信息*/printf("");system("pause");exit(0);printf("已成功修改!");3.11 查看各门课程的成绩情况计算函数void showClass求各科的平均分。首先计算各科的总成绩,最后进 行平均分求值,计算完成显示最后计算结果。具体函数如下:void showClass(Student student口)int j;int sum=0;float avg1,avg2,avg3;printf("高数平均分:");for(j=0;j<student_number;j+)sum
28、=studentj.score0+sum;avg1=sum/student_number;printf("%fn",avg1);sum=0;printf("大英平均分:");for(j=0;j<student_number;j+)sum=studentj.score1+sum;avg2=sum/student_number;printf("%fn",avg2);sum=0;printf("C语言平均分:");for(j=0;j<student_number;j+)sum=studentj.score2+
29、sum;avg3=sum/student_number;printf("%fn",avg3);3.12 保存并退出保存函数void WritetoText主要用来对学生成绩运行后的结果进行保存。该函 数在运行之前先要定义一个指向文件的指针*fp ,在定义一个移动指针fp和保存输出的文件名studenti。用户根据系统的提示,输入要保存的文件名和保存路径。 系统以只写(“w”)方式打开文件,如果移动指针fp不为空则写入一条记录。运 行结束返回主菜单。运行过程函数:void WritetoText(Student student口)int i = 0;FILE *fp; /*定
30、义文件指针*/if(fp=fopen("D:Studentstudent.txt","w")=NULL)/* 打开文件*/ printf("不能打开文件n"); system("pause"); exit(0); fprintf(fp,"%dn",student_number);/*循环写入数据*/ while(i<student_number) fprintf(fp,"%-8s%-8s%-s %3d%3d%3d%.2f %3dn",studenti.num,stude
31、,studenti.sex,studenti.score0,studenti.score1,studenti.score2,stu denti.avg,studenti.sum); i+; fclose(fp);/* 关闭文件*/ 4、调试分析 4.1运行工具介绍Dev-C+是一个Windows环境下的一个适合于初学者使用的轻量级C/C+集成开发环境(IDE),它是一款自由软件,遵守 GPL许可协议分发源代码。Dev-C+使用MingW64/TDM-GCC 编译器,遵循C+ 11标准,同时兼容C+98标准。开发环境包括多页面窗口、工程编辑器以及调试器等,在工程编辑 器中集合了编
32、辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以 减少编辑错误,还有完善的调试功能。4.2调试操作将编写好的程序在Dev-C+的代码编辑器里进行编辑,语法检查正确后进行 运行。系统进入运行后,首先进入学生成绩管理系统的主菜单界面,系统提示用 户输入0-9之间的不同数字,来实现不同的操作。主菜单界面如图1所示。3 E:M®EHomeworkChixu nCCC.exei3Ci型*学生成绩管理系统*1.添加学生信息*+2.显示学生信息+*3.按学号排序*+4,拄总成绩排序* 5.查我单外学生* 6,删除指定学生* 7,修改学生信息*+8,查看务门课程的成绩情况* 9.待定功能*
33、 6.探后通由*iJj T* Vu*> gi jJLak- -mjj faJj k-hJa史dfcta J«- »AiiJj »Ai = 串Ai =:irTr f;f ;r r ;r irTv 啸f .; r;'r wsri r;'r 叫弓,7'' ?S. pZhr?n, M:r 耳.s rj 耳.fTr 耳''Jf ;'r itTr ;1'.;"若,请输入选择(0-9):图i学生成绩管理系统主界面5、测试结果5.1 添加学生信息在主菜单界面输入1,按回车键。结果如下图:I EA再面E
34、HQmBorkCshixunTCCC.exe X* .*+*+#*学 生 成嫦管理 系纺*木木*4*#本* L添加学生信息* 2显示学生信息* 工按学学排序* 4.按总成绩排序* 5.查找曜个学生* 6.删除指定学生* 工修改学生信息* &青看各门课程的成绩情况* 以待定功能* 0*仅而通山* *才* * * * *东* *求*京水*请输入选择(07):1南入学生信息情输入学生学号:201933学4;姓农:ho8?学生性别:用学生高效成绩:普口人大英或绩:77怦生Ci吾占成绩:酩此学生彷息录入完毕,是否继续? wx)5.2显示学生信息在主菜单界面输入2接回车。如下图:句&删除指定学生* 1、修改学生信息* 8.荏行各门课程的成绩情况* 9.待定功能* 0.保存退出*水木木小水*木本水本本水水冰水*冰冰本冰*冰不中小本本卡冰水率水冰本冰率水*本本本请输入选择(0-9) :2显小已录201902z
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 标准包工包料建房合同细则
- 原材料采购合同(Purchase Contract)
- 附大院子的联排别墅出租合同
- 基础设施建设项目合同战略合作协议
- 合同规定的寄存档案条款
- 股份有限公司设立二人合同范本
- 教育辅导服务合同条款
- 企业贷款担保合同模板
- 大型场馆建设合同焊接工
- 广告制作合作合同样本(版)
- 2024年大学生参加学法普法知识竞赛考试题库及答案
- 2024年海南省高考历史试卷(含答案解析)
- T∕CACE 0118-2024 改性磷石膏混合料道路稳定基层应用技术规程
- 同等学力英语申硕考试词汇(第六版大纲)电子版
- 钢笔的修理 课件
- 教师个人嘉奖主要事迹材料500字(31篇)
- 基金基础知识考试题库100道及答案
- 高一下学期统编版历史必修中外历史纲要下第6课《全球航路的开辟》课件(共38张)
- 部编四下语文《口语交际:转述》公开课教案教学设计【一等奖】
- 人教版(2024新版)九年级上册化学:第四单元 跨学科实践活动3《水质检测及自制净水器》教案教学设计
- 《跨文化传播教程》全套教学课件
评论
0/150
提交评论