项目09 课程设计课件_第1页
项目09 课程设计课件_第2页
项目09 课程设计课件_第3页
项目09 课程设计课件_第4页
项目09 课程设计课件_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

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

文档简介

1、项目九 课 程 设 计 项目九 课 程 设 计 三、课程设计的时间安排 3一、课程设计的目的 1二、课程设计的内容要求 2六、课程设计的题目 6四、课程设计成绩评定 4五、课程设计报告格式 5七、企业人事管理系统设计实例 7项目九 课 程 设 计 课程设计环节是高职高专院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学到的专业理论知识,而且能够培养学生工程意识、创新能力及团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。正如一句行话所说“C语言入门容易得道难”,对于多数学生

2、来说,在学习了C语言之后,除了应付全国计算机等级考试之外,不知还有其他用途,对丰富的C函数所知甚少,因而对C语言项目九 课 程 设 计 兴趣不大。因此,本课程设计环节从算法、数据结构、C语言丰富的函数以及程序设计等方面进行了精心考虑和组织,追求典型性、完整性、实用性和趣味性,希望不仅能够提高学生学习C语言的兴趣,更为开发程序打下坚实的基础。项目九 课 程 设 计 【学习目标】 (1) 掌握C语言基本语句、语法、数据类型、运算符和表达式,顺序、选择、循环结构程序设计,数组、函数、结构体类型变量及结构体数组等的使用。 (2) 掌握程序调试的基本方法和技巧。 (3) 掌握基本编程能力。 一、课程设计

3、的目的 (1) 加深对讲授内容的理解。C语言程序设计课程中的一些语法规则和阶段性知识,只靠课堂讲授既枯燥无味又难以记忆,但它们都很重要,要想熟练掌握,必须经过大量实践加深对它们的理解与把握。 (2) 通过设计,熟练上机调试程序。学生上机时不应依靠别人帮助调试程序和排错,应该做到善于发现程序中的错误,并且能很快的排除这些错误,使程序能正确运行。经验丰富的人,在编译连接过程中出现“错误信息”时,一般能很快判断出错误所在,并改正。而缺乏经验的人即使在明一、课 程 设 计 的 目 的 确的“错误信息”下也往往找不出错误。要真正掌握计算机应用技术,不仅要了解和熟悉有关的理论和方法,还要自己动手实现,尤其

4、在程序设计课程中后者更为重要。因此要求程序员不仅懂理论、会编程,同时能快速上机调试程序。 (3) C语言综合程序设计能力的提高。学生对于C语言的学习不能仅停留在读懂简单程序和编写短小的阶段性程序阶段,应善于将所学的知识贯穿起来,综合运用C语言的全部知识,达到能够纵观全局,分析、设计具有一定规模的题目的要求,做到对知识的全面掌握和运用。 二、课程设计的内容要求 利用学到的编程知识和编程技巧,通过布置具有一定难度的程序设计题目,帮助学生熟悉程序编写,及时查究错误,独立完成。 课程设计内容要求如下: (1) 对系统进行正确的功能模块分析、控制模块分析。 (2) 系统设计要实用。 (3) 编程简练、可

5、用,功能全面,具有较好的可读性。 (4) 说明书、流程图要清楚。 三、课程设计的时间安排 课程设计的题目应提前一周布置,以便学生作好充分准备。一周的课程设计主要分成以下几个阶段: (1) 系统分析与设计阶段。在前期资料查阅的基础上,学生对所选课题进行功能分析与设计。 (2) 程序编制与调试阶段。学生在老师的指导下独立完成程序的编制与调试,老师应实时考察学生的实际编程与调试能力。 (3) 总结报告和书写说明书阶段。学生根据规定的格式编写内含课题说明书的课程设计报告。 三、课 程 设 计 的 时 间 安 排 (4) 答辩与考核阶段。教师对学生进行当面提问答辩,答辩既可以以语言表达的方式,也可以直接

6、在机房中进行实际操作与调试。教师将综合每一学生一周的表现及能力进行综合评分。 四、课程设计成绩评定 (1) 程序设计的正确性、实用性、通用性、可扩充性和编程风格(40%)。 (2) 学生的学习态度、动手能力、创新精神及出勤率(20%)。 (3) 总结报告(20%)。 (4) 答辩水平(20%)。 五、课程设计报告格式 (1) 设计目的。 (2) 总体设计。程序设计组成框图、流程图。 (3) 详细设计。模块功能说明,如函数功能、入口及出口参数说明,函数调用关系描述等。 (4) 调试与测试。调试方法、测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施。 (5) 源程序清单和执行结果。清

