学生成绩管理系统课设报告_第1页
学生成绩管理系统课设报告_第2页
学生成绩管理系统课设报告_第3页
学生成绩管理系统课设报告_第4页
学生成绩管理系统课设报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机高级语言课程设计报告学生成绩管理系统班级:学号:姓名:日期:一课程设计题LI与要求学生成绩管理是高等学校教务管理的重要组成部分,主要包括学生成绩的录入、删除、 査找及修改、成绩的统计分析等等。请设汁一个系统实现对学生成绩的管理。系统要求实现以下功能:(1)增加记录:要求可以连续增加多条记录。(2)删除一个学生的记录:要求可以先査找,再删除。删除前,要求用户确认。(3)成绩修改:若输入错误可进行修改;要求可以先查找,再修改。(4)查找:可以根据姓名(或学号)查找某个学生的课程成绩,查找某门课程成绩处于指 定分数段内的学生名单等等。(5)统计分析:对某个班级学生的单科成绩进行统汁,求岀平均成

2、绩;求平均成绩要求实 现函数的重载,既能求单科的平均成绩,又能求三科总分的平均成绩。求出一门课程标准差 和合格率;(6)排序功能:要求按总分进行排序(从高到低),若总分相同,则按数学排序;若总分 和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序:(7)文件操作:可以打开文件,显示班级的所有学生信息:可以将增加或修改后的成绩重 新写入文件:可以将排序好的信息写入新的文件。【较高要求】査找可以实现模糊査询,即输入划字的一部分,可以列出满足条件的所有记录。再从这个记 录中进行二次选择。【测试数据】一个文本文件(学生成绩数据.TXT)二需求分析可以在win7系统中,在visual stu

