程序设计综合实习指导书课程设计是 C 语言教学中,一个重要的实践环节。一般来讲,课程设计应该比课程教学实验复杂一些,要求所涉及的内容应该有一定的深度和广度,并更加接近现实应用。通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,最终目标是想通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。本章简要介绍C语言课程设计的要求,并给出部分示例设计题目及其预期目标。由于各校的情况不尽相同,各学校应根据本校的特点和教学计划,选择相应的课程设计内容。
1 课程设计目标1.1 课程设计目标
使学生综合使用所学过的 C 语言程序设计知识,掌握结构化程序设计的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。
课程设计的目的和要求:
1、使学生巩固和加强《C 语言程序设计》课程的理论知识。
2、使学生掌握C语言的基本概念、语法、语义和数据类型的使用特点。3、使学生掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。4、进一步理解和运用结构化程设计的思想和方法;学会利用流程图或N-S 图表示算法。5、使学生掌握调试程序的基本方法及上机操作方法。
6、掌握书写程设计开发文档的能力,使学生学会撰写课程设计总结报告。课程设计的思想和方法还可以作为学生做毕业论文时的参考资料。
7、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。为学生做毕业设计打好基础。
8、初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析 问题的能力及编程能力,并养成良好的编程习惯。
9、培养学生的创新能力和创新思维。学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。
10、培养学生良好的程序设计风格。在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。学生在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。
2
1.2 课程设计内容
一、设计环境
1、硬件:PC 机。
2、 软件: Visual C++或 Turbo C。
二、基本要求
1、课程设计采取每组完成一个课题,每组成员分工合作完成一个课程设计,每个人的任务不同。或者每人一题,可任选一题进行设计, 至少包含五个功能模块;2、可以选择老师提供的参考选题,也可以自选,如果自选,需要将自选题目的详细内容以及实现要求提供给老师,老师批准后方可采用;
3、要求利用结构化程序设计方法以及 C 的编程思想来完成系统的设计;4、要求有欢迎界面、菜单、文件操作,数据使用数组、结构体、链表等均可,键盘操作或鼠标操作均可;
5、模块化程序设计:要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现;
6、学生所选课题必须上机通过,并获得满意的结果;
7、程序书写风格:锯齿型书写格式。
三、设计步骤
1、根据问题描述,设计数据存储方式;
2、分析系统功能,划分功能模块,确定各模块函数名称;
3、主程序算法设计和各模块算法设计;
4、编程实现;
5、调试和测试;
6、完成设计文档和课程设计说明书。
四、课程设计报告的要求
1、需求分析
描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。2、总体设计(程序设计组成框图、流程图)
3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等))
4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施
5、测试结果,用几组测试数据进行测试算法设计的正确性。
6、用户手册:即使用说明。
7、附录。
源程序清单和结果:源程序要加注释。结果要包括测试数据和运行结果。
3
五、参考设计题目
(1)问题描述
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。试设计一学生信息管理系统,使之能提供以下功能:
系统以菜单方式工作
学生信息录入功能(学生信息用文件保存)—输入
学生信息浏览功能—输出
查询、排序功能—算法
1、按学号查询
2、按姓名查询
学生信息的删除与修改(可选项)
(2)功能要求
界面比较美观;
有一定的容错能力,比如输入的成绩不在 0~100 之间,就提示不合法,要求重新输入;
最好用链表的方式实现。
(3)算法分析
首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。
对于菜单的实现,其实也比较简单,首先我们用 printf 语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。文件的读写操作大家参照书中的有关文件的章节。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的 60%,10%,10%,20%。
A、学生信息处理
(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。
提示:学生信息可先输入到数组中,排序后可写到文件中。
(2) 插入(修改)同学信息:
提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信息:
提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。
(4) 浏览学生信息:
提示:打开文件,显示该文件的学生信息。
B、学生数据处理:
4
(1) 按考试科目录入学生成绩并且按公式:考试成绩=(语文+数学+外语)/3 计算考试成绩,并计算考试名次,提示:先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。
(2) 学生测评数据输入并计算综合测评总分及名次。
提示:综合测评总分=(考试成绩)0.6+(同学互评分)0.1+品德成绩0.1+任课老师评分0.2。
(3) 学生数据管理
提示:输入学号,读出并显示该同学信息,输入新数据,将改后信息写入文件(4) 学生数据查询:
提示:输入学号或其他信息,即读出所有数据信息,并显示出来。C、学生综合信息输出
提示:输出学生信息到屏幕。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
主要包括管理图书的库存信息、每一本书的借阅信息以及每一个人的借书信息。每一种图书的库存信息包括编号、书名、作者、出版社、出版日期、金额、类别、总入库数量、当前库存量、已借出本数等。每一本被借阅的书都包括如下信息:编号、书名、金额、借书证号、借书日期、到期日期、罚款金额等。每一个人的借书信息包括借书证号、姓名、班级、学号等。
系统功能包括以下方面:
A、借阅资料管理
要求把书籍、期刊、报刊分类管理,这样的话操作会更加灵活和方便,可以随时对其相关资料进行添加、删除、修改、查询等操作。
B、借阅管理
(1) 借出操作
(2) 还书操作
(3) 续借处理
提示:以上处理需要互相配合以及赔、罚款金额的编辑等操作完成图书借还业务的各种登记。例如:读者还书时不仅更新图书的库存信息,还应该自动计算该书应罚款金额。并显示该读者所有至当日内到期未还书信息。
C、读者管理
读者等级:对借阅读者进行分类处理,例如可分为教师和学生两类。并定义每类读者的可借书数量和相关的借阅时间等信息。
读者管理:对读者信息可以录入,并且可对读者进行挂失或注销、查询等服务的作业。D、统计分析
随时可以进行统计分析,以便及时了解当前的借阅情况和相关的资料状态,统计分析包括借阅排行榜、资料状态统计和借阅统计、显示所有至当日内到期未还书信息等功能分析。E 系统参数设置:可以设置相关的罚款金额,最多借阅天数等系统服务器参数。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
问题描述:
建立运动员信息系统,包括运动员、裁判员以及运动信息的成绩管理,运动员信息为编号、姓名、身份信息(教师、学生)、参加的比赛项目等;裁判员信息为编号、姓名、身份信息(教师、学生)、裁判的项目;运动会信息包含各个比赛项目的信息、时间安排、裁判信息、比赛成绩等。
功能要求:
5
(1)各种运动信息需要利用文件的形式进行存储。
(2)输入功能:可以从键盘或文件中一次性输入多条信息;
(3)输出功能:可将运动员、裁判员、以及比赛信息打印输出或显示;(4)查找功能:根据运动员、裁判员等查找出所需要的比赛信息;(5)增加、删除、修改功能:完成运动员信息的多种更新;
(6)统计功能:完成各类比赛信息的统计功能,例如某项比赛的名词排名,各个运动员的积分成绩统计等。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。
功能要求
(1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ 等。
(2) 输入功能:可以一次完成若干条信息的输入。
(3) 显示功能:完成全部通讯录信息的显示(一屏最多显示 10 条,超过十条应能够自动分屏显示)
(4) 查找功能:可以按姓名等多种方式查找通讯信息
(5) 增加、删除、修改功能:完成通讯录信息的多种更新
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 - 合计扣款。
A、教师信息处理
(1) 输入教师信息
(2) 插入(修改)教师信息:
(3) 删除教师信息:
(4) 浏览教师信息:
提示:具体功能及操作参考题 1。
B、教师数据处理:
(1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。
(2) 教师实发工资、应发工资、合计扣款计算。
提示:计算规则如题目。
(3) 教师数据管理
提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4) 教师数据查询:
提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。(5) 教师综合信息输出
提示:输出教师信息到屏幕。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
计算每个老师在一个学期中所教课程的总工作量。(教师单个教学任务的信息为:教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时、单个教学任务总课时)
A、教师信息处理
(1) 输入教师授课教学信息,包括教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时。
(2) 插入(修改)教师授课教学信息:
(3) 删除教师授课教学信息:
(4) 浏览教师授课教学信息:
B、教师工作量数据处理:
(1) 计算单个教学任务总课时。计算原则如下表:
班级数目 单个教学任务总课时
2 1.5*(理论课时+实验课时)
3 2*(理论课时+实验课时)
=4 2.5*(理论课时+实验课时)
(2) 计算一个教师一个学期总的教学工作量。总的教学工作量=所有单个教学任务总课时之和。
(3)教师数据查询:
提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。C、教师综合信息输出
提示:输出教师信息到屏幕。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
问题描述:
建立课程实验预约信息系统,包括学生、教师、实验安排等信息,学生信息为学号、姓名、所学课程等;教师信息为教师编号、姓名、授课信息;实验安排信息包含各个课程实验编号、实验内容、时间安排、学生数的限制信息等。
功能要求:
(1)各种课程实验预约信息需要利用文件的形式进行存储。
(2)输入功能:可以从键盘或文件中一次性输入多条信息;
(3)输出功能:可将学生、教师、以及课程信息打印输出或显示;(4)查找功能:根据学生、教师等查找出所需要的实验安排信息;(5)增加、删除、修改功能:完成学生、教师、实验安排等信息的多种更新;(6)统计功能:完成各类课程实验信息的统计功能,例如学生的选课时间统计等。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
问题描述:
建立宾馆管理信息系统,包括宾馆内的客房信息、订房信息、结算信息等,客房信息为客房编号、客房类型、客房位置、客房单价和备注信息等;订房信息为客房编号、客房种类、顾客姓名、顾客身份证号码、入住时间等;结算信息为客房编号、客房种类、客房单价、顾客姓名、顾客身份证号码、入住日期、结算日期、折扣、价格等。
功能要求:
(1)各种宾馆管理信息需要利用文件的形式进行存储。
(2)输入功能:可以从键盘或文件中一次性输入多条信息;
(3)输出功能:可将客房、订房、顾客以及结算信息打印输出或显示;(4)查找功能:根据客房、订房、顾客以及结算信息等查找出所需信息;(5)增加、删除、修改功能:完成客房、订房、顾客以及结算信息的多种更新;(6)统计功能:完成客房、订房、顾客以及结算信息的统计功能,例如客房入住率、收入等。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
问题描述:
建立物资管理信息系统,包括仓库内的物资信息、入库信息、车库信息等,物资信息为物资编号、物资名称、规格类型、类别、计量单位等;入库信息为物资编号、物资名称、规格型号、类别、计量单位、数理、单价、金额、入库时间、经办人、保管人等;出库信息为物资编号、物资名称、规格型号、类别、计量单位、数理、单价、金额、领用时间、经办人、领用人等;物资余额信息为物资编号、物资名称、规格类型、类别、计量单位、数量、金额等。
功能要求:
(1)各种物资管理信息需要利用文件的形式进行存储。
(2)输入功能:可以从键盘或文件中一次性输入多条信息;
(3)输出功能:可将入库、出库等信息打印输出或显示;
(4)查找功能:根据物资信息、或经办人、保管人等查找出所需信息;(5)增加、删除、修改功能:完成物资信息的多种更新;
(6)统计功能:完成入库、出库、库存等信息的统计功能。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
问题描述:
一车站每天有 n 个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如:班次 发车时间 起点站 终点站 行车时间 额定载量已定票人数1 8:00 马鞍山 南京 0.45 45 30
2 6:30 马鞍山 杭州 3.5 40 40
3 9:00 南京 上海 4.0 40 20
4 10:00 南京 杭州 2.5 40 2 …
功能要求:
(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
(3)查询路线:可按班次号查询 ,可按终点站查询
(4)售票和退票功能
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数(5)要求采用菜单界面,文本或图形方式均可;
(6)学生可自行添加新功能模块,视情况额外加分。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
12、单项选择题标准化考试系统
问题描述:
标准化考试系统是为了实现无纸化考试,为了让标注化考试的答案更加客观,我们全部采用单项选择题的形式,具体功能如下:
功能要求:
1)用文件保存试题库,每道试题包括题干、4 个备选答案和标准答案。2)试题录入:可随时增加试题到试题库中;
3)试题抽取:每次从试题库中可随机抽取出 N 道试题,N 值由键盘输入;4)答题:用户可实现输入自己的答案;
5)自动判分:系统可根据和标准答案的对比来进行自动打分,给出最后成绩。6)采用菜单界面,文本或图形方式均可;
7)学生可自行添加新功能模块,视情况额外加分。
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111
13、数学测验软件
问题描述:
要求实现的是一个供 2 年级小学生进行数学测验用的测试软件,并能够给出测试结果。每道题目只能是两个 1~100 之间的运算数进行加、减、乘或除中的某一种运算。功能要求:
1)功能菜单包括(1)输入学生信息;(2)开始测试;(3)查看测验结果;2)输入学生信息里要求用户在测试前首先输入姓名和年龄;
3)开始测试时,任意生成 10 道数学题;
4)每次随机给出一道题后,提示用户输入其计算结果,当用户输入完成后给出下一道题目并提示输入,如此下去;
5)当用户完成 10 道题后,按每题 10 分的标准输出用户最后得分,同时把所有题目、标准答案及用户答案显示出来;
6)将学生的姓名和年龄,以及上述输出的内容全部保存成文件。7)采用菜单界面,文本或图形方式均可;
8)学生可自行添加新功能模块,视情况额外加分。
1.3 评价标准
课程设计成绩评定的依据有设计文档资料、具体实现设计方案的程序及课程设计考勤登记表,其中平时成绩占总成绩的 10%。
优(90 分以上):必须要有一定的创意,有自己独特的算法。按要求完成课题的全部功能,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述,有正确的流程图,程序完全实现设计方案,设计方案先进,软件可靠性好;良(80-89 分):完成课题规定的功能,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进,无明显错误;中(70-79 分):完成课题规定的功能,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确,但有少于失误;
及格:完成课题规定的大部分功能,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案基本正确,个别功能没有实现,但错误不多;
不及格:没有完成课题规定的功能,没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确。