学生成绩管理系统设计与实现47.docx

上传人:太** 文档编号:86406303 上传时间:2023-04-14 格式:DOCX 页数:27 大小:105.25KB
返回 下载 相关 举报
学生成绩管理系统设计与实现47.docx_第1页
第1页 / 共27页
学生成绩管理系统设计与实现47.docx_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《学生成绩管理系统设计与实现47.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计与实现47.docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现3. 2功能函数(1)录入学生成绩:此函数实现的功能主要是进行初始数据的输入,能按学年,按班级对数据进 行录入。根据for循环来实现多个学生的信息录入,再根据成绩类和学生类中的 设置学生信息和学生成绩的函数实现学生成绩的输入,再根据if条件语句的判 断来决定是否对输入的函数进行存储.Void lr () cinn; 需要录入的学生人数 for (int j=0;jn;j+) studj. setstudent();ScoreEj. setenglishO ;Scorej. setmath();Scorej. setphysi

2、cs();Scorej. setprog();Scorej. getenglish();ScoreEj. getmath();ScoreEj. getprogO ;Scorej. getphysics(); studj.displayl();Scorej. display();coutpress2;if (press2? y) save_f ile ();if (press2=,n ) cout不保存endl; menu();(2)保存数据功能此函数的主要功能是对录入的学生信息数据进行保存,数据以文件的形式进 行保存。在此函数中使用文件处理的方式,建立一个文件输出流对象,使输入的 学生信息都写

3、入2013年度1班.txt等文件中,这样可以方便以后的信息查看和 数据的规整。保存函数void save_file()ofstream outfile (f2. dat); 定义文件流对象,翻开磁盘文件“f2.dat ” if(!outfile) cerr/zopen f2. dat error! /endl;exit (1);for(int i=0;i30;i+)outfile姓名:Scorei. namez,学号Scorei. numz/ 班级Scorei. bj英语成绩Scorei. english3”数学成绩Scorei. math3z/ 物理成绩z/Scorei. physics3/

