C++驾校报考系统大作业试验报告.docx
- 文档编号:4295271
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:32
- 大小:208.23KB
C++驾校报考系统大作业试验报告.docx
《C++驾校报考系统大作业试验报告.docx》由会员分享,可在线阅读,更多相关《C++驾校报考系统大作业试验报告.docx(32页珍藏版)》请在冰豆网上搜索。
C++驾校报考系统大作业试验报告
一、需求分析
1.1开发背景
当代社会正处在从“工业社会”向“信息社会”过渡的伟大时代。
在这个面临着巨大的技术革命,信息技术突飞猛进的时代,每个机构都必须紧跟时代的步伐,加强机构竞争力和提升现代化机构的管理能力。
伴随着机构对信息化需求的增长,计算机、网络技术已渗透到机构的日常工作中。
传统的机构内信息的交流方式已逐渐不能满足机构对大量信息的快速传递与处理的需求。
面对着日益复杂和不断发展,变化的社会环境,特别是机构间日趋剧烈的竞争形势,一个人、一个机构要在现代社会中求生存,求发展,必须具备足够的信息和强有力的信息收集与处理手段。
电子计算机以强大的信息处理能力作为人类脑力劳动的有力助手登上历史舞台以后,出现了把人类从繁琐的脑力劳动下解放出来的现代信息革命。
众所周知,当今社会为信息社会,世界已进入在计算机信息管理领域中激烈竞争的年代,因此,想要加快驾校报考情景的管理,若依靠手工的话,不仅需要耗用大量的人力,物力,财力,而且工作效力低,而且难以达到预期的目的,所以特决定开发一个驾校报考情景管理信息系统。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对信息进行管理,具有着手工管理所无法比拟的优点。
例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高信息管理的效率,也是机构发展的需要。
1.2项目目标
开发一个驾校报考管理信息系统,可以减少其工作量。
其功能可概括为:
一:
系统初步的建立;
二:
系统的查询
三:
系统的更新(包括信息的修改和删除);
四:
系统的更新等诸多功能的管理系统。
1.3运行环境
软件:
运行在Windows软件环境下;
硬件:
具有网络连接设备的PC机或笔记本电脑;最低配置:
要求内存大于128M,硬盘大于1G。
二、程序分析
2.1程序流程图
流程图一:
主函数:
main()-----系统主界面
*******************功能:
1.负责人通道:
负责信息的录入,查找,修改,删除等一系列操作;2.学生通道:
查询自己的安排,修改自己的安排等操作;3退出系统等功能***********************
1.通过设定switch()函数,实现选择功能运用。
2.通过break退出程序。
三、技术路线
3.1总体方案
3.1.1采用的软件及开发平台
在WindowsXP的环境下,采用的是Microsoft公司的VisualC++作为开发平台。
利用面向对象的思想实现一个多人驾校报考情景的管理系统,具体使用了:
体现OOP的抽象、封装、继承、多态4种关键技术构造了基于驾校报考状况的情况建立的驾校信息联系网,使驾校的联系网更加方便,快捷,清晰。
3.1.2总体方案
总体流程图:
1.设置一个基类Date(日期),再由这个积累派生出1个派生类,为Arrange类(包括课程安排和考试安排),另外再设置一个Student类,用以记录学生的基本信息(如姓名,性别等)
2.我们可以在此基础之上设立一个驾校报考管理操作系统界面。
3.我们主要通过对开始界面分为两部分,即负责人通道和学生通道,然后分别在两个通道内进行函数功能的实现,
类说明:
1.
(1)基类Date里的数据成员定义为私有数据,可以通过Date类里的公有函数达到对私有数据的访问;
2.
(1)派生类Arrange里新增数据成员lessonNum,examNum
(2)同时在Arrange类里定义了一系列的函数:
getLessonNum(),getExamNum(),setLessonNum,setExamNum,lessonArrange(),showLessonArr(),examArrange()等一系列函数用来实现各种功能;
五、测试报告
5.1阶段测试
在程序基本设计好的时候,我们对整个程序进行了一次比较系统的测试,对各个系统的主要功能也都用数据进行了检测,以确保程序的正确性,同时希望程序能够完成对驾校报考信息的输入,检索,查找,修改,删除。
此次测试是在2012-1-14零晨进行的、
以下是这次测试的具体结果:
系统主界面
运行该程序,首先进入的是驾校报考信息管理系统的主界面,改界面给出了各个系统功能的介绍,并提示使用者该如何进入功能操作系统。
负责人登录页面
该页面是选择了负责人通道后显现出的登录页面,改界面给出了各个系统功能的介绍,并提示使用者该如何进入功能操作系统。
学生登录页面
该页面是选择了学生通道后显现出的登录页面,改界面给出了各个系统功能的介绍,并提示使用者该如何进入功能操作系统。
负责人登录输入页面
该页面是选择了负责人通道,并选择了输入页面后显现出的登录页面,改界面给出了此系统功能的介绍,并演示使用者该如何进入功能操作系统。
学生登录查找页面
该页面是选择了学生通道,并选择了查找页面后显现出的登录页面,改界面给出了此系统功能的介绍,并演示使用者该如何进入功能操作系统。
学生登录修改页面
该页面是选择了学生通道,并选择了修改页面后显现出的登录页面,改界面给出了此系统功能的介绍,并演示使用者该如何进入功能操作系统。
六、个人小结
6.1个人小结:
通过这次大作业,我学到了很多平时自己编程不会出现的东西。
平时只是对一件细小的简单的函数功能的实现以一节课学后的知识点进行编程以便熟习所学知识,因为觉得都不是很难所以有种编程好容易得错觉有点轻视它,可是第一接触到大作业之后发现平常所做只不过是沧海一粟。
这次的大作业第一次让我有了系统的概念,已经不是针对某一项具体的描述来是一一个函数的功能,而是从整体的概念上来考虑,首先要从整个流程的构架,就拿我们的通讯录来说,根据要求我们需要创建四个群组分别在四个文件里面记录不同关系的联系人的各种信息,其次对每一个文件的进行操作如:
查找、添加、删除等功能的具体实现。
看是简单清晰明了,但是在实际操作过程中才发现困难重重。
首先事文件的建立,写入、读出信息的陌生,其次是类的具体使用应该如何插入,另外对创建和添加通讯录联系人信息时的排序等一系列问题都让我措手不及。
还有程序之间的协调问题,和程序中的错误修改问题都让我很头疼。
后来还是小组之间的讨论才解决了这一系列的问题,通过这一次的大作业,我还了解了一个方面,那就是小组成员之间的讨论是必不可少的,这样可以发现更多的问题。
最后,感谢老师的辅导和同学的帮助。
6.2个人小结:
小学期结束了,当做这个C++大作业之前,有点怀疑能不能在规定的时间内做完,毕竟只有3天的时间,要做一个系统,这与以前上课的作业是不同的,因为这个大作业将会融汇我们所学的C++所有知识,选好题后便开始做了,刚开始问题不大,因为毕竟以前学C的时候也做过类似的大作业,然而问题还是有的,就是对类中的私有数据成员的访问老是搞混,这让自己做的程序老是报错,其次对类的提取也是非常最重要的,对各个类之间的关系要弄通,但是在做这个大作业中遇到的最大的难题就是文件读取操作,因为我们是采用一次读取一个块的方式将数据存入到文件中去的,这个就类似C中的结构体的存储,刚开始不大懂,便不停的看有关于C++文件读取的资料,终于文件能够存入和读取了,但是当存入多个数据块并想对其中一个数据块的内容修改后,再存入到文件中时,文件中其它的内容却被覆盖了,于是便和队友讨论,最终认为需要设置一个变量计算文件指针指过的数据块个数,这样当要对某个数据块进行修改时,便可以找到具体位置,只对这个块进行修改和覆盖,这样便解决了前面遇到的数据块覆盖问题,最后顺利的完成了任务,其实自己觉得这样的小学期对我们的作用非常大,因为它能使我们将课堂上学到的东西用于实践,培养我们的动手能力,也利于我们培养团队合作精神。
6.3个人小结
通过这个学期期末短暂几天的大作业设计,我收获巨大,具体如下:
1.加深了我对C++的认识,它是一个很重要的语言和和工具,对解决很多现实问题起到很好很方便的作用,
2.加深了我对课本和PPT知识的理解,对以前很多不大明白的知识点进行了很深入的了解,以及对已学知识的巩固。
3.通过对这个课程设计,我对一些类的继承和操作符重载进行了很深入的应用.
4.认识到了自己的能力,在自己的努力下,一些看似很难的问题也迎刃而解
5.认识到团队合作的重要性,一个人的力量远小于团队的力量,善于团队合作的人才能有很好的成就
6.认识到了自己的不足,我们仍需努力,争取把以后的课程设计作业做得更好。
七、参考文献
1.课堂ppt
2.网上有关于C++文件操作资料
附录
源程序代码
define.h
classDate//定义日期类以便记录考试时间及课程时间
{
intyear;//年份
intmonth;//月份
intday;//天
inthourStart;//开始时间
inthourEnd;//结束时间
public:
voidsetDate(intYear,intMonth,intDay,intHourStart,intHourEnd);//对类进行赋值
voidshowDate();
voidoperator=(Date);
};
classStudent//定义学生类以记录学会的基本信息
{
charname[17];//姓名
charsex;//性别
charidenty[19];//身份证号
intage;//年龄
public:
char*getIdenty(){returnidenty;}
voidsetStudent(char*Name,charSex,intAge,char*Identy);
voidmodifyStudent(char*Name,charSex,intAge,char*Identy);//修改学生基本信息
voidshowStudent();//显示学生基本信息
};
classArrange:
publicDate//定义安排类以安排考试或是课程等信息
{
Datelesson[6];//定义课程类数组以记录多个课程时间信息
Dateexam[5];//定义考试类数组以记录多个考试时间信息
intlessonNum;//定义lessonNum以记录课程的数目
intexamNum;//定义examNum以记录考试的数目
public:
intgetLessonNum(){returnlessonNum;}//获得课程安排的数目
intgetExamNum(){returnexamNum;}//获得考试安排的数目
voidsetLessonNum(intLessonNum)//设置课程数目
{
lessonNum=LessonNum;
}
voidsetExamNum(intExamNum)//设置考试数目
{
examNum=ExamNum;
}
voidlessonArrange();//课程安排函数,安排课程时间段
voidshowLessonArr();//显示课程安排函数,显示安排的课程
voidexamArrange();//考试安排函数,安排考试时间段
voidshowExamArr();//显示考试安排函数,显示安排的考试
voidcancelArrange();//取消安排函数,取消安排的考试或课程
voidchangeArrange();//更改安排函数,更改已安排的考试或是课程
};
classstudentInfor//定义驾校学生类
{
floatcharge;//费用
Arrangestu1;
Studentstudent;
public:
voidsetCharge(floatCharge)//设置收费情况
{
charge=Charge;
}
voidshowArrange();//显示所有安排
voidsetStuInfor();//设置学生信息
voidshowStuInfor();//显示学生所有信息
char*getStuIdenty()//获得学生身份证号
{
char*p;
p=student.getIdenty();
returnp;
}
floatgetCharge(){returncharge;}//获得收费函数
voidmodifyStuInfor();//修改学生信息函数
voidcancel();//取消函数
};
method.h
#include
#include
#include"define.h"
/*对Date类中的方法的实现*/
voidDate:
:
setDate(intYear,intMonth,intDay,intHourStart,intHourEnd)
{
year=Year;month=Month;day=Day;
hourStart=HourStart;hourEnd=HourEnd;
}
voidDate:
:
operator=(Dated1)
{
year=d1.year;
month=d1.month;
day=d1.day;
hourStart=d1.hourStart;
hourEnd=d1.hourEnd;
}
voidDate:
:
showDate()
{
cout<<"年:
"< "< "< cout<<"开始时间: "< "< if(hourStart==hourEnd==year==month==day==0)cout<<"此时间段已被取 消"< } /*对Student类中的方法的实现*/ voidStudent: : setStudent(char*Name,charSex,intAge,char*Identy) {strcpy(name,Name);sex=Sex;strcpy(identy,Identy);age=Age; } voidStudent: : modifyStudent(char*Name,charSex,intAge,char*Identy) {strcpy(name,Name);sex=Sex;strcpy(identy,Identy);age=Age; } voidStudent: : showStudent() { cout<<"*******************学生信息********************"< cout<<"姓名: "< "< "< cout<<"身份证号: "< } /*对Arrange类中的方法的实现*/ voidArrange: : lessonArrange()//安排课程 { inti,lessNum,Month=0,Day=0,Year=0,HourStart=0,HourEnd=0; cout<<"请输入课程数目: ";cin>>lessNum; setLessonNum(lessNum); for(i=0;i { cout<<"*******课程"< cout<<"**年: ";cin>>Year;cout<<"月: ";cin>>Month;cout<<"日: ";cin>>Day; cout<<"**开始时间: ";cin>>HourStart;cout<<"结束时间: ";cin>>HourEnd; lesson[i].setDate(Year,Month,Day,HourStart,HourEnd); } } voidArrange: : showLessonArr()//显示课程安排 { inti; cout<<"*************************课程信息**********************"< if(getLessonNum()==0)cout<<"没有安排课程! "< else{ for(i=0;i { cout<<"********课程"< lesson[i].showDate(); cout<<"**********************************"< } } } voidArrange: : examArrange()//安排考试 { inti,testNum,Month=0,Day=0,Year=0,HourStart=0,HourEnd=0; cout<<"请输入考试的数目: ";cin>>testNum; setExamNum(testNum); for(i=0;i { cout<<"*******考试"< cout<<"**年: ";cin>>Year;cout<<"月: ";cin>>Month;cout<<"日: ";cin>>Day; cout<<"**开始时间: ";cin>>HourStart;cout<<"结束时间: ";cin>>HourEnd; exam[i].setDate(Year,Month,Day,HourStart,HourEnd); cout<<"******************************"< } } voidArrange: : showExamArr()//显示考试安排 { inti; cout<<"***************************考试信息**********************"< if(getExamNum()==0)cout<<"没有安排考试! "< else{ for(i=0;i { cout<<"*********考试"< exam[i].showDate(); cout<<"***********************************************************"< } } } voidArrange: : cancelArrange() { intchoose,n; cout<<"**取消考试或是课程? 请选择: (0代表课程;1代表考试)";cin>>choose; switch(choose) { case0: { showLessonArr(); if(getLessonNum()==0)cout<<"没有安排课程,无法取消"< else{ cout<<"请选择取消哪一门课程(从0to"<<(getLessonNum()-1)<<" )"< cout<<"选择: ";cin>>n; lesson[n].setDate(0,0,0,0,0); } break; } case1: { showExamArr(); if(getExamNum()==0)cout<<"没有安排考试,无法取消"< else{ cout<<"请选择取消哪一场考试(从0到"<<(getExamNum()-1)<<") "< cout<<"选择: ";cin>>n; exam[n].setDate(0,0,0,0,0); } break; } default: { cout<<"错误! "; break; } } } voidArrange: : changeArrange()//修改安排 { intchoose1,n,Year1=0,Month1=0,Day1=0,HourStart1=0,HourEnd1=0; cout<<"**修改课程或是考试? 请选择: (0代表课程;1代表考试)"; cin>>choose1; switch(choose1) { case0: { showLessonArr(); if(getLessonNum()==0)cout<<"没有安排课程,无法修改"< else{ cout<<"请选择修改哪一门课程(从0到"<<(getLessonNum()-1)<<" )"< cout<<"选择: ";cin>>n; cout<<"开始输入: "< cout<<"**年: ";cin>>Year1;cout<<"月: ";cin>>Month1;cout<<"日: ";cin>>Day1; cout<<"**开始时间: ";cin>>HourStart1;cout<<"结束时间: ";cin>>HourEnd1; lesson[n].setDate(Year1,Month1,Day1,HourStart1,HourEnd1); } break; } case1: { showExamArr(); if(getExamNum()==0)cout<<"没有安排考试,无法修改"< else{ cout<<"请选择修改哪一场考试(从0to"<<(getExamNum()-1)<<" )"< cout<<"选择: ";cin>>n; cout<<"开始输入: "< cout<<"**年: ";cin>>Year1;cout<<"月: ";cin>>Month1;cout<<"天: ";cin>>Day1; cout<<"**开始时间: ";cin>>HourStart1;cout<<"结束时间: ";cin>>HourEnd1; exam[n].setDat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 驾校 报考 系统 作业 试验报告
![提示](https://static.bdocx.com/images/bang_tan.gif)