面向对象程序设计大作业参考题目和要求doc.docx
《面向对象程序设计大作业参考题目和要求doc.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计大作业参考题目和要求doc.docx(33页珍藏版)》请在冰豆网上搜索。
面向对象程序设计大作业参考题目和要求doc
面向对象程序设计大作业
参考题目
1、学生信息管理
(1)问题描述
学生信息包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:
●系统以菜单方式工作
●学生信息录入功能(学生信息用文件保存)---输入
●学生信息浏览功能——输出
●查询、排序功能——算法
1、按学号查询
2、按姓名查询
●学生信息的删除与修改(可选项)
(2)功能要求
●界面简单明了;
●有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;
●最好用链表的方式实现。
(3)算法分析
首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:
是定义一个数组来存储,还是定义一个链表呢?
在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。
对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。
文件的读写操作大家参照书中的有关文件的章节。
2、学生综合测评系统
每个学生的信息为:
学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。
考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。
A、学生信息处理
(1)输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。
提示:
学生信息可先输入到数组中,排序后可写到文件中。
(2)插入(修改)同学信息:
提示:
先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,
(3)删除同学信息:
提示:
输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。
(4)浏览学生信息:
提示:
打开文件,显示该文件的学生信息。
B、学生数据处理:
(1)按考试科目录入学生成绩并且按公式:
考试成绩=(语文+数学+外语)/3计算考试成绩,并计算考试名次,提示:
先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。
(2)学生测评数据输入并计算综合测评总分及名次。
提示:
综合测评总分=(考试成绩)*0.6+(同学互评分)*0.1+品德成绩*0.1+任课老师评分*0.2。
(3)学生数据管理
提示:
输入学号,读出并显示该同学信息,输入新数据,将改后信息写入文件
(4)学生数据查询:
提示:
输入学号或其他信息,即读出所有数据信息,并显示出来。
C、学生综合信息输出
提示:
输出学生信息到屏幕。
3、图书管理系统
主要包括管理图书的库存信息、每一本书的借阅信息以及每一个人的借书信息。
每一种图书的库存信息包括编号、书名、作者、出版社、出版日期、金额、类别、总入库数量、当前库存量、已借出本数等。
每一本被借阅的书都包括如下信息:
编号、书名、金额、借书证号、借书日期、到期日期、罚款金额等。
每一个人的借书信息包括借书证号、姓名、班级、学号等。
系统功能包括以下方面:
A、借阅资料管理
要求把书籍、期刊、报刊分类管理,这样的话操作会更加灵活和方便,可以随时对其相关资料进行添加、删除、修改、查询等操作。
B、借阅管理
(1)借出操作
(2)还书操作
(3)续借处理
提示:
以上处理需要互相配合以及赔、罚款金额的编辑等操作完成图书借还业务的各种登记。
例如:
读者还书时不仅更新图书的库存信息,还应该自动计算该书应罚款金额。
并显示该读者所有至当日内到期未还书信息。
C、读者管理
读者等级:
对借阅读者进行分类处理,例如可分为教师和学生两类。
并定义每类读者的可借书数量和相关的借阅时间等信息。
读者管理:
对读者信息可以录入,并且可对读者进行挂失或注销、查询等服务的作业。
D、统计分析
随时可以进行统计分析,以便及时了解当前的借阅情况和相关的资料状态,统计分析包括借阅排行榜、资料状态统计和借阅统计、显示所有至当日内到期未还书信息等功能分析。
E系统参数设置:
可以设置相关的罚款金额,最多借阅天数等系统服务器参数。
4、学校运动会管理系统
问题描述:
(1)初始化输入:
N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;
(2)各项目名次取法有如下几种:
取前5名:
第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1;
(3)由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。
(4)所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。
5、个人通讯录管理系统
建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。
功能要求
(1)通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。
(2)输入功能:
可以一次完成若干条信息的输入。
(3)显示功能:
完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示)
(4)查找功能:
可以按姓名等多种方式查找通讯信息
(5)增加、删除、修改功能:
完成通讯录信息的多种更新
6、教师工资管理系统
每个教师的信息为:
教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。
注:
应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资-合计扣款。
A、教师信息处理
(1)输入教师信息
(2)插入(修改)教师信息:
(3)删除教师信息:
(4)浏览教师信息:
提示:
具体功能及操作参考题1。
B、教师数据处理:
(1)按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。
(2)教师实发工资、应发工资、合计扣款计算。
提示:
计算规则如题目。
(3)教师数据管理
提示:
输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件
(4)教师数据查询:
提示:
输入教师号或其他信息,即读出所有数据信息,并显示出来。
(5)教师综合信息输出
提示:
输出教师信息到屏幕。
7、教师工作量管理系统
计算每个老师在一个学期中所教课程的总工作量。
(教师单个教学任务的信息为:
教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时、单个教学任务总课时)
A、教师信息处理
(1)输入教师授课教学信息,包括教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时。
(2)插入(修改)教师授课教学信息:
(3)删除教师授课教学信息:
(4)浏览教师授课教学信息:
B、教师工作量数据处理:
(1)计算单个教学任务总课时。
计算原则如下表:
班级数目
单个教学任务总课时
2
1.5*(理论课时+实验课时)
3
2*(理论课时+实验课时)
>=4
2.5*(理论课时+实验课时)
(2)计算一个教师一个学期总的教学工作量。
总的教学工作量=所有单个教学任务总课时之和。
(3)教师数据查询:
提示:
输入教师号或其他信息,即读出所有数据信息,并显示出来。
C、教师综合信息输出
提示:
输出教师信息到屏幕。
基本要求
1、大作业可采取每人一题,可任选一题进行设计,至少包含五个功能模块。
或者每组完成一个课题,每组成员(不得超过5人)分工合作完成一个大作业,每个人的任务不同。
分组情况请于5月17号上报给老师。
2、可以选择老师提供的参考选题,也可以自选,如果自选,需要将自选题目的详细内容以及实现要求提供给老师,老师批准后方可采用。
3、要求利用面向对象设计方法以及C++的编程思想来完成系统的设计。
4、要求有菜单、文件操作,数据使用数组、结构体、链表等均可,键盘操作或鼠标操作均可。
5、模块化程序设计:
要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现。
6、所选课题必须上机通过,并获得满意的结果。
7、程序书写风格:
锯齿型书写格式。
8、完成大作业报告书(格式见附录一)。
评价标准
大作业成绩评定的依据有设计文档资料、具体实现设计方案的程序及大作业考勤登记表。
优(90分以上):
必须要有一定的创意,有自己独特的算法。
按要求完成课题的全部功能,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述,有正确的流程图,程序完全实现设计方案,设计方案先进,软件可靠性好;
良(80-89分):
完成课题规定的功能,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进,无明显错误;
中(70-79分):
完成课题规定的功能,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确,但有少数失误;
及格:
完成课题规定的大部分功能,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案基本正确,个别功能没有实现,但错误不多;
不及格:
没有完成课题规定的功能,没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确。
附录一:
(封面样式)
附件1:
学号:
《面向对象程序设计》大作业
题目
学生成绩管理系统
学院
文法学院
专业
教育学
班级
教育学1201
姓名
指导教师
鄢红国
2013
年
12
月
20
日
(正文部分)
一、需求分析(标题均为小三号,宋体)
(正文均为小四号,宋体,行距1.5倍)
(对所选择题目进行分析,描述问题。
简述课题要解决的问题是什么,有什么要求和限制条件。
列出参与人员进行本设计时要达到的具体的目标。
)
二、总体设计
(对设计目标进行总体分析,说明要采用的基本思路,说明遇到的问题和解决方法。
说明完成本次大作业的完整过程。
要描述程序的设计思想,画出本次大作业完整的程序框图或流程图。
)
三、详细设计
(要求列出所有编写的函数清单,说明每个函数的功能,各形式参数的意义,画出各函数的调用关系图。
即模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)。
)
四、程序运行结果测试与分析
(要针对程序处理的不同情况列出有代表性的输入和输出,用足够多的实例说明程序完成了设计任务和目标。
)
五、结论与心得
(主要说明程序调试中发现的问题和解决办法,包括你在该设计中主要承担什么任务,在设计中学到了什么,哪里遇到了困难,解决的办法,可能但因时间关系没有来得及完成的想法,今后的目标等。
)
六、致谢
#include
#include
#include
#include
usingnamespacestd;
classStudent
{
public:
stringname;
stringID;
intgrade;
Student(stringpName,stringpID,intpgrade)
{
name=pName;
ID=pID;
grade=pgrade;
}
//显示学生的信息
voidprint()
{
cout<}
};
listlst;//学生链表,用于存放学生数据
voidprint(listlst)//显示链表中所有的学生
{
list:
:
iteratorit;
cout<<"tname\tID\tgrade"<for(it=lst.begin();it!
=lst.end();++it)
it->print();
cout<}
voidinsertStudent()//插入一个学生
{
system("cls");
cout<<"-------请输入学号ID"<stringtID;
cin>>tID;
cout<<"-------请输入姓名:
"<stringtname;
cin>>tname;
cout<<"-------请输入分数:
"<inttgrade;
cin>>tgrade;
Studentstu(tname,tID,tgrade);
lst.push_back(stu);
list:
:
iteratorit;
for(it=lst.begin();it!
=lst.end();++it)
{
it->print();
}
}
voiddeleteStudent()//按要求删除一个学生
{
system("cls");
cout<<"-------请输入要删除学生的学号ID:
"<stringtID;
cin>>tID;
boolflag=false;
list:
:
iteratorit;
for(it=lst.begin();it!
=lst.end();++it)
{
if(it->ID==tID)
{
cout<<"----查找到,该学生信息如下:
-----"<it->print();
lst.erase(it);
cout<<"删除完毕!
"<flag=true;
break;
}
}
if(flag==false)
{
cout<<"未找到!
"<}
}
voidscreenA()//显示屏幕操作A
{
cout<<"****************************************"<cout<<"1--------------查询"<cout<<"2--------------插入"<cout<<"3--------------删除"<cout<<"4--------------显示"<cout<<"5--------------退出"<cout<<"****************************************"<}
voidsearchByName()//按名字查找
{
cout<<"-------请输入姓名:
"<stringtname;
cin>>tname;
boolflag=false;
list:
:
iteratorit;
for(it=lst.begin();it!
=lst.end();++it)
{
if(it->name==tname)
{
cout<<"----查找到,该学生信息如下:
-----"<it->print();
flag=true;
break;
}
}
if(flag==false)
{
cout<<"未找到!
"<}
}
intmain()
{
charch;
screenA();
while(cin>>ch)
{
system("cls");
switch(ch)
{
case'1':
searchByName();
break;
case'2':
//插入学生
insertStudent();
break;
case'3':
//删除学生
deleteStudent();
break;
case'4':
//显示当前信息
cout<<"---------当前数据列表如下"<print(lst);
break;
case'5':
//退出
return0;
}
system("pause");
system("cls");
screenA();
}
cout<<"系统退出"<return0;
}
附件1:
学号:
《面向对象程序设计》大作业
题目
学生成绩管理系统
学院
文法学院
专业
教育学
班级
教育学1201
姓名
指导教师
鄢红国
2013
年
12
月
20
日
一设计目的…………………………………………………………….1
二大作业的内容........................................2
三大作业的要求与数据..................................3
四大作业应完成的工作..................................4
五总体设计(包含几大功能模块)...........................5
六详细设计(各功能模块的具体实现算法——流程图)………….6
七调试分析(包含各模块的测试用例,及测试结果)…………….7
八总结………………………………………………………………...8
十参考资料…………………………………………………………….9
一大作业的目的
《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。
二大作业的内容
对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:
(1)学生的学号
(2)学生的姓名(3)学生的成绩。
假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。
学习相关开发工具和应用软件,熟悉系统建设过程。
三大作业的要求与数据
1、用C语言实现系统;
2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.
3、学生信息包括:
其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:
(1)每一条记录包括一个学生的学号、姓名、3门课成绩
(2)、成绩信息录入功能:
(成绩信息用文件保存,可以一次完成若干条记录的输入。
)
(3)、成绩信息显示浏览功能:
完成全部学生记录的显示。
(4)、查询功能:
完成按姓名查找学生记录,并显示。
(5)成绩信息的删除:
按学号进行删除某学生的成绩.
(6)、排序功能:
按学生平均成绩进行排序。
(7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
四大作业应完成的工作
(1)编写算法;
(2)算法测试,并有具体的测试结果和结果分析;
(3)撰写大作业报告。
内容包括:
1)封面扉页
2)设计任务书
3)目录
4)总体设计方案(包括流程图)
5)使用说明及运行实例(包括界面)
6)成员设计内容简介
7)项目源程序代码(注意注释的使用)
8)指导教师评语
五总体设计(包含几大功能模块)
1、成绩录入功能
2、成绩输出功能
3、成绩查询功能
4、删除模块
5、排序功能
6、统计功能
7、退出系统
六详细设计(各功能模块的具体实现算法——流程图)
6.1各函数的功能和实现
1、输入初始的学生信息:
输入信息包括学生的姓名、学号以及学生的成绩等相关信息;可用函数voidinput(STUDENT*data,int*len)来实现此操作。
2、成绩输出模块:
输出学生的信息以及成绩voidoutput(STUDENT*data,intlen):
通过学生的姓名来查看学生的相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出成绩的平均分数、最高和最低分数。
3、成绩查询模块:
可用voidfind(STUDENT*data,intlen) 来实现。
找到就输出此学生全部信息。
4、删除模块:
用函数voiddelete_item(STUDENT*data,int*len)来实现
5、排序模块:
用函数voidsort(STUDENT*data,intlen)来实现
6、统计功能能:
用函数voidstat(STUDENT*data,intlen)来实现
7、退出系统:
可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
如图6.1
图6.1
七调试分析(包含各模块的测试用例,及测试结果)
7.1源程序
#include
#include
#include
#defineMAXN35
#defineMAX_NAME256
typedefstructstudent//学生信息
{
intno;
charname[MAX_NAME];
doubleChinese;
doublemath;
doubleEnglish;
doublemark_ave;
doublemark_tot;
}STUDENT;
/*-----------输入信息子程序---------*/
voidinput(STUDENT*data,int*len)
{
intno;
putchar('\n');
printf("%s\n","请输入新的记录,如果需要退出当前菜单请输入-1.")