课程设计实验报告.docx
- 文档编号:28206640
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:31
- 大小:57.40KB
课程设计实验报告.docx
《课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《课程设计实验报告.docx(31页珍藏版)》请在冰豆网上搜索。
课程设计实验报告
课程设计报告
课程设计题目:
研究生初试录取
学生姓名:
邓松
学号:
1021111726
专业:
软件工程(嵌入式)
班级:
10211117班
指导教师:
李祥
2011年12月01日
1实验题目---------------------------------------------------4
2功能设计---------------------------------------------------5
2.1功能的描述-----------------------------------------5
2.2功能实现概述--------------------------------------5
3.涉及到的知识点------------------------------------------5
4结构分析---------------------------------------------------5
4.1系统类的结构分析----------------------------------7
4.2主函数结构分析-----------------------------------8
4.3UML图---------------------------------------------10
5相关代码的实现-----------------------------------------22
5.1各类的定义及其实现------------------------------17
5.2文件的操作------------------------------------------20
5.3冒泡排序法的使用----------------------------------20
5.4复试系统人数筛选----------------------------------22
6调试操作与说明------------------------------------------25
7实验心得---------------------------------------------------25
8附录(代码)---------------------------------------------40
一.实验题目:
研究生初试录取
研究生考试课程为4门,其中数学、外语、政治为统一命题,而专业基础课则根据不同的专业由招生学校自行命题。
国家对初试录取分数有总分要求(如某一年要求4门课总分应达到310分),另外还有对每门课的最低分数要求(如总分为100的试卷最低应达到40分,总分为150的试卷最低应达到65分)。
编程统计初试合格的人数,并按总分由高到低的顺序输出合格考生的信息。
基本要求
程序运行时首先要求输入:
考生姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩。
这些原始数据应保存到一个文件中。
然后输入:
录取的总分要求,各课程的最低分数要求。
输出要求:
过线考生的姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩及总分,这些信息应存放到另一个文件中。
测试数据
程序应输入不少于10名考生的信息,其中应届生和历届生分别有若干名,并且都有合格和不合格的情况。
实现提示
可定义一个考生类存放有关信息和实现相应的操作。
分数线数据(总分要求和各门课程的要求)可定义另外的类来存放,但应能被考生类及其派生类直接访问。
选做内容
初试合格的考生应经过复试才能决定是否录取,复试成绩合格(大于一给定分值)可以录取,否则被淘汰。
而录取的顺序假设是按照专业基础课和复试成绩的平均值来确定的(因为这涉及到是计划内还是委培问题)。
因此,应首先输入初试合格考生的复试成绩及复试的合格线分数,然后按上面要求排序输出并标明被淘汰的学生。
2功能设计
2.1功能描述
主要有几大功能:
1可以根据系统的提示输入考生的相关信息,如姓名,准考证号报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩;
2.根据系统提示,实现考生人数的输入,并且显示相应的信息,将其保存在一个文件中。
2可以根据系统的提示输入初试录取的相关要求,如总分,政治、数学、外语、专业基础课的成绩;
3可以统计录取的人数并按总分由高到低的顺序依次输出考生的信息。
4.可以实现录取信息的输出,并且按照总分以降序的形式将信息保存于文件中。
4.可以根据系统的提示输入复试录取的相关要求,如专业基础课的成绩,复试达标的成绩。
5.系统还可以实现总分的计算,以及复试成绩贺专业基础科的成绩的平均成绩的计算。
6.系统可以根据输入复试的达标的要求,自动筛选出初试合格的人数与复试达标的人数,并且输出他们相关的信息。
2.2功能实现
定义四个类分别记录考生信息与录取要求,在主函数中通过类的使用实现。
第一个类就是考生基本信息类student,还有就是初试录取要求类need,第三个类就是初试通过的学生信息类student1,第四个类就是复试need1.
3.涉及到的知识点
(1).类的定义与引用
(2).构造函数的定义与使用
(3).if判断语句的使用
(4).函数的定义与调用
(5).函数的重载
(6).利用for循环语句进行冒泡排序
(7).文件的打开关闭、输入输出
(8).输入输出流的操作
(9).插入运算符和操纵符的使用
4.结构分析
4.1系统类的结构分析
考生信息Student类的结构分析
(1).定义考生信息(为初试录取要求类的友元类)
数据成员:
考生姓名(name),准考证号(num),报考专业
(course),状态(应届/历届)(static)数学成绩
(mathscore),英语成绩(englishscore)政治成绩
(policyscore),专业基础课成绩(majorscore)
分(sum)
函数成员:
计算总分函数add(),不带参数的构造函数
student(),带参数的构造函数student(char
*name1,intnumber,char*course1,char*state1,floatms,floates,float
ps,floatmajs)
初试录取要求need类的结构分析
(2).定义初试录取要求
数据成员:
数学最低录取分(maths),英语最低录取分
(englishs),政治最低录取分(policys),专业基础课最
录取分(majors),总分最低录取分(sums)
函数成员:
不带参数的构造函数need(),带参数的构造
数need(floatms,floates,floatps,floatmas)
初试通过学生信息类
(3).定义初试通过并且参加复试的学生信息
数据成员:
学生姓名(name),准考证号码(num),
报考专业(course),专业基础课分数(majorscore),复试分
数(score),专业基础课和复试成绩的平均分(avgscore)
函数成员:
求专业基础课和复试成绩的平均分函数avgscore(),不带参数的构造函数student1(),带参数的构造函数student(char*name1,intnumber,char*course1,char*state1,floatmajs,floatscore1)
复试录取要求类
(4).定义复试录取要求
数据成员:
复试成绩(score),复试合格线(avgscore)
函数成员:
不带参数的构造函数need1(),带参数的构造函数need1(floatscore1,floatavgscore1)
4.2主函数结构分析main()
(1).首先定义一个考生信息对数组,用于保存报考考生的信息。
由于题目要求至少测试10名考生,因此可以定义一个含有15个元素的考生类对象数组Studenta[15]。
(2).定义一个静态变量n用于统计初试通过的考生人数。
(3).定义一个静态变量m用于统计复试被淘汰的考生人数。
(4).定义一个文件file1用于保存考生信息fstreamfile1。
(5).用冒泡排序法将个考生的成绩按照降序的方法排序。
(6).定义一个文件file2用于保存初试通过的学生的信息。
(7).最后根据考生的专业基础课成绩和复试成绩的平均成绩以及复试合格成绩和初试通过学生进行对比,筛选出被淘汰的考生的姓名和准考证号。
4.3系统的UML图
设计四个类,一个为student,一个为need,另外两个为student1和need1,分别用老表示考生信息类,初试录取要求类,初试通过考生信息类,复试录取要求类。
它们的结构用UML类图画出如下:
Student(考生信息)
-mathscore:
float //数学成绩
-englishscore:
float //英语成绩
-policyscore:
float //政治成绩
-majorscore:
float //专业课程成绩
-sumscore:
float //总分
-name:
char //考生姓名
-num:
int //准考证号
-static:
char //状态
-course:
char //报考专业
+student() //不带参数的构造函数
+student(char*name1,intnumber,char*course1,char*state1,floatms,floates,floatps,floatmajs)//带参数的构造函数
+add():
float //求总分的函数
Need(初试录取要求)
-maths:
float //数学最低录取分数
-englishs:
float //英语最低录取分数
-policys:
float //政治最低录取分数
-majors:
float //专业课最低录取分数
-sums:
float //总分最低录取分数
+need() //不带参数的构造函数
+need(floatms,floates,floatps,floatmas)//带参数的构造函数
Student1(初试通过的考生信息)
-score:
float //复试成绩
-majorscore:
float //专业课程成绩
-avgscore:
float //平均分
-name:
char //考生姓名
-num:
int //准考证号
-static:
char //状态
-course:
char //报考专业
+student1() //不带参数的构造函数
+student1(char*name1,intnumber,char*course1,char*state1,floatmajs,floatscore1) //带参数的构造函数
+avg():
float //求平均分的函数
Need1(复试录取要求)
-score:
float //复试成绩
-avgscore:
float //复试合格线
+need1() //不带参数的构造函数
+need1(floatscore1,floatavgscore1)//带参数的构造函数
注:
student类是need类和need1类
的友元类。
5.各阶段的代码的实现
5.1各类的定义及其实现
1.考生信息类的定义及其实现
classstudent
{
public:
/*定义考生类的函数成员*/
student(){}//无参数的考生类构造函数
student(char*name1,intnumber,char*course1,char
*state1,floatms,float es,floatps,floatmajs)
//带参数的考生类的构造函数
{ //函数实现 strcpy(name,name1);
num=number;
strcpy(course,course1);
strcpy(state,state1);
mathscore=ms;
englishscore=es;
policyscore=ps;
majorscore=majs;
Sumscore=ms+es+majs+ps;
}
floatadd() //定义求总分的函数
{
sumscore=mathscore+englishscore+policyscore+majorscore;
returnsumscore;
}
/*定义考生类的数据成员*/
charname[20]; //考生姓名
intnum;//考生准考证号
charcourse[20];//报考专业
charstate[10];//应届/历届
floatmathscore;//数学分数
floatenglishscore; //英语分数
floatpolicyscore;//政治分数
floatmajorscore;//专业课分数
floatsumscore;//总分
};
2.初试录取要求类的定义及其实现
classneed //初试录取要求类的定义和实现
{
public:
/*定义要求类的函数成员*/
need()//无参数的初试录取要求类的构造函数
{//无参数的初试录取要求
类的构造函数的实现
cout<<"请输入录取最低的数学成绩:
"< cin>>maths; cout<<"请输入录取最低的英语成绩: "< cin>>englishs; cout<<"请输入录取最低的政治分数: "< cin>>policys; cout<<"请输入录取最低的专业课分数: "< cin>>majors; cout<<"最低总分为: "< cin>>sums; } need(floatms,floates,floatps,floatmas) //带参数的初 试录取要求类的构造 函数 {//带参数的初试录取要 求类的构造函数的实现 maths=ms; englishs=es; policys=ps; majors=mas; sums=ms+es+ps+mas; } friendclassstudent; //定义考生类为要求类的 友元类,实现考生类及其派生类直接访问要求类 /*need类数据成员的定义*/ floatmaths;//数学最低分要求 loatenglishs;//英语最低分要求 floatpolicys;//政治最低分要求 floatmajors;//专业课最低分要求 floatsums;//总分最低要求 }; 3.初试通过考生类的定义及其实现 classstudent1//初试通过的考生类的定义 { public: /*定义初试通过考生类的函数成员*/ student1(){}//无参数的初试通过的考生 类构造函数 student1(char*name1,intnumber,char*course1,char *state1,floatmajs,floatscore1)//带参数 的初试通过的考生类的构造函数 { //带参数的初试通过的考生类的构造函数函数实现 strcpy(name,name1); num=number; strcpy(course,course1); strcpy(state,state1); majorscore=majs; score=score1; avgscore=(majorscore+score)/2; } floatavg()//定义求专业基础课和 复试成绩的平均分的函数 { //求专业基础课和复试成绩的平均分的函数实现 avgscore=(majorscore+score)/2; returnavgscore; } /*定义考生类的数据成员*/ charname[20];//考生姓名 intnum;//考生准考证号 charcourse[20];//报考专业 charstate[10];//应届/历届 floatmajorscore;//专业课分数 floatscore;//复试分数 floatavgscore;//专业基础课和复试成绩的平均分 }; 4、复试录取要求类的定义及其实现 Classneed1//复试录取要求类的定义和实现 { public: /*定义复试要求的函数成员*/ need1() //无参数的复试录取要求类的构造函数 { //无参数的复试录取要求类的构造函数的实现 cout<<"请输入复试成绩: "< cin>>score; cout<<"请输入复试合格线: "< cin>>avgscore; need1(floatscore1,floatavgscore1) //带参数的复试录取要求类的构造函数{ //带参数的复试录取要求类的构造函数的实现 score=score1; avgscore=avgscore1; } Friendclassstudent; //定义考生类为要求类的友元类,实现考生类及其派生类直 接访问要求类 /*定义录取要求类的数据成员*/ floatscore;//复试成绩 floatavgscore;//复试合格线 }; 5.2文件的操作 1.创建文件file1用来保存考生基本信息 Fstreamfile1;//创建文件1用来保存考生基本信息 file1.open("D: \\考生信息.txt",ios_base: : out|ios_base: : binary); file1<<"\t\t\t***********考生信息***********\t\t\t"< file1< file1<<"序号考生姓名准考证号报考专业数学外语状态政治专业课总分\t\t\t"< for(i=0;i<15;i++)file1< cout<<"\t\t\t***********考生信息***********\n"< cout<<"序号考生姓名准考证号报考专业数学 外语状态政治专业课总分"< for(i=0;i<15;i++)cout< : left)< : left)< : left)< : left)< : left)< : left)< : left)< : left)< : left)< : left)< file1.close(); 2.创建文件file2用来保存初试通过的考生信息 fstreamfile2; file2.open("D: \\考生初试录取信息.txt",ios: : out|ios_base: : binary); //将考生的录取信息写入文件中 file2<<"\t\t\t***********初试录取结果***********\t\t\t"< file2< file2<<"序号考生姓名准考证号报考专业状态数学外语政治专业课总分\n"< cout<<"\t\t\t***********初试录取结果***********"< cout<<"序号考生姓名准考证号报考专业状态数学外语政治专业课总分"< for(i=0;i<=14;i++) { i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 实验 报告