交通院C_C+课程设计任务书_第1页
交通院C_C+课程设计任务书_第2页
交通院C_C+课程设计任务书_第3页
交通院C_C+课程设计任务书_第4页
交通院C_C+课程设计任务书_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机程序设计课程实践任务书中南大学交通运输工程学院CAD/CAM教研室课程设计是C/C+语言教学中,一个重要的实践环节。一般来讲,课程设计应该比课程教学实验复杂一些,要求所涉及的内容应该有一定的深度和广度,并更加接近现实应用。通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,最终目标是想通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。本任务书简要介绍C/C+语言课程设计的要求,并给出设计题目及其预期目标。1 课程设计目标使学生综合使用所学过的C/C+语言程序设计知识,掌握结构化程序设计的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,

2、解决稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。课程设计的目的和要求: 1、使学生巩固和加强C语言程序设计课程的理论知识。2、使学生掌握C/C+语言的基本概念、语法、语义和数据类型的使用特点。3、使学生掌握C/C+语言程序设计的方法及编程技巧,能正确使用C/C+语言编写程序。4、进一步理解和运用结构化程设计的思想和方法;学会利用流程图或N-S图表示算法。5、使学生掌握调试程序的基本方法及上机操作方法。6、掌握书写程设计开发文档的能力,使学生学会撰写课程设计总结报告。课程设计的思想和方法还可以作为学生做毕业论文时

3、的参考资料。7、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。为学生做毕业设计打好基础。8、初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析 问题的能力及编程能力,并养成良好的编程习惯。9、培养学生的创新能力和创新思维。学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。10、培养学生良好的程序设计风格。在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。学生在课程设计书写代码时,应该严格按要求处理,以便建立良好

4、的程序设计风格。2 课程设计内容2.1 设计环境编译器为Visual C+ 6.0及以上版本2.2 基本要求1. 每个班分为15个组,每组2人。每组一题。每组成员分工合作完成一个课程设计,每组2人进行任务分工。则上每组题目不能重复。如重复需经指导老师批准。2. 要求利用结构化程序设计方法以及C/C+的编程思想来完成系统的设计。3. 数据使用数组、结构体、链表等均可,键盘操作或鼠标操作均可,设计必要的界面、菜单、文件操作。4. 模块化程序设计:要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现。5. 学生所选课题必须上机通过,并获得满意的结果。6.

5、程序书写风格:锯齿型书写格式。2.3 设计步骤1、根据问题描述,设计数据存储方式; 2、分析系统功能,划分功能模块,确定各模块函数名称;3、主程序算法设计和各模块算法设计;4、编程实现;5、调试和测试;6、完成设计文档和设计说明书。2.4 课程设计报告的要求1、需求分析描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。2、总体设计(程序设计组成框图、流程图)3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施5、测试结果,用几组测试数据进行测试算法设计的正确性。6、源程

6、序清单和结果:源程序要加注释。结果要包括测试数据和运行结果。2.5时间安排1. 准备阶段(时间:一天)明确设计任务、理清思路、制定计划、整理设计步骤。备注:以上内容可集体讨论。2. 功能模块划分(时间:二天)理清程序的总体流程,根据需要进行功能模块(函数)划分,定义各函数原型及功能。备注:以上内容可集体讨论。3. 程序的设计、调试阶段(时间:六天)设计各功能模块处理流程、独立设计和调试程序,并不断按要求完善程序功能。备注:以上内容必须单独完成。4. 提交程序设计说明书和源代码打印件,面试(时间:一天) 2.6 设计题目1、学生综合测评系统设计开发每个学生的信息为:学号、姓名、性别、家庭住址、联

7、系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。具体实现如下功能:A、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。提示:学生信息可先输入到数组中,排序后可写到文件中。(2) 插入(修改)同学信息提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信

8、息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。(4) 浏览学生信息:提示:打开文件,显示该文件的学生信息。B、学生数据处理:(1) 按考试科目录入学生成绩并且按公式:考试成绩(语文+数学+外语)/3 计算考试成绩,并计算考试名次,提示:先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。(2) 学生测评数据输入并计算综合测评总分及名次。提示:综合测评总分(考试成绩)*0.6+(同学互评分)*0.1+品德成绩*0.1+任课老师评分*0.2。(3) 学生数据管理提示:输入学号,读出并显示该同学信