7、单中应有足够的注释。 六、课程设计的题目 (1) 公司人员管理系统。 某小型公司,主要有4类人员:经理、兼职技术人员、销售经理和兼职推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。 试设计一公司人员管理系统,使之能提供以下功能: 1) 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。 2) 程序对所有人员有提升级别的功能。 3) 月薪的计算方法是:经理拿固定月薪,兼职技术人六、课 程 设 计 的 题 目 员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成,销售经理既拿固定月薪也领取销售提成。 4) 能按姓名或者编号显示、查

8、找、增加、删除和保存各类人员的信息。 (2) 高校工资管理系统。 现一高校有5类职工:教师、实验员、行政人员、教师兼职实验员和行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编六、课 程 设 计 的 题 目 号和职工姓名来实现),如有职工由于工作调动,则可进行相对应的删除动作。 试设计一高校工资管理系统,使之能提供以下功能。 每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放。下面介绍职工的工

9、资计算方法。 其中工资的基本构成如下。 教师: 基本工资+课时费 实验员: 基本工资+实验室补助 行政人员: 基本工资+行政补贴 六、课 程 设 计 的 题 目 教师兼职实验员: 基本工资+课时费+实验室补助 行政人员兼职教师:基本工资+行政补贴+课时费其中, 1) 课时费。教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元,课时费=(上学期工作量-基本工作量)*20。注意:如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。 2) 基本工资:教师800元,实验员650元,行政人员750元。六、课 程 设 计 的 题

10、 目 3) 行政补贴:250元。 4) 实验室补助:150元。 (3) 设计三星公司的设备管理系统。 三星公司现有以下设备:普通电视机、DVD、带DVD的电视机,带DVD的电视机的售价为普通电视机和DVD单价之和的80%。请编制-程序要求对所有的库存设备都能实现按照品名进行显示、查找、增加和删除及保存的功能。 (4) 高校人事管理系统。 某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储这六、课 程 设 计 的 题 目 些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。 试设计一高校人事管理系统,使

11、之能提供以下功能。 1) 添加删除功能:能根据学院人事的变动情况,添加删除记录。 2) 查询功能:能根据编号和姓名进行查询。 3) 编辑功能(高级):根据查询对相应的记录进行修改,并存储。 4) 统计功能:能根据多种参数进行人员的统计(如在职人数、党员人数、女工人数、高学历高职称人数)。六、课 程 设 计 的 题 目 5) 保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。 6) 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。 (5) 图书信息管理系统。 试设计一图书信息管理系统,使之能提供以下功能: 1) 系统以菜单方式工作。 2) 能进

12、行图书信息的录入,图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间和价格等。 3) 能进行图书信息的浏览。六、课 程 设 计 的 题 目 4) 能进行图书的查询和排序(按书名查询、按作者名查询)。 5) 能进行图书信息的删除与修改。 (6) 学生信息管理系统。 设计一学生信息管理系统,使之能提供以下功能: 1) 系统以菜单方式工作。 2) 能进行学生信息的录入,学生信息包括:学号、姓名、年龄、性别、出生年月、地址、电话和E-mail等。 3) 能进行学生信息的浏览。 4) 能进行学生信息的查询和排序(按学号查询、按姓名六、课 程 设 计 的 题 目 查询)。 5) 能进行学生信息的

13、删除与修改。 (7) 学生选修课程系统设计。 假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分及开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能: 1) 系统以菜单方式工作。 2) 能进行课程信息的录入。 3) 能进行课程信息的浏览。六、课 程 设 计 的 题 目 4) 能进行课程信息的查询(按学分查询、按课程性质查询)。 5) 能进行选修课程。 (8) 销售管理系统。 某公司有4个销售员(编号14),负责销售5种产品(编号15)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含

14、内容:销售员的代号、产品的代号、这种产品的当天的销售额。 每位销售员每天可能上缴05张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售六、课 程 设 计 的 题 目 情况(自己设定),进行如下处理: 1) 计算上个月每个人每种产品的销售额。 2) 按销售额对销售员进行排序,输出排序结果(销售员代号)。 3) 统计每种产品的总销售额,对这些产品按从高到低的顺序,输出排序结果(需输出产品的代号和销售额)。 4) 输出统计报表。 (9) 保安值班安排系统。 某公司有7名保安人员:赵、钱、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先六、课 程 设 计