3、dio 2013的环境下对学生成绩进行管理和分析。三概要设计根据对课程设讣的要求分析,本课程设计有增加成绩,删减成绩,修改成绩,査看个人成绩 以及总体成绩分析六个模块。系统框架图如下:是是否继续退出模块运行流程图:(增加学生成绩(AddScore)删减学生成绩(DeleScore)(修改成绩与删减成绩流程相似。)退出查看个人成绩流程图:得到返回值t, 显示到屏幕总体成绩分析流程图:四详细设计2 类的设计首先立义了一个Student类,私有数据成员包括学生学号,学生姓名,数学成绩,物理成 绩,英语成绩以及三门成绩总分;函数成员包括显示左义的默认构造函数,复制构造函数以 及析构函数等,其中内联左义

4、的默认构造函数实现了私有数据的录入,还包括私有数据的使 用函数(GetName, Getld. GetEng, GetPhy, GetMatht GetSum),以及显示函数(Show)。在Student类的基础I、定义了一个Manage类,这个类的私有数据成员为一个Student类 数据类型的容器Stu:函数成员包括增加学生成绩(AddScore),删减学生成绩(DeleRecord), 成绩修改(ChangeRecord),成绩查看(Search) 总体成绩分析(Analyse),按学号查找(Searchld) 按姓名査找(SearchName),显示全班成绩(Display),平均分计算

5、(Average),标准差计 算(Standard),合格率计算(Pass),对成绩进行排序(Sort),查看某分数段的功能(Searchscore), 文件输入函数(InFile),文件输出函数(OutFile)。2. 主界而功能开始自动导入学生成绩(Infile ();)主界而显示各模块功能选项,选择数字执行对应模块。 结束后输岀欢迎使用本系统。3. (4各模块的设计与实现模块实现所需的基础函数:文件输入函数:void lnFile();创建一个文件输入流对象ifile,打开储存的文本文件并判断是否成功打开文件,然后通过 while设置一个循环,依次读入学生学号(i),姓名(n),数学(m

6、),英语(e)和物理(p), 并创建Student类对象s (i,n,m,e,p),尾插到容器stu中,直至读到结束符EOF时,跳岀循 环。关闭文件。文件输岀函数:void OutFilef);创建一个文件输岀流对象ofile,打开目标输出文件,文件输出目录,设置一个for循环,通 过Student类的public函数依次输岀容器中每一个成员的私有数据,直到容器中的最后一个 成员。关闭文件,输出保存成功。个人成绩査看模块:int Search。;输出提示用户选择査找方式,1.按学号查找2.按姓划查找,其他提示错误重新输入。通过int Searchld();fn int SearchName()

7、;査看个人成绩成功后提示是否继续査看,是则执行循环,重复 此模块,否则返回t,退出。按学号查找:intSearchld();提示用户输入正确的学号,得到id,通过for循环,从容器中第一个元素开始,依次通过GetldO函数获取每一名学生的m_ld进行比较,每比较一次t+1,相等时跳出循环,通过Show ()函数输出该生所有信息。若没有相同的学号(t=(),则重新提示用户输入,结束后返 回该生在容器中的位置t。按姓名查找int SearchName();与按学号查找方式相同。增加成绩模块:void AddRecord();提示用户输入学生各项信息,获得i,n,m,e,p,通过for循环判断该生的

8、姓爼或者学号是否已 经存在,已存在输岀提示,并另k=l,此循环结朿后继续判断该生成绩范囤是否合法,若不 合法也输岀提示并令k= while循环,肖kL时重新进行以上步骤。输入正确后,询问用户 是否保存,输入1保存,则创建Student类对象s(i,n,m,e,p)并尾插到容器stu中,将新结果 输出到文件中(OutFile) o询问是否继续。删除学生成绩模块:void DeleRecord();首先查找要进行删除的学生记录(int Search ():)得到返回值t,询问是否确认删除。删 除则通过for循环将该生信息位宜逐个后移,直至成为最后一个再使用pop_back()函数删除 该记录。成功

9、后提示成功并询问是否继续。修改学生成绩模块:void ChangeRecord();首先查找要进行删除的学生记录(int Search ():)得到返回值t,输岀提示选择修改项目(k),输入错误或者修改值不合法均设置错误提示。最后获得的修改值为temp,通过成员 函数依次获取stut的i,n,m,e,p。通过switch函数选择执行功能,如k=l,则为case 1,令 m=temp,跳出,询问是否确认修改,如果确认修改则创建s(i,n,m,e,p),令stut=s,则修改成 功,否则输岀修改未保存。询问是否继续。总体成绩分析模块:void Analyse();输出提示用户选择相对功能,1.显示

10、全班成绩(void Display。;)2.平均分(void Average)3.标准差(void Standard。;)4.合格率(void Pass();)5.査看某分数段的同学(void SearchScore();) 6.对成绩进行排序(void Sort();),通过switch语句进入相对应的功能函数。结朿后询问是否 继续。该模块实现所需的函数:1.2. void Display();使用for循环,通过Student类的Show函数,依次将每个学生的信息输出到 屏幕,直至容器中的最后一个元素3. void SearchScore();输出提示用户选择科目获得k,输入错误重新输入,

11、提示用户输入上限 和下限,swith语句进入不同科目的查找,通过for循环,找到在限定范用的信息就输出到 屏幕(Show),至循环结朿。询问是否继续査看。4. void Sort();使用嵌套的for循环对总成绩进行排序,排序完成后继续使用嵌套for循环,如 果总成绩相同则按照数学成绩进行排序,若都相同则按照英语成绩进行排序。将结果显示到 屏幕上(void Display)并询问是否保存结果至文本,保存则执行0utFile ()。5. 平均分,标准差,合格率三个函数均与SearchScore类似,只是计算语句不同。五测试包括对各功能模块的测试 学生成绩管理系统士输入您选择的序号输入学生人数:2

12、9増删聚总录录1 记记查分 生生改绩绩可 c:usersadministratordocumentsvisual studio 2013ProjectsConsoleApplication 12Debu| czj ! (1 : S3 |输人学生人数:29录录 记记查分 生生改绩绩 in tasAtt 增删專总 、1 2 3 4 5 1输入您选择的序号请按顺序输入学生的学号姓名数学英语物理:20131003408 李四 78 89 909025720131003408 李四 ?8是沓继续添加 i疋2否回 II & I増删專总录录看析 记记查分 生生改绩绩 辜修成成E c:userB3dminkt

13、T3to叭documentdSsual studio 2013ProjctsConsoleApplicationl2Debu. = !II除成功?学号2.姓名输入正确的学号;2012100112120121001121田甜958587267是直重新查找?1是P2.否JJ c:usersadministratordocumentsv!sual studio 2013ProjectsConsoleApplicationl2Debu韶选择查找方式;学号2 .姓名倉縛确的姓名;220121000290 边达宇 75065200严查抑 否 备选择修改项目仁数学2 英语3 物理1陰输入修改值:?0请暦认是

14、否修改?r- XE 乙-口O 回 S3fe存成功!.32) ciXusersdministratodocumentsvisual studio 2013ProjectsConsoleApplicationl2Debu.y565006007658203858 M-888798988988888888 亠于需彬迪男飞曦USW8 达暑国振坷云如U霉笛宇然史云文揭贤 边王高和利盂罗三邵局一二尹刘产箱二喜14 S 6于进-粽查对436226462962962452b420520627322620696 LT9 778b b098868498849580908u59689849394827859o9fi8

15、o9u988686 n8 9苗 I输入您选择的序号录录壽 记记查分 生生改绩绩 辜修成成 加曹人体 増删專总 、12 3 4 5 1 _请按顺序输人学生的学号姓名数学英语物理,20131003408 李四 78 89 9020131003408 李四 78899025?是旨保存:1 疋 2 否 和存成功!昧2 不目疋 曰疋JE20121000424 20121800553 20121000570 2M1210UM584 20121000818 20121B0R921 20121801248 20121001316 20121001375 20121001695 20121001842 2012

16、1802002 2M121MW2152 20121002162 20121002269 20121002321 2M121BWZ43? 201210025853 c:usersadministratordocumentsvisual studio 2013ProjectsConsoleApplicationl2Debu. | o | 回”& 卜増加学生记录 卜黯譌记录 k敕霧查責 匚总休成绩分需输入您选择的序号1 显示舍班成绩3 Q悔壬蕭輛萨同学氢入需求平均值的科目=数学2.英语3 .物理4.总分1;数学的平均分是;84.8621丄疋 2 否J c:u5er5administratordocu

17、nentsvisual studio 2013PrqjectsConsoleApplicationl2Debu.逮躺評同学 爲入查找科目:1 数学2输入查找上限和下限二90 85990948678查询结臬为:20121000570 20121000584 28121000818 20121000921 20121001248 20121001375 20121001&95 20121001842 20121002002 20121002152 20121002321 20121002585利振彬88S288888890SSco E S3分率奈绩 戈麻杳一对 2 3 4 5 6 62012100

18、33992012100042420121001695201210012482012100081820121090553201219018422012100277529121003358201210026852012100335920121002002201210042332012100232120121001375201210022692012100243920121002152怡 男舊 臻曦锅俊宇 方晨赛珂曹晴寒專宇国文晨云舉 龚王王王孟高尹马肖曹张刘贾于周墜戸尹909396S595969&889190908&85938890S788888887858289869390S5908795869

19、090869590949679農73729086869085883 c:usersadministratordocumentsv!sual studio 2013ProiectsConsoleApplication!2Debu.六结论虽然本次课程设计要求的功能基本都实现了,但还是有很多问题,主要是代码不够简洁,很 多地方都可以进行精简。模块设计也不是很合理,比如增加成绩,删减成绩两个模块都只实 现了一个功能,而总体成绩分析模块却包括了六个功能。在这次课程设计中,我感受最深的 是思路一定要淸晰,写代码之前先要理淸楚整体结构,考虑淸楚再下手。写代码时不能因为 马虎而常犯小错误,要提高自己找错纠错能

20、力,通常错误总是那几种,多练习就熟练了。过 程中也遇到了很多困难,不要因为遇到困难就开始烦躁,静不下心,要沉下心来去解决问题, 学会查找资料,利用网络来获得知识,获得帮助。以后还要多练习,才能锻炼思维和熟练度。七附录ffifndef STUDENTdefine STUDENT_H#mcludeffinclude #mclude using namespace std; class Studentfprivate:string m_name?md;int m_math,m_eng,m_ph%m_sum; public:Student();Studentfstring i,string njnt

21、m,int ezint p); Student();int Sum();string GetName();string Getld(); intGetMath(); int GetEng(); int GetPhyf); void Show();Student & operator=(const Student &s); ;ffendif ffifndef MANAGE_H define MANAGE_H 转 include” #include #include #mclude #include #include using namespace std; class Manage privat

