C语言学生成绩管理系统设计.doc_第1页
C语言学生成绩管理系统设计.doc_第2页
C语言学生成绩管理系统设计.doc_第3页
C语言学生成绩管理系统设计.doc_第4页
C语言学生成绩管理系统设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

沈阳航空航天大学 课 程 设 计 报 告 大作业名称:C 语言课程设计 大作业题目:学生成绩管理系统设计 院(系):计算机学院 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师: 完成日期:2016年12月24日 沈阳航空航天大学课程设计报告 - 目目 录录 第第 1 章章 概要设计概要设计.1 1.1 题目的内容与要求.1 1.2 总体结构.1 第第 2 章章 详细设计详细设计.2 2.1 主模块.2 2.2 输入模块.3 2.3 显示模块.3 2.4 修改模块.4 2.5 删除模块.4 2.6 查询模块.5 2.7 统计模块.6 第第 3 章章 调试分析调试分析.7 第第 4 章章 使用说明使用说明.8 参考文献参考文献.12 附附 录(程序清单)录(程序清单).10 沈阳航空航天大学课程设计报告 第 1 章 概要设计 -0- 第 1 章 概要设计 1.1 题目的内容与要求题目的内容与要求 内容: 学生成绩信息包括:姓名、学号、语文、数学、英语。 实现的主要功能有: 1)信息维护。包括学生成绩的输入、按学号删除、按学号修改等。 2) 信息查询。输入学号或姓名,显示出该生三个科目的成绩,计算出三科总分 并显示,按总分将所有学生成绩排序,显示出该生的名次。 3)成绩统计。先输入任意一个科目,接着选择 a 或 b 来分别显示平均分或统 计 分数段学生,若选择 a,则直接显示出该科目的平均分;若选择 b,则提示 用户输入一个分数段,显示所有该科目属于该分数段内的学生信息,并给 出 学生总数。 要求: 1)系统以菜单方式工作。在不同的界面为用户给出具体提示。 2)系统利用 C 语言实现,源程序要有适当的注释。 3)采用 VC 环境进行运行调试。 1.2 总体结构总体结构 本程序主要分为七个模块(功能模块图见图功能模块图见图 1.1):结构体模块,输入模块, 显示模块,修改模块,删除模块,查询模块,统计模块。 结构体模块:建立一个结构体模块,为链表存信息用。输入模块:键盘输入 每个学生的信息,并保存在文件中。显示模块:显示全部学生的具体信息。修改 模块:修改某个学生的成绩信息。删除模块:删除某个学生的全部信息。查询模 块:查询某个学生的具体信息。统计模块:通过功能选择,统计并显示某一科目 沈阳航空航天大学课程设计报告 第 1 章 概要设计 -1- 的平均分或某分数段学生的具体信息。 图图 1.1 功能模块图功能模块图 第 2 章 详细设计 2.1 主模块主模块 控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块, 实现各项功能,流程如图 2.1 所示。 Y N N Y 学生成绩管理系统 显 示 模 块 修 改 模 块 删 除 模 块 输 入 模 块 查 询 模 块 统 计 模 块 主 模 块 开始 显示主菜单 选 0 退 出 执行具体功能 显示结果 结束 选 1-6 沈阳航空航天大学课程设计报告 第 1 章 概要设计 -2- 图图 2.1 主模块流程图主模块流程图 注释: 1. 显示主菜单; 2. 选择不同序号执行不同功能; 2.2 输入模块输入模块 输入所有学生信息并保存,流程如图 2.2 所示。 图图 2.2 输入模块流程图输入模块流程图 注释: 1. 循环输入每个学生的信息; 2.保存所有信息 2.3 显示模块显示模块 显示所有学生的具体信息,流程图如 2.3 所示。 input() printf(输入学号:); printf(输入姓名:); printf(第%d 门成绩的分数:,j+1); 结束 计算总分、平均分 printf(nn 信息保存成功!恭喜!nn); Print() 显示信息 沈阳航空航天大学课程设计报告 第 1 章 概要设计 -3- 图图 2.3 显示模块流程图显示模块流程图 注释: 1. 选择号好功能; 2. 显示全部学生的具体信息。 2.4 修改模块修改模块 修改某个学生各个科目的成绩,流程图如 2.4 所示。 Y N 图图 2.4 修改模块流程图修改模块流程图 注释: 1. 输入要修改学生的学号; 2. 输入要修改的科目信息; 3. 修改成功,是否要继续修改。是,继续;否,回到主菜单。 2.5 删除模块删除模块 结束 xiugai() printf(n 请输入要修改的同学的学号:); printf(n 请输入要修改学生修改后的的信息n); 是否继续修改? 结束 printf(n 修改成功!恭喜!n); 沈阳航空航天大学课程设计报告 第 1 章 概要设计 -4- 按学号删除某学生的全部信息,流程图如图 2.5 所示。 沈阳航空航天大学课程设计报告 参考文献 -5- Y N N 图图 2.5 删除模块流程图删除模块流程图 注释: 1. 输入要删除的学生的学号; 2. 显示该生信息,是否删除。是,删除;否,是否继续操作。 3. 是否继续删除。是,重复上述操作;否,退出回到主菜单。 2.6 查询模块查询模块 输入要查询学生的学号,显示该生具体信息,流程图如图 2.6 所示。 Y shanchu() printf(n 请输入要删除的同学的学号:); printf(n 该同学信息如下:n); 是否删除? printf(n 删除成功!恭喜!n); 是否继续删除? 结束 Y chaxun() printf(n 请输入学生学号:); 显示该生具体信息 是否继续查询? 结束 沈阳航空航天大学课程设计报告 参考文献 -6- N 图图 2.6 查询模块流程图查询模块流程图 注释: 1. 输入要查询的学生的学号; 2. 显示该生的具体信息; 3. 是否继续查询。是,继续查询下一位;否,回到主菜单。 2.7 统计模块统计模块 通过选择不同功能,显示某个科目的平均分或某分数段学生的具 体信息,流程图如图 2.7 所示。 case a:case b: Y N 图图 2.7 统计模块流程图统计模块流程图 注释: 1. 通过菜单选择科目; 2. 通过菜单选择 a 或 b 功能,分别显示该科目平均分或某分数段学生信息; tongji( ) printf(n 输入一个科目:); 选择功能 a 或 b 计算该科目平 均分 printf(nn 该科目的平 均成绩为:%.2fn,ave); printf(n 请输入分数段: _ 空格_ n); 显示属于该分数段 的学生;学生总数 是否继续查询其他科目? 结束 沈阳航空航天大学课程设计报告 参考文献 -7- 3. 是否继续查询?是,继续;否,回到主菜单。 第 3 章 调试分析 在这次课程设计中,程序编写的过程中遇到了很多问题,主要是函数实现方 面问题较多。 问题 1:查询函数 chaxun( )中,会造成数据混乱,原因是 for 循环中某行代 码运用错误,如下: for(i=0;in;i+) if(stui.num=x) k=i;/*找到要查询的同学学号,并用 k 记下其下标*/ OutputOneStudent(k); 将 OutputOneStudent(k);拿出后,查询功能正常实现。正确编写如下: for(i=0;in;i+) if(stui.num=x) k=i;/*找到要查询的同学学号,并用 k 记下其下标*/ OutputOneStudent(k); 问题 2:统计函数 tongji() ,功能实现完后不能回到主菜单。解决方法是, 沈阳航空航天大学课程设计报告 参考文献 -8- 把功能函数 gongneng()其中的 while 循环删掉。 第 4 章 使用说明 运行截图如下: 1.输入成绩 2.信息显示 沈阳航空航天大学课程设计报告 参考文献 -9- 3.修改信息 4.删除信息 沈阳航空航天大学课程设计报告 参考文献 -10- 5.查询信息 6.1 统计信息-科目平均分 6.2 统计信息-科目某分数段学生信息 沈阳航空航天大学课程设计报告 参考文献 -11- 7.退出系统 沈阳航空航天大学课程设计报告 参考文献 -12- 参考文献 1. 王敬华, C 语言程序设计教程(第二版) ,清华大学出版社,2009 年 8 月 2. 谭浩强, C 语言程序设计教程(第二版) ,清华大学出版社,1999 年 12 月 3. 谭浩强, C 语言程序设计题解与上机指导 ,清华大学出版社,2000 年 11 月 4. 田淑清, C 语言程序设计辅导与习题集 ,中国铁道出版社,2000 年 1 月 5. 张荣梅、梁晓林, Visual C+实用教程 ,冶金工业出版社,2004 年 附 录(程序清单) 程序代码: #include #include #include #define N 3 struct student int num; /学号 char name20; /姓名 float score3; /三门课成绩 float sum; /总分 float aver; /平均分 stuN; void menu(); /主菜单功能 void input(); /输入信息到结构体中 void save(int x); /保存 stud.dat 文件函数 void print(); /输出显示所有学生信息 void SaveAllStudent(int n); /保存全部学生信息 void xiugai(int n); /按学号修改成绩 int shanchu(int n); /按学号删除 void OutputOneStudent(int i); /查询一个学生的信息 沈阳航空航天大学课程设计报告 参考文献 -13- void chaxun(int n); /按学号查询成绩 void tongji(); /统计科目信息 void gongneng(int x); /a 或 b 功能分别显示科目平均分或分数段学生信 息 int main() printf(*n); printf(* *n); printf(* Hwadee printf(* *n); printf(*nnn); printf(*欢迎使用*n); while(1) menu(); return 0; /*主菜单*/ void menu() int choice; int n=N; printf(n 请选择功能:n); printf(n1:输入成绩n2:显示信息n3:修改成绩n4:删除信息n5:查询成 绩n6:成绩统计n0:退出系统nn); printf(n 请选择序号:n); scanf(%d, 沈阳航空航天大学课程设计报告 参考文献 -14- switch(choice) case 1: input(); save(N); break; case 2: print(); break; case 3: xiugai(n); break; case 4: shanchu(n); break; case 5: chaxun(n); break; case 6: tongji(); break; case 0: printf (n 谢谢使用,再见!nn); exit (-1); break; default: printf(输入错误!n); break; /*写入函数*/ void input() int i,j; printf(n 输入信息n); for(i=0;iN;i+) printf(输入学号:); scanf(%d, printf(输入姓名:); scanf(%s, 沈阳航空航天大学课程设计报告 参考文献 -15- for(j=0;jN;j+) printf(第%d 门成绩的分数:,j+1); scanf(%f, stui.sum=stui.score0+stui.score1+stui.score2; stui.aver=stui.sum/3; printf(n); /*写入文件*/ void save(int x) FILE *fp;/*定义文件指针用于向文件读入数据*/ int i; if(fp=fopen(student.dat,rb+)=NULL)/*以二进制读,写方式打开文件*/ printf(cannot open filen); exit(1); for(i=0;iN;i+) if(fwrite( fclose(fp); printf(nn 信息保存成功!恭喜!nn); /*显示全部学生信息*/ void print() int i; printf(学号 姓名 语文 数学 英语 总分 平均分n); for(i=0;iN;i+) 沈阳航空航天大学课程设计报告 参考文献 -16- printf(%d %s %.2f %.2f %.2f %.2f %.2fn,stui.num,,stui.score0,stui.score1,stui.score2,stui.sum,st ui.aver); /*保存全部学生信息*8*/ void SaveAllStudent(int n) FILE *fp; if(fp=fopen(student.dat,wb)=NULL) printf(文件打开失败!n); exit(1); fwrite(stu,sizeof(struct student),n,fp); fclose(fp); /*修改学生信息*/ void xiugai(int n) struct student temp; int k=-1,x,i; char c1=y; while(c1=y) printf(n 请输入要修改的同学的学号:); scanf(%d, for(i=0;in;i+) if(x=stui.num) k=i;/*找到要修改的同学学号,并用 k 记下其下标*/ break; if(k0) 沈阳航空航天大学课程设计报告 参考文献 -17- printf(n 输入学号有误,请重新输入!); else printf(n 请输入要修改学生修改后的的信息n); printf(语文(空格)数学(空格)英语tn); scanf(%f %f %f, temp.sum=(temp.score0+temp.score1+temp.score2); temp.aver=(temp.score0+temp.score1+temp.score2)/3; stuk.score0=temp.score0;/*修改该学生信息*/ stuk.score1=temp.score1; stuk.score2=temp.score2; stuk.sum=temp.sum; stuk.aver=temp.aver; printf(n 修改成功!恭喜!n); break; SaveAllStudent(k); printf(n 继续修改操作吗?); printf(n 继续修改请按 y;不进行修改请按 nn); getchar(); c1=getchar(); printf(n 按任意键继续!n); getchar(); /*删除学生信息*/ int shanchu(int n) int i,k=-1,x; char c1=y,c2; while(c1=y) 沈阳航空航天大学课程设计报告 参考文献 -18- c2=n; printf(n 请输入要删除的同学的学号:); scanf(%d, for(i=0;in;i+) if(x=stui.num) k=i;/*找到要删除的同学学号,并用 k 记下其下标*/ break; if(k0) printf(n 输入学号有误,请重新输入!); else printf(n 该同学信息如下:n); OutputOneStudent(k); printf(nn 确定删除?n); printf(确定进行删除请按 y;不进行删除请按 nn); getchar(); c2=getchar(); if(c2=y) for(i=k;i3|x1) break; 沈阳航空航天大学课程设计报告 参考文献 -20- for(i=0;i0 break; case 2: gongneng(x); break; case 3: gongneng(x); break; case 0: exit (-1); break; default: printf(输入错误!n); printf(nn 继续查询其他科目信息吗?); printf(n 继续查询请按 y;不进行查询请按 nn); getchar(); c=getchar(); /*选择 a 或 b 来分别显示该科平均分或统计分数段学生*/ void gongneng(int x) printf(nn 请选择功能:n); printf(na:显示该科目平均分nb:统计分数段学生n); printf(n 请选择 a 或 b:); char c; scanf(%s, switch(c) 沈阳航空航天大学课程设计报告 参

温馨提示

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

评论

0/150

提交评论