15、 的 题 目 让每一个人选择自己认为合适的休息日。请编制一程序,打印轮休的所有可能方案,使每个人都满意。例如每人选择的休息日如下。 赵:星期二、星期四 钱:星期一、星期六 孙:星期三、星期日 李:星期五 周:星期一、星期四、星期六 吴:星期二、星期五 陈:星期三、星期六、星期日六、课 程 设 计 的 题 目 (10) 通信录管理系统。 设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 试设计一通信录管理系统,使之能提供以下功能: 1) 查看功能。选择此功能时,列出下列3类选择。 A 办公类 B 个人类 C 商务类 当选中某类时,显示出此类所有数据中的姓名和电话号码。 2) 增加功能

16、。能录入新数据。 例如:杨春商务类 六、课 程 设 计 的 题 目 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,提示存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 3) 修改功能。选中某个人的姓名时,可对此人的相应数据进行修改。 4) 删除功能。选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 (11) 学籍管理系统。 使用下面的数据,设计一个简单的学籍管理系统,实现六、课 程 设 计 的 题 目 最基本的功能。 学生基本信息:学号 姓名 性别 宿舍号码 电话号码01

17、 张成成 男 501 8773211102 李成华 女 101 8772311203 王成凤 女 101 8772311204 张明明 男 502 8773433305 陈东 男 501 8773211106 李果 男 502 8773433307 张园园 女 102 87756122六、课 程 设 计 的 题 目 学生成绩基本信息: 学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分01A01大学物理366788202B03高等数学478-19001B03高等数学445-18802C01VF3657666六、课 程 设 计 的 题 目 功能要求及说明: 1) 数据录入功能。录入

18、每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩和卷面成绩共7个数据。综合成绩、实得学分由程序根据条件自动运算。 综合成绩的计算。如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70%。 实得学分的计算。采用等级学分制。综合成绩在90100分之间,应得学分=学分*100%;综合成六、课 程 设 计 的 题 目 绩在8090分之间,应得学分=学分*80%;综合成绩在7080分之间,应得学分=学分*75%;综合成绩在6070分之间,应得学分=学分*60

19、%;综合成绩在60分以下,应得学分=学分*0%。 2) 查询功能。分为学生基本情况查询和成绩查询两种。 学生基本情况查询。输入一个学号或姓名(可实现选择),可查询出此学生的基本信息并显示输出;输入一个宿舍号码,可查询出本室所有学生的基本信息并显示输出。 成绩查询。输入一个学号时,可查询出此学生的所有课程情况,格式如下。六、课 程 设 计 的 题 目 学 号: 姓 名:课程编号: 课程名称: 综合成绩: 实得学分:课程编号: 课程名称: 综合成绩: 实得学分:课程编号: 课程名称: 综合成绩: 实得学分:共修:科 实得总学分为: 3) 排序功能。能实现选择按综合成绩或实得学分升序或降序排序并显示

20、数据。六、课 程 设 计 的 题 目 (12) 车票管理系统。 一车站每天有n个发车班次,每个班次都有一班次号(1、2、3n),固定的发车时间、固定的路线(起始站、终点站)、大致的行车时间、固定的额定载客量如下:班次 发车时间 起点站 终点站 行车时间 额定载量 已订票人数1 8:00 徐州 沛县 1 45 302 6:30 徐州 丰县 2 40 403 7:00 徐州 邳州 2 40 204 10:00 徐州 贾汪 0.5 40 2 功能要求及说明: 1) 录入班次信息。可不定时地增加班次数据。六、课 程 设 计 的 题 目 2) 浏览班次信息。可显示出所有班次当前状态(如果当前系统时间超过

21、了某班次的发车时间,则显示“此班已发出”的提示信息)。 3) 查询路线。可按班次号查询,还可按终点站查询。 4) 售票和退票功能。 当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已订票人数。 退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已订票人数。 六、课 程 设 计 的 题 目 (13) 公交一卡通系统。 试设计一公交一卡通系统,使之能提供以下功能: 1) 添加新卡。能够添加一张新卡,卡号按照自然数列向下自动产生,而用户姓名和卡内所续金额由键盘输入,此时卡内余额就是户输入的所续金额。如果整个系统中的卡号之间出现了被注销过的卡标记,则先将此卡号分配给

