OOP课程设计参考版liupq.docx
《OOP课程设计参考版liupq.docx》由会员分享,可在线阅读,更多相关《OOP课程设计参考版liupq.docx(8页珍藏版)》请在冰豆网上搜索。
![OOP课程设计参考版liupq.docx](https://file1.bdocx.com/fileroot1/2023-1/31/1727927f-3984-48b0-b26d-d8237af8ab6d/1727927f-3984-48b0-b26d-d8237af8ab6d1.gif)
OOP课程设计参考版liupq
山东工商学院
《面向对象程序设计》
课程设计
班级:
计科121-2
教师:
刘培强
学期:
2013-2014/2
目录
1关于课程设计3
2题目4
2.1题目组一(下列题目有较为详细的要求,可任选一题)4
2.1.1通讯录管理4
2.1.2课程注册系统5
2.1.3ATM系统5
2.1.4电梯系统6
2.1.5图书馆管理系统9
2.1.6绘图程序10
1.2题目组二(仅有题目,也可从下列题目中任选一题)10
2文档要求10
2.1提交文档内容10
2.2要求11
3成绩评定方法11
4附录:
课程设计样例11
1关于课程设计
⏹课程设计目的
1.要求学生达到熟练掌握C++语言的基本知识和技能;
2.基本掌握面向对象程序设计的基本思路和方法;
3.能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
⏹设计要求
1.要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
2.要求在设计的过程中,建立清晰的类层次;
3.在系统的设计中,要用面向对象的机制。
4.完成系统总结报告以及系统使用说明书。
(统一使用A4白纸)
⏹提交时间
课程设计划完成后,各班收齐后交给我。
⏹要求
1.个人独立完成课程设计。
提倡合作,反对copy-paste作业。
2.采纳面向对象方法进行分析、设计、编程(必选)。
也可以自学一下UML建模语言,用Together、RationalROSE等可视化建模工具进行建模。
(可选)
⏹提交内容
1.每个阶段结束要提交相应的模型、文档(提交内容会在课堂上布置)。
2.程序源代码和可执行文件。
2题目
2.1题目组一(下列题目有较为详细的要求,可任选一题)
2.1.1通讯录管理
问题描述
编写一个简单的通讯录管理程序。
通讯录中分为一般条目和朋友条目。
一般条目有姓名,地址,电话号码,邮政编码四项。
朋友条目除具有一般条目的所有信息之外,还有Email,家庭电话。
基本要求
程序应提供的基本基本管理功能有:
1.添加:
即增加一个人的记录到通信录中。
(可以是一般条目,也可以是朋友条目。
)
2.显示:
即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3.存储:
即将通讯录信息保存在一个文件中。
4.读入:
即将文件中的信息读入程序。
5.查询:
可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。
6.修改:
可修改一个人的除姓名外其它信息。
7.排序:
可以根据据条目的某个项对所有条目进行排序,如姓名,或是邮政编码等。
测试数据
程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。
实现提示
……。
选做内容
为了加快数据定位查找的速度,采用常用优先的方法对所有条目排序。
使用次数最多的条目,要排在数据结构的首位,依次类推。
这样经过有限次操作,经常查阅的人员的信息就将排在数据结构的前端。
这样,但常用的条目排在较靠前的部分,查找时所要走的平均距离较短。
由于本题的雏形,在上课的过程中做过,所以请在文档中重点写自己扩展的那些内容,自己是如何使用面向对象的方法实现这些功能的。
2.1.2课程注册系统
问题描述:
计划开发一个学生注册系统。
系统允许学生通过联到校园网上的个人计算机来注册课程和浏览报告。
教授可以登记(signup)他要教的课程以及成绩。
每学期开始时,学生请求一个包括这学期所有课程的列表(coursecatalog),其中有每门课程(courseoffering)的信息,如教授、系、上课时间、上课教师等。
系统允许学生为即将到来的学期注册4门课程。
除此之外,每个学生还要选择候选课程(alternativecourse),以便在某个主课程(primarycourse)不能选择时备用。
每门课程最多允许30人,最少不能低于3人参加。
少于3人的课程将被cancel。
每学期都有一段时间学生可以修改选课表(schedule),这时学生可以添加或删除课程。
一旦学生完成了注册过程,注册系统会向收费系统(billingsystem)发出信息,以便学生交学费。
如果一门课的人员已满,在学生向系统提交选课表之前必须得到通知。
学期结束时,学生能通过本系统浏览电子报告卡。
因为学生成绩是敏感的信息,所以系统要提供一个安全检查以防止非法访问。
教授要能访问本系统来声明他要教的课程,也可以查看哪些学生选择了他要教的课程。
此外,教授要能报告该课程每个学生的成绩。
2.1.3ATM系统
能实现取钱、存钱、更改密码、转帐(转到本行的其他帐户下)、余额查询功能。
注:
为简单起见,假设该ATM系统是专为某银行卡设计的系统,其他银行卡不能在该系统上使用。
2.1.4电梯系统
用面向对象技术来实现单部电梯或者多部电梯的模拟运行软件。
电梯调度策略:
顺便服务策略。
这种策略在运行控制中所规定的安全前提下,一次将一个方向上的所有呼叫和目标全部完成。
然后掉转运行方向完成另外一个方向上的所有呼叫和目标。
以下任务书是关于单部电梯的,希望有同学能完成多部电梯的控制。
单部电梯和多部电梯的复杂系数不一样。
任务说明书
要求根据下面的功能说明描述实现模拟电梯控制软件
1.电梯配置
(1)共有1个电梯
(2)共有maxfloor层楼层,这里maxfloor暂时取做9。
范围是5-9层
(3)中间层每层有上下两个按钮,最下层只有上行按钮,最上层只有上行按钮。
每层都有相应的指示灯,灯亮表示该按钮已经被按下,如果该层的上行或者下行请求已经被响应,则指示灯灭
(4)电梯内共有maxfloor个目标按钮,表示有乘客在该层下电梯。
有指示灯指示按钮是否被按下。
乘客按按钮导致按钮指示灯亮,如果电梯已经在该层停靠则该按钮指示灯灭
(5)另有一启动按钮(GO)。
当电梯停在某一楼层后,接受到GO信息就继续运行。
如果得不到GO信息,等待一段时间也自动继续运行。
(6)电梯内设有方向指示灯表示当前电梯运行方向。
2.电梯的运行控制
(1)电梯的初始状态是电梯位于第一层处,所有按钮都没有按下。
(2)乘客可以在任意时刻按任何一个目标钮和呼叫钮。
呼叫和目标对应的楼层可能不是电梯当前运行方向可达的楼层。
(3)如果电梯正在向I层驶来,并且位于I层与相邻层(向上运行时是I-1层或者向下运行时是I+1层)之间,则因为安全考虑不响应此时出现的I层目标或者请求。
如果电梯正好经过了I楼层,运行在I楼层和下一楼层之间,则为了直接响应此时出现的I层目标或者请求,必须至少到达运行方向上的下一楼层然后才能掉头到达I楼层(假设掉头无须其它额外时间),如果I楼层不是刚刚经过的楼层则可以在任意位置掉头,此时掉头后经过的第一个楼层不可停。
(4)电梯系统依照某种预先定义好的策略对随机出现的呼叫和目标进行分析和响应。
(5)乘客数量等外界因素(可能导致停靠时间的长短变化)不予考虑。
假设电梯正常运行一层的时间是5S,停靠目标楼层、上下乘客和电梯继续运行的时间是5S。
(6)当电梯停靠某层时,该层的乘客如果错误的按目标或呼叫按钮都不予响应。
(7)电梯停要某一层后,苦无目标和呼叫,则电梯处于无方向状态,方向指示灯全灭,否则电梯内某个方向的指示灯亮,表示电梯将向该方向运行。
等接到“GO”信号后电梯立即继续运行。
若无GO信号,则电梯在等了上下乘客和电梯继续运行时间后也将继续运行。
(8)当一个目标(呼叫)已经被服务后,应将对应的指示灯熄灭。
3.电梯运行的控制策略
以下是几个候选策略:
(1)先来先服务策略:
将所有呼叫和目标按到达时间排队,然后一一完成。
这是相当简单的策略,只需要设计一个将呼叫和目标排队的数据结构。
因为该策略效率也很低,所以没有实际的电梯采用这种策略。
(2)顺便服务策略:
顺便服务是一种最常见的简单策略。
这种策略在运行控制中所规定的安全前提下,一次将一个方向上的所有呼叫和目标全部完成。
然后掉转运行方向完成另外一个方向上的所有呼叫和目标。
可以采用设定目标楼层的办法来实现这个策略,即电梯向一个目标楼层运行,但这个楼层可以修改。
具体策略如下:
修改目标楼层的策略:
a.如果电梯运行方向向上,那么如果新到一个介于当前电梯所处楼层和目标楼层之间,又可以安全到达的向上呼叫或者目标,将目标楼层修改为这个新的楼层。
b.如果电梯运行方向向下,那么如果新到一个介于当前电梯所处楼层和目标楼层之间,又可以安全到达的向下呼叫或者目标,将目标楼层修改为这个新的楼层。
确定新的目标楼层:
如果电梯向上运行,当它到达某个目标楼层后,则依照以下顺序确定下一个目标楼层:
a.如果比当前层高的楼层有向上呼叫或者目标,那么以最低的高于当前楼层的有向上呼叫或者目标的楼层为目标。
b.如果无法确定目标楼层,那么以最高的向下呼叫或者目标所在楼层为电梯当前目标楼层。
c.如果无法确定目标楼层,那么以最低的向上呼叫所在楼层为电梯当前的目标楼层。
d.如果仍然不能确定目标楼层(此时实际上没有任何呼叫和目标),那么电梯无目标,运行暂停。
如果电梯向下运行,依照以下顺序确定下一目标楼层:
a.如果比当前层低的楼层有向下呼叫或者目标,那么以最高的低于当前楼层的有向下呼叫或者目标的楼层为目标。
b.如果无法确定目标楼层,那么以最低的向上呼叫或者目标所在楼层为电梯当前目标楼层。
c.如果无法确定目标楼层,那么以最高的向下呼叫楼层为目标楼层。
d.如果仍然不能确定目标楼层(此时实际上没有任何呼叫和目标),那么电梯无目标,运行暂停。
(3)最快响应策略:
响应所有的现在存在的所有呼叫和目标所需时间(采用不同方案电梯停靠时间相同,所以不必考虑)最短的策略。
可选方案一是电梯先向上运行响应经过各层的目标和向上呼叫,再向下运行响应所有向下呼叫以及途经各层的目标,最后再向上响应剩余的向上呼叫。
二是恰好相反,先向下,再向上,最后再向下运行。
由于呼叫和目标会随时增加,所以实际上有时这种策略并不好。
另外有时这将导致电梯突然向相反的方向运行。
为了防止经常性的改变方向,我们可以采用设定只有当原来的运行方向比相反方向的代价高20%的时候才切换方向。
(4)最短平均等待时间策略:
假设每一呼叫楼层等待的人数和每一目标楼层走出电梯的人数相等。
计算响应当前所有呼叫和目标全部乘客所需时间的总和(包括等待时间和电梯运行时间,对于提出呼叫而尚未进入电梯的乘客则只计算等待时间)。
对于这种策略,基本上也是只有象3一样的两种选择方案。
由于呼叫和目标会随时增加,所以实际上这种策略有时并不好,但它比最快响应时间策略较为稳定和高效。
另外有时这将导致电梯突然向相反的方向运行。
为了防止经常性的改变方向,我们可以采用设定只有当原来的方向比替代方向的代价高20%的时候才切换运行方向。
注意:
除了先来先服务以外,我们不能预先设定固定不变电梯运行的目标楼层。
(5)同学们也可以自己提出新的控制策略。
要求重点要实现顺便服务策略,应在一相对独立的程序块中实现控制策略,这样能方便地对其进行修改而不影响程序的其他部分。
2.1.5图书馆管理系统
可以完成图书的入库管理(添加、修改)。
借阅的人员有教师、学生,教师、学生是具有借书资格的人员。
借阅人员可以从图书馆借书(借、还、逾期罚款)。
在实现上述功能的同时,可以根据理解给程序添加功能。
2.1.6绘图程序
编写一个绘图程序,使得可以在屏幕上画各种形状(线、长方型、正方型、圆等)。
可以模仿windows中的画笔。
如何在CODE:
:
Blocks中画图?
可以使用第三方库(Third-partylibraries)wxWidgets,参见:
http:
//wiki.codeblocks.org/index.php?
title=Using_wxWidgets,更多的使用方法可以google。
1.2题目组二(仅有题目,也可从下列题目中任选一题)
1.工资管理系统
2.人事管理系统
3.银行储蓄管理系统
4.学生学籍管理系统
5.考试管理系统
6.民航(铁路)订票系统
注:
也可以自定题目
2文档要求
2.1提交文档内容
1.需求分析;
2.系统总框图;
3.每个模块的设计分析;
4.列出所有定义的函数及说明;
5.举例说明1、2个比较有特点的算法;
6.存在的问题与不足及对策;
7.使用说明(操作手册);
8.附上程序源代码;
以上仅提供参考。
2.2要求
1.所写的有效代码不得少于1000行,并用A4幅面的纸打印。
2.用A4幅面的纸打印出文档。
3.采用面向对象方式编程。
4.在程序设计中,可采用图形界面或是控制台应用程序界面等进行开发。
在附例中采用是控制台应用程序界面。
5.可根据实际情况,选用VisualC++、CODE:
:
BLOCK集成开发环境。
3成绩评定方法
根据课程设计完成的质量、正确性和工作量综合评分,具体如下:
1.文档:
2.程序:
4附录:
课程设计样例
课程设计的几个样例,仅供同学们参考。
参阅OOCDSample.doc。