《面向对象程序设计》课程设计要求和任务书.docx
- 文档编号:9366088
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:24
- 大小:49.68KB
《面向对象程序设计》课程设计要求和任务书.docx
《《面向对象程序设计》课程设计要求和任务书.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》课程设计要求和任务书.docx(24页珍藏版)》请在冰点文库上搜索。
《面向对象程序设计》课程设计要求和任务书
《面向对象程序设计》课程设计任务书
课程设计名称:
面向对象程序设计 指导老师:
王淮亭
课程设计周(时)数:
2周
课程设计授课单位:
计算机基础教学部 指导方式:
集体辅导与个别辅导相结合
课程设计适用专业:
计算机科学与技术
课程设计教材及主要参考资料:
《C++程序设计》谭浩强编著,清华大学出版社
《C++程序设计教程学习辅导》谭浩强编著,清华大学出版社
服务课程名称:
面向对象程序设计
一、课程设计的目的要求
《面向对象程序设计课程设计》是计算机专业及相关专业学生的一门实践课程。
本课程对于检验学生学习面向对象程序设计课程后的学习成果,对于软件开发主流方法和思想——面向对象程序设计方法和思想的牢固掌握和熟练应用是一个非常重要的检测,是后续课程得以顺利进行的必要保证,对学生的程序设计能力培养和软件工程能力的培养具有重要的作用和意义。
本课程设计要求学生综合应用已学的计算机相关知识,例如程序设计基本思想和方法、C++语言、面向对象程序设计思想和方法,通过对真实世界的模拟和抽象来解决一些比较简单的实际问题。
课程要求学生针对一个比较系统的题目进行编码、测试,并进行设计说明书的撰写,从而培养和锻炼学生初步的工程意识和做法。
二、课程设计内容及安排
1.问题分析和任务定义:
根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?
(而不是怎么做?
)限制条件是什么?
2.逻辑设计:
对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。
逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;
3.详细设计:
定义相应的存储结构并写出各函数的伪码算法。
在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。
详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;
4.程序编码:
把详细设计的结果进一步求精为程序设计语言程序。
同时加入一些注解和断言,使程序中逻辑概念清楚;
5.程序调试与测试:
采用自底向上,分模块进行,即先调试低层函数。
能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。
调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;
6.结果分析:
程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。
算法的时间、空间复杂性分析。
7.编写课程设计报告
三、设计报告的内容
1、实习报告题头
给出题目、班级、姓名、学号和完成日期
2、目的和要求
本实验的主要目的是锻炼我们的实战经验,运用自己所学的编程语言编写一些小型的项目。
同时熟悉自己学过的知识
3、问题描述
说明程序设计的任务。
在这里应明确:
(1)输入的形式和输入值的范围;
(2)输出的形式;
(3)程序所能达到的功能;
(4)测试数据:
具有典型和代表性的数据,包括正确的输入及其输出结果和含有错误的输入和输出结果。
4.开发环境和工具
(1)程序设计环境,主要描述硬件配置,包括计算机的外存、内存、CPU、显示器的分辨率以及完成该实习必备的外部设备
(2)软件工具,包括操作系统平台,程序设计工具
5.设计过程描述
根据实习的目的、要求与问题描述,构思程序的构架与设计方案。
具体地应说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系,画出流程图。
6、小结
(1)说明调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;
(2)算法的时空分析和改进设想
(3)经验和体会等
7、附录(源程序代码)
源程序代码书写要求规范化,开始要有规范化的说明,如程序名、功能、环境与工具、函数(方法)间的调用(引用)关系、设计者、设计时间与修改时间等;代码书写要采用缩格、函数(方法)和关键语句与变量要加注释等,且书写时应采用c(c++)的现代风格,如函数原型、enum、typedef、void、main等
8、测试结果
以问题描述中所列出的测试数据进行测试,列出测试结果,包括输入和输出。
9.参考文献
列出参考的相关资料和书籍。
四、课程设计考核方法及成绩评定
课程设计结束时,要求学生写出课程设计报告,可运行的源程序。
课程设计成绩分两部分,设计报告占30%,设计作品占70%。
按照优秀、良好、中、及格,不及格五级给予成绩。
五、进度安排
整体设计和详细设计3天
编代码3天
调试和测试 2天
设计论文书写1天
演示软件和答辩 1天
附课程设计题目:
1.学校人员管理系统
本程序用于管理一所学校的人员,所有人员类(Record)有共性的数据成员是:
姓名、性别、身份证号码、生日、地址和年龄。
学生类(Student)的数据人员包括共性的数据成员以及学号、宿舍号、专业和年级。
员工类(Staff)的数据成员包括共性的数据成员以及工号、公寓、每天的工作时间和薪水(每月)。
教授 类(Professor)的数据成员包括员工的数据成员以及教授授课专业、教授所从事的科研名称和教授所带研究生的数目。
普通员工类(Worker)的数据成员包括员工的数据成员以及工作类别。
各类之间的关系如下图:
类Record
类Student类Staff
类Professor类Worker
程序要求:
1、先创建一个菜单,让用户选择是对哪一类对象进行操作。
2、确定好对哪一类对象进行操作后,程序又创建一个菜单让用户选择对此类对象进行如何操作。
操作包括:
输入记录、显示记录、修改记录和删除记录。
3、输入记录时提示用户输入每一条记录的各个字段,输入的每一条记录都要保存到文件如a:
\\example.dat下。
注意一条记录相当于一个对象。
输入的学号不能重复,输入的工号不能重复。
输入的数据作有效性检测。
4、显示记录时,先提示用户输入要显示哪一个记录号的记录,如记录号在不超出范围则显示要访问的记,否则告诉用户记录号超出范围。
5、修改记录时,先要求用户输入要修改的记录关键字内容,如学生的关键字段学号、员工的关键字段是工号。
输入好关键字后进行查找所要修改的记录,找到了重新输入该记录的数据成员内容,否则告诉用户找不到此记录。
6、删除记录时,先要求用户输入要修改的记录关键字内容,)输入好关键字后进行查找所要删除的记录,找到了把它删除掉,否则告诉用户找不到此记录。
提示:
删除的方法先创造一个临时的文件(a:
\\example.tmp),一条一条记录查找过去,把非要删除的记录一条一条写到临时文件下,然后把临时文件复制到a:
\\example.dat下。
7、程序执行结果部分演示如下图:
第一屏:
1、
学生
2、教授
3、普通员工
4、退出
请选择功能号(1-4):
1
第二屏:
1、
输入记录
2、显示记录
3、修改记录
4、删除记录
5、退出
请选择功能号(1-5):
1
请输入姓名:
王名
性别:
男
身份证号码:
131********88
生日:
1979/1/1
地址:
BGD100BEIJING
年龄:
20
学号:
12345
宿舍号:
8-3-225
专业:
COMPUTERSCIENCE
年级:
5
按任意键继续……
6、输入记录
7、显示记录
8、修改记录
9、删除记录
10、退出
请选择功能号(1-5):
2
请输入记录号(1-4):
1
注意第二屏的退出退到第一屏,第一屏退出退出整个程序。
编写此程序至少要用三个以上的下列面向对象工具:
1、继承与派生
2、友元函数
3、运算符重载
4、构造函数
5、虚函数
6、模板
7、文件输入输出
注意:
工具用的越多越好,但要用的恰当。
不同的类对象存放在不同的文件中。
2.公司人员工资管理系统
本程序用于管理一个公司的人员工资,所有雇员类(Employee)有共性的数据成员是:
编号、姓名和工资。
技术员类(Technician)的数据成员包括共性的数据成员以及工作时间(每月的)、每小时的工资。
销售员类(Salesman)的数据成员包括共性的数据成员以及销售额(本月)、提成。
经理类(Manager)的数据成员包括共性的数据成员以及月工资。
销售员兼经理类(Salesmanager)的数据成员包括销售员类和经理类的数据成员。
各类之间的关系如下图:
类Employee
类Technician类Manager类Salesman
类Salesmanager
程序要求:
1.先创建一个菜单,让用户选择是对哪一类对象进行操作。
2.确定好对哪一类对象进行操作后,程序又创建一个菜单让用户选择对此类对象进行如何操作。
操作包括:
输入记录、显示记录、修改记录和删除记录。
3.输入记录时提示用户输入每一条记录的各个字段,输入的每一条记录都要保存到文件如(C:
\\example.dat)下。
注意一条记录相当于一个对象。
输入的工号不能重复,输入的数据字段作有效性检测。
4.显示记录时,先提示用户输入要显示哪一个记录号的记录,如记录号在不超出范围则显示要访问的记,否则告诉用户记录号超出范围。
5.修改记录时,先要求用户输入要修改的记录关键字内容,如学生的关键字段学号、员工的关键字段是工号。
输入好关键字后进行查找所要修改的记录,找到了重新输入该记录的数据成员内容,否则告诉用户找不到此记录。
6.删除记录时,先要求用户输入要修改的记录关键字内容,)输入好关键字后进行查找所要删除的记录,找到了把它删除掉,否则告诉用户找不到此记录。
提示:
删除的方法先创造一个临时的文件C:
\\example.tmp),一条一条记录查找过去,把非要删除的记录一条一条写到临时文件下,然后把临时文件复制到C:
\\example.dat下。
7.程序执行结果部分演示如下图:
第一屏:
5、
技术员
6、销售员
7、经理
8、销售员兼经理
9、退出
请选择功能号(1-5):
1
第二屏:
11、
输入记录
12、显示记录
13、修改记录
14、删除记录
15、退出
请选择功能号(1-5):
1
请输入编号:
0001
姓名:
王名
工作时数:
160
每小时工资:
20
按任意键继续……
1、输入记录
2、显示记录
3、修改记录
4、删除记录
5、退出
请选择功能号(1-5):
2
请输入记录号(1-4):
1
编号姓名工资(元)
0001王名3200.00
注意第二屏的退出退到第一屏,第一屏退出退出整个程序。
编写此程序至少要用三个以上的下列面向对象工具:
1.继承与派生
2.友元函数
3.运算符重载
4.构造函数
5.虚函数
6.模板
7.文件输入输出
注意:
工具用的越多越好,但要用的恰当。
不同类对象存放在不同的文件内。
3.栈操作
一.定义一个栈类(采用类模板),实现下列操作
(1)编写进栈、出栈、显示栈中全部元素的程序;
(2)编写一个二进制、八进制、十进制、十六进制相互转换的应用程序;
二.要求:
(1)采用类模板定义一个栈类实现上述关于栈的操作
(2)设计一个选择式菜单,实现进位制之间转换。
三.编写此程序至少要用二个以上的下列面向对象工具:
1.类
2.继承与派生
3.友元函数
4.虚函数
5.构造函数
6.模板
7.文件输入输出
4.二叉操作
一.定义一个二叉树类(采用类模板),实现下列操作
(3)生成二叉树。
(4)对二叉前序、中序、后序遍历。
(5)求每个结点层次(高度)。
(6)求每个结点的子孙个数。
设计一个选择式菜单,以菜单方式选择上述操作。
二.要求:
定义二叉树元素类和二叉树类,实现对二叉树进行创建、三种遍历、求高度、求结点总数等操作。
三.编写此程序至少要用二个以上的下列面向对象工具:
1.类
2.继承与派生
3.友元函数
4.虚函数
5.构造函数
6.模板
7.文件输入输出
5.教务信息管理系统
一.基本表:
教师基本信息:
如教师工号、姓名、性别、职称、课程编号、课程名称等。
学生基本信息:
如学号、姓名、性别、年龄、宿舍号码、电话号码等。
学生选修课程的基本信息:
课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。
如果重修,需要考虑重修学期、重修成绩。
并且要考虑多次重修的情况。
二.功能与要求
(1) 各种基本数据的录入。
如:
学生基本情况录入
(2) 各种基本数据的修改。
即:
允许对以及录入的数据重新进行编辑、修改。
(3) 各种基本数据的插入。
如:
在学生选修课程基本信息中插入一条新信息。
(4) 各种基本数据的删除。
如:
假设某同学转学或出国深造,删除该生的相关信息。
(5)基于各种数据的查询。
如:
姓张的所有同学、年龄小于20岁的同学。
(6)显示教师课程名称、课程编号,学生名单。
(7) 基于各种基本数据的统计计算。
如:
(7-1)统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩、平时成绩、综合成绩)。
(7-2)统计并输出各班各门功课的平均成绩和总平均成绩。
(7-3)统计并输出每个同学已修学分。
(7-4)列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
(7-5)教务信息其它方面的统计(自行确定)。
三.编写此程序至少要用二个以上的下列面向对象工具:
1.类
2.继承与派生
3.友元函数
4.虚函数
5.构造函数
6.模板
7.文件输入输出
6.图书资料信息管理系统
一.图书基本信息基本表结构:
图书资料基本信息:
中图法分类号、图书编号、书名、作者(要考虑多个作者情况)、出版社、出版日期、ISBN、版次、定价、馆藏数、借阅数等。
图书采购信息:
书名、作者、采购日期、采购数量、采购单价、采购金额、发票号码、图书编号等。
图书借阅信息:
借阅人、借阅人所在单位、借书证号、所借书名、借阅日期、归还日期、逾期罚款等。
借阅期限为一个月,逾期1天,罚款1角。
中图法分类号:
T工业科学
TB一般工业技术,TD矿业工程,TE石油、天然气工业,TF金工业,TG金属学,TH机械
TJ武器工业,TK动力工业,TL原子能技术,TM电工技术,TN无线电电子学、通信技术,
TP自动化技术、计算技术,…。
二.系统功能:
(1) 各种基本数据的录入。
如:
图书资料基本信息录入等。
(2) 各种基本数据的修改。
即:
允许对以及录入的数据重新进行编辑、修改。
(3) 各种基本数据的插入。
如:
在图书采购信息中插入一条新信息;。
(4) 各种基本数据的删除。
如:
或假设某本书遗失且馆藏数为0,删除该书的相关信息。
(5) 基于各种数据的查询。
如:
书名中含有“计算机”的所有书籍、全部借出的所有图书等。
(6) 基于各种基本数据的统计计算。
如:
(6-1)统计馆藏书籍总数、已借出数据总数、在馆书籍数等。
(6-2)统计馆藏书籍总金额、馆藏书籍的平均价格。
(6-3)找出借阅次数最多的10本书,并对它们进行排序。
(6-4)统计每月逾期罚款总金额。
被罚款金额最多的前5名借阅者并对其排序。
(6-5)统计借阅书籍最多的前5名读者。
(6-6)图书资料信息其它方面的统计。
三.编写此程序至少要用二个以上的下列面向对象工具:
1.类
2.继承与派生
3.友元函数
4.构造函数
5.虚函数
6.模板
7.文件输入输出
7.字符串编辑
一.设计一个简单串类String,它包含设置字符串、返回字符串长度和显示内容等功能。
能对字符串进行插入、替换、删除、查找和连接等操作。
程序要求:
1.对字符串的操作采用下列菜单形式:
1.生成字符串
2.显 示
3.求字符串长度
4.字符串插入
5.字符串替换
6.字符串删除
7.字符串查找
8.字符串的连接
1.返回
2.调试
(1) 生成字符串 s=”ABCDBCEFGHTH”
(2) 求长度 len(s)=12
(3)字符串的插入t=”XYZ”
insstr(s,3,t)=”ABXYZCDBCEFGHTH”
(4)字符的替换 将字符串s中的所有p=”BC”替换为t=”LMN”:
repl(s,p,t)=”ALMNDLMNEFGHTH”
(5)字符串的查找 p=”BC”:
index(s,p)=2
(6)字符串的连接 将字符串p=“12345678”的字符串s连接:
strcat(s,p)=”ABCDBCEFGHTH12345678”
二.定义一个一般计数器类Counter通过公有继承产生受限计数器类LCounter和循环计数器类CCounter。
三种计数器关系为
Counter
公有继承
LcounterCCounter
程序要求:
1.对计数器要能进行加1,减1和显示值操作。
2.定义对象CounterX
当计数器值为X.value=655635,执行加1操作时,计数器值仍为X.value=655635,
计数器值为X.value<655635,计数器值加1。
当计数器值为X.value=0,执行减1操作时,计数器值仍为X.value=0,计数器值为X.value>0,执行减1操作时。
.3.定义对象LcounterY
当计数器值为Y.value=655635,执行加1操作时,报告错误信息计数器值超出上限,计数器值为Y.value<655635,计数器值加1。
计数器值为Y.value=0,执行减1操作时,报告错误信息计数器值超出下限,计数器值为Y.value>0,执行减1操作时。
4.定义对象CCounterZ
当计数器值为Z.value=655635,执行加1操作时,计数器值仍为Z.value=0,
计数器值为Z.value<655635,计数器值加1。
当计数器值为Z.value=0,执行减1操作时,计数器值仍为Z.value=65535,计数器值为Z.value>0,执行减1操作时。
三.编写程序至少要用二个以上的下列面向对象工具:
1.继承与派生
2.友元函数
3.运算符重载
4.构造函数
5.虚函数
6.模板
7.文件输入输出
注意:
工具用的越多越好,但要用的恰当。
8.同学录管理系统
一.设计通讯录,设计要求实现如下功能:
(1)建立文件:
存储文件可以使用默认文件名或指定文件名.可以不保存输入记录,需要确认是否保存输入记录如果已经有文件,只能在其后追加
(2)文件存取和显示:
可以单独存取文件,可以随时显示内存中记录的全部内容可以直接存取默认文件或指定文件
(3)删除记录:
可以按“姓名”或“”电话”方式删除记录并更新内容
(4)查询记录:
可以按“姓名”或“电话”方式查询记录
(5)显示记录
(6)修改记录
(7)使用菜单实现功能的正确选择
(8)测试程序
二.编写程序至少要用二个以上的下列面向对象工具:
继承与派生
友元函数
运算符重载
构造函数
虚函数
模板
文件输入输出
9.职工工资信息管理系统
一.职工工资信息管理系统基本表格
职工基本信息:
如工资卡号、身份证号、姓名、性别、年龄、工龄、部门、技术职称、技术职称编号、家庭电话号码、手机号码等。
工资基础信息:
技术职称编号、技术职称、基本工资、职务工资、各种补助等。
费用扣除信息:
工资卡号、水费、电费、清洁费(5元/月)、闭路电视费(10元/月)等。
工资单数据:
工资卡号、姓名、应发工资、水费、电费、清洁费、闭路电视费、税金、实发工资、特别奖励。
其中:
税金计算方法为:
应发工资<800元,税金=0;
800<应发工资≤1400元,税金=(应发工资-800)⨯5%
应发工资>1400元,税金=(应发工资-1400)⨯10%
二.系统功能:
(1) 各种基本数据的录入。
如:
职工基本信息录入等。
(2) 各种基本数据的修改。
即:
允许对以及录入的数据重新进行编辑、修改。
(3) 各种基本数据的插入。
如:
在工资基础信息中插入一条新信息等。
(4) 各种基本数据的删除。
如:
假设某员工调离,删除该员工的相关信息等。
(5) 基于各种数据的查询。
如:
技术职称为技术员的所有员工、基本工资在1000元以上的员工等。
(6) 基于各种基本数据的统计计算。
如:
(6-1)统计年龄20岁以下青年员工的总数;年龄在20岁以上,45岁以下的员工数;年龄55岁以上退休员工数。
(6-2)统计各种技术职称的员工的基本工资总额、职务工资总额、各种补助总额、应发工资总额。
进而统计全公司职工的工资总额。
(6-3)统计各种技术职称员工的员工数,并计算各种技术职称员工的平均工资。
(6-4)统计该公司每月税金总额、全年税金总额。
(6-5)按照应发工资对全公司员工进行排序。
(6-6)职工工资信息其它方面的统计。
三.编写此程序至少要用二个以上的下列面向对象工具:
1.类
2.继承与派生
3.友元函数
4.构造函数
5.虚函数
6.模板
7.文件输入输出
10.线性表操作
一.定义一个线性表类(采用类模板),实现下列操作
(1)生成线性表。
(2)做元素的插入、删除操作。
(3)元素的查找。
(4)线性表输出。
(5)二个多项式合并一个多项式。
设计一个选择式菜单,以菜单方式选择上述操作。
二.要求:
定义线性表元素类和线性表类,实线对线性表进行创建、插入、删除、查找、显示等操作。
三.编写此程序至少要用二个以上的下列面向对象工具:
1.类
2.继承与派生
3.友元函数
4.虚函数
5.构造函数
6.模板
7.文件输入输出
11.排序操作
一.定义一个排序表的类(采用类模板),实现下列操作
(6)冒泡排序
(7)直接插入排序。
(8)折半插入排序
(9)希尔排序
(10)快速排序。
(11)选择排序。
设计一个选择式菜单,以菜单方式选择上述操作。
二.编写此程序至少要用二个以上的下列面向对象工具:
1.类
2.继承与派生
3.友元函数
4.虚函数
5.构造函数
6.模板
7.文件输入输出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 课程设计 要求 任务书