22、新卡使用,以便尽量保证该系统中卡号的连续性。 2) 注销旧卡。由用户输入卡号,判断该卡号是否存在,若存在并且该卡没有注销标记,则将该卡的余额退回给用户,同时对该卡做注销标记。六、课 程 设 计 的 题 目 3) 修改卡信息。由用户输入自己的卡号,如果存在该卡,并且该卡没有被注销,则弹出一个小菜单列出允许修改的选项。根据用户的选择让用户进行修改。 4) 坐车读卡。假设公交票价的规定是10站以内1元,1115站2元,1620站3元,2125站4元,2630站5元,每趟车不超过30站。在乘公交车时,由用户输入自己的卡号和将要坐的站数。如果该卡存在,并且该卡没有被注销,则系统根据票价的规定,从该卡的余

23、额中扣除相应的票价。在扣除票价时,如果卡内余额不足,则提示用户支付现金。 六、课 程 设 计 的 题 目 5) 续钱并查找续钱最多的用户。由用户输入自己的卡号和要续的金额,如果该卡存在,并且该卡没有被注销,则系统将所续的金额和卡内的余额之和作为最终卡内余额。找出目前所续金额最多的用户,并显示其全部信息。 七、企业人事管理系统设计实例 (1) 项目背景及需求分析。 随着计算机技术的飞速发展和计算机在企业管理中应用的普及,利用计算机实现企业人事管理势在必行。对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求,推动企业劳动人事管理走向科学化、规范化的必要条

24、件。计算机管理的优点是检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长和成本低等,这些优点能够极大地提高人事管理的效率,也是企业科学化、正规化管理与世界接轨的重要条件。七、企 业 人 事 管 理 系 统 设 计 实 例 不同的企业具有不同的人事管理制度,这就决定了不同的企业需要不同的人事管理系统。 目前市面上流行的人事管理系统不少,但是,对于企、事业单位的人事管理系统来说,不需要大型的数据库系统,只需要一个操作方便,功能实用,能满足本中心对数据的管理及需求的系统就可以。本项目的目标就是开发一个功能实用、操作方便,简单明了的人事管理系统。 能够录入人事的基本资料,在操作上能够完成诸如添加

25、、修改、删除、按各种条件进行查询、新用户的设置等方面的工作,基本满足人事日常业务的需要。七、企 业 人 事 管 理 系 统 设 计 实 例 (2) 项目功能。 1) 管理系统。 录入职工信息:添加多个职工的基本信息,包括职工工号、职位、姓名、性别、文化程度、工资和身体情况等。每添加完一个职工的基本信息后,由系统提示是否继续录入。 显示职工信息:要能够把职工信息以报表的形式全部显示。 修改职工信息:要能够对职工的基本信息进行修改。 追加职工信息:可以在新职工进入公司时,随时把职工信息追加进来。七、企 业 人 事 管 理 系 统 设 计 实 例 删除职工信息:在职工离开公司的时候,可以通过系统把职

26、工的信息删除。 统计职工信息:能够对职工基本信息进行分类统计,可以分别从性别、文化程度、职位进行统计。 2) 查询系统:能够通过姓名查询职工的基本信息。 3) 通信录系统。 输入通信录信息:通信录的信息可以包括职工姓名、电话号码、家庭电话号码、手机号码、地址和电子邮件地址等。查询通信录信息:能够通过姓名查询通信录所包括的职工所有信息。七、企 业 人 事 管 理 系 统 设 计 实 例 修改通信录信息:在职工信息变化的时候可以任意修改变化的职工信息。 (3) 项目总体设计。 1) 数据和数据结构。struct employee/*职工基本情况*/ int num;/*工号*/ int posit

27、ion;/*职位:1为董事长,2为 总经理,3为副总经理等*/ char name8;/*姓名*/ 七、企 业 人 事 管 理 系 统 设 计 实 例 char sex2;/*性别:f为女,m为男*/ int age;/*年龄*/ int cult;/*文化程度:1为专家,2为博士,3为硕士,4为学士,5为其他*/ int salary;/*工资*/ int state;/*健康情况分为good,general,bad*/emN;struct communication/*职工通讯录*/七、企 业 人 事 管 理 系 统 设 计 实 例 char name8; /*姓名*/ char offi

28、cetel13;/*办公室电话号码*/ char hometel13;/*家庭电话号码*/ char handtel13;/*手机号码*/ char address13;/*家庭住址*/ char email25; /*电子邮箱地址*/empcN; 2) 系统结构模块图。 依据程序的数据结构和功能,遵照“自顶向下”原则,七、企 业 人 事 管 理 系 统 设 计 实 例 采用基于函数的逐步求精法,画出模块结构图,如图9-1所示。从模块结构图中可以清楚地看到系统层次结构和各功能模块之间的关系。 3) 系统自定义函数列表。 在C语言中,每一个功能模块对应一个函数,即由函数来实现各功能模块的具体功能

