您的当前位置:首页正文

《C++面向对象程序设计》课程设计

2020-01-11 来源:客趣旅游网
《C++语言程序设计案例》综合设计题目

课程设计名称:C++程序设计课程设计 指导老师:胡锦美 课程设计周(时)数:1周

课程设计授课单位:软件教研室 指导方式:集体辅导与个别辅导相结合 课程设计适用专业:计算机科学与技术 课程设计教材及主要参考资料:

《C++语言程序设计》(《C++语言程序设计案例教程》),郑莉编著,清华大学出版社 服务课程名称:C++语言程序设计 服务课程讲课学时:C++ 一、课程设计教学目的及基本要求

本课程设计是《程序设计及C++语言》课程的组成之一,也是它的继续和延伸。采用研究型学习方法,分组完成一个管理类型的小型软件。开设本课程的目的是使学生通过参加小型软件的开发过程,进一步掌握面向对象的程序设计方法,使学生具有团队协作精神,并培养学生的创新能力和创新意识。要求如下:

1.了解并掌握面向对象程序设计方法,具备初步的独立分析和设计能力;

2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

5.设计的题目要求达到一定工作量(500行以上代码),并具有一定的深度和难度。 6.编写出课程设计说明书,说明书不少于10页(代码不算)。

7. 学生必须仔细阅读《C++语言程序设计》课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课程设过程中不断检测自己的计划完成情况。

在课程设计前期安排学习C++编程和面向对象的软件工程(包括使用UML进行面向对象的系统分析和设计)的有关知识,以自学和上机实验为主。

二、课程设计内容及安排

1.问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么,(而不是怎么做)限制条件是什么。 2.概要设计:对问题描述中涉及的操作对象定义相应的类,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;

3.详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对问题作出进

一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;

4.程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序中逻辑概念清楚;

5.程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果; 6.结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。算法的时间、空间复杂性分析; 7.编写课程设计报告;

设计题目: 1.学生选课系统

课程基本信息:课程名,课时,开课学期,学分

专业选修课信息包括:课程名,课时,开课学期,学分,所属专业; 公共选修课信息包括:课程名,课时,开课学期,学分,面向专业,开

课系部。

学生信息:学号,姓名,专业,选课信息 功能要求:

(1)课程信息的维护:查询课程信息情况、增加课程信息、删除课程信息、更新课程信息。

(2)学生信息的维护:查询学生信息情况、增加学生信息、删除学生信息、更新学生信息。

(3)选课:每人每学期选课不能超过4门;同一学期选修同一门课程的学生人数不能超过100人。只能选自己专业的专业选修课或面向自己专业的公共选修课。

(4)选课信息:记录学生的选课情况,属性为:课程名,选课时间(学期),成绩。

(5)统计模块包括:每个学生选修课程的门数,每门课程选修的学生人数。

2. 订票系统

功能要求:

(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数

据自定)

(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城

市,航班票价,票价折扣,0确定航班是否满仓); 可以输入起飞抵达城市,查询飞机航班情况;

(3)订票:(订票情况可以存在一个数据文件中,结构自己设定)

可以订票,如果该航班已经无票,可以提供相关可选择航班;

(4)退票: 可退票,退票后修改相关数据文件;

客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

(5)航班信息维护:

增加、删除、修改航班信息,并可以修改航班数据文件

3.运动会分数统计系统

某校要召开运动会,现要求开发一个学校运动会成绩统计系统,参加运动

会有n个系,比赛分成m个男子项目,和w个女子项目。

系信息(系编号为D01„„n,系名称Dname),

运动员信息:(编号,姓名,性别,所属系,成绩(初值为0)) 项目信息:(项目编号,项目名称)

功能要求:

(1) 生成报名表:

(2) 维护报名表:增加、删除、修改,(报名人数3人以下(含3人)

取消该项目的比赛)

(3) 登记各项比赛成绩

(4) 根据预赛成绩产生预(决)赛名单 (5) 计分规则:

报名人数在16人以上(含16人)取取前八名,前八名的积分分别为:

8、7、6、5、4、3、2、1;

报名人数在8人以上(含8人)16人以下,取前五名,前五名的积分分

别为:7、5、3、2、1;

报名人数在8人以下,取前三名,前三名的积分分别为:5、3、2;

(6)统计

  

扩展功能:

能统计各系总分,

按系系总分、男女团体总分排序输出;

按项目编号查询取得前三或前五或前八名的运动员情况。

实时报告各项竞赛成绩(能自动及时、经常地报告最新比赛成绩),包

括是否打破记录

4.图书管理

图书信息:图书号、书名、作者名、分类号、出版单位、出版时间、价格、库存量。 读者信息:借阅证号、姓名、性别、出生日期。 派生以下两个类:

学生读者(年级、系别、可借数量(其中:本科生10本(中文8本,外文2

本),研究生(中文15本,外文5本)

教师读者(部门,可借数量(中文20本,外文10本)

试设计一图书信息管理系统,使之能提供以下功能:

(1)采编入库:新购入一本书,经分类和确定书号后登记到图书账目中去,若该书已存在,这库存量增加

(2)借阅:若一种书的现存量大于0,且借阅证还可借(未达最大借阅数或没有过期书目)该则借出一本,登记借阅者的图书证号和应归还期限

(3)归还:若过期要缴纳罚款,注销借阅者的登记,改变该书的现存量 (4)清除库存:某书已无保留价值,将它从图书账目中注销

(5)查询功能:--按书名查询(模糊查询) 按作者名或借阅证查询

5. 通信录管理系统

用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 人员信息:姓名、手机号码、家庭电话号码、办公电话、电子邮件、分组

(其中:手机号码、家庭电话号码、办公电话不能同时为空;分组说明: 未知、同事、亲戚、朋友、家人、同学等还可以自己创建分组)

功能要求:

(1) 查看功能:选择此功能时,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2) 增加功能:能录入新人员记录(当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;默认分组“未知”)

(3) 拔号功能:能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字(可调用\"windows.h\"—Sleep来实现延时)。 (4) 修改功能:选中某个人的姓名时,可对此人的相应数据进行修改

(5) 删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。

(6)查找:按姓名(模糊查找,如输入一个“李”,则列出所有姓李的信息)或按电话号码查找某人信息。

6. 学校教职工信息表 设计要求:

设计要求实现如下功能:

(1)建立职工信息数据,包括职工号、姓名、性别、工资、出生时间、参加工作时间和年龄(必须计算得到)。 (2)根据职工信息表,建立只含有姓名和年龄的职工信息简表。

(3)使用继承的方法构造3个类,(即雇员类——虚基类,教师类和工人类——派生类)使用相应的对象放置10个(或以上)职工信息。 (4)编写同名display()成员函数,用来输出数组的内容。 (5)按不同类别输出职工信息,比如按系输出教师信息。

(6)要求对“<<”和“>>”运算符进行重载。考虑到输人职工编号时,也会因不小心引人空格,而且名字中也需要有空格,所以重载“>>’’运算符时,需要满足这个要求。 (7)抽取并计算职工的平均年龄。 (8)检索(查找)指定信息。(如按姓名检索、按年龄检索) (9)显示各年龄段分布的情况 (10)参考界面如下:

增加 (一位教师记录 、增加一位工人记录) 计算 (教师平均年龄、计算工人平均年龄) 删除 (一个教师、删除一个工人)

显示 (全部职工记录、按系输出教师信息)

检索 (按姓名检索所有信息 按按职工号检索所有信息) 结束程序运行

7. 商品销售管理系统

商品信息:商品编号、商品名称、商品进货价、商品库存数量等 商品销售:商品编号、商品名称、销售价格、销售数量、销售日期等 主要功能

1) 增加或删除货物信息

2) 按编号或名称查询货物信息

3) 自动显示库存量不足一定值的货物信息 4)统计读取上个月的销售情况统计:

1)计算上个月每种产品的销售额。

2)统计销售数量最大的十种产品、产生利润最大的十种商品

8. 影碟出租管理

影碟信息:碟片名称、国家、类型、导演、制片人、主演影星、库存量等 出租信息:顾客账号、碟片名称、借阅日期、归还日期、租金等 顾客信息:账号、姓名、资金余额、所租影碟列表 1) 影碟维护:添加、删除、修改 2)顾客维护:添加、删除、修改

3) 碟片查询:按片名查询某片是否可借阅,结果有三种(可借阅、已借出、无此片)。

4) 碟片借阅:输入顾客账号、碟片名称、借阅日期,修改资金余额(每片押金20元,以防止不归还) 5)碟片归还:输入顾客账号、碟片名称、归还日期,修改碟资金余额,先返该片还押金,计算每片租金(每三天的租金为1元,不满三天的按三天计算)。因为每个顾客一次可借阅多片,所以也可能一次归还多片。在该操作结束前,应输出该会员此次归还所需支付的总租金。 5)统计:

各类型影碟的清单

扩展:统计上个月影碟最大出租率的十种产品(出租率:出租天数/月份天数)

9. 简易客房管理

客房信息:等级类型(经济、标间、豪华、单人间、双人间、三人间)、剩余客房数量 员工信息:楼层管理员、客房领班、客房经理等 功能:

1)登记客人入住登记:房号、客人姓名、入住时间、入住期限、入住押金、每日租金、客房等级、单/双/三人间)

2) 给定员工姓名,显示本员工所管理的楼层客房信息(经济、标间、豪华、单/双/三人间的入住情况(包括空闲/已入住/入住客人姓名)

3) 给定入住客人姓名,显示其入住情况(房号、姓名、已交押金、入住费用累计,入住结算) 4) 给定房号,修改押金数目(实现添加的数目和以往的数目累加)

5) 按照某类客房(经济、标间、豪华、单人间、双人间、三人间)入住数量的高低进行排序

10. 歌咏比赛成绩管理