9、息,输入新数据,将改后信息写入文件(4) 学生数据查询:提示:输入学号或其他信息,即读出所有数据信息,并显示出来。C、学生综合信息输出提示:输出学生信息到屏幕。2、图书管理系统设计开发主要包括管理图书的库存信息、每一本书的借阅信息以及每一个人的借书信息。每一种图书的库存信息包括编号、书名、作者、出版社、出版日期、金额、类别、总入库数量、当前库存量、已借出本数等。每一本被借阅的书都包括如下信息:编号、书名、金额、借书证号、借书日期、到期日期、罚款金额等。每一个人的借书信息包括借书证号、姓名、班级、学号等。系统功能包括以下方面:A、借阅资料管理要求把书籍、期刊、报刊分类管理,这样的话操作会更加灵活

10、和方便,可以随时对其相关资料进行添加、删除、修改、查询等操作。B、借阅管理 (1) 借出操作 (2) 还书操作 (3) 续借处理提示:以上处理需要互相配合以及赔、罚款金额的编辑等操作完成图书借还业务的各种登记。例如:读者还书时不仅更新图书的库存信息,还应该自动计算该书应罚款金额。并显示该读者所有至当日内到期未还书信息。C、读者管理读者等级:对借阅读者进行分类处理,例如可分为教师和学生两类。并定义每类读者的可借书数量和相关的借阅时间等信息。读者管理:对读者信息可以录入,并且可对读者进行挂失或注销、查询等服务的作业。D、统计分析随时可以进行统计分析,以便及时了解当前的借阅情况和相关的资料状态,统计

11、分析包括借阅排行榜、资料状态统计和借阅统计、显示所有至当日内到期未还书信息等功能分析。E 系统参数设置:可以设置相关的罚款金额,最多借阅天数等系统服务器参数。3、教师工资管理系统设计开发每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 合计扣款。具体实现如下功能:A、教师信息处理(1) 输入教师信息(2) 插入(修改)教师信息:(3) 删除教师信息:(4) 浏览

12、教师信息:提示:具体功能及操作参考题1。B、教师数据处理:(1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。(2) 教师实发工资、应发工资、合计扣款计算。提示:计算规则如题目。(3) 教师数据管理提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4) 教师数据查询:提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。(5) 教师综合信息输出提示:输出教师信息到屏幕。4、教师工作量管理系统设计开发计算每个老师在一个学期中所教课程的总工作量。(教师单个教学任务的信息为:教师号、姓名、性别、职称、认教课程、班级、班

13、级数目、理论课时、实验课时、单个教学任务总课时)。具体实现如下功能:A、教师信息处理(1) 输入教师授课教学信息,包括教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时。(2) 插入(修改)教师授课教学信息:(3) 删除教师授课教学信息:(4) 浏览教师授课教学信息:B、教师工作量数据处理:(1) 计算单个教学任务总课时。计算原则如下表:班级数目单个教学任务总课时21.5*(理论课时+实验课时)32*(理论课时+实验课时)=42.5*(理论课时+实验课时)(2) 计算一个教师一个学期总的教学工作量。总的教学工作量=所有单个教学任务总课时之和。(3) 教师数据查询:提示:输入

14、教师号或其他信息,即读出所有数据信息,并显示出来。C、教师综合信息输出提示:输出教师信息到屏幕。5、学校人事管理系统设计开发设计开发一个学校人事管理系统,要求如下:某学校,主要人员有:在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。具体实现如下功能: 1) 添加删除功能:能根据学院人事的变动情况,添加删除记录;2) 查询功能:能根据编号和姓名进行查询;3) 编辑功能(高级):根据查询对相应的记录进行修改,并存储;4) 统计功能:能根据多种参数进行人员的统计(在职人

15、数、党员人数、女工人数、高学历高职称人数);5) 保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。6) 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。 6、飞机订票系统设计开发假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。试设计一民航订票系统,使之能提供下列服务:1) 航班信息录入功能(航班信息用文件保存)2) 航班信息浏览功能3) 查询航线:(至少一种查询方式)4) 按航班号查询5) 按终点站查询6) 承办订票和退票业务7、学生选修课程系统设计假定有n门课程,每门课