22、e: vectorstu; public: void AddRecord(); void Analyse。; void OutFile(); void DeleRecord(); void ChangeRecord(); int Searchld(); int SearchName(); void SearchScore(); void Average(); void Standard(); void Pass(); void Sort(); void lnFile(); int Search(); void Displayf); ;ffendif转 include”Student:Stude

23、nt(string i,string nJnt mjnt ejnt p)md=i;mname=n;m_math=m;g=e;m_phy=p;m_sum=m_math+m_eng+m_phy;int Student:Sum()m_sum=m_math+m_eng+m_phy;return m_sum;string Student:GetName()return m_name;string Student:Getld()return md;int Student:GetMath()return m_math;int Student:GetEng()return m_eng;int Student:

24、GetPhy()return m_phy;void Student:Show()coutmndl;Student& Student:operator=(const Student &s)md二;m name=;m_math=; m_en g=; m_phy=; return *this; include”int mep;string tn;etld() 11 n = stut.GetName()cout H已有该生成绩! ”100 11 m100 11 e100 11 p 0) cout 输入成绩范戌为0-1001 endl; k= 1;while(k=l);Student s(i,nm 巳

25、p);0;coutHendl;cout”是否保 #:,endl,l.是 2 否“endl; cink;if(k=l);OutFile();coutHuendl;coutM是否继续添加Mendl;coutHl.是 2否Mendl;cink;while(k=l);号”十2姓名l,endl;cink;,t,t,1,2.否-endl;cink;while(k!=l&k!二 2);while(k=l);return t;/ vector迭代器插入删除else t+; while (t =();how();return t;etName() break;else t+; while (t =();stut