29、。也就是建立功能模块与函数之间的一一对应关系。通过前面的学习已经知道,定义函数的时候,需要确定函数名、函数参数、函数是否有返回值及返回值的类型等。在编写程序之前,先把各功能模块所对应函数的函数名、函数参数及函数类型等列成一张表(见表9-七、企 业 人 事 管 理 系 统 设 计 实 例 1),在编写程序时可以减少许多不必要的麻烦,从而提高编写程序的效率。 为方便起见,系统中各函数均设计成无参函数,且均无返回值。图9-1 系统结构模块图 七、企 业 人 事 管 理 系 统 设 计 实 例 表9-1 系统自定义函数列表 编号模块名函数名返回类型说明1企业人事管理系统mainvoid主菜单2管理模块

30、managevoid子菜单12-1录入职工信息inputvoid功能模块2-2显示职工信息displayvoid功能模块2-3修改职工信息changevoid功能模块2-3-1修改职位changepositionint功能模块2-3-2修改文凭changecultint功能模块2-3-3修改工资changesalaryint功能模块2-3-4修改身体状况changestateint功能模块2-4追加职工信息addvoid功能模块2-5删除职工信息delvoid功能模块2-6统计职工信息countvoid功能模块3查询模块queryvoid子菜单23-1对职工信息排序sortvoid功能模块3-

31、2输出职工个人的资料printvoid功能模块4通信录模块communicatevoid子菜单34-1输入通信录信息inputcommunicatevoid功能模块4-2查询通信录信息querycommunicatevoid功能模块4-3修改通信录信息changecommunicatevoid功能模块4-3-1修改办公室电话号码changetel1void功能模块七、企 业 人 事 管 理 系 统 设 计 实 例 (4) 项目实施方案。 续表 编号模块名函数名返回类型说明4-3-2修改家庭电话号码changetel2void功能模块4-3-3修改手机电话号码changetel3void功能模块

32、4-3-4修改地址changeaddressvoid功能模块4-3-5修改电子邮件地址changeemailvoid功能模块4-4显示通讯录信息print2void功能模块七、企 业 人 事 管 理 系 统 设 计 实 例 【工作任务1】 设计系统框架和菜单程序。【解决方案】#include #include #include #include #define N 100struct employee/*职工基本情况*/七、企 业 人 事 管 理 系 统 设 计 实 例 int num;/*工号*/ int position;/*职位:1为董事长,2为总经 理,3为副总经理等*/ char n

33、ame8;/*姓名*/ char sex2;/*性别:f为女,m为男*/ int age;/*年龄*/ int cult;/*文化程度:1为专家,2为博士,3为硕士,4为学士,5为其他*/ int salary;/*工资*/ 七、企 业 人 事 管 理 系 统 设 计 实 例 int state;/*健康情况分为good,general,bad*/emN;struct communication/*职工通讯录*/ char name8; /*姓名*/ char officetel13;/*办公室电话号码*/ char hometel13; /*家庭电话号码*/ char handtel13;

34、/*手机号码*/ char address13; /*家庭住址*/ char email25; /*电子邮箱地址*/七、企 业 人 事 管 理 系 统 设 计 实 例 empcN;void manage();void query();void communicate();void input();void display();void change();void del();void add();void count();七、企 业 人 事 管 理 系 统 设 计 实 例 int changeposition();int changecult();int changesalary();int

35、changestate();void print(struct employee em1); void inputcommunicate();void querycommunicate();void changecommunicate();void changetel1(char * newofficetel);void changetel2(char * newhometel);七、企 业 人 事 管 理 系 统 设 计 实 例 void changetel3(char * newhandtel);void changeaddress(char * newaddress);void chan

36、geemail(char * newemail);void print2(struct communication em2);void main() int choice; do 七、企 业 人 事 管 理 系 统 设 计 实 例 printf(n); printf(t欢迎进入企业人事管理系统中文版n); printf(t制作人:王和 王美tn); printf(t联系地址:徐州工业技术学院n); printf(tt请你选择操作类型:n); printf(=tt=n); printf(tt1进入管理系统n); printf(tt2进入查询系统n); printf(tt3进入通讯录n); 七、企