16、程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:课程信息录入功能(课程信息用文件保存)输入课程信息浏览功能输出查询功能:(至少一种查询方式)算法按学分查询按课程性质查询学生选修课程8、销售管理系统设计开发某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容: 1)销售员的代号2)产品的代号3)这种产品的当天的销售额 每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条

17、,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。1)计算上个月每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号)3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额) 4)输出统计报表 销售统计报表 产品代号 销售之和 销售员代号 1 2 3 4 5 1 2 3 4 每种产品之和 总和9、车票管理系统设计开发一车站每天有n个发车班次,每个班次都有一班次号(1、2、3n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如班次 发车时间 起点站 终点站 行车时间 额定载量

18、 已定票人数1 8:00 上海南 杭州 2 45 302 6:30 嘉兴 杭州 0.5 40 403 7:00 嘉兴 杭州 0.5 40 204 10:00 嘉兴 杭州 0.5 40 2用C设计一系统,实现如下功能要求:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。(3)查询路线:可按班次号查询 ,可按终点站查询(4)售票和退票功能 A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发

19、出时才能退票,自动更新已售票人数10、保安值班安排系统设计开发某公司有7名保安人员:赵、钱、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制一程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下: 赵:星期二、星期四 钱:星期一、星期六 孙:星期三、星期日 李:星期五 周:星期一、星期四、星期六 吴:星期二、星期五 陈:星期三、星期六、星期日11、简单图形处理系统设计开发设某图形处理程序只考虑点、直线、圆三种基本图形。对于点,给出点的横纵坐标;对于直线,给出直线方程ax+by+c0的三个系数a,b,c;对于

20、圆,给出圆心坐标和半径。试说明图形的几何形状类型,并编写输入和输出图形数据、求两点矩离、求两直线交点、 已知点和半径形成圆、已知两点形成直线等函数。12、模拟时钟转动程序设计开发要求: 能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。13、皇后问题程序设计开发在国际象棋中,能否在空棋盘上摆放八个皇后,并使其中任意两个皇后不能在同一行或同一列或同一对角线上,并编写完整的摆放八皇后问题的程序。要求:第一个皇后的起始位置由键盘输入,国际象棋的棋盘为8*8的方格。14、算术计算器设计开发功能要求:程序首先显示计算器界面,并等待用户输入一个算术计算式(

21、见图1所示)。假如用户输入22+1,程序将在计算器的显示屏上输出计算结果(见图2所示)。如果输入错误,显示input error!。图1 图2计算器的界面程序已经提供:(可访问/xhyu下载)#include #include void main() float a,b; char c; clrscr(); gotoxy(1,2); printf(谀哪哪哪哪哪哪哪哪哪哪哪哪縗n); printf(? 砛n); printf(媚哪哪哪哪哪哪哪哪哪哪哪哪碶n); printf(? 1 2 3 + - 砛n); printf(? 砛n); printf(?

22、 4 5 6 * / 砛n); printf(? 砛n); printf(? 7 8 9 = x1b 砛n); printf(? 砛n); printf(? 0 . End 砛n); printf(滥哪哪哪哪哪哪哪哪哪哪哪哪賊n); gotoxy(2,3); /following codes get users input and complete the calculation /add your codes down here! /add your codes up here! 计算器1实现提示:l 读懂并掌握显示计算器界面的程序l 获取用户输入的算式只需利用”%f%c%f”调用scanf

23、函数就可以。其中%c用来获取运算符+,-,*,/,%f用来获取运算数。l 利用if语句或switch语句区分 +,-,*,/ 的不同情况进行运算输出。l 在屏幕的指定位置输出利用gotoxy() 和cprintf函数实现。包含在conio.h头文件中。1) 在算术计算器1的基础上,实现算术计算器2。功能说明:算术计算器1一次只能执行一次计算,算术计算器2要求实现可以多次响应用户的计算请求。当用户输入一个算式后,计算器显示计算结果,同时屏幕项部显示:continue? 如果用户此时按Y键,则继续输入下一个算式,否则,程序终止。计算器2实现提示:l 在“计算器1”的主要算法外层套一个循环语句l 在

