《C++语言程序设计》课程大作业任务书

  • 格式:doc
  • 大小:50.00 KB
  • 文档页数:7

《C++语言程序设计》大作业任务书 一、题目 每组同学可从下列给出的参考题目中任选一题完成,也可以自选题目。

(1) 仓库货物管理系统。 内容描述:需设计四个类,入库类(描述进货信息) 、出库类(描述出货信息)、仓库类(描述库存信息)、货物类(描述货物信息)。 要求:能记录该仓库所有的进出货信息及相应库存信息,并能够根据货物名称查找相应的入库、出库及库存信息,根据入货和出货信息(如时间)查找相应的货物信息。能够将仓库信息记录在文件中,并能从文件中读取信息。

(2)完成一个学生成绩管理系统。 内容描述:设计四个类:学生类(描述学生基本信息);成绩类;班级类;课程类(描述课程信息:课程编号,科目名称(如高等数学,大学英语等));学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入。 要求:能按学期、按班级完成对学生成绩的录入、修改;能按班级统计学生的成绩;求学生的总分及平均分;并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。

(3) 完成一个学生个人财务管理系统。 内容描述:主要设计四个类:资金类(描述资金基本信息) ;现金类(通过对象来实现收入支出的记录);卡类(描述卡的信息:给卡编号,派生类为一卡通类,银行卡类,信用卡类);记录类(记录收入,支出,借贷,转账,时间);电话费类(考虑花费预存情况) ;新增类(用户新添加的类)。收入与支出的项目信息用文件保存,每个类一个文件,程序执行时从文件读入。 要求:能按时间、按收入与支出完成对个人财务的记录,且按时间统计资金的结余;能查询个人的总结余及详细收入与支出状况,并在收支借贷情况异常时提醒用户。

(4)招生管理系统。 内容描述:假设有某高校今年打算招生 100 人(专业和各专业招收人数自定),但有 130 百人报名(假设所有人都不服从调剂,每个人按志愿依次填写三个专业),那么请你编写一个系统,按报考人的志愿顺序依次录取(若多名报考人报考同一专业,则按分数排名依次录取。两人若分数相同,则按英语、数学、综合、语文成绩排名。)(设计如下类:人类,成绩类,志愿类,学生类)。 要求:能够将相关信息记录在文件中,并能从文件中读取信息。

(5)校园一卡通管理系统。 内容描述:该系统将实现用户登录管理、一卡通管理、消费部门管理和管理员管理等功能。其中:用户登录管理,负责对利用终端进行登录的用户的身份进行有效性检测;一卡通管理,可以进行一卡通发放、充值、销毁和挂失等功能;消费部门管理,可以进行消费、营业金额统计和查询等功能;管理员管理,可以进行新增、删除、修改,统计和查询人员信息等功能。 (6)自选题目,难度必须适当,同时体现面向对象程序设计语言的特点。 二、对象 本学期《C++语言程序设计》选课班全体同学。

三、目的 (1)掌握面向对象程序设计的思想,区别传统的过程式程序设计思想,能够使用面向对象的程序设计思想解决实际问题; (2)掌握在 Visual C++6.0集成开发环境下编辑、编译、链接和运行一个 C++程序的基本方法; (3)独立完成每个程序设计和编码,能够灵活运用各种调试命令修改源程序中可能出现的错误,并能根据问题进行学习、拓广、深化。 (4)学会科学地撰写总结报告,加深对所学知识的理解和掌握,答辩中考察学生的技能,并培养学生的表达和思辨能力。

四、要求 (1)根据学生人数分成5~6人一组,各小组选择感兴趣的题目,在课外完成查找资料、选题、拟大纲、小组讨论、研究写作等各环节;每一环节完成后,进行小组讨论确定解决问题的方案。 (2)问题规模:体现面向对象程序设计语言的特点,程序代码每人不少于300 行(谁完成的代码必须注明自己的姓名,以备检查);使用技术:体现 OOP 的抽象、封装、继承、多态等 4 种关键技术的全部;程序结构良好,没有明显错误;按照大作业格式,在课程结束前一周交电子稿(或打印稿)。

