1、研究生成绩管理系统C+ 程序设计实验报告中南大学信息科学与工程学院专业:电气信息类班级:学号:姓名:选题:研究生成绩管理系统指导教师: 课程设计时间: 目录一封面-1二.目录页-2三.基本内容和要求-3-4四.软件设计整体规划及方案-5五.程序功能简介-6六.主体内容-6-30 1.设计分析-6-7 2.程序结构-7 3.各模块功能、程序说明与源程序-7-25 4.操作方法与试验结果-26-29 5.设计体会-30 6.参考文献-30三.基本内容和要求C+研究生成绩管理系统 设计一个研究生基本信息管理案例,实现对不同学制的研究生的信息管理。研究生的学制包括:学术硕士和工程硕士。定义一个基本的研
2、究生类,基本信息包括:专业,发表论文(名称与级别1、2、3)可以多篇,最多三篇),论文成绩,总成绩;工程硕士属性包括:领域,参与项目(名称与级别A,B,C)项目成绩,总成绩。计算方式如下1) 学术硕士论文成绩计算:各个级别的论文得分为:级别*10,每个学生论文最高90分:假设某研究生发表两篇论文,级别分别为1、2,那么论文成绩=(1090+2090)*100,总成绩=课程成绩*0.7+论文成绩*0.3;2) 工程硕士项目成绩计算:每个学生只参与一项项目,各个级别得分:级90,B级75,C级60,不参与项目得分为0。总成绩=课程成绩*0.5+项目成绩*0.5;基本功能与技术要求、 数据文件管理功
3、能:利用输入输出流创建新文件、打开文件、保存文件。、 计算与统计功能:采用静态数据成员与成员函数完成记录中的相关数据统计。) 能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括总数、平均值、分段信息),例如:按总成绩得分为100、90-99、80-89、70-79、60-69和不及格学生的人数,以及所占的百分比。) 计算每个研究生的总成绩。、 记录管理功能:利用继承与派生思想创建不同的类;记录的管理采用链表或者指针数组实现;采用抽象类、虚函数等实现对象与函数的动态关联,体现多态性。) 输入添加插入记录:利用重载运算符“”完成对任意一条记录输入、添加或插入数据表中,
4、并保存到数据文件中。) 查询、显示记录:能够打开已经存在的数据表文件,根据用户要求按所给记录关键字查询一个或多个相关联记录的各项信息。利用重载运算符“”输出个对象的信息。) 修改记录:能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。) 删除记录:能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能)和物理删除功能,并对更新的数据表信息进行文件保存。四软件设计整体规划及方案1对于研究生信息,建立基类Graduated,并由此派生出两种研究生学制:学术硕士Xueshu和工程硕士Go
5、ngcheng,以此实现对基本信息的录入。2.在编写程序过程中,可以用到重载,派生,多态性,链表等功能来实现相应的功能。3.大致方案:对研究生各类论文和项目进行收集和录入。先定义一个研究生基类,录入两类研究生的基本个人信息:班级,学号,姓名,性别等。由研究生基类派生出两类研究生:学术硕士研究生和工程硕士研究生。在研究生个人基本信息录入成功后,再设计模块对各类研究生的论文和项目信息进行收集,进行计分和成绩统计及计算平均分和各分段所占相应总体的成绩。在完成相应信息和成绩的录入后再输出各类研究生的基本信息及成绩和各分段所占相应总体的成绩,在系统已经录入了各类研究生的各项信息的前提下,使用输出功能可以
6、显示各类研究生的所有信息及相应成绩的相关内容等等。具体包括两类研究生的姓名,学号,性别,论文成绩/项目成绩,论文/项目题目,以及各分段占总体相应的比例。然后实现查看各类研究生各方面的信息功能,再返回到主菜单进行之后的相应操作,选择插入、修改、删除等所需操作来继续进行系统的完善。然后在所有操作完成后对所记录的信息进行保存,方便在下次使用时直接对已录入并记录的信息进行查询或者其它相应操作。五程序功能简介本系统主要用于对不同种类(学术硕士、工程硕士两种)的研究生各类成绩进行信息收集和管理。通过本系统,可以将各个类的研究生的个人基本信息和相应成绩输入到系统中,由系统对不同种类的研究生的成绩进行相应各类
7、计算和录入,再保存到相应文件中,实现信息的录入和记录,便于进行相关查询和相关管理操作。此程序可以实现:录入、添加各类研究生信息,删除各类研究生相关信息,修改各类研究生信息,查询各类研究生信息,计算与统计各类研究生相关信息并将所录入的信息保存至txt文件,在查询时可显示之前所录入的相关信息。六主体内容1.设计分析:对于一个管理系统而言,主函数,函数以及成员函数是其重要组成部分。主函数的主要任务是确定所需调用函数,根据课程设计要求,该系统至少应该实现以下几种基本功能:输出研究生各类基本信息,删除所需的各类研究生相关信息,修改各类研究生相关信息,查找各类研究生相关信息,保存所输入的研究生相关信息。实
8、现以上任何一种功能都必须要调用一个函数,而编写函数的目的是编写一个能实现某种功能的函数供主函数调用。根据C+面向对象的特点,函数可以调用类中的成员函数。这样主函数和函数以及成员函数之间就层次分明,关系清晰明了,避免过于繁长。不同的函数调用的成员函数是不尽相同的,大体上每个函数都有一个相对应的成员函数,这些成员函数都是共有函数,并且只被其对应函数仅且只调用一次。当然,每个函数不可能只调用一个成员函数。而成员函数是一个系统的灵魂所在,因为所有的处理过程的细节都在成员函数中完成的。编写成员函数实际上就是一个算法的实现。成员函数的设计包括两方面内容:成员函数算法的实现和成员函数过程的实现。有了这些重要
9、的部分,一个程序也就具备了初步的条件,一个管理系统的模型就被建立了起来。2.程序结构:主界面1-输入菜单-选择操作-选择所要录入研究生类别-录入相关信息和成绩-修改插入查询删除退出。3.各模块功能、源程序及程序说明:1头文件/#include stdafx.h#include #include #include using namespace std;2重载class Xueshu;istream& operator(istream &in,Xueshu &x); ostream& operator(istream &in,Xueshu &x); /重载运算符为in friend ostrea
10、m& operator (ostream &out,Xueshu &x); /重载运算符(istream&in,Gongcheng&g); /友元重载输入函数输入工程硕士 friend ostream& operator (ostream&out,Gongcheng&g);/友元重载输出函数输出工程硕士 void sumpro(); /求成员函数工程硕士项目成绩 void sumsump(); /求成员函数工程硕士总成绩 void sumsum(); /求成员函数工程硕士全体总成绩 static void aver(); /求成员函数工程硕士全体平均成绩 void tongji(); /成员函
11、数统计不同分段信息 int chanum(int n); /成员函数,用于学号的查询是否正确,然后返回相应的值 int chaname(string n); /成员函数,用于姓名的查询是否正确,然后返回相应的值int return_num2(); /成员函数,重置学号,使其归0, 便于查询功能的实现3.声明、定义函数与文件操作class Paper /论文类public:Paper():name(as),level(0) /构造函数进行初始化int level; /论文等级 string name; /论文题目 void input(); /构造一个输入论文的成员函数 void output(
12、); /构造一个输出论文的成员函数 ;void Paper: input()coutname; coutlevel;for(;level!=1&level!=2&level!=3;)coutlevel;void Paper:output()cout该学术硕士论文题目为:nameendl; cout该学术硕士论文等级为:levelendl; /class Project /项目类public:Project():name(as),level(a) /构造函数进行初始化 char level; /项目等级 string name; /项目名称 void input(); /构造一个输入项目的成员函
13、数 void output(); /构造一个输出论文的成员函数 ;void Project: input()coutname; coutlevel;for(;level!=A&level!=B&level!=C;)coutlevel;void Project:output()cout该工程硕士参与项目为:nameendl; cout该工程硕士项目等级为:level(istream &in,Xueshu &x); /重载运输符为in friend ostream& operator (ostream &out,Xueshu &x); /重载运算符(istream&in,Xueshu&x) /重载
14、运算符int i;char j=y; coutx.num; coutx.name; coutx.sex;for(;x.sex!=m&x.sex!=f;)coutx.sex; coutx.age; coutx.score;for(;x.score100;)coutx.score; coutx.major;for(i=0;i3&j=y;i+) x.papi.input(); coutj; return in;ostream& operator (ostream&out,Xueshu&x) /重载运算符int i; out该学术硕士学号为:x.numendl; out该学术硕士姓名为:x.namee
15、ndl; out该学术硕士性别为:x.sexendl; out该学术硕士年龄为:x.ageendl; out该学术硕士课程成绩为:x.scoreendl; out该学术硕士专业为:x.majorendl;for(i=0;i3&(x.papi.level=1|x.papi.level=2|x.papi.level=3);i+) x.papi.output(); out该学术硕士总成绩为:x.sumpendl; return out;void Xueshu:sumpap() scopap=0;int i;for(i=0;i=90&sump=80&sump=70&sump=60&sump70)a4+
16、; if(sump(istream&in,Gongcheng&g); /友元重载输入函数输入工程硕士 friend ostream& operator(istream&in,Gongcheng&g) /重载 char j; coutg.num; coutg.name; coutg.sex;for(;g.sex!=m&g.sex!=f;)coutg.sex; coutg.age; coutg.score;for(;g.score100;)coutg.score; coutg.block; coutj;if(j=y) g.pro.input(); return in;ostream& operat
17、or (ostream&out,Gongcheng&g) /重载 out该工程硕士学号为:g.numendl; out该工程硕士姓名为:g.nameendl; out该工程硕士性别为:g.sexendl; out该工程硕士年龄为:g.ageendl; out该工程硕士成绩为:g.scoreendl; out该工程硕士领域为:g.blockendl;if(g.pro.level=A|g.pro.level=B|g.pro.level=C) g.pro.output(); out该工程硕士总成绩为:g.sumpendl; return out;void Gongcheng:sumpro() /求工程硕士项目成绩 scopro=0;if(pro.level=A|pro.level=B|pro.level=C)if(pro.level=A) scopro=90; if(pro.level=B) scopro=75; if(pro.level=C) scopro=60;void Gongcheng:sumsump() /求工程硕士个人总成绩 sumpro(); sump=(float)(scopro*0.5+score*0.5);void Gongcheng:sumsum() /求工程硕士全体总成绩 sum+=sump;count+;void Gongcheng:aver()
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922