1、1程序设计技能训练课程设计要求一、教学目标程序设计技能训练课程设计是程序设计基础课程的一个关键环节。它是根据教学计划的要求,在教师的指导下,对学生实施程序设计训练的必要过程,是对前期课堂教学效果的检验。其目标在于培养学生综合运用理论知识来分析和解决实际问题的能力、严谨的科学态度和良好的程序设计习惯,最终实现由知识向技能的初步转化。通过课程设计,要求学生能够遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,独自地完成设计、编写、调试和测试应用程序及编写文档的任务。二、教学要求在本课程设计过程中要求学生:(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的
2、每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务;(3) 上交源程序:每位同学按照课程设计的具体要求所开发的所有源程序;(4) 上交程序的说明文件:(保存在.txt 文本文件或 WORD 文档中)在说明文档中应该写明上交程序主程序文件名,程序的运行数据例子;(5)认真编写课程设计报告。课程设计报告:(保存在 word 文档中,文件名要求 按照“ 姓名-学号- 课程设计报告“起名,如文件名为“ 张三-*-课程设计报告“.doc ) ,课程设计报告的书写格式见附录 2。(6)课程设计总结: (保存在 word 文档中)总结可以包括 : 课程设计过程的收获、遇到问题、遇到问题解决问题过程
3、的思考、程序调试能力的思考、对程序设计基础这门课程的思考和认识等内容三、课程题目安排1、必做题共 26 题,见附录 12、选做题:课程题目共 13 道题目,题目的详细内容见后面附录 2。课程题目共 9 道题目,题目的详细内容见后面附录 1。第 1 题 学生证管理程序第 2 题 图书登记管理程序第 3 题 学分管理程序第 4 题 学生作业完成情况管理程序第 5 题 职工工资信息管理系统第 6 题 学生宿舍管理第 7 题 人事管理程序第 8 题 通讯录的管理系统第 9 题 车票管理程序设计注意:四人一组,选一个题目2四、考核方式和成绩评定根据学生完成任务的情况(必须进行系统演示 )、课程设计报告书
4、的质量和课程设计过程中的工作态度等按照加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重新做课程设计考核分为三个部分: 出勤情况(占 25%) ; 程序运行及答辩情况(占 50%):运行程序,由老师检查运行情况,并回答老师提出的问题; 课程设计报告书(占 25%):是否按规定书写课程设计报告书的各项内容。五、时间安排第四周- 第 13 周 周二 9-12 附录 1附录 2附录 3附录 43附录 1基本编程题1、有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?2、输入某年某月某日,判断这一天是这一年的第几天?3、输出 9*9 口诀。4、
5、古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?5、判断 101-200 之间有多少个素数,并输出所有素数。6、输入两个正整数 m 和 n,求其最大公约数和最小公倍数。7、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。8、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。9、有一分数序列:2/1,3
6、/2,5/3,8/5,13/8,21/13.求出这个数列的前 20 项之和。10、求 1+2!+3!+.+20!的和11、对 10 个数进行排序(要求从大到小)12、求一个 4*4 矩阵主对角线元素之和。13、有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。14、将一个数组逆序输出。15、打印出杨辉三角形(要求打印出 10 行)16、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。17、写一个函数,求一个字符串的长度,在 main 函数中输入字符串,并输出其长度。18、编写主函数,当输入 n 为偶数时,调用函数求 1/2+1/4+.+1/n,当输入
7、n 为奇数时,调用函数 1/1!+1/3!+.+1/n !19、已知一个学生的信息有两项:学生姓名,学生成绩,从键盘上输入 10 个学生的信息,然后按学生成绩从小到大排序(排序方法不限) ,最后输出排序过的学生信息。20、编程计算从 N 各元素取出 M 个元素的组合数。21、编写程序,输入三角型的三条边长,求其面积。注意:对于不合理的边长输4入要输出数据错误的提示信息。22、按要求编写程序:(1)编写求 N 阶乘的函数 JACK()(2)编写判断素数的函数 ISPRIME() ;(3)编写主函数,输入一个整数 N,调用 ISPRIME() ,如果是素数就调用JACK()求出 N 的阶乘并输出,
8、否则显示该数不是素数。23、编写程序计算下列序列的值:要求最后一项小于 0.001 时、或者当 N=20 时尚未达到精度要求,则停止计算。24、利用结构:struct complx int real;int im;编写求两个复数之积的函数 cmult,并利用该函数求下列复数之积: (3+4i)(5+6i) (10+20i) (30+40i25、搜索一个字符在字符串中的位置(例如:I在”CHINA”中的位置为 3)。如果没有搜索到,则位置为1。26、按要求编写程序:假设学生有:学号,姓名,年龄,四门课成绩,总分等信息请先定义结构体 student 来描述学生信息。(1)编写输入 n 个学生信息存
9、入数组 a 的函数 void shur(studen a,int n);(2)编写输出数组 a 中 n 个学生的函数 void shuc(student a,int n);(3) 编写 del 函数的作用是删除数组 a 中的指定学生 x,n 为数组 a 的学生个数。void del(student a,int,n, student x)(4) 编写查找 search 函数的作用是查找数组 a 中的指定学生元素 x,n 为数组 a 的学生个数,如果找到,函数返回找到学生的序号,否则函数返回-1, int search(student a,student x)(5)编写插入元素 insert 函数
10、的作用是将指定学生 x 插入到数组 a 中的指定位置 w, n 为数组 a 的学生个数。void insert(student a,int,n,student x,int w)(6)编写排序 sort 函数,其功能是,按学号排序,void sort(student a,int,n)5(7)编写主函数,调用 void shur(student a,int n)输入 n 个学生信息存入数组,然后调用shur(student a,int n)输出;实现删除学生信息操作并显示,实现查找学生操作,显示查找结果,实现插入学生操作,并显示结果 实现按学号排序并显示。 (提示,可将 n 设置为全局变量)附录
11、2 课程设计题目第 1 题 学生证管理程序【题目描述】请设计一个学生证的管理程序,该程序应该具有下列功能:(1) 通过键盘输入某位学生的学生证信息。学生证包含的信息请参看自己的学生证;(2) 给定学号,显示某位学生的学生证信息;(3) 给定某个班级的班号,显示该班所有学生的学生证信息;(4) 给定某位学生的学号,修改该学生的学生证信息;(5) 给定某位学生的学号,删除该学生的学生证信息;(6) 提供一些统计各类信息的功能或排序功能。【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 学生证应该包含的信息请参看自己的学生证;(3) 为各项操作功能设计一个菜
12、单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。【输入要求】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示) 。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。【提示】设计一个结构类型和一维数组类型,用来保存学生证的内容。【实验步骤】(1)装入给定程序模板,运行演示;(2)根据题目要求,修改数据类型,添加必要的变量,实现功能(1)和(2) ,并进
13、行调试;(3)实现功能(3)和(4) ,并进行测试;(4)实现功能(5)和(6) ,并进行调试;(5)编写实验报告。6第 2 题 图书登记管理程序【题目描述】请设计一个图书登记管理程序。该程序应该具有下列功能:(1) 通过键盘输入某本图书的信息;(2) 给定图书编号,显示该本图书的信息;(3) 给定作者姓名,显示所有该作者编写的图书信息;(4) 给定图书编号,修改该本图书的信息;(5) 给定图书编号,删除该本图书的信息;(6) 提供一些统计各类信息的功能或排序功能。【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 图书信息应该包含:编号、书名、作者姓名
14、、出版社、价格、数量等;(3) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。【输入要求】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示) 。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。【提示】设计一个结构类型和一维数组类型,用来保存图书信息。【实验步骤】(1)装入给定程序模板,运行演示;(2)根据题目要求,修改数据
15、类型,添加必要的变量,实现功能(1)和(2) ,并进行调试;(3)实现功能(3)和(4) ,并进行测试;(4)实现功能(5)和(6) ,并进行调试;(5)编写实验报告。7第 3 题 学分管理程序【题目描述】请设计一个学生的学分管理程序。假设每位学生必须完成基础课 50 学分、专业课 50 学分、选修课 24 学分、人文类课程8 学分、实验性课程 20 学分才能够毕业。因此在管理学分时,要考虑每个学分所属于的课程类别。该程序应该具有下列功能:(1) 通过键盘输入某位学生的学分; (2) 给定学号,显示某位学生的学分完成情况;(3) 给定某个班级的班号,显示该班所有学生学分完成情况;(4) 给定某
16、位学生的学号,修改该学生的学分信息;(5) 按照某类课程的学分高低进行排序;(6) 提供一些统计各类信息的功能。【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 学分信息应该包括学号、姓名、课程类别、学分等;(3) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。【输入要求】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示) 。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;
17、(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。【提示】设计一个结构类型和一维数组类型,用来保存学分信息。【实验步骤】(1)装入给定程序模板,运行演示;(2)根据题目要求,修改数据类型,添加必要的变量,实现功能(1)和(2) ,并进行调试;(3)实现功能(3)和(4) ,并进行测试;(4)实现功能(5)和(6) ,并进行调试;(5)编写实验报告。8第 4 题 学生作业完成情况管理程序【题目描述】请设计一个学生作业完成情况管理程序。假设某门课程一学期要完成 10 次作业,每次老师要进行批改,给出分数后还要进行登记。学期期末要根据每次作业的成绩计算出最
18、终的平时成绩(满分 100) 。该程序应该具有下列功能:(1) 通过键盘输入某位学生某次作业的分数;(2) 给定学号,显示某位学生作业完成情况;(3) 给定某个班级的班号,显示该班所有学生的作业完成情况;(4) 给定某位学生的学号,修改该学生的作业完成信息;(5) 给定某位学生的学号,删除该学生的信息;(6) 提供一些统计各类信息的功能或排序功能。【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 作业登记信息应该包含:学号、姓名、10 次作业的完成情况;(3) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的
19、操作项目。【输入要求】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示) 。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。【提示】设计一个结构类型和一维数组类型,用来保存作业登记信息。【实验步骤】(1)装入给定程序模板,运行演示;(2)根据题目要求,修改数据类型,添加必要的变量,实现功能(1)和(2) ,并进行调试;(3)实现功能(3)和(4) ,并进行测试;(4)实现功能(
20、5)和(6) ,并进行调试;(5)编写实验报告。9第 5 题 职工工资信息管理系统【题目描述】各种基本数据的录入、修改、删除、插入、查询、统计(应发工资=基本工资+职务工资+各种补助,实发工资= 应发工资 -水电费-公积金- 税金,税金(按先行税率公式计算) )基本功能有:(1)添加功能:添加一个职工的基本信息,包括工资卡号、身份证号、姓名、基本工资、职务工资、各种补助、应发工资、水电费、公积金、税金、实发工资等(2)删除功能:能够对一个职工的信息进行删除,例如按姓名进行删除、(3)显示功能:显示所有职工的主要信息包括工资卡号、身份证号、姓名、基本工资、职务工资、各种补助、应发工资、水电费、公
21、积金、税金、实发工资等(4)查找功能:根据你键入的职工姓名,显示其详细信息!(5)修改功能:根据你键入的职工姓名,对该职工工资信息进行修改。(6)排序功能:对职工的信息按照实发工资进行排序。【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 职工工资信息应该包含:工资卡号、身份证号、姓名、基本工资、职务工资、各种补助、应发工资、水电费、公积金、税金、实发工资等;(3) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。【输入要求】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示) 。用户可
22、以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。【提示】设计一个结构类型和一维数组类型,用来保存职工工资登记信息。【实验步骤】(1)装入给定程序模板,运行演示;(2)根据题目要求,修改数据类型,添加必要的变量,实现功能(1)和(2) ,并进行调试;(3)实现功能(3)和(4) ,并进行测试;(4)实现功能(5)和(6) ,并进行调试;(5)编写实验报告。10第 6 题 学生宿舍管理【题目描述】该程
23、序应该具有下列功能:1) 录入:录入信息(学号,宿舍号,性别,姓名,所属院系等)2) 插入:给出姓名或学号执行插入后,查询是否被插入;3)删除:给出姓名或学号执行删除后,查询是否被删除;4)交换:给出两学生的姓名或学号执行交换后,查询是否被交换;5)查询:给出房间号,列出该房间的入住学生即可;6)统计:宿舍没住满情况显示。【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。【输入要求】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示) 。用
24、户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。【提示】设计一个结构类型和一维数组类型,用来保存学生宿舍登记信息。【实验步骤】(1)装入给定程序模板,运行演示;(2)根据题目要求,修改数据类型,添加必要的变量,实现功能(1)和(2) ,并进行调试;(3)实现功能(3)和(4) ,并进行测试;(4)实现功能(5)和(6) ,并进行调试;(5)编写实验报告。11第 7 题 人事管理程序【题目描述】
25、请设计一个人事管理程序。1、添加功能:添加一个职员的基本信息,包括姓名,工作证号,身份证号码,生日,家庭住址,家庭电话号码,部门,薪水,性别,职务等2、删除功能:能够对一个职员的信息进行删除,例如按姓名进行删除。3、显示功能:显示所有职员的主要信息包括姓名,身份证号码,工作证号,生日等4、查找功能:根据你键入的职员姓名,显示其详细信息。5、修改功能:根据你键入的职员姓名,对该职员的信息进行修改。6、排序功能:对职员的信息按照薪水进行排序。【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用
26、户通过菜单项选择希望进行的操作项目。【输入要求】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示) 。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。【提示】设计一个结构类型和一维数组类型,用来保存职工登记信息。【实验步骤】(1)装入给定程序模板,运行演示;(2)根据题目要求,修改数据类型,添加必要的变量,实现功能(1)和(2) ,并进行调试;(3)实现功能(3)和(4) ,并
27、进行测试;(4)实现功能(5)和(6) ,并进行调试;(5)编写实验报告。12第 8 题 通讯录的管理【题目描述】请设计一个通讯录管理程序。该程序应该具有下列功能:(1) 插入好友信息;(2) 显示好友的相关信息;(3) 给定姓名,查找该好友的信息;(4) 给定姓名,修改相关信息;(5) 给定姓名,删除该好友的信息;(6) 按照姓名进行排序。【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 每个记录包含姓名、电话号码、住址等个人信息;(3) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。【输入要求
28、】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示) 。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。【提示】设计一个结构类型和一维数组类型,用来保存信息。【实验步骤】(1)装入给定程序模板,运行演示;(2)根据题目要求,修改数据类型,添加必要的变量,实现功能(1)和(2) ,并进行调试;(3)实现功能(3)和(4) ,并进行测试;(4)实现功能(5)和(6) ,并进行调试;
29、(5)编写实验报告。13第 9 题 车票管理程序【题目描述】一车站每天有 n 个发车班次,每个班次都有一班次号(1、2、3n) ,固定的发车时间,固定的路线(起始站、终点站) ,大致的行车时间,固定的额定载客量。如班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数1 8:00 凤阳 合肥 2 45 302 6:30 凤阳 蚌埠 0.5 40 403 7:00 凤阳 定远 1 40 204 10:00 凤阳 南京 3 40 2能提供下列服务:(1)录入班次信息(信息用文件保存 ),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状态(如果当前系统时间超过了某班次的发车时
30、间,则显示“此班已发出”的提示信息)。(3)查询路线:可按班次号查询 ,可按终点站查询(4)售票和退票功能A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数(5) 根据输入班次,删除某班次。(6) 按发车时间排序。【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2)车次登记信息应该包含:班次、发车时间、起点站、终点站、行车时间、额定载量、 已定票人数等(3) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进
31、行的操作项目。【输入要求】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示) 。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。【提示】设计一个结构类型和一维数组类型,用来保存信息。【实验步骤】(1)装入给定程序模板,运行演示;(2)根据题目要求,修改数据类型,添加必要的变量,实现功能(1)和(2) ,并进行调试;(3)实现功能(3)和(4) ,并进行测试;(4)实现功能(5)
32、和(6) ,并进行调试;(5)编写实验报告。14附录 3第二部分(参考)下面是一个职工信息管理程序,请阅读分析过程,并编写相应模块。1 需求分析1.1 编写目的通过对用户需求进行调查分析,写出需求分析文档。需求分析文档可作为项目设计的基本准则要求,也可作为系统分析员进行系统分析和测试人员进行测试时的手册。1.2 需求概述设计一个职工信息管理系统,使之能提供以下功能:(1)职工信息录入功能(2)职工信息浏览功能(3)职工信息查询(或排序)功能(4)职工信息删除功能(5)职工信息修改功能1.3 需求说明(1)职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等,并且要求职工号不
33、重复;(2)录入的职工信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作;(3)职工信息的显示要求有一定的规范格式;(4)对职工信息应能够分别按工资及按学历两种方式进行,要求能返回所有符合条件的职工的信息;(5)对职工信息的修改应逐个地进行,一个职工信息的更改不应影响其他的职工记录;(6)所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。2 总体设计2.1 编写目的根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写出书面文档总体设计说明书,为
34、下一步进行详细设计做准备。2.2 总体设计1功能划分该系统可以按功能进行模块划分,如图 1 所示:15职 工 信 息 管 理 系 统菜 单 选 择 信 息 删 除信 息 修 改信 息 查 询信 息 浏 览信 息 输 入按 编 号 查 询 按 姓 名 查 询图 1 系统模块图其中:信息输入模块完成职工信息的输入功能,输入信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等;信息浏览模块完成已录入职工信息的显示;信息查询模块完成职工信息的查询,查询时对应有按工资查询和按学历查询两种方式;信息修改模块完成职工信息的修改功能;信息删除模块完成职工信息的删除功能;菜单选择模块完成用户命令
35、的接收,此模块也是职工信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能。2数据结构本系统中主要的数据结构就是职工的信息,包含职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等,在处理过程中各项可以作为一个职工的不同属性来进行处理。3程序流程系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如图 2 所示:16是开 始菜 单 选 择输 入浏 览 查 询 修 改 删 除否 否 否 否 否是 是是 是信 息 删 除信 息 修 改信 息 查 询信 息 浏
36、 览信 息 输 入结 束图 2 程序流程图3 详细设计3.1 编写目的根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进行程序编码工作。3.2 详细设计1数据结构(1)性别:enum Sex male, female ;(2)学历:enum Education high, junior, college, master, doctor;(3)日期:struct Dateint year;int month;int day;(4)职工信息:struct Info17char num5; /* 职工号 */char name8; /* 姓名 */enum Sex s
37、ex; /* 性别 */struct Date birthday; /* 出生年月 */enum Education education; /* 学历 */char duty8; /* 职务 */double wage; /* 工资 */char addr12; /* 地址 */char phone8; /* 电话 */;2各个功能模块的处理流程对应于总体设计时的系统功能模块图,各个功能模块的处理流程如下:(1)信息输入模块打开职工信息文件;while ( 继续输入 )读入职工信息;将读入信息添加到职工信息文件中;提示是否继续输入;关闭职工信息文件;(2)信息浏览模块打开职工信息文件;whil
38、e ( 不到文件结束 )从文件中顺序读出一个职工的信息;按指定格式输出该职工的信息;关闭职工信息文件;(3)信息查询模块while ( 继续查询 )if( 按编号查询 )读入查询的职工编号;打开职工信息文件;while( 不到文件结束 )顺序读出一个职工的信息;if( 该职工信息的编号符合条件 )输出该职工的信息;关闭职工信息文件;提示共有几条符合条件的记录;else if( 按姓名查询 )读入查询的职工姓名;打开职工信息文件;while( 不到文件结束 )顺序读出一个职工的信息;18if( 该职工信息的姓名符合条件 )输出该职工的信息;关闭职工信息文件;提示共有几条符合条件的记录;else提
39、示输入不合适;提示是否继续查询;(4)信息修改模块while( 继续修改 )打开职工信息文件;打开临时文件;提示并读入待修改的职工的编号;while( 不到文件结束 )顺序读出一个职工的信息;if( 该职工信息的编号符合条件 )将职工的信息进行修改;将职工的信息写入临时文件中;关闭原信息文件;关闭临时文件;删除原信息文件;将临时文件的名字改为原信息文件的名字;(5)信息删除模块while( 继续删除 )提示并读入待删除的职工号;打开职工信息文件;查找是否有符合条件的职工记录;if( 有符合条件的记录 )创建一个新的临时文件;while( 原信息文件中记录未读完 )读出原信息文件中的下一条记录;
40、if( 此条记录不是待删除记录 )写入临时文件中去;关闭原信息文件;关闭临时文件;删除原信息文件;将临时文件的名字改为原信息文件的名字;else提示没有符合条件的记录存在;(6)菜单选择模块:19给出信息提示;清屏;绘制菜单(包含输入、显示、查询、修改、删除、退出) ;提示菜单选择并读入到变量;返回变量的值。4 程序片段#include #include #include #include enum Sexmale, female; /* 性别 */enum Educationhigh, junior, college, master, doctor; /* 学历 */struct Date
41、/* 日期 */int year;int month;int day;struct Infochar num10; /* 职工号 */char name15; /* 姓名 */enum Sex sex; /* 性别 */struct Date birthday; /* 出生年月*/enum Education education; /* 学历 */char duty15; /* 职务 */double wage; /* 工资 */char addr30; /* 地址 */char phone15; /* 电话 */;char menu() /* 菜单选择函数 */char n; /* n记录选
42、择的菜单 */clrscr(); /*清屏*/cout6)cout“Input error,please input again(1-6): bb“;elsebreak; return n;void append() /* 信息添加函数 */void print2(struct Info info) /* 信息输出函数 */void display() /* 职工信息 显示函数 */void search() /* 信息查询函数 */void modify() /* 信息修改函数*/void delete() /* 信息删除函数 */Void main()while(1)switch(menu
43、()case 1:append();break;case 2:display();break;case 3:search();break;case 4:modify();break;case 5:delete();break;case 6:exit(0);break;21附录 4 课程设计报告书写格式要求为了培养学生严谨的工作态度,锻炼学生编写文档的能力,要求实验报告包括下面主要部分:a)需求分析在该部分中叙述整个设计的功能要求。b)概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图) ,每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义) 。c)详细设计各个
44、算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现) ;源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。d)调试分析测试数据,测试输出的结果,时间复杂度分析,和每个功能模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?) ,算法的改进设想。 e) 程序的源代码清单。注意:1、课程设计报告要用 A4 纸打印装订。2、课程设计报告封面应该按照下面的要求。22安徽科技学院网络工程专业程序设计技能训练课程设计实验报告学 院: 班 级:组 长: 学 号:成 员开课学期:实验日期;指 导教师:Comment l1: 宋体 5号单倍行距23实验名称 实验场所1 概要设计:242 详细设计25263. 调试分析成 绩4. 评语:签 名年 月 日27