若干名选手)参加比赛, 参赛者要演唱两首,自选准备1首歌曲,另一首由组委会事先准备M首歌曲(歌曲编号1~M,歌曲名称),通过以随机抽取方式抽取1首歌曲(不允许与自己自选歌曲系统,但

允许与别人相同)。有8名评委。

选手成绩的计算方式是否采用去掉最高分和最低分,再取平均分的方法计算,然后2首歌曲各占50%。

1)N个选手用随机函数生成选手(编号1~N)比赛顺序表(编号,姓名) 2)随机抽取方式抽取1首歌曲,生成比赛比赛顺序表及曲目表并输出 序号 姓名 曲目1 曲目2 1 *** 《****》 《***》 2 *** 《****》 《***》 „„

N *** 《****》 《***》

3)能够输入每位评委对选手的评分,计算每首歌曲的得分,与选手的最终成绩 序号 姓名 曲目1 曲目2 曲目1得分 曲目2得分 最后得分 1 *** 《****》 《***》 9.0 9.2 9.1 2 *** 《****》 《***》 „„

N *** 《****》 《***》

4)计算比赛的名次

3) 前3名以特大字的方式在屏幕上显示选手的最终得分

11.学生管理系统

使用下面的数据,用C++设计一个简单的学籍管理系统,实现出最基本的功能。

学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成

学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87732111 02 李成华 女 101 87723112 … …. .. … ………..

学生成绩基本信息文件(B.TXT)及其内容:

学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 … …. ………. .. .. …

功能要求及说明:

(1) 数据录入功能: 对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运

算。

综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70% . 实得学分的计算:

综合成绩在60以上(含60 ),,应得学分=课程学分

综合成绩在60以下 ,应得学分=0

(2)查询功能:分为学生基本情况查询和成绩查询两种 A:学生基本情况查询:

-输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。 B:成绩查询:

输入一个学号时,查询出此生的所有课程情况,格式如下: 学 号:xx 姓 名:xxxxx

课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx … … … … ……… … … 共修:xx科,实得总学分为: xxx

(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。 (4 ) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。

12.学生考勤系统

通过设计、实现一个学生考勤管理系统,主要功能如下:

(1)录入学生的缺课记录:首先提示用户按照正确的格式进行学生缺课记录的录入。 (2)修改某个学生的缺课记录:查找到你所需要修改的那位的学生全部缺课记录。在修改前要检查记录是否为空了,不为空的话,可以设置下面这五个菜单供用户选择:

\"1、缺课日期2、第几节课3、课程名称4、学生姓名5、缺课类型6、退出修改程序并返回系统主菜单

修改很简单,仅需要对该学生的某个部分进行替换即可,实现对所选记录的修改,完成后更新原有的学生记录。 (3)查询某个学生的缺课情况

按学生姓名查找,为了达到查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序

(4)统计旷课学生姓名及旷课节数和有学生旷课的课程及旷课人次 (5)退出系统

同学也自行选题,经认可老师同意后可以作为设计题题目

(二)其它要求:

(1) 只能使用C++语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 学生可自动增加新功能模块(视情况可另外加分) (4)设计要求数据用类组合数据与操作

(5)可以使用继承的方法构造类,应尽量使用已减少代码的冗余度(例如,学校职工管理系统 雇员类——虚基类,教师类和工人类——派生类)。

(5)对字符串类型的输入和输出,要求对“<<”和“>>”运算符进行重载。例如考虑到输人学号时,也会因不小心引人空格,而且名字中也需要有空格,所以重载“>>’’运算符时,需要满足这个要求。

(6)写出课程设计报告,具体要求见相关说明文档

三、 设计报告的内容

设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材

料。设计报告以规定格式的电子文档书写、打印并装订,排版及图、表要清楚、工整。内容及要求如下:

封面:题目、班级、姓名、学号、指导教师和完成日期。 正文包括以下7个内容: 1.需求分析

以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定: (1) 输入的形式和输入值的范围;

(2) 输出的形式;

(3) 程序所能达到的功能;

(4) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

2.概要设计 说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

3.详细设计

实现概要设计中定义的所有类,对每个操作只需要写出伪码算法;画出UML图 ,可

采用流程图等进行描述,画出函数和过程的调用关系图。 4.调试分析 内容包括:

a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;

b.算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和

改进设想; c.经验和体会等。

5.用户使用说明

说明如何使用你编写的程序,详细列出每一步的操作步骤。

6.测试结果

列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。 7.参考文献

列出参考的相关资料和书籍。 四、考核方法及成绩评定

 

设计结束时,要求每组提交一份课程设计报告(不附源程序)并注明每人完成的内容,不得少于10页,可运行的软件系统(包括源程序)一份。 《C++程序设计》课程设计的最后成绩有以下几个方面组成:

程序运行情况(40分),程序的结构合理与否(10分),算法说明的清晰程度(20分),上交程序存放的规范程度(10分),总结的深刻程度(20分)(课程设计雷同者总成绩以0分计算)。 

按照优、良、中、及格,不及格五级给予成绩,同组成绩相同。

因篇幅问题不能全部显示,请点此查看更多更全内容