1、 1 HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY C 语言程序设计 课程设计 指导书 张吴波 编 史旅华 审 电气与信息工程学院计算机系 2014 年 2 月 2 一、设计目的 1 巩固和加深学生对 C 语言程序设计 课程 基本知识的理解和掌握。 2 掌握 C 语言编程和程序调试的基本技能。 3 掌握书写程序设计说明文档的能力。 4 提高学生分析问题和解决问题的能力, 培养 严谨的工作 作风 和良好的程序设计习惯 , 为后续课程的学习打下良好的基础。 二、设计要求 (一) 基本要求 1 掌握 C 语言程序设计的方法,熟悉使用 VC6.0 作为开发软件开发
2、 C 语言程序及 C 程序的调试过程。 2 熟悉 C 语言中的数据类型,数据结构、语句结构、运算方法、函数,巩固和加深对理论课中知识的理解,提高基本编程能力。 3 综合编程题,每组完成一个课题(一组不能超过 2 人),每组成员必须明确各自的任务。 4 要求利用结构化 程序设计 方法以及 C 的编程思想来完成 题目问题描述中所要求 的设计 任务 ,功能模块化, 设计内容符合题目要求 ; 5 概要设计模块划分合理,清晰,系统结构图符合功能操作要求; 6 详细设计,主要 功能模块有较完善的程序流程图,每个主要功能模块有较完善的入口、功能、出口等的清晰的描述,说明符合结构化程序设计要求; 7 每个模块
3、的程序代码 ,具有较好的可读性和可靠性;程序书写风格:锯齿型书写格式,并有详尽 的 注释。 8 用户界面要求尽可能友好,提示信息充分、完整;对输入内容有 较 完善的判误处理并方便操作; 9 程序 必须上机 调试 通过, 不应出现语法型、功能型错误, 并获得满意的结果; 10 所设计的程序,必须在提交验收前,通过测试用例 做 必要的功能测试 , 尽可能避免原则性错误的出现 。 (二)设计步骤 在进行综合编程时 需要遵循以下的步骤: 1 问题分析、确定解决方案框架,充分地分析和理解问题本身,弄清要求做什么。在确定解决方案框架过程中,仔细考虑如何 使用数据,数据结构有哪些? 程序结构清晰、合理、简单
4、和易于调试,并确定每个 模块 的简单功能,以及 模块 之间的调用关系。 2 详细设计和编码:确定程序的主要流程, 在 此基础上进行代码设计,每个功能模块程序一般不超过 60 行,否则要进一步划分。 3 上机前编写程序与检查。 4 上机调试程序。 5 每个功能在输入值集范围内,确定好几组测试用例数据,通过尽可能详尽的测试用例,找出3 程序中 存在的 或 有可能出现的功能错误。 (三)综合报告要求 课程设计报告应包括下列主要内容: 1 课程 设计 题目与要求 2 系统 设计 ( 1)系统功能模块划分 主要内容:系统功能模块划分设计说明和系统功能模块图 。 ( 2)数据结构设计 主要内容:结构体、链
5、表的设计说明 。 ( 3) 函数的规划与设计 主要内容:各功能模块对应的函数规划设计,包括函数功能、入口及出口参数说明, 函数调用关系描述等。 ( 4)主函数的流程分析与设计 主要内容:主函数的设计说明、流程分析和主函数的流程图。 ( 5) 主要功能模块的流程分析与设计 主要内容:功能模块的设计说明、流程分析和功能模块的流程图。 3 程序 测试 与运行结果 主要内容: 测试用例数据 , 测试结果 , 实际运行 结果 截图, 测试中出现的问题 、 原因与分析 。 4 课程设计总结 主要内容:设计中的难点及其解决方法、独到之处、不足之处、 课程 设计心得。 5 程序源代码 三、 设计 题目 1学生
6、证管理程序 题目描述: 请设计一个学生证管理的程序 ,以方便辅导员对学生证的管理,该程序应该具有以下功能: (1)能从键盘输入某位学生的学生证信息 (学生证应该包含的信息 可以参考自己的学生证 )。 (2)给定学号 ,显示该学生的学生证信息。 (3)给定班号 ,显示该班所有学生的学生证信息。 (4)给定学号 ,修改该学生的学生证信息。 (5)给定学号 ,删除该学生的学生证信息。 题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2)学生证应该包含的信息参考自己的学生证。 (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望
7、进行的操作项目。 输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需 求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,学生的入学时间必须是一个合法的日期格式,学号4 是唯一的(一个学号对应一条学生证信息)。 输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。 (3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定 学号删除学生证信息
8、时,如果该学生不存在,要提示没能删除,如果删除成功要提示删除成功。 实现要求: (1)在程序中使用链表存储学生证信息。 (2)采用模块化程序设计的方法,将程序中的 各项 功能用函数实现。 提示: (1)使用结构体表示学生证信息,一个结点保存一条学生证信息。 扩展功能: (1)提供一些统计功能。例如统计每个班学生的人数,统计男女生比例。 (2)学生证信息从文件读入。 (3)将学生证信息保存到文件中。 2学分管理程序 问题描述: 请设计一个 学生的学分管理程序,以方便教务部门对学生已完成学分的管理。 假设每位学生必须完成基础课 50 学分、专业课 50 学分、选修课 24 学分、人文类课程 8 个
9、学分、实验性课程 20 学分才能毕业。因此在管理学分时,要考虑每个学分所属于的课程类别。其中各类别的课程所完成的学分最多不会超过 100 分。该程序应该具有以下功能: (1)能从键盘输入某位学生的信息(不包含学分)。 (2)给定学号,显示该学生的所完成的学分。 (3)给定学号,能修改该学生所完成的学分。 (4)给定学号,将学生从程序中删除。 (5)能显示已完成学分可以毕业的学 生。 题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2)学分信息应该包括学生信息(学号、姓名、班级、入学时间)、基础课学分、专业课学分、选修课学分、人文类课程学分、实验性课程学分。 (
10、3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。 输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息 完成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,学生的学分是 0, 100范围内的数,入学时间必须是合法的日期,学号是唯一的(一个学号对应一个学生的学分信息)。 输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数
11、据内容、格式以及结束方式等。 (3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定学号修改学生学分时,如果该学生不存在,要提示不能修改,如果修改成功要提示修改成功。 5 实现要求: (1)在程序中使用链表存储学生的学分信息。 (2)采用模块化程序设计的方法,将程序中的 各项 功能用函数实现。 提示: (1)使用结构体表示学生的学分信息,一个结点保存一条学分信息。 扩展功能: (1)提供一些统计功能。例如统计每个班学生已完成学分可以毕业人数。统计每类别课程的平均学分等。 (2)学生的学分信息从文件读入。 (3)将学生的学分信息保存到文件中。 3图书登记管理程序 问题描述: 请设计一个
12、图书登记管理程序,以方便图书管理员管理图书馆内的图书,该程序 应该具有以下功能: (1)从键盘输入某本图书的信息 (2)给定图书的国际标准书号 (ISBN),显示该图书的信息。 (3)给定图书的作者,显示所有该作者所著的图书。 (4)给定国际标准书号 (ISBN),修改该图书的信息。 (5)给定国际标准书号 (ISBN),删除该图书的信息。 题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2)图书信息应该包含国际标准书号、图书名称、图书出版社、图书作者(假设一个作者)、图书价格、出版时间。 (3)为各项操作功能设计一个菜单,应用程序运行后, 先显示这个菜单,然
13、后用户通过菜单项选择希望进行的操作项目。 输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,出版时间必须是一个合法的日期格式,国际标准书号是唯一的(一个国际标准书号对应一种图书信息)。 输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单。 (2)要求用户输入 数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。 (3)在程序完成处理后,要清楚地给出程序的处理结果。例如
14、,在给定国际标准书号删除图书信息时,如果该图书不存在,要提示没能删除,如果删除成功要提示删除成功。 实现要求: (1)在程序中使用链表存储图书信息。 (2)采用模块化程序设计的方法,将程序中的 各项 功能用函数实现。 提示: (1)使用结构体表示图书信息,一个结点保存一条图书信息。 扩展功能: (1)提供一些统计功能。例如统计每个出版社的图书种类数,统计每 个作者的图书种类数。 (2)图书信息从文件读入。 6 (3)将图书信息保存到文件中。 4学生作业成绩管理程序 问题描述: 请设计一个学生作业成绩管理程序,以方便教师对学生作业成绩的管理 假设某门课程一学期要留 10 次作业,每次老师要进行批
15、改,批改后要给出每次作业学生的分数并登记(成绩最高为 100)。学期末要根据每次作业的成绩计算出最终的平均成绩。该程序应该具有以下功能: (1)能从键盘输入某个学生的信息(不包含作业成绩)。 (2)给定学号,显示该学生每次作业的分数。 (3)给定班号,显示该班学生每 次作业的分数以及 平均 成绩。 (4)给定学号,修改该学生的作业成绩。 (5)给定学号,删除该学生。 题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2)学生作业信息应该包含学生信息(学号、姓名、班级)、 10 次作业的成绩。 (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后
16、用户通过菜单项选择希望进行的操作项目。 输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输 入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,成绩只能在 0, 100之间,学号是唯一的(一个学号对应一个学生的作业信息)。 输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。 (3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定学号删除
17、学生信息时,如果该学生不存在,要提示没能删除,如果删除成功要提示删除成功。 实现要求: (1)在程序中使用链表存储学生作业信息。 (2)采用模块化程序设计的方法,将程序中的 各项 功能用函数实现。 提示: (1)使用结构体表示学生作业信息,一个结点保存一条作业信息。 扩展功能: (1)提供一些统计功能。例如统计每个班作业的平均成绩,统计每次作业的平均成绩。 (2)学生作业信息从文件读入。 (3)将学生作业信息保存到文件中。 5职工管理程序 问题描述: 请设计一个职工信息管理程序,以方便人事部门对本单位职工的管理,该程序应该具有以下功能: (1)能从键盘输入职工的信息 。 (2)给定职工号,显示
18、职工的信息。 7 (3)给定工作部门,显示该部门的职工信息。 (4)给定职工号,修改职工的信息。 (5)给定职工号,删除职工信息。 题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2)职工信息应该包含职工号、姓名、工作部门、职称、入厂时间、工资。 (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。 输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根 据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能
19、。 (2)能对输入的数据进行简单的校验,例如,入厂时间必须是合法的日期格式,职工号是唯一的(一个职工号对应一个职工的职工信息)。 输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。 (3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定职 工号删除职工信息时,如果该职工不存在,要提示没能删除,如果删除成功要提示删除成功。 实现要求: (1)在程序中使用链表存储职工信息。 (2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。 提示: (1)使用结构体表示职工信息,一个结点保存
20、一条职工信息。 扩展功能: (1)提供一些统计功能。例如统计每个部门的人数,统计平均工资、统计各职称的人数。 (2)职工信息从文件读入。 (3)将职工信息保存到文件中。 6设备管理程序 问题描述: 请设计一个设备管理程序,以方便资产科对本单位的设备进行管理, 设计一程序完成以下功能: (1)能从键盘输入设备信息 。 (2)指定设备号,显示设备信息。 (3)指定部门名称,显示该部门所使用的设备。 (4)给定设备号,修改设备的信息。 (5)给定设备号,删除设备信息。 题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2)设备信息包括:设备号、设备名称、购买日期、价格
21、、生产厂家、使用部门。 (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择 希望进行的操作项目。 输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应8 的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,购买日期必须是一个合法的日期格式,设备号是唯一的(一个设备号对应一个设备 的设备信息 )。 输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输
22、入的数 据内容、格式以及结束方式等。 (3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定设备号删除设备信息时,如果该设备不存在,要提示没能删除,如果删除成功要提示删除成功。 实现要求: (1)在程序中使用链表存储设备信息。 (2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。 提示: (1)使用结构体表示设备信息,一个结点保存一条 设备信息 扩展功能: (1)提供一些统计功能。例如统计每种设备的总数(按照设备名称),统计每个部门使用的设备总数。 (2)设备信息从 文件读入。 (3)将设备信息保存到文件中。 7宿舍管理程序 题目描述 现学校要管理宿舍入住的学生, 请设计一
23、宿舍管理程序,以方便学校宿舍管理员对学生进行管理 , 该程序应该具有 以下功能: (1)能从键盘录入床位信息。 (2)指定学号,显示该学生的住宿的信息。 (3)指定宿舍号,显示住宿信息。 (4)给定宿舍号、床位号,修改住宿信息。 (5)给定宿舍号、床位号,删除住宿信息。 题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2)住宿信息包括:床位信息(宿舍 号、床位号、是否有人入住)、学号、姓名、班级、入住时间。 (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。 输入要求: (1)应用程序运行后在屏幕上显示
24、一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如:入住时间必须是一个合法的日期格式;一个学号对应一个床位号,一个床位号对应一个 学生。 输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。 (3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定宿舍号、床位号删除住宿9 信息时,如果该床位不存在,要提示没能删除,如果删除成功要提示删除
25、成功。 实现要求: (1)在程序中使用链表存储住宿信息。 (2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。 提示: (1)使用结构体表示学生住宿信息,一个结 点保存一条住宿信息。 扩展功能: (1)提供一些统计功能。例如统计空床数、统计每个班级入住宿舍号。 (2)住宿信息从文件读入。 (3)将住宿信息保存到文件中。 8汽车零部件采购管理程序 题目描述 已知在汽车生产时,需要向零部件生产厂商采购零部件 , 设计一个汽车零部件采购管理程序,以方便采购管理部门对采购零部件的管理。该单位每次采购都有一个采购编号,每次采购一种零部件。该程序应该具有如下功能 (1)能从键盘输入采购信息。 (
26、2)指定采购编号,显示采购的零部件信息。 (3)指定零部件名称,显 示该零部件的所有采购信息。 (4)给定采购编号,修改采购信息。 (5)给定采购编号,删除采购信息。 题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2)采购信息包括:采购编号、零部件名称、采购日期、采购员、采购数量、采购单价、供货单位。 (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。 输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的 提示信息,从键盘输入相应的
27、信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,采购日期必须是一个合法的日期格式,采购编号是唯一的(一次采购对应一个采购编号)。 输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。 (3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定采购编号删除采购信息时,如果该采购编号不存在,要提示没能删除, 如果删除成功要提示删除成功。 实现要求: (1)在程序中使用链表存储采购信息。 (2)采用模块化程序设计的方法,将程序中的各项功能用
28、函数实现。 提示: (1)使用结构体表示采购信息,一个结点保存一条采购信息 扩展功能: 10 (1)提供一些统计功能。例如根据零部件名称统计采购数量,根据采购员统计采购的次数。 (2)采购信息从文件读入。 (3)将采购信息保存到文件中。 9汽车索赔管理程序 题目描述 已知在汽车销售后,服务站在对故障汽车维修后,可以向汽车生产厂家进行索赔 , 设计 一个汽车索赔管理程序,以方便汽车生产厂家对汽车售后索赔进行管理,该程序完成如下功能: (1)能从键盘输入索赔信息。 (2)指定索赔编号,显示索赔信息。 (3)指定底盘号,显示索赔历史。 (4)给定索赔编号,修改索赔信息。 (5)给定索赔编号,删除索赔
29、信息。 题目要求: (1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。 (2)索赔信息包括:索赔编号、服务站名称、底盘号、审核人、索赔金额、索赔日期。 (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望 进行的操作项目。 输入要求: (1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。 (2)能对输入的数据进行简单的校验,例如,维修日期必须是一个合法的日期格式,索赔编号是唯一的(一个索赔编号对应
30、一次索赔的索赔信息) 输出要求: (1)应用程序运行后,要在屏幕上显示一个菜单。 (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数 据内容、格式以及结束方式等。 (3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定索赔编号删除索赔信息时,如果该索赔不存在,要提示没能删除,如果删除成功要提示删除成功。 实现要求: (1)在程序中使用链表存储索赔信息。 (2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。 提示: (1)使用结构体表示索赔信息,一个结点保存一条索赔信息。 扩展功能: (1)提供一些统计功能。例如统计每个服务站索赔金额,根据审核人统计审核的索赔次数。 (2)索赔信息从文件读 入。 (3)将索赔信息保存到文件中。 10汽车零部件质检管理程序 题目描述 已知在汽车零部件生产过程中 , 需要对生产的零部件进行质量检测,保证生产质量,以便对出现生产质量问题的责任人进行考核,设计一个汽车零部件质检管理程序,该程序应该具有完成如下功能: (1)能从键盘输入质检信息。