37、 业 人 事 管 理 系 统 设 计 实 例 printf(tt0退出系统n); printf(=tt=n); printf(说明:版权归作者所有违者必究nnnn); scanf(%d,&choice); switch(choice) case 1: manage();/*管理系统*/ break; case 2: 七、企 业 人 事 管 理 系 统 设 计 实 例 query();/*查询系统*/ break; case 3: communicate();/*进入通讯录*/ break; case 0:/*退出系统*/ printf(谢谢使用再见n); exit(0); 七、企 业 人 事

38、管 理 系 统 设 计 实 例 default: printf(输入有错误请重新输入:n); return; while(1);七、企 业 人 事 管 理 系 统 设 计 实 例 【运行情况】 系统框架和菜单程序运行结果如图9-2所示。 图9-2 系统框架和菜单程序运行结果 七、企 业 人 事 管 理 系 统 设 计 实 例 【归纳分析】 1) 程序中给出了企业人事管理系统菜单框架、函数声明和变量的定义。为了方便说明问题,程序中使用了全局变量。一般来说,应用程序各功能模块应尽可能相对独立,少使用全局变量。 2) 程序代码编写过程按照“自顶向下,逐步细化”的原则。首先编写主函数,对其中调用的自定

39、义函数只确定它的名称,函数的参数等到编写自定义函数再确定,但要将主函数中出现的自定义函数用空函数的形式占位置,否则编译时会出错。七、企 业 人 事 管 理 系 统 设 计 实 例 3) 一般每编写好的一个功能模块就要及时测试,并随时调整和修改主函数的内容,不应编写完所有代码后再统一测试,以免出现问题时给查找带来不便。【工作任务2】 设计系统管理模块。 七、企 业 人 事 管 理 系 统 设 计 实 例 【解决方案】void manage() system(cls); int choicemanage; char choice=y; while(choice=y|choice=Y) system

40、(cls); printf(tt欢迎进入管理系统n); 七、企 业 人 事 管 理 系 统 设 计 实 例 printf(=n); printf(tt请你选择操作类型:n); printf(tt1输入职工信息n); printf(tt2显示职工信息n); printf(tt3修改职工信息n); printf(tt4追加一个职工信息n); printf(tt5删除一个职工信息n); printf(tt6统计职工信息n); printf(tt0返回n); printf(=n); 七、企 业 人 事 管 理 系 统 设 计 实 例 scanf(%d,&choicemanage); system(cl

41、s); switch(choicemanage) case 1: input();/*输入职工信息*/ sort(); break; case 2: display(); /*显示职工信息*/ 七、企 业 人 事 管 理 系 统 设 计 实 例 break; case 3: change(); /*修改职工信息*/ break; case 4: add(); /*追加一个职工信息*/ break; case 5: del(); /*删除一个职工信息*/ break; 七、企 业 人 事 管 理 系 统 设 计 实 例 break; case 6: count(); /*统计职工信息*/ bre

42、ak; case 0: printf(谢谢你的使用再见n); return; default: printf(你的输入有错请重新输入n); 七、企 业 人 事 管 理 系 统 设 计 实 例 printf(是否继续管理?(y/n); scanf(%s,&choice); if(toupper(choice)=N|(choice)=n) printf(输入完毕,任意键返回n); getch(); return; 七、企 业 人 事 管 理 系 统 设 计 实 例 【运行情况】 管理模块程序运行结果如图9-3所示。 图9-3 管理模块程序运行结果 七、企 业 人 事 管 理 系 统 设 计 实 例

43、 【归纳分析】 1)system(cls);语句的功能是清屏。system函数包含在stdlib.h头文件中。 2) 用getch函数可实现程序的暂停功能,该函数的作用是接收从键盘输入的一个字符。getch函数与getchar函数相似,但有3点不同:一是getch函数对键盘输入的字符不等待按回车键就立即接收,而getchar函数要等到按回车键后才接收;二是getch函数所接收的字符不在屏幕上显示,而用getchar函数所接收的字符在屏幕上显示;三是getch函数包含在conio.h头文件中,而getchar函数包含在stdio.h头文七、企 业 人 事 管 理 系 统 设 计 实 例 件中。

44、3) 管理模块包括职工信息录入、显示职工信息、修改职工信息、追加职工信息、删除职工信息和统计职工信息共6个模块。 职工信息录入程序代码如下:void input() FILE *fp; int i=0; char choiceinput=y; 七、企 业 人 事 管 理 系 统 设 计 实 例 if(fp=fopen(employee.txt,w)=NULL) return; while(choiceinput=y|choiceinput=Y) i+; printf(第%d个职工n,i); printf(n); printf(请你输入工号:n); scanf(%d,&emi.num); pri