4、z 程序设计成绩(Scorei. prog3?/ 总成绩 ,Scorei. total;outfile. close();cout文件保存成功endl;(3)数据查询功能此函数的主要功能是对数据进行查询,在查询功能中,可以按多条件查询, 本系统目前按姓名查找,按班级查找和按学号查找按姓名杳询:主要使用if条件语句和for循环来判断键入的学生姓名和 数据库中的学生姓名是否一致,如假设一致便调用输出函数对该学生信息进行输 出。同时进行各科成绩的及格判断(也是实用if条件语句),最终实现学生信 息的完整输出。void CX() char namel;cout请输入姓名endl;cinnamel;/键

5、入查询姓名for (int i=0; i30; i+) 利用for循环在已经存储的数据中检 索i f(Scorei. name=name1)Scorei. display();学生信息的输出cout不及格科目:;if条件语句判断并输出不及格科目if (Score i, englsih 3 60) cout英语;if (Score i. math 3 60) cout数学;if (Scorei. physics360)cout物理;if (Scorei. prog3 60) cout程序设计endl;break;按班级查询:根据输入的班级号来查询出所有属于这个班级的学生信息, 能够更加直接明了的

6、比对各个班级的成绩。所用方法和上述的按姓名查找的方法 一样。void bbj () int bjl;cout请输入需要查询的班级”endl;for(int n=0;n30;n+)if(Scoren. bj=bjl) cout 所在班级为0Scoren.bj 的学生成绩已找到 z/endl;Score n. PJ ();if (Scoren.bj!=bjl) coutzzcan,t find this bjz/endl;(4)修改数据功能此函数的主要功能是对数据进行修改,在修改功能中,包含了查询功能。根据提示信息输入学生的学期、班级和学号,然后使用if语句对输入的信 息进行判断,当满足判断的条件

7、后执行接下来的for循环语句,对学生信息进行 检索,如果该学生的学号和输入的学号相等,那么输出相应的语句,来提示修改该 学生的信息。修改学生信息函数void XG() int numl;char pressl;coutnuml;for(int i=0;ipressl;switch(pressl) case,y : save_f ile () ;break;case n : cout不保存endl; break;10(5)数据排序功能按照总分排序函数(选择排序法,按平均分的排序方法与之相同,略) void Student:sortl() (Score tempi;创立一个对象,储存要对换的数据

8、int nl, n2, size; coutnl; cout 请输入要排序的班级:; cinn2;if (nl=2013&n2二l) nl=0;size=sizel; if (nl=2013&n2=2) nl=0;size=size2; if (nl=2014&n2二l) nl=l;size=size3; if(nl=2014&n2=2) nl=l;size=size4; 计算每个学生的总分 for (int m=0;msize;m+) stunln2-lm. sum=stunln2-lm. mathl()+stunln2-l m.englishl ()+stunln2-lm. compute

9、ri();for(int i=0;isize;i+)for(int j=0;jsize-i;j+) (if (stunln2-lj. sumstunln2-lj+1. sum) ( templ=stunln2-lj;11stunl n2-l j=stunl n2-l j+1; stunl n2-l j+l=templ;)输出成绩cout学年班级 学号 姓名 数学英语计算机总分“endl;for(int k=0;ksize;k+)cout/z /zstunl n2-l k. yearz/;coutz/ /zstunl n2-l k. Class,z;cout,/ ,/stunl n2-l k.

10、number,z ;coutz/ z/stunl n2-l k. namez/ ;cout/z /zstunl n2-l k. mathl () /z;cout,/ z,stuEnl En2-1 k. englishl () ,z;coutz,/zstunl n2-l k. computeri ();cout,z /zstunl n2-l k. sumendl;平均分排序:根据所得到的各科成绩计算出平均分,然后利用if条件语 句判断学生的平均分高低进行排序.此函数应用了冒泡排序法的方法进行排序。void bpj () int m, t; string mz; double e, g, p, c

11、;for (m=l ;m30;ni+) for (intj=l;jScorej-l. pj)t=Scorej. pj ;Scorej. pj=Scorej-l. pj ;Scorepj=t;e=Scorej. english3 ;orej. english3=Scorej-l. english3 ;Scorej+l. english3=e;g=Scorej. math3;Scorej. math3 =Scorej-l. math3 ;Scorej-l. math3=g;12p=Scorej. physics3;Scorej. physics3=Scorej+1.physics 3;Scorej

12、-l. physics3=p;c=Scorej.prog3;Scorej. prog=Scorej-l. prog3;Scorej- 1. prog3=c;display () cout”英语:english3 ;cout数学:;cout物理:physics 3 ;coutz/C+: z/prog3 zz ; coutnl;coutn2;if(nl=2013&n2=l)nl=0;size=sizel;ifstream infile(,ZD:2013 年度 1 班.txt”, ios: in);13if (!infile)cerr/zopen error! /zendl; exit (1);)f

13、or(int i=0;istunln2-li. yearstunln2-li. Classstun 1n2-li. numberstunln2-li. namestunln2-li. math0 stunln2-li. mathlstunln2-li. math2stunln2-li. englishOstunln2-li. englishlstunl n2-l i. english2 stunln2-li. computer0stunln2-li. computer1stunl n2-l i. computer 2 ;cout学年班级 学号 姓名 数学平时成绩 数学期末成绩 数学平时成绩所占

14、百分比 英语平时成绩 英语期 末成绩英语平时成绩所占百分比计算机平时成绩计算机期末成绩 计算机平时成绩所占百分比0endl;coutstunl n2-l i. year,z/zstunl n2-l i. Classz, z/stunl n2-l i. numberz/ /zstunl n2-l i. namezz /zstunl n2-l i. math0/z ,zstunl n2-l i. mathlz/ ,zstunl n2-l i. math2zz ,stunl n2-l i. english0z, /zstunl n2-l i. english1zz /zstunl n2-l i. e

15、nglish2/z ,stunl n2-l i. computer0z/ z/stunl n2-l i. computer1/z z/stunl n2-l i. computer 2 endl;infile, close();14主函数void menu () cout*end1;cout*end1;system(,color 9b);学生资料管理system(,zstop 1000);*/,endl;cout*cout*1 .录入学生资料*endl;cout*2 .删除学生资料*endl;3 .修改学生资料*z,endl;0.返回cout*cout*按Enter继续*endl;4.读取学生资

16、料*/zendl;*z,press;if (press=l) cout请输入要输入学生的个数n;for(int j=0;jpress2;if (press2=,y) save_f ile ();if (press2=,n ) cout不保存endl; menu ();if (press=2) SCO ;menu() ;if (press=4) XG();menu () ;if(press=5) cout/zl.按班级输出endl;cout/z2.按平均成绩输出press3;if (press3=l)bbj ();if (press3=2)bpj();menu ();if(press=0)ret

17、urn 0;16题目学生成绩管理系统设计与实现考核工程考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、 基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答下列问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总评成绩指导教师评语:日期:删除学生信息根据输入的学生姓名查找到相应学生并对其相关个人信息进行删除 void SC() int findnum;int h=0;cout请输入删除学生的学号f

18、ind num;for (h=0;h=30;h+)if (Scoreh. num=find num) for(int j=h;j30;j+)Scorej. english3 =Scorej+1. english3;Scorej. name=Scorej+1.name;Scorej. num=Scorej+1. num;Score j.bj=Scorej+1. bj;Scorej. math3=Scorej+1. math3;Scorej. physics3=Scorej+1.physics 3;Score j.prog 3=Scorej+1.prog3;)getchar ();17第4章系统调

19、试运行4. 1系统主界面主界面:在主界面里选择你所需要的操作,从键盘输入(04)进行选择衣 *E:sdsdsdDebugsdsdsd.exe*学生资料管理n 生生生生 入除改取回 录删修12 3 4 0按Ent ei*继续I图4-1主界面图184. 2系统运行结果(1)录入学生资料:既是输入1的时候,见图 4-2名1314绩 姓2020成 生号期语 聿42学.央入入13入入 iai 请 清名1314绩 姓2020成 生号期语 聿42学.央入入13入入 iai 请 清百分比7输入数学成绩.7.7青输入程序设计平时成绩.7:陆岩:2013122:1342:2014:139 数学:202 物理:30

20、7 C258 总分:906保存数据?请输入(y/n)图4-2录入信息图19(2)删除学生资料:既是输入2时的界面,如下c: E: shixunDebugsds. exec: E: shixunDebugsds. exe学生资料管理&K1& & 7. V7- .V7- H 生生生生 3XX率 入除改取回 录删修 12 3 4 0请输入删除学生的字号 图4-3删除信息图20(3)修改学生资料:既是输入3的操作界面,如下学生资料管理学生资料管理*E:shixunDebugsds. exeK1&K1K1 生生生生 当Z-Z-Z-子 入除改取回 录删修售 12 3 4 0按Ent ex继续3播输入要修改

21、的学生学号图4-4修改信息图21ZpH* *学生资料管理料MM.沁 生生生生 W#学 入除改取回 录删修 12 3 4 0按Ent er继缥(4)读取学生资料:既是输入4的操作界面,如下c: *E: shixunDebugsds. exeKXMMMMMXXXXMMMMXMXMXMXXXXMMMMXMXMMMXM薪簟翳爵输出括输入需要查询的班级图4-5成绩排序图22(5)返回:既是输入0时的操作界面,如下*E:shixunDebugsds. exe*学生资料管理K1&K1K1 二1 二/ NJ 二, 生生生生 入除改取回 录删修售 12 3 4 0也 r.Press any key to con

22、tinue图4-6系统退出图23课程设计体会这个课程工程让我学到了很多。一直以来觉得自己学的还是不错的,但真到 运用的时候才发现自己还有很多的知识薄弱点。开始写程序时我信心满满,但逐 渐的便被一些或大或小的问题搞得崩溃。这或许就是眼高手低的坏处。本系统的 重点就是要会建立四个类和功能函数,一个学生的成绩记录,相当于一个结构体 的功能吧,一个类是学生成绩记录系统类该类用来存放多个学生的成绩记录,还 有班级类和课程类。难点就是类里的各个功能的实现。总的来说,添加,显示, 查找,这三个功能比拟容易,但是,删除,保存,加载这三个功能就需要花点心 思了,可能是平时用的比拟少吧,生疏了。可见只有通过平时多

23、加练习,才能有 助于自己巩固知识点。最后想说的是,调试程序真的很关键。调试程序需要较大 的耐心。可能调试程序的时间比自己编写整个程序的时间还要长,下的工夫还要 深,但这是一个程序员必须了解,也必须接受的事实。写代码是个考验耐心的过 程,在不断的寻找错误的过程中体会到细心的重要性,并且还可以查缺补漏,让 自己更多的关注到细节的处理。总之,编程路很长,我们需耐得住寂寞!参考文献谭浩强C语言程序设计基础清华大学出版社谭浩强C+面向对象程序设计清华大学出版社谭浩强C程序设计题解与上级指导(第三版)清华大学出版社郑莉C+程序设计清华大学出版社郑阿奇Visual C+实用教程电子工业出版社24第1章系统设

24、计目的11.1 课程设计目的11.2 课程设计主要目标11.3 课程设计内容及所用设施11.4 课程设计任务及要求11. 5课程设计基本操作方法1第2章 系统实现思路21.1 课程设计工程22. 2系统设计思路2第3章 系统详细设计43.1类的设计73. 2录入数据功能73 . 3保存数据功能74 .4查询数据功能错误!未定义书签。3. 5修改数据功能73. 6数据排序功能73. 5数据读取功能73.5主函数7第4章 系统调试运行184.1系统运行结果19课程设计体会23参考文献24第1章系统设计目的1.1 课程设计目的通过高级程序设计语言课程设计,使学生能将学到的面向对象的程序设 计思想用到

25、具体的工作和学习中,加深对类与对象的理解,是将计算机课程与实 际问题相联接的关键步骤。通过课程设计,能够提高学生分析问题、解决问题, 从而运用所学知识解决实际问题的能力。1.2 课程设计主要目标通过本课程设计,使学生进一步深化掌握C+语言的基本知识;掌握结构化 程序设计的基本方法和设计技巧,初步了解算法分析与设计概念;理解面向对象 程序设计思想,初步具备运用面向对象程序设计方法进行程序设计的能力。能熟 练应用VC+集成环境进行C+语言程序的编写、编译与调试,提高学生对本课程 知识综合运用能力。1.3 课程设计内容及所用设施学生成绩管理系统设计与实现,PC机、VC6.0语言编辑、编译运行工具、文

26、 档编辑软件等。L4课程设计任务及要求根据提供的实习题目,认真完成软件设计的全部过程,并以最终软件设计成 果来证明其独立完成实际任务的能力,从而,反映出理解和运用C+程序知识的 水平和能力,最后完成软件设计和程序调试并提交文档:课程设计报告书,报告 书中包含设计的算法及局部程序代码。1. 5课程设计基本操作方法1、按照系统用户手册及文档规范要求进行操作,养成查阅手册、文档的良 好习惯;2、对特殊疑难问题采用讨论、协作等方式进行解决,有意识地训练团队合 作意识;3、课程设计报告应多包含在课程设计过程中出现的错误及解决方法。第2章 系统实现思路2.1课程设计工程设计四个类,包括学生类(描述学生基本

27、信息);成绩类:班级类;课程 类(描述课程信息:课程编号,科目名称,如高等数学,大学英语等);学生成绩及课程信息用文件保存,程序执行时从文件读入;能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成 绩;求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生 成绩,不及格科目及学生名单;能按班级输出学生的成绩单。- 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期 末成绩、平时成绩所占百分比- 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩 * (1-平时成绩所占百分比)- 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信

28、息。分单人显示和以班输出(班成绩单格式输出到文件)注意,至少应包含一个班、30人、三门课2. 2系统设计思路首先建立四个类,分别为学生类(描述学生基本信息),成绩类,班级类, 课程类(描述课程信息),以学生类为基类,采用公用派生的方法派生出成绩类, 班级类,课程类。学生类中包括学生信息(姓名,学号,性别,班级等信息), 并且包括初始学生信息等函数。课程类中包括英语,高数,程序设计等学科信息, 和初始各科成绩等函数。成绩类主要包括各科成绩及平均成绩和总成绩等,还包 括输出成绩函数。主函数中以提示加数字选择的方式来实现菜单的运用,以便于用户的使 用。菜单主要来实现以下几个功能:1.录入数据功能。2

29、.保存数据功能。3.查询 数据功能。4.修改数据功能。5.排序数据功能。6.读取数据功能。各个功能采用 学生类的公用成员函数来实现。录入数据功能使用单独一个函数实现单个或多个学生信息的录入,其中采 用if条件语句来判断录入学生个数,然后依次对学生的姓名、学号、班级、英 语成绩、数学成绩、物理成绩、程序设计成绩进行录入.然后在根据if条件语句 判断是否保存,也就是是否调用保存函数(saveO).保存数据功能,本函数主要根据C+面向对象程序设计中的文件操作 与文件流这一章中所学的知识,实现对数据的保存与录入.查询功能:此功能可以让学生更为方便的查询自己个相关信息函数采用 for循环并且嵌套if条件

30、语句来实现数据的查询。可以分别采用学生姓名查询 或者学号查询这两种查询方法.修改数据功能:本函数根据for循环和if循环找到需要修改的学生,在 进行新数据的录入与保存.排序功能:排序功能主要分为两种排序,平均分排序和总分排序。根据的 到的各科成绩计算出来的平均分和总分,在比拟平均分或总分的大小来实现排序 输出.、读取数据功能:主要是实现数据的输出,能够更加清晰的比拟班级或各科 的成绩.2. 3程序流程图本系统主要包括了录入数据。查询数据、录入数据、修改数据、保存数据、 成绩排序、数据读取等功能。通过主菜单来呈现各个选项的数字,供用户更方便 的选择。学生管理系统主菜单一录入数捱修改数搏保存数报数

31、据排舁数据读抽退出系鸵图2-1系统流程图第3章系统详细设计3.1类的设计(1)学生类的设计此类中主要包括了学生的基本信息,如学生姓名,学号,班级等.此类作为 基类,主要思考是这几个信息跟后面的成绩、课程的信息都有关联。所以作为基 类更为合适。Class Studentpublic:string name;学生姓名int num;学生学号int bj;学生班级int xq;学期void setstudent ();设置学生基本信息void displayl();输出学生基本信息(2)成绩类的设计此类主要是包含了学生各科成绩的成员数据。成绩是与学生个体相关的, 每个学生与他的成绩可以说是组成了这个

32、学生的个人信息。所以声明成绩类为学 生类的派生类.class Score:public Student public:double english, math, prog, physics, total, pj;char name;int num;int bj;void setenglishO ; 设置英语成绩 double getenglishO return english; void setmath (); 设置数学成绩 double getmath()return math; void setprog ();设置程序成绩 double getprogO return prog; voi

33、d setphysics ();设置物理成绩 double getphysics ()return physics; double gettotal () return english+math+physics+prog;/得至 总成绩void display ();double PJ()pj=(english+math+physics+prog)/4;return pj;/ 得到平均成绩);(3)班级类的设计班级类主要是以不同班级为成员,其中包括了以班级输出成绩的函数.可以 实现对不同班级成绩的区别存储.class bj:public Studentpublic:char name 15;学

34、生姓名char number 15;学号int sum;总分double average;/学生平均分double mathl() return (math0*math3+mathl*(l-math2); double englishl() return (english0*english3+englishl*(l-english2); double computeri() ( return(computer0*computer3+computer1*(1-computer2);):(4)课程类的设计课程类中定义了不同学科的一位数组。例如english3,主要思路是: english0保存为学生的考试成绩,englishl为学生的平时成绩,english3 保存为学生的最后成绩。后面的各个课程都是如此。Class course:public Student Public:double english3, math3, physics3. prog3;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