26、.Show();return t;M,t,t,2.英 iS,t,t,3.物理 hendl;cink;if(k!=l&k!=2&k!=3)cout”输入错误!请重新输入! Mendl;while(k!=l&k!=2&k!=3);cout ”输入査找上限和下限:“ endl;docin max min;if (max100 11 min O)cout 输入错误!请車新输入 endl; while (max100 11 min 0);coutHendl;8ut”查询结果为:,endl;switch(k)case 1:for(t=0;t();t+)temp=stut.GetMath();if(temp

27、=min)stut.Show();;break;case 2:for(t=0;t();t+)temp=stu(t.GetEng();if(temp=min)stut.Show();;break;case 3:for(t=0;t();t+)temp=stut.GetPhy(); if(temp=min) stut.Show();break;default:coutn 输入 tn i!hendl;break;coutHHe ndl;coutM是否继级坟段査询Hendl;coutHl.是 2否Mendl; cink;while(k=l);学英语物理,t,4.总分 Kendl;cink;if (k !

28、= 1 & k!=2 & k != 3&k!=4)cout:)入错误!请重新输入! endl; while (k != 1 & k!=2 & k != 3&k!=4); switch(k)case 1:for(t=0;t();t+)add+=stu(t.GetMath();average=add/();cout数学的 丫均分是:Haverageendl; break;case 2:for(t=0;t();t+)add+=stut.GetEng();average=add/();coutH英语的平均分是:averageendl; break;case 3:for(t=0;t();t+)add+=

29、stut.GetPhy();average=add/();coutH物理的T均分是:Haverageendl; break;case 4:for(t=0;t();t+)add+=stut.Sum();average=add/();cout总分的平均分是:Haverageendl;break;coutHendl;coutM是否继续求平均值,endl;coutl.是2否 Mendl;cink;while(k=l);学英语物理,t,M4.总分 Mendl;cink;if (k != 1 & k!=2 & k!=3 & k != 4)cout“输入错误!请重新输入! ”endl; while (k !

30、= 1 & k!=2 & k!=3 & k != 4);switch(k)case 1:for(t=0;t();t+)add+=stu(t.GetMath();average=add/();for(t=0;t();t+)standardadd+=(stut.GetMath()-average)*(stut.GetMath()-average); standard=sqrt(standardadd/();cout数学的标准差是:standardendl;break;case 2:for(t=0;t();t+)add+=stu(t.GetEng();average=add/();for(t=0;t

31、();t+)standardadd+=(stut.GetEng()-average)*(stut.GetEng()-average);stan dard=sqrt(standardadd/();cout英语的标准差是:,standardendl;break;case 3:for(t=0;t();t+)add+=stut.GetPhy();average二add/();for(t=0;t();t+)standardadd+=(stut.GetPhy()-average)*(stut.GetPhy()-average); stan dard=sqrt(sta ndardadd/();coutH物理

32、的标准差是:Hstandardendl;break;case 4:for(t=0;t();t+)add+=stu(t.Sum();average=add/();for(t=0;t);t+)standardadd(stut.Sum()-average)s(stut.Sum()-average);stan dard=sqrt(standardadd/();coutH总分的标准差是:standardendl;break;default:cout”输入锚 iMMendl;break;coutHHencll;coutM是否继续求标准差,endl;coutl.是2 否endl;cink;while(k=l

33、);II,t,t,2.英语*物理Uvendl;cink;if (k != 1 & k!=2 & k!=3 )cout”输入错误!请重新输入! ”endl; while (k!=l & k!=2 & k != 3 );switch(k)case 1:for(t=0;t=60) pa+;pass=pa/();cout数学的及格率是:passendl;break; case 2:for(t=0;t=60) pa+;pass=pa/();coutH英语的及恪率是:Hpassendl;break;case 3:for(t=0;t=60) pa+;pass=pa/();coutH物理的及恪率是:passe

34、ndl;break;dcfault:cout输入错误! ! endl;coutHcout是否继续求及格率Mendl;coutHl.是2否 Mendl;cink;while(k=l);示全班成绩Mendl;coutH2.平均分,endl;cout”3 介格率” stup.Sum()um() = stup.Sum() & stuq.GetMath() stup.GetMath() um()=stup.Sum() & stu(q.GetMath() = stup.GetMath() & stu(q.GetPhy() stu(p.GetPhy() um()= stup.Sum() & stu(q.GetMath() = stup.GetMath() & stuq.GetPhy() = stup.GetPhy() & stuq.GetEng() stu(p.GetEng() um() = stup.Sum() & stu(q.GetMath() = stup.GetMath() & stuq.GetPhy() = stu(p.GetPhy() & stu(q.GetEng() = stu(p.GetEng() & stu(q.Getld() stup.Getld()2 否 Mendl;cink;if(k=l) OutFile();学英语,t,t,M3.物理 Mendl

温馨提示

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

评论

0/150

提交评论