45、ntf(n); 七、企 业 人 事 管 理 系 统 设 计 实 例 printf(请你输入职位:n); printf(1为董事长2为总经理3为副总经理n); printf(4为经理5为副经理6为秘书n); printf(7为技术员8为领班9为员工n); scanf(%d,&emi.position); printf(n); printf(请你输入姓名:n); scanf(%s,); printf(n); printf(请你输入性别以m为男f为女:n); 七、企 业 人 事 管 理 系 统 设 计 实 例 scanf(%s,emi.sex); printf(n); printf(

46、请你输入文化程度:n); printf(1为专家2为博士3为硕士4为学士5为其他n); scanf(%d,&emi.cult); printf(n); printf(请你输入工资:n); scanf(%d,&emi.salary); printf(n); printf(请你输入身体情况:n); printf(1好2为一般3为差n); 七、企 业 人 事 管 理 系 统 设 计 实 例 scanf(%d,&emi.state);printf(n); printf(是否继续输入?(y/n)n); scanf(%s,&choiceinput); fwrite(&emi,sizeof(struct e

47、mployee),1,fp); if(toupper(choiceinput)=N) fclose(fp); printf(输入完毕,任意键返回n); getch(); 七、企 业 人 事 管 理 系 统 设 计 实 例 return; 程序运行结果如图9-4所示。 图9-4 职工信息录入程序运行结果 七、企 业 人 事 管 理 系 统 设 计 实 例 分析:通过scanf函数和printf函数将职工的基本信息输入到文件employee.txt中。通过变量choiceinput判断是否继续输入。 显示职工信息程序代码如下:void display() FILE *fp; int i; if(f

48、p=fopen(employee.txt,r)=NULL) return; 七、企 业 人 事 管 理 系 统 设 计 实 例 printf(输出结果:n); printf(工号 职位 姓名 性别 文化程度 工资 身体情况n); for(i=0;fread(&emi,sizeof(struct employee),1,fp)!=0;i+) print(emi); printf(完毕按任意键返回n); getch(); fclose(fp); return;七、企 业 人 事 管 理 系 统 设 计 实 例 程序运行结果如图9-5所示。 图9-5 显示职工信息运行结果 七、企 业 人 事 管 理

49、 系 统 设 计 实 例 分析:如果打开文件employee.txt失败,则返回;否则通过fread函数和for循环每次从employee.txt文件中读取长度为一个employee结构体长度的数据项,存储到数组em中,然后输出。 修改职工信息程序代码如下:void change() FILE *fp; int i; long dg,length; 七、企 业 人 事 管 理 系 统 设 计 实 例 char chname8; int choicechange; printf(请你输入要修改的人的姓名:n); scanf(%s,&chname); if(fp=fopen(employee.tx

50、t,r+)=NULL) printf(不能够打开这个文件n); return; fseek(fp,0,SEEK_END); 七、企 业 人 事 管 理 系 统 设 计 实 例 dg=ftell(fp)/sizeof(struct employee); length=dg; rewind(fp); for(i=0;ilength;i+) fread(&emi,sizeof(struct employee),1,fp); for(i=0;ilength;i+) print(emi); rewind(fp); for(i=0;ilength;i+) 七、企 业 人 事 管 理 系 统 设 计 实 例

51、 if(strcmp(chname,)=0) printf(这是你要修改的人的信息n); printf(工号为%d职位为%d姓名为%s性别为%s文化程度为%d工资为%d身体为%dn,emi.num,emi.position,,emi.sex,emi.cult,emi. salary,emi.state); printf(-n); printf(请你输入要修改的部分:n); printf(=n); 七、企 业 人 事 管 理 系 统 设 计 实 例 printf(1修改职位n); printf(2修改文化程度n); printf(3修改工资n); printf(4

52、修改身体情况n); printf(0退出系统n); printf(=n); printf(请选择n); scanf(%d,&choicechange); switch(choicechange) 七、企 业 人 事 管 理 系 统 设 计 实 例 case 1: emi.position=changeposition(); break; case 2: emi.cult=changecult(); break; case 3: emi.salary=changesalary(); break; case 4: 七、企 业 人 事 管 理 系 统 设 计 实 例 emi.state=change

