C++课程设计报告---学生成绩管理系统设计报告.doc

上传人:good****022 文档编号:116548452 上传时间:2022-07-05 格式:DOC 页数:16 大小:183.01KB
返回 下载 相关 举报
C++课程设计报告---学生成绩管理系统设计报告.doc_第1页
第1页 / 共16页
C++课程设计报告---学生成绩管理系统设计报告.doc_第2页
第2页 / 共16页
C++课程设计报告---学生成绩管理系统设计报告.doc_第3页
第3页 / 共16页
点击查看更多>>
资源描述
课程设计报告课程名称:计算机高级语言(C+)课程设计课程设计题目:学生成绩统计管理系统系:数学与计算科学系专 业:信息与计算科学年级、班:信计0901姓 名:学 号:指导教师:职 称:2010年12月学生成绩管理系统设计报告1系统分析(需求分析)1.1需求分析:能够实现学生学号、姓名、各科成绩的录入;能够实现对学生信息的浏览、查找、删除;能够实现对学生信息按学号顺序显示,成绩排名; 能够对各科成绩统计情况输出。1.2系统性能要求:系统安全、可靠;功能齐全;操作方便、界面友好;易于维护和扩充。1.3系统的功能分析:资料维护:系统维护包括对各学生姓名、成绩、学号的录入操作,对数据表中的信息进行浏览。成绩查询:可以对学生成绩进行详细查询及各科成绩的优秀和不及格人数、各科总平均成绩等相关信息的浏览。排序显示:包括统计学生排名成绩、不及格科目情况、各科总平均成绩。2概要设计2.1程序设计总体结构学生成绩管理系统录入删除查找修改保存排序退出系统2.2系统功能模块主函数流程图学生成绩查询系统功能主函数有:成绩录入、查询修改、排序显示。退出查找修改保存data,txt开始系统菜单选择删除添加清空排序3.功能的实现思路:本程序采用了单文件结构,对各部分的功能实现具体如下:3.1 “成绩录入”模块:3.1.1序号录入:对各个学生序号录入3.1.2数据录入:对学生科目和成绩进行录入3.2 “查询修改”模块:3.2.1可以对学生数据进行指定查找、修改或查看全部学生信息。3.2.2选择输出单科成绩统计情况。3.3 “排序显示”模块:3.3.1可自行按学号顺序显示所有学生信息。3.3.2可选择查看学生总分排名,排序显示到用户屏幕。3.4其他功能的实现在这个程序中定义了一个标志flag去判断数据是否修改,是否保存。文件的读写等功能的具体实现都应用了恰当的方式。4.系统测试程序测试结果良好,基本实现了所有要求屏幕截图如下:5. 设计总结此次c+课程设计,在指导教师的精心教导下,我们学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。6. 参考文献1、陈雪飞著C+实例入门 中国青年出版社2、谭浩强著C程序设计(第二版)北京:清华大学出版社19993、谭浩强著C+程序设计北京:清华大学出版社 20047. 学生成绩数据管理系统源代码(附:)#include#include#include#include#include#includeusing namespace std;struct Student int id; /学号 string name; /姓名 float score3; /分数 float sum;/总分;extern const int MAXNUM; /声明MAXNUM变量void Insert(Student *S); /插入学生数据void Delete(Student *S,int n); /删除学号为n的学生数据void Clear(Student *S);/清除所有学生数据int Search(Student *S,int n);/查找学号为n的学生,返回其索引号(数组下标)void Find(Student *S,int n);/查找并显示学号为n的学生的信息void View(Student *S);/查看所有学生的信息void Load(Student *S);/从文件中载入学生信息void Save(Student *S);/将学生信息保存到文件void Revise(Student *S);/修改学生数据void Tongji(Student *S);/查看各科成绩统计void Paiming(Student *s);/查看排名void Exit(Student *s); /安全退出void ShowMenu(); /显示菜单void ShowTip(); /显示操作提示void DoMenu(Student *S,char n);/执行相应菜单项功能int main() Student sMAXNUM; /定义保存学生数据的数组 Load(s); /载入学生数据 char ch=9; ShowMenu(); /显示菜单 coutch; system(cls); /清除屏幕 ShowMenu(); /显示菜单 DoMenu(s,ch); /执行菜单 ShowTip(); /显示提示 int num,i; /学生人数bool flag=true; /数据是否修改过的标志const int MAXNUM=100; /学生人数允许的最大值void Insert(Student *S) /插入学生数据 Student t; cout学号为整数,输入0终止录入endl; while(1) if(num=(MAXNUM-1) cout学生人数已达最大值!endl; return; coutt.id) /输入的不是数字,重新提示输入 cout学号应为整数!0) /查找此学号是否已存在 cout此学号已存在!endl; continue; if(t.id=0) /输入0结束录入 cout录入结束。endl; return; cin.sync(); /清空输入缓冲区 cout请输入姓名:; getline(cin,t.name); /读取一行 if(t.name=) /如读取的为空串,则设name为null t.name=null; coutt.score0t.score1t.score2; +num; /学生人数增1 Snum=t; /将新录入的学生加入数组中 flag=true; /数据已改动 void Delete(Student *S) /删除学生 if(num=0) cout无学生!endl; else int n,m=0; char q; coutn; m=Search(S,n); /查找学号为n的学生的索引号(在数组中的下标) if(m=0) /Search()返回0表示没找到 cout找不到要删除的学生!; return; /结束删除操作 else coutq; if(q=y|q=Y) for(int i=m; inum; i+) /删除Sm处的学生 Si=Si+1; -num; /人数减1 flag=true; /数据已改动 cout成功删除学号为n的学生endl; else return; void Clear(Student *S)/清除所有学生数据 num=0; /设置学生人数为0int Search(Student *S,int n)/查找学号为n的学生,返回其索引号(数组下标) for(int i=1; i=num; i+) if(Si.id=n) return i; /返回找到的学生的索引号(数组下标) return 0; /没找到,返回0,void Find(Student *S)/查找并显示学生的信息 int n; coutn; int i=Search(S,n); /查找学号为n的学生,返回其索引号(数组下标) if(i=0) cout查无此人!endl; else coutsetw(6)学号 setw(10)姓名setw(6)语文 setw(6)数学setw(6)英语endl; coutsetw(6)Si.id setw(10)Si.namesetw(6)Si.score0 setw(6)Si.score1setw(6)Si.score2endl; void View(Student *S)/查看所有学生的信息 char n; Student r; if(num=0) cout无学生记录!; else cout共有num条学生记录endl; coutsetw(6)学号 setw(10)姓名setw(6)语文setw(6) 数学setw(6)英语setw(6)总分setw(8)平均分endl; for(int j=1; j=num; j+) for(int i=1; iSi+1.id) r=Si; Si=Si+1; Si+1=r; for(int i=1; i=num; i+) Si.sum=Si.score0+Si.score1+Si.score2; float b=Si.sum/3.0; coutsetw(6)Si.id setw(10)Si.namesetw(6) Si.score0setw(6)Si.score1setw(6)Si.score2 setw(6)Si.sumsetw(8)setprecision(3)bendl; coutn; if(n=y|n=Y) Tongji(S); coutendl; Paiming(S); else return; flag=true; void Load(Student *S)/从文件中载入学生信息 Student t; ifstream infile(data.txt); /创建文件输入流,文件位于项目文件夹中 if(!infile) cerrSi.id; i+) /从文件中读取保存的学生数据 infileSi.nameSi.score0Si.score1Si.score2; num+; flag=false; /设置数据没改动 infile.close(); /关闭文件void Save(Student *S)/将学生信息保存到文件 ofstream outfile(data.txt); /创建文件输出流 if(!outfile) cerr错误:数据文件不能打开!n; else for(int i=1; i=num; i+) /将学生数据写入文件 outfileSi.id Si.name Si.score0 Si.score1 Si.score2endl; flag=false; /设置数据没改动 cout保存成功!endl; void Exit(Student *S) /安全退出 char s=y; if(flag) /判断数据是否修改 couts; if(s=y|s=Y) Save(S); /保存数据 cout已安全退出,; system(pause); /程序暂停,按任意键继续 exit(0); /结束程序void ShowMenu() /显示菜单 cout|-|endl; cout| 学生信息管理系统 |endl; cout|- -|endl; cout| 1.清空:清除所有学生数据 |endl; cout| 2.添加:插入一条学生数据 |endl; cout| 3.删除:删除指定学生数据 |endl; cout| 4.查找:查找指定学生数据 |endl; cout| 5.显示:显示所有学生数据 |endl; cout| 6.修改:修改所有学生数据 |endl; cout| 7.保存:保存所有学生数据 |endl; cout| 0.退出:安全的退出本系统 |endl; cout|-|endlendl;void ShowTip() /显示操作提示 coutendl; cout-操作完成-endl; cout-选择06继续-endl; cout请选择:;void DoMenu(Student *S,char n) /执行相应菜单项功能 switch(n) case 1: Clear(S); break; case 2: Insert(S); break; case 4: Find(S); break; case 3: Delete(S); break; case 5: View(S); break; case 6: Revise(S); break; case 7: Save(S); break; case 0: Exit(S); break; default: cout输入错误!; void Revise(Student *S)/修改学生信息 int n,a; char m; string name; coutn; int i=Search(S,n); if(i=0) cout查无此人!endl; else coutsetw(6)学号 setw(10)姓名setw(6)语文 setw(6)数学setw(6)英语endl; coutsetw(6)Si.id setw(10)Si.namesetw(6) Si.score0setw(6)Si.score1setw(6)Si.score2endl; coutm; switch(m) case 1: coutname; Si.name=name; break; case 2: couta; Si.score0=a; break; case 3: couta; Si.score1=a; break; case 4: couta; Si.score2=a; break; default: cout输入错误!请再输入编号:; flag=true; void Tongji(Student *S)/查看各科成绩统计 system(cls); ShowMenu(); coutsetw(14)语文setw(6)数学setw(6)英语endl; float m=0,n=0,l=0; int a=0,b=0,c=0,e=0,f=0,g=0; for(int i=1; i=90) a+; else if(Si.score060) e+; if(Si.score1=90) b+; else if(Si.score160) f+; if(Si.score2=90) c+; else if(Si.score260) g+; coutsetw(8)优秀人数setw(6)asetw(6)bsetw(6)cendl;coutsetw(8)及格人数setw(6)a+esetw(6)b+fsetw(6)c+gendl;coutsetw(8)不及格setw(6)num-a-esetw(6)num-b-fsetw(6)num-c-gendl; coutsetw(8)平均成绩setw(6)msetw(6)nsetw(6)lendl;void Paiming(Student *S)/查看排名 Student r; for(int j=1; j=num; j+) for(int i=1; i=num-j; i+) if(Si.sumSi+1.sum) r=Si; Si=Si+1; Si+1=r; coutsetw(6)学号 setw(10)姓名setw(6) 总分setw(8)平均分setw(6)名次endl; for(int i=1; i=num; i+) Si.sum=Si.score0+Si.score1+Si.score2; float b=Si.sum/3.0; coutsetw(6)Si.id setw(10)Si.namesetw(6) Si.sumsetw(8)setprecision(3)bsetw(6)iendl; 16
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 工业自动化


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!