五、内容 (1)系统说明书 内容包括: ①问题描述 ②类体系设计和程序流程图 ③各类定义的基本功能,即主要数据和函数功能描述 ④拟采用开发平台(Visual C++6.0等) (2)大作业报告 根据原有的系统设计,编码阶段的工作,整理书写大作业报告,内容包括: ①系统说明书 ②实验分析与结论 ③收获与体会 ④附程序代码 (3)最后提交材料: ①大作业报告(电子稿) ②源程序代码(CPP文件),执行文件(EXE)

六、评分 本次大作业占期末考试总成绩70分的 25%。 大作业的总评分依据:正确性、设计合理性、认真程度、实现的功能多少,答辩情况等。 (1)正确性——占大作业满分的45% 要求:所谓“程序正确”,指的是在各层次上正确,经得起检测,对合法的所有数据,要能够输入,且程序要都能正确执行,并获得正确的结果。 (2)设计合理性——占大作业满分的20% 要求:指的是抽象数据类型的设计和实现,抽象数据类型有两个基本特性:抽象性和封装性。无论是用 C语言,还是用C++语言来实现,都应该符合这个标准。 (3)认真书写报告——占大作业满分的20% 要求:要使得用户看了你的报告,不仅知道你编的程序应该如何使用,而且了解你是用的什么结构?什么算法?在调试中曾经遇到过什么问题,是如何解决的?有什么值得后人吸取的教训和体会? (4)考虑所选题的实现的功能多少——占大作业满分的5% 要求:满足题目要求的基本功能。(若多完成功能,但多完成的部分若不正确,不扣分) (5)答辩情况----占大作业满分的10% 要求:能正确描述大作业设计的思路、如何实现、过程、大作业中的技术亮点、最后的结果、大作业完成的心得体会等。能熟练地进行程序演示,并能清晰地回答答辩中的提问。 说明:若两人和多人程序基本相同或撰写的报告基本相同的情况下,经仔细比较查证属相互抄袭的,抄袭者和被抄袭者均按“0”分计。

七、大作业格式 (1) 大作业的页面设置为上、下、左、右页边距都为 2.5 厘米,格式段落中行距为固定值 20 磅。 (2) 中文字体为宋体小四号,英文字体为Times New Roman 小四。 (3) 关于大作业提交文件格式的其它具体要求,请详细参考后续的《C++语言程序设计》大作业样例”。

补充说明:对于大作业中的程序、类或者函数一定要有详细注释,如下例所示。

对于类包括:类的成员变量说明,类的成员函数说明,功能,基类、继承类、实现过程等等。如: /******************************************************************** 类 名: 私有成员: 公有成员: 功 能:作为下面要定义派生类的基类 实现步骤: (1)定义类名 (2)声明私有成员 (3)声明必要的函数作为公有成员,其中构造函数用来分配存储空间,对私有对象进行初始化 (4)对类进行封装

********************************************************************/

对于函数包括:先对函数及各参数进行说明,函数功能说明,实现原理及步骤说明,函数中的关键部位也需要进行说明。如:

/******************************************************************** 函数名称:FengGuDIB(LPSTR lpDIBBits,LONG lWidth, LONG lHeight,int YuZhi) 函数类型:BOOL 函数变量:LPSTR lpDIBBits - 指向源 DIB图像指针 LONG lWidth - 源图像宽度(象素数) LONG lHeight - 源图像高度(象素数) int YuZhi -通过对话框选取一个峰谷作为阈值 功 能:该函数用于对图像进行阈值分割运算。 实现步骤:(1)获得原来图像的首地址及图像的宽和高 (2)开辟一块内存空间,并初始化为 255 (3)进行图像灰度统计,显示灰度直方图 (4)通过对话框选取一个峰谷作为阈值 (5)像素灰度值与阈值之差小于30,将像素置 0,否则置 255 (6)将结果复制到图像数据区

******************************************************************/ BOOL CDibImage::FengGuDIB(LPSTR lpDIBBits,LONG lWidth, LONG lHeight,int YuZhi) { LPSTR lpSrc; // 指向源图像的指针 lpSrc LPSTR lpDst; // 指向缓存图像的指针 lpDst LPSTR lpNewDIBBits; // 指向缓存DIB 图像的指针 temp HLOCAL hNewDIBBits; unsigned char pixel;// 像素值 long lHistogram[256]; LONG lLineBytes; unsigned char iMaxGrayValue,iMinGrayValue;

//循环变量 long i; long j; hNewDIBBits = LocalAlloc(LHND, lWidth * lHeight); if (hNewDIBBits == NULL)