53、state(); break; case 0: return; default : printf(输入有错误); print(emi); fwrite(&emi,sizeof(struct employee),1,fp); 七、企 业 人 事 管 理 系 统 设 计 实 例 fclose(fp); printf(操作完成按任意键返回n); getch(); return;int changeposition() int newposition; printf(请你输入新职位:n); printf(1为董事长2为总经理3为副总经理n); 七、企 业 人 事 管 理 系 统 设 计 实 例 pri

54、ntf(4为经理5为副经理6为秘书n); printf(7为技术员8为领班9为员工n); scanf(%d,&newposition); return(newposition);int changecult() int newcult; printf(请你输入新的文凭:n); printf(1为专家2为博士3为硕士4为学士5为其他n); 七、企 业 人 事 管 理 系 统 设 计 实 例 scanf(%d,&newcult); return(newcult);int changesalary() int newsalary; printf(请你输入新的工资:n); scanf(%d,&news

55、alary); return(newsalary);七、企 业 人 事 管 理 系 统 设 计 实 例 int changestate() int newstate; printf(请你输入现在的身体情况:n); printf(1为好2为一般3为差n); scanf(%d,&newstate); return(newstate);七、企 业 人 事 管 理 系 统 设 计 实 例 程序运行结果如图9-6所示。 图9-6 修改职工信息程序运行结果 七、企 业 人 事 管 理 系 统 设 计 实 例 分析:通过可读写的方式打开employee.txt文件,打开失败则返回。然后通过fseek()函数

56、将文件指针定位到文件尾,seek_end表示文件尾。接着通过ftell()函数得到文件长度,除以每个employee结构体的长度,从而得出文件employee.txt中存放的职工数。通过rwind()函数将指针移到文件头,然后将输入的要修改的职工姓名与文件中的职工姓名通过strcmp()函数进行比较,相同则返回0,如果找到,则显示当前要修改的职工信息。接着通过switchcase语句决定要修改职工的某个信息,每个修改项都是通过函数来实现的。修改完成后显示修改职工的基本信息,并将修改七、企 业 人 事 管 理 系 统 设 计 实 例 后的职工信息输入到文件employee.txt中,按任意键结束

57、。追加一个职工信息程序代码如下:void add() int temp=0; struct employee emp; FILE *fp; int i=0; if(fp=fopen(employee.txt,ab+)=NULL) 七、企 业 人 事 管 理 系 统 设 计 实 例 printf(不能够打开这个文件n); getch(); return; printf(请你输入新人的内容:n); printf(请你输入工号:n);/ 输入工号 scanf(%d,&emp.num); for(i=0;fread(&emi,sizeof(struct employee),1,fp)!=0;i+) i

58、f(emp.num=emi.num) temp+; 七、企 业 人 事 管 理 系 统 设 计 实 例 if(temp=0) printf(请你输入职位:n);/ 输入职位 printf(1为董事长2为总经理3为副总经理n); printf(4为经理5为副经理6为秘书n); printf(7为技术员8为领班9为员工n); scanf(%d,&emp.position); printf(请你输入姓名:n); scanf(%s,); printf(请你输入性别以m为男f为女:n); 七、企 业 人 事 管 理 系 统 设 计 实 例 scanf(%s,emp.sex); printf(请你输入文化

59、程度:n); printf(1为专家2为博士3为硕士4为学士5为其他n); scanf(%d,&emp.cult); printf(请你输入工资:n); scanf(%d,&emp.salary); printf(请你输入身体情况:n); printf(1好2为一般3为差n); scanf(%d,&emp.state); fwrite(&emp,sizeof(struct employee),1,fp); 七、企 业 人 事 管 理 系 统 设 计 实 例 rewind(fp);fclose(fp); printf(插入完毕,按任意键返回n); else printf(此工号已存在,按任意键返

60、回); getch(); return;七、企 业 人 事 管 理 系 统 设 计 实 例 程序运行结果如图9-7所示。 图9-7 追加一个职工信息程序运行结果 七、企 业 人 事 管 理 系 统 设 计 实 例 分析:通过fopen()函数打开employee.txt文件,打开失败则返回,否则以附加方式打开可读写的文件,写入的数据会被加到文件尾后,即文件原先的内容会被保留(a+),同时打开的文件为二进制文件(b)。为了保证职工工号的唯一性,在输入职工工号后,要与文件中的职工工号进行比较,如果有重复提示重复并返回,否则根据提示录入职工信息。录入结束后通过fwrite()函数将职工信息写入emp

温馨提示

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

评论

0/150

提交评论