24、循环体内,显示完计算结果后调用getch函数,如果它的返回值不是y或Y,则跳出循环,程序终止。2) 在算术计算器2的基础上,实现算术计算器3。功能说明:算术计算器3不盲目等待用户输入,而是当用户没有输入时,计算器顶部显示一串闪烁的文本“This is a simple calculator!”, 并且这串文本一会儿变成红色,一会儿变成绿色。当用户按键时,这串文本不再闪烁。 如果用户按下End键,程序终止;否则程序接受用户输入的算式,并显示计算结果。 显示完计算结果后,程序继续闪烁言文本 “This is a simple calculator!”,等待用户输入下一个算式或按End键退出。3)

25、计算器3实现提示:l 程序在调用scanf函数之前,必须先检测是否有键被按下。l 显示闪烁文本的算法如图3所示。l 检测是否有键按下,需要调用kbhit()库函数。kbhit的原数原型: int kbhit(void); kbhit函数功能:检测是否有键按下,如果有,则返回非0值(即真),否则返回0(即假)。 调用kbhit()函数的源程序必须包含conio.h文件。l 具有延时功能的函数是delay(unsigned milliseconds)。 包含在dos.h头文件中。Delay()函数的功能是:将程序挂起milliseconds毫秒,即程序暂停或延时milliseconds毫秒。l 当

26、kbhit函数返回非0时,还要检测是否是End键。这需要调用bioskey库函数。但参数必须是1,不能是0。因为bioskey(1)虽然返回用户所按键值,但没有接受键盘输入,不会影响其它函数(如scanf函数)接受有效输入。l END的键值定义为: #define END 0X4F00l bioskey(1)判断是否是END的用法: if (bioskey(1)= =END) 相关操作 15、流星雨模拟程序的设计开发程序模拟一组流星飞向地面的情景。地面用多行#来表示,流星用大写字母不表示。程序产生一组流星(比如10个),从屏幕顶部下降飞向地面。一组流星中,每个流星的字符颜色是随机的,下降的位置

27、是随机的,下降的速度也是随机的。一个流星下落只能去掉一个#号,当最后一行地面有#被去掉时,程序终止。实现提示:l 程序在下降过程中,程序必须知道流星的字符、颜色、位置、速度,因此程序需要定义以下几个数组变量:存放流星字符的数组,存放流星字符颜色的数组,存放流星行位置的数组,存放流星列位置的数组,存放流星下降速度的数组。l 可定义二维数组screen表示地面和天空,此数组是一个24行81列的字符数组。上面的行表示天空,数组单元的值是空格;最下面的几行(如5行)表示地面,数组单元的值是#;整个屏幕的大小是80*25,即25行80列, 为了在输出最后一行时不换行滚屏,程序只能利用上面的24行空间。把

28、数组定义成81列的目的是,每行的最后字符赋值成0,就可以按照字符串的方式输出每行文本了。l 程序首先输出地面和天空,即输出定义的二维数组screen中的字符串,前19行是空行,后5行是#号。这样screen2481的字符矩阵就与整个屏幕对应起来。l 然后随时机产生一组流星数据,包括字符、颜色、位置和速度。速度用一次下降多少行来表示,最大的速度是4。由于要随机产生这些数据,因此需要调用random函数。l random函数的原型是 int random(int num); 这个函数产生一个0num-1之间的一个随机数。 流星字符可以这样产生:random(26)+A; 流星字符的颜色可以这样产生

29、:random(16)+1;流星下降的位置可以这样产生:random(4)+1;流星的行位置一开始都是1; 流星的列位置可以这样产生:random(80)+1;但要保证所有流星的列位置不能相同(设计一个算法来判断)。 调用random之前,用randomize()库函数进行初始化。 两个库函数都在stdlib.h文件中。l 每个流星按照自己的速度下落,所谓的下落就是逐行移动流星字符: 在下一行新的位置上显示流星字符,在原来的位置上显示空格以便擦除流星字符,然后再延迟等待几十毫秒。这样循环往复就构成了流星下落的动画。 但要注意,流星的速度各不相同,而一次下落多行的流星也要逐行下落。l 如果流星的新位置所对应的screen的单元格的值是#,则表示撞到了地面。 这种情况下在流星的新位置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论