C++人事管理系统课程设计报告
c人事管理课程设计
![c人事管理课程设计](https://img.taocdn.com/s3/m/1d530c767275a417866fb84ae45c3b3567ecdd90.png)
c 人事管理课程设计一、课程目标知识目标:1. 让学生理解并掌握人事管理的基本概念、原则和方法。
2. 使学生了解人事管理的组织结构、职能和运作流程。
3. 帮助学生掌握我国人事制度的基本政策和法规。
技能目标:1. 培养学生运用人事管理方法分析和解决实际问题的能力。
2. 提高学生在团队协作中的人际沟通和协调能力。
3. 培养学生运用现代信息技术进行人事数据管理和分析的能力。
情感态度价值观目标:1. 培养学生对人事管理工作的兴趣和热情,树立正确的职业观念。
2. 引导学生树立以人为本的管理理念,关注员工发展和企业社会责任。
3. 培养学生具备诚信、公正、负责的人事管理职业道德。
课程性质分析:本课程为人力资源管理专业核心课程,旨在帮助学生系统地掌握人事管理的基本知识和技能,为今后从事相关工作奠定基础。
学生特点分析:学生为高中年级学生,具有一定的学习能力和独立思考能力,对实际案例和情境具有较强的兴趣。
教学要求:1. 结合实际案例进行教学,提高学生的实践操作能力。
2. 鼓励学生参与讨论,培养学生的表达和沟通能力。
3. 强化政策法规教育,提高学生的法治意识。
4. 注重学生情感态度价值观的培养,促使学生全面发展。
二、教学内容1. 人事管理概述- 人事管理的定义、功能和目标- 人事管理的演变与发展趋势- 人事管理与人力资源管理的关系2. 人事管理的组织结构与职能- 人事部门的组织结构- 人事部门的职能和职责- 人事管理岗位设置与职责3. 人事管理的流程与方法- 员工招聘与选拔- 员工培训与发展- 绩效考核与激励- 薪酬福利管理- 劳动关系管理4. 我国人事制度与政策法规- 人事制度改革与发展- 基本人事政策与法规- 人事争议处理与预防5. 现代人事管理技术- 信息技术在人事管理中的应用- 人事数据管理与分析- 人力资源信息系统6. 人事管理案例分析- 国内外知名企业人事管理案例- 案例分析与讨论教学大纲安排:第一周:人事管理概述第二周:人事管理的组织结构与职能第三周:人事管理的流程与方法(一)第四周:人事管理的流程与方法(二)第五周:我国人事制度与政策法规第六周:现代人事管理技术第七周:人事管理案例分析教学内容根据课程目标和教学大纲进行安排,确保内容的科学性和系统性,使学生能够循序渐进地掌握人事管理的相关知识和技能。
人事管理系统c课程设计
![人事管理系统c课程设计](https://img.taocdn.com/s3/m/58cbcf3d1fd9ad51f01dc281e53a580217fc5009.png)
人事管理系统c 课程设计一、课程目标知识目标:1. 让学生理解人事管理系统的基本概念,掌握其功能模块和操作流程。
2. 使学生掌握数据库管理的基本方法,能够运用SQL语句进行数据查询、插入、修改和删除。
3. 帮助学生了解人力资源管理的基本原则,结合实际案例进行分析。
技能目标:1. 培养学生运用C语言编写简单的人事管理系统功能模块的能力。
2. 培养学生具备数据库设计和操作的能力,能够根据实际需求创建数据库表、编写SQL语句。
3. 提高学生的团队协作能力,通过分组讨论、协作完成项目任务。
情感态度价值观目标:1. 培养学生对待人事管理系统开发的认真态度,注重程序规范和代码质量。
2. 培养学生对人力资源管理的兴趣,激发学生探讨实际问题的热情。
3. 引导学生树立正确的职业观,认识到人事管理系统在企业管理中的重要作用。
课程性质分析:本课程为实践性较强的课程,旨在让学生在掌握基本理论知识的基础上,通过实际操作,提高解决实际问题的能力。
学生特点分析:学生具备一定的C语言基础和数据库知识,但对人事管理系统的整体架构和实际应用尚不了解,需要通过本课程的学习,逐步提高。
教学要求:1. 结合实际案例,注重理论知识与实际操作相结合,提高学生的实践能力。
2. 采用任务驱动教学法,激发学生的学习兴趣,引导学生主动探索。
3. 强化团队合作,培养学生的沟通能力和协作精神。
二、教学内容1. 人事管理系统概述- 了解人事管理系统的基本概念、发展历程和实际应用场景。
- 分析人事管理系统的功能模块和业务流程。
2. 数据库基础- 复习数据库的基本概念,如表、字段、记录等。
- 掌握SQL语句的基本操作,包括数据查询、插入、修改和删除。
3. C语言编程实践- 运用C语言编写人事管理系统中的功能模块,如员工信息录入、查询、修改等。
- 学习如何使用C语言调用数据库接口,实现数据存取。
4. 人力资源管理基础知识- 了解人力资源管理的基本原则、方法和技巧。
人事管理c语言课程设计
![人事管理c语言课程设计](https://img.taocdn.com/s3/m/9cb309b277a20029bd64783e0912a21614797fc3.png)
人事管理c语言课程设计一、教学目标本课程旨在通过学习人事管理系统C语言编程,让学生掌握C语言的基本语法、数据结构、算法及面向对象编程思想,培养学生具备运用C语言解决实际问题的能力。
具体目标如下:1.知识目标:–掌握C语言的基本语法和编程规范;–理解并运用数据结构、算法解决编程问题;–学习面向对象编程,了解类和对象的概念及应用。
2.技能目标:–能够运用C语言编写简单的程序,解决实际问题;–熟练使用C语言开发工具,如编译器、调试器等;–掌握C语言编程的基本技巧,提高编程效率。
3.情感态度价值观目标:–培养学生的编程兴趣,激发创新精神;–培养学生团队合作、自主学习的良好学习态度;–使学生认识到计算机编程在现代社会的重要性,提高学生的信息素养。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法及面向对象编程。
具体安排如下:1.C语言基本语法:–变量、数据类型、运算符;–控制语句、函数、数组和字符串;–指针、结构体、共用体和位字段。
2.数据结构:–线性表、栈和队列;–链表、树和图。
–排序和查找算法;–递归算法;–动态规划算法。
3.面向对象编程:–类和对象的概念及创建;–继承、封装和多态;–常用类库和接口。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:教师讲解C语言的基本语法、数据结构、算法及面向对象编程的概念和原理,引导学生掌握编程知识。
2.讨论法:学生分组讨论编程问题,培养学生的团队合作精神和沟通能力。
3.案例分析法:通过分析实际案例,让学生了解编程在实际应用中的重要性,提高学生的信息素养。
4.实验法:安排实验室实践环节,让学生动手编写代码,培养学生的编程能力和实践能力。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的C语言编程教材,如《C程序设计语言》等。
2.参考书:提供相关领域的经典著作和优秀教材,如《C Primer Plus》等。
高校人事管理系统C 实验报告
![高校人事管理系统C 实验报告](https://img.taocdn.com/s3/m/c1ad267c9b6648d7c1c74690.png)
Protected: char name[20]; char sex[10]; int age; Public: setpersonnel(); personnelprint();
返聘时间类
Protected: int month; int year; int day; public: setretime(); retimeprint();
目录
第一章 需求分析.................................................................................................................2 第二章 总体设计.......................................................................................................................2
2.1 系统功能模块...............................................................................................................2 2.3 类之间的关系............................................................................................................. 2 2.3 类的关系图..................................................................................................................3 第三章 各功能模块实现...........................................................................................................4 3.1 模块实现及代码......................................................................................................... 4 3.2 运行结果.............................................................................................................13 第四章 系统调试.....................................................................................................................15 第五章 总结和体会.................................................................................................................15
人事管理系统c课程设计
![人事管理系统c课程设计](https://img.taocdn.com/s3/m/a317d68848649b6648d7c1c708a1284ac85005bb.png)
人事管理系统c 课程设计一、课程目标知识目标:1. 让学生理解人事管理系统的基本概念和功能,掌握系统设计的基本原理;2. 使学生掌握数据库管理、数据查询和更新等基本操作;3. 帮助学生了解我国企事业单位人事管理的相关规定和流程。
技能目标:1. 培养学生运用所学知识设计简单的人事管理系统,具备实际操作能力;2. 提高学生分析问题、解决问题的能力,能够根据实际需求进行系统优化;3. 培养学生团队协作和沟通能力,能在项目中进行有效分工与合作。
情感态度价值观目标:1. 培养学生热爱祖国、热爱人民,树立为人民服务的意识;2. 培养学生具备责任心和敬业精神,养成良好的工作态度;3. 引导学生认识到信息技术在企事业单位人事管理中的重要作用,激发学生深入学习信息技术的兴趣。
课程性质分析:本课程为人事管理系统设计,结合信息技术和企事业单位实际需求,具有较强的实践性和应用性。
学生特点分析:学生为高年级学生,具备一定的信息技术基础和编程能力,对实际应用有较高的兴趣。
教学要求:1. 结合课本内容,注重理论与实践相结合,提高学生的实际操作能力;2. 重视团队协作,培养学生的沟通能力和协作精神;3. 关注学生情感态度价值观的培养,使学生在学习过程中形成正确的价值观。
二、教学内容1. 人事管理系统概述- 了解人事管理系统的定义、功能和发展历程;- 掌握人事管理系统在企事业单位中的应用。
2. 数据库管理基础- 学习数据库的基本概念、设计原则和SQL语言;- 掌握人事管理系统数据库的建立、维护和查询方法。
3. 人事管理系统模块设计- 分析人事管理系统的主要模块及其功能;- 学习系统设计的基本流程和方法,包括需求分析、模块划分、界面设计等。
4. 系统实现与测试- 掌握人事管理系统的编程实现,运用所学编程语言进行开发;- 学习系统测试方法,确保系统稳定可靠。
5. 企事业单位人事管理规范- 了解我国企事业单位人事管理的相关规定和流程;- 掌握人事管理系统在实际应用中的注意事项。
人事管理系统c课程设计
![人事管理系统c课程设计](https://img.taocdn.com/s3/m/3e8a59490a4e767f5acfa1c7aa00b52acec79c76.png)
人事管理系统c 课程设计一、教学目标本课程旨在通过学习人事管理系统C的相关知识,使学生掌握以下知识目标:1.理解人事管理系统C的基本概念和组成部分;2.掌握人事管理系统C的主要功能和操作方法;3.了解人事管理系统C在现代企业管理中的应用和意义。
同时,通过实践操作和案例分析,培养学生以下技能目标:1.能够熟练操作人事管理系统C进行日常的人事管理;2.能够根据企业实际情况,进行人事管理系统的配置和优化;3.能够运用人事管理系统C进行人力资源数据的分析和决策。
在教学过程中,注重培养学生的情感态度和价值观,使学生:1.认识到人事管理系统C在提高企业效率和降低成本方面的重要性;2.培养学生对新技术的敏感度和积极学习的态度;3.培养学生团队合作和解决问题的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.人事管理系统C的基本概念和组成部分;2.人事管理系统C的主要功能和操作方法;3.人事管理系统C在现代企业管理中的应用和意义;4.人事管理系统C的配置和优化方法;5.人事管理系统C的数据分析和决策应用。
教学过程中,将结合具体教材和案例,进行详细的讲解和操作演示,确保学生能够全面掌握相关知识。
三、教学方法为了提高教学效果和学生的参与度,本课程将采用多种教学方法:1.讲授法:通过讲解和案例分析,使学生掌握人事管理系统C的基本概念和主要功能;2.讨论法:通过小组讨论和分享,培养学生的思考和解决问题的能力;3.实验法:通过实际操作和模拟实验,使学生熟练掌握人事管理系统C的操作方法;4.案例分析法:通过分析真实案例,使学生了解人事管理系统C在实际企业管理中的应用。
四、教学资源为了支持本课程的教学,将准备以下教学资源:1.教材:选择适合的教材,为学生提供全面的知识体系;2.参考书:提供相关的参考书籍,丰富学生的知识视野;3.多媒体资料:制作教学PPT和视频资料,提高学生的学习兴趣;4.实验设备:准备计算机和相关设备,为学生提供实际操作的机会。
C++课程设计报告-人事管理系统
![C++课程设计报告-人事管理系统](https://img.taocdn.com/s3/m/d03ebaff3169a4517623a333.png)
(1)系统时钟:在在设定的时间间隔内,系统封面显示达到或超过设定的显示时间,系统
封面会自动释放
(2)功能实现:进入主界面与退出系统。
6.
图模块框架图
7.系统数据分析
所有数据存放到access数据库文件下,由ado连接,通过程序按照要求显 示给用户。找到用户需要的数据。
二、系统设计
{
DataModule3->ADOQuery1->Next();
StatusBar1->Panels->Items[0]->Text="数据指向下一个";
}
void __fastcall TFmain::SpeedButton4Click (TObject *Sender)
{
DataModule3->ADOQuery1->Last();
}
void __fastcall TFmain::N9Click (T Object *Sender)
{
//帮助内容
ShowMessage("\
大家好,虽然只是一个简单的程序但是也要写帮助。\n\
简单的操作如下:\n\
一、打开程序。\n\
二、可以进行数据的添加、删除、浏览、查找\n\
三、关闭。\n\
Action=caNone;
}
void__fastcall TFmain::N10Click (T Object *Sender)
{
AboutBox->ShowModal() ; //显示关于对话框
}
void __fastcall TFmain::Button4Click (T Object *Sender)
人事管理系统c课程设计
![人事管理系统c课程设计](https://img.taocdn.com/s3/m/b30e1328a517866fb84ae45c3b3567ec102ddcd1.png)
人事管理系统c课程设计一、教学目标本课程旨在通过学习人事管理系统的设计与实现,使学生掌握人力资源管理的基本理论知识,培养学生运用计算机技术进行人事管理的能力。
具体目标如下:1.知识目标:(1)理解人力资源管理的基本概念、原则和方法。
(2)熟悉人事管理系统的基本功能和模块。
(3)掌握数据库设计、编程语言以及软件工程相关知识。
2.技能目标:(1)能够运用人力资源管理理论知识分析和解决实际问题。
(2)具备人事管理系统的设计和开发能力。
(3)学会使用相关编程工具和数据库管理系统。
3.情感态度价值观目标:(1)培养学生热爱祖国、为人民服务的情感态度。
(2)培养学生团结协作、积极进取的精神风貌。
(3)培养学生诚实守信、遵纪守法的良好品质。
二、教学内容本课程主要内容包括:人力资源管理基本理论、人事管理系统设计方法、数据库设计、编程语言以及软件工程相关知识。
具体安排如下:1.人力资源管理基本理论:介绍人力资源管理的基本概念、原则和方法,包括招聘、培训、考核、薪酬等方面。
2.人事管理系统设计方法:讲解人事管理系统的设计思路、流程和技巧,包括需求分析、系统设计、编码和测试等环节。
3.数据库设计:学习数据库的基本概念、设计方法和技巧,掌握数据库管理系统的基本操作。
4.编程语言:学习常用的编程语言,如Java、C++等,掌握基本的编程思想和方法。
5.软件工程:了解软件工程的原理和方法,学会使用相关的软件工程工具。
三、教学方法本课程采用多种教学方法,如讲授法、案例分析法、实验法等,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:通过讲解理论知识,使学生掌握基本概念和原理。
2.案例分析法:通过分析实际案例,使学生学会运用理论知识分析和解决实际问题。
3.实验法:通过动手实践,使学生掌握编程语言和数据库管理系统的基本操作。
四、教学资源本课程所需教学资源包括:教材、参考书、多媒体资料、实验设备等。
具体资源如下:1.教材:选用国内权威出版的教材,如《人力资源管理》、《数据库原理》等。
C公司人员信息管理系统-课程设计报告
![C公司人员信息管理系统-课程设计报告](https://img.taocdn.com/s3/m/1799929ef46527d3250ce064.png)
C公司人员信息管理系统-课程设计报告(共73页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--目录1 系统需求分析 (1)2 总体设计 (2)3 详细设计及实现 (5)4 系统调试 (80)5 结论 (73)6心得体会 (84)7参考书目 (75)1 系统需求分析系统设计的目的与意义:现在的公司人员数量及职位种类较多,各样的人事管理活动也比较频繁,因此需要设计一个公司人员信息管理系统来对公司员工信息进行管理。
系统功能需求:本系统有五个类:基类:employee、派生类:manager、technician、salesman、salesmanager,储存经理、技术人员、销售人员、销售经理信息。
(1)添加功能程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。
(2)查询功能可根据编号、姓名等信息对已添加的记录进行查询。
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能可显示当前系统中所有记录。
(4)修改功能可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除功能对已添加的人员记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。
(6)统计功能能根据多种参数进行人员的统计。
例如:统计四类人员数量以及总数,统计男、女员工的数量,统计平均工资、最高工资、最低工资等。
(7)保存功能将当前系统中各类人员记录存入文件中。
(8)读取功能将保存在文件中的人员信息读入到当前系统中,以供用户使用。
2 总体设计系统功能分析:系统通过调用函数来实现信息添加、信息查询、信息显示、信息修改、信息删除、以及数据读取保存文件等功能。
c语言课程设计人事管理系统
![c语言课程设计人事管理系统](https://img.taocdn.com/s3/m/08945d7858eef8c75fbfc77da26925c52dc5910d.png)
湘南学院C语言课程设计课程:人事管理系统姓名:学号:系别:计算机科学与技术专业:计算机科学与技术级别:时间:2012年6月5日目录1…………………………………………………成员分工表2…………………………………………………系统功能分析3…………………………………………………函数简介4…………………………………………………系统流程图5…………………………………………………原代码6…………………………………………………各成员总结成员分工表一、系统功能分析人事管理系统的主要任务是对人事档案进行整理,使得能方便快捷地对人事档案进行查询、统计、更新,并且能按一定要求输出报表。
通过该系统,使企业的人事管理工作系统化、规范化、自动化,从而提高企业人事管理的效率。
本系统分为如下的几大模块:档案查询,输入新员工的信息,删除员工信息和浏览员工信息。
其中的主要模块包括:1、主界面模块该模块提供管理系统的主界面,是主系统的唯一入口,该界面提供用户登陆和新用户的注册。
2、查询模块该模块提供查询符合某一条件的人事档案的界面,其中包括两种查询方式,一种是按姓名查找,另一种是按职工号查找。
3、输\插入模块该模块主要功能是输入新员工的信息。
4、删除模块该模块主要是删除员工的信息。
5、浏览模块该模块提供全部人事档案的界面。
6、退出系统二、函数简介该系统运用了三个结构体数组和10个函数,结构体数组包括:denglu数组、yuefen1数组和worker数组,denglu 数组中有两个元素:用户名username[10]和密码key[5];yuefen1数组中只有一个元素:月份,而worker数组中包含有二十个元素:职工号gonghao,姓名xingming[20],应发工资yfgz,实发工资sf,电费df,税金sj,性别sex[4],职位position[10],部门department[10],工作时间wokestate[20],联系电话tel[13],身份证号shenfenzheng[20],银行卡号kahao[10],QQ 号码qq[10],年龄age,邮箱email[20],政治面貌plotical[10],籍贯jiguan[40],婚否ifmarry[5],住址address[40],实发工资sfgz。
(完整word版)C语言课程设计人事管理系统
![(完整word版)C语言课程设计人事管理系统](https://img.taocdn.com/s3/m/1204dbfbbb4cf7ec4afed072.png)
Char job[10]; //职务
Char post[10]; //职称
Char politic[10]; //政治面貌
Char edu_level[1ቤተ መጻሕፍቲ ባይዱ]; //最高学历
Char period[10]; //任职时间
Char start_time[10]; //来院时间
printf("年龄: ");
scanf("%d",&PAInfo[changeIndex].age);
printf("部门:");
scanf("%d",PAInfo[changeIndex].job);
Char type[10]; //人员类别
}PAInfo;
主要代码结构
1.主函数
为使系统执行完每部分功能后能够方便的回到系统主界面,main()函数设计的较简单,只包含一个menu()函数,其余的全部功能都通过menu()函数调用来实现,并通过menu()函数的递归调用实现返回主界面的功能。
void main()
printf("请重新输入该人事信息");
printf("编号:");
scanf("%s",PAInfo[changeIndex].NO);
printf("姓名:");
scanf("%s",PAInfo[changeIndex].name);
printf("性别:");
scanf("%s",PAInfo[changeIndex].sex);
fh();//统计
c语言职工人事管理系统课程设计报告书
![c语言职工人事管理系统课程设计报告书](https://img.taocdn.com/s3/m/f2a41554ad02de80d4d840f6.png)
目录一、实验目的 (3)二、实验课题简介 (3)三、实验内容 (3)1、实验总体设计 (3)2、涉及函数模块的功能及流程图 (4)3、原程序清单 (5)4、程序测试结果 (17)四、实验结论 (17)五、实验体会及建议 (17)六、参考文献 (17)一实验目的:1、进一步掌握计算机程序设计基础基本概念,理解其原理与方法。
2、进一步理解和巩固所学的理论知识,掌握高级语言程序设计的编程技巧。
3、培养分析解决实际问题的能力,培养进行高级语言程序设计的实际编程能力。
二. 实验任务1.用C语言设计一个综合应用程序。
主要设计内容有数据库管理程序设计、图形设计、科学计算程序设计、简单游戏程序设计等。
2.学生可以结合自己的专业及兴趣爱好自由命题,也可以从已给几类题目中任选一题,下面题目只是基本要求,鼓励同学自主创新、自由发挥。
三. 实验要求1. 要求学生自主完成以下工作:1)查阅资料,选定题目。
2)制定方案,进行程序总体设计和详细设计。
3)程序详细设计,调试,运行。
4)撰写设计报告。
2. 实验报告内容包括:封面、实验目的、实验内容、设计方案制定、总体设计、详细设计、源程序清单(要求有详细注释)、总结与体会。
二实验课题简介1. 课题名称:数据库管理软件--------职工人事管理系统设计2. 功能:实现简单的职工人事信息管理,基本信息包括职工编号、姓名、性别、年龄、身份证号和简历(50字以内)基本要求:1.设计简单的菜单,能够进行系统功能选择。
2.实现信息的录入功能。
3.在已有信息的基础上添加新的记录。
4.删除指定编号的记录。
5.修改指定编号的记录6.实现信息的浏览功能7.按编号查询功能8.按身份证号排序功能3.相关知识:结构体、数组、常用算法(排序、查找、删除)三实验内容:1. 实验总体设计:实现简单的学生宿舍基本信息管理用数组、指针、结构体等相关知识完成如下内容:1)、简单菜单界面,按1-7、0键选择选项2)、实现各个函数的功能2.函数模块:主模块:main()/*主函数*/其它模块:struct worker/*建立结构体*/Appendworker()/*输入职工信息*/Printworker()/*输出职工信息*/Sortworker()/*按入职工人数排序*/Searchworker()/*查找职工信息*/Deleteworker()/*删除职工人数信息*/Addworker()/*添加职工信息*/Amendworker()/*修改职工信息*/char Menu() /*显示菜单*/算法说明Step 1 输出主菜单Step 2 按1-7、0键选择Step 3 实现各个函数的功能各函数功能及流程图struct worker/*建立结构体*/ Appendworker()/*输入职工信息*/ Printworker()/*输出职工信息*/ Sortworker()/*按入职工人数排序*/ Searchworker()/*查找职工信息*/ Deleteworker()/*删除职工人数信息*/ Addworker()/*添加职工信息*/ Amendworker()/*修改职工信息*/ char Menu() /*显示菜单*/流程图程序测试(1)静态检查;(2)静态检查无误后,上机调试;(3)改正语法错误;运行。
人事管理系统c课程设计
![人事管理系统c课程设计](https://img.taocdn.com/s3/m/cf6ed459eef9aef8941ea76e58fafab069dc44e9.png)
人事管理系统c课程设计一、课程目标知识目标:1. 让学生理解人事管理系统的基本概念和功能,掌握其在我国企业中的应用情况。
2. 使学生掌握数据库管理、数据查询和更新等基本操作,并能运用到人事管理系统c课程设计中。
3. 帮助学生了解软件工程的基本原理,掌握系统分析与设计的方法,为今后从事软件开发工作打下基础。
技能目标:1. 培养学生运用所学知识,结合实际需求,独立设计并实现一个简单的人事管理系统。
2. 提高学生运用编程语言(C语言)进行系统开发的能力,熟练掌握相关开发工具和调试技巧。
3. 培养学生团队协作和沟通能力,能在项目中进行有效的分工与合作。
情感态度价值观目标:1. 激发学生对计算机科学和软件工程的兴趣,培养其主动学习的习惯和探究精神。
2. 培养学生具备良好的职业道德和职业素养,认识到人事管理系统在企业管理中的重要性。
3. 引导学生关注社会发展,了解企业需求,树立正确的就业观念,为未来职业生涯规划做好准备。
课程性质:本课程为实践性较强的课程,旨在让学生通过实际操作,掌握人事管理系统c课程设计的方法和技巧。
学生特点:学生具备一定的计算机基础和编程能力,对人事管理系统有一定了解,但实际操作经验不足。
教学要求:结合学生特点和课程性质,采用案例教学、任务驱动、分组合作等教学方法,注重培养学生的实践能力和团队协作精神。
在教学过程中,分解课程目标为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 人事管理系统概述:介绍人事管理系统的基本概念、发展历程、功能模块及应用场景。
教材章节:第一章 人事管理系统概述2. 数据库基础:讲解数据库的基本原理,重点掌握SQL语言及数据库设计方法。
教材章节:第二章 数据库基础3. C语言编程基础:复习C语言编程基础,包括数据类型、运算符、控制结构、函数等。
教材章节:第三章 C语言编程基础4. 人事管理系统设计与实现:分析人事管理系统的需求,学习软件工程的基本原理,进行系统设计与实现。
C语言课程设计报告—人事管理系统1
![C语言课程设计报告—人事管理系统1](https://img.taocdn.com/s3/m/cf4bf96503020740be1e650e52ea551810a6c99f.png)
人事管理系统前言:现代计算机技术的发展为人们的学习、生活、工作提供了很大的帮助, 各行各业都需要特定计算系统的运用, 我们需要了解这些系统是怎么样为我们服务以及他们是怎样编辑出来的。
我们需要学习C语言编程, 根据课堂讲授内容, 做相应的自主练习, 消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题, 逐渐培养编程能力、用计算机解决实际问题的能力, 能够按照要求编辑一些基本的程序, 提高自己的思维能力。
题目:(1)某高校主要人员有: 在职人员(行政人员、教师、一般员工)、退休人员及临时工。
现在需要储存这些人员的人事档案信息, 内容包括编号、姓名、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。
其中, 人员编号唯一, 不能重复。
(2)添加删除功能:能根据学院人事的变动情况, 添加删除记录。
(3)查询功能: 能根据编号和姓名进行查询。
(4)编辑功能(高级): 根据查询对相应的记录进行修改并记录。
(5)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数, 高学历高职称人数), 统计要求同时显示被统计着的信息。
排序功能: 按照年龄、来院时间进行排序。
保存功能: 能对输入的数据进行相应的存储。
分析:我们编辑的程序要能够满足题目的要求, 可以进行这么多的功能的计算!但是在开始我们运行使用程序的时候必须要知道我们要运用这些功能中的哪一个!这就要求我们可以程序中任意选择我们所需要的功能!很显然我们要编辑存储人员的信息自然要运用到文件!而人员的信息必须要以结构体的形式来表示才能够方便我们提取信息!我们选择了要运行的功能分支之后!这些功能是以主函数以外的被调函数!当有需要时被调函数还可以调用其他的被吊函数!例如我们题目中的统计和查询功能, 就可以用这种方式来编辑程序!方便清楚!设计:很显然主程序要用到SWICTH函数, 这样可以选择要运行的那个功能的函数来执行, 而其他的功能函数则不必运行!三、解题思路1.定义结构struct staff{char num[10];char name[20];char sex[10];int age;char title[20];char p_landscape[30];char Qualifications[30];int Service_time;char come_time[30];char category[30];}staff[100];2.主程序进入主菜单函数void main(){menu();}/*******************主菜单函数**********************/void menu(){char w0;do{system("cls");fflush(stdin); /*清除缓冲区输入*/puts("***********************高校人事管理系统**********************\n\n");puts("\t\t\t\t1)增加人员信息\n"); puts("\t\t\t\t2)删除人员信息 \n"); puts("\t\t\t\t3)查询人员信息\n"); puts("\t\t\t\t4)修改人员信息\n"); puts("\t\t\t\t5)统计人员信息\n"); puts("\t\t\t\t6)对人员排序\n");puts("\t\t\t\t7)保存人员信息\n"); puts("\t\t\t\t8)浏览人员信息\n"); puts("\t\t\t\t9)退出\n");printf("\t\t\t\t 请选择 [ ]\b\b"); w0=getchar();}while(w0<'1'||w0>'9'); switch(w0-48){case 1:add();break;case 2:delete_data();break;case 3:search();break;case 4:modify();break; case 5:stastic();break;case 6:sort();break;case 7:save();break;case 8:browse();break;case 9:break;} }(1)查询功能int search_data()/*{int i,flag; char s[30],w0;system("cls");/*清屏*/ n=load(); do{fflush(stdin); /*清除缓冲区输入*/printf(" 通过1)编号 2)姓名 [ ]\b\b"); w0=getchar(); }while(w0<'1'||w0>'2'); if(w0=='1'){/*按编号查找*/ flag=0;puts("输入人员编号:"); scanf("%s",s); for(i=0;i<n;i++){if(strcmp(s,staff[i].num)==0){printf_face();printf_one(staff[i]); flag=1;break;} else continue; }if(flag==0)puts("该人员不存在!"); }else {/*按姓名查找*/ flag=0;puts("输入人员姓名:"); scanf("%s",s); for(i=0;i<n;i++){if(strcmp(s,staff[i].name)==0){printf_face();printf_one(staff[i]);flag=1;break;}else continue;}if(flag==0) puts("该人员不存在!");}return i;void search(){int k;char w1;loop: k=search_data();do{fflush(stdin); /*清除缓冲区输入*/printf("1)回主菜单 2)退出 3)继续查询 [ ]\b\b"); w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')menu();else if(w1=='2')exit(0);void add(){char w0,w1;loop: system("cls");puts("请输入编号(如001):");scanf("%s",s.num);if(test(s.num))goto loop;/*编号重复*/puts("请输入姓名:");scanf("%s",);puts("请输入性别(男,女):");scanf("%s",s.sex);puts("请输入年龄:");scanf("%d",&s.age);puts("请输入职务(教授副教授讲师助教学生后勤人员):");scanf("%s",s.duty);puts("请输入职称 (无初级高级 ):");scanf("%s",s.title);puts("请输入政治面貌( 党员非党员 ):");scanf("%s",s.p_landscape);puts("请输入最高学历(小学初中高中大学硕士学位更高):");scanf("%s",s.Qualifications);puts("请输入任职时间:");scanf("%d",&s.Service_time);puts("请输入来院时间(如20050101):");scanf("%s",e_time);puts("请输入人员类别(行政人员教师一般员工退休人员临时工):");scanf("%s",s.category);do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');switch(w0){case 1:save(s);break;case 2:break;}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续增加人员信息 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')goto loop;else if(w1=='2')menu();else exit(0);}(3)保存信息void save(){char w0;save_all();printf("所有信息已保存!\n");do{fflush(stdin); /*清除缓冲区输入*/printf("1) 回主菜单 2) 退出 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1')menu();else exit(0);}void save_all()/*保存所有数据函数*/{int i;FILE *fp;if((fp=fopen("text.txt","wb"))==NULL){printf("无法打开文件!");exit(0);}for(i=0;i<n;i++){if(staff[i].age!=0)fprintf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",staff[i].num,staff[i].name, staff[i].sex,staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,sta ff[i].Qualifications,staff[i].Service_time,staff[i].come_time,staff[i].category );else continue;}fclose(fp);}(4)删除人员void delete_data(){int k; char w0,w1;loop: k=search_data();if(k<n){do{fflush(stdin); /*清除缓冲区输入*/printf("确认要删除该人员信息? 1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){staff[k].age=0;save_all();puts("该人员信息已被删除!");} } do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续删除数据 2)回主菜单 3)退出w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1') goto loop; else if(w1=='2')menu(); else exit(0); }(5)修改人员信息 void modify() {int k=0,w0,g; char h[30],w1,w2; loop: g=search_data(); if(g<n){ do{puts("\t\t\t 修改: 1)编号"); puts("\t\t\t 2)姓名"); puts("\t\t\t 3)性别"); puts("\t\t\t 4)年龄"); puts("\t\t\t 5)职务"); puts("\t\t\t 6)职称"); puts("\t\t\t 7)政治面貌"); puts("\t\t\t 8)最高学历"); puts("\t\t\t 9)任职时间"); puts("\t\t\t 10)来院时间"); puts("\t\t\t 11)人员类别"); printf(" 请选择 : [ ]\b\b"); scanf("%d",&w0);}while(w0<1||w0>11); switch(w0){case 1:puts("请输入新编号:");scanf("%s",h);strcpy(staff[g].num,h);break; case 2:puts("请输入姓名:");scanf("%s",h);strcpy(staff[g].name,h);break; case 3:puts("请输入性别:");scanf("%s",h);strcpy(staff[g].sex,h);break; case 4:puts("请输入年龄:");scanf("%d",&k);staff[g].age=k;break; case 5:puts("请输入职务:");scanf("%s",h);strcpy(staff[g].duty,h);break; case 6:puts("请输入职称:");scanf("%s",h);strcpy(staff[g].title,h);break;scanf("%s",h);strcpy(staff[g].p_landscape,h);break;case 8:puts("请输入最高学历:");scanf("%s",h);strcpy(staff[g].Qualifications,h);break;case 9:puts("请输入任职时间:");scanf("%d",&k);staff[g].Service_time=k;break;case 10:puts("请输入来院时间:");scanf("%s",h);strcpy(staff[g].come_time,h);break;case 11:puts("请输入人员类别:");scanf("%s",h);strcpy(staff[g].category,h);break;}do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)保存 2)否[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'2');if(w1=='1'){save_all(); puts("保存修改成功!");}}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续修改 2)回主菜单 3)退出[ ]\b\b");w2=getchar();}while(w2<'1'||w2>'3');if(w2=='1')goto loop;else if(w2=='2')menu();else exit(0);}(6)统计人员信息void stastic(){int i,count;char w0,w1;n=load();if(n==0){puts("没有数据!");getchar();menu();}loop: system("cls");do{fflush(stdin); /*清除缓冲区输入*/printf("通过1)在职人员 2)党员\n");printf(" 3)女工人数 4)最高学历 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'4');if(w0=='1'){/*统计在职人员*/printf_face();for(i=0,count=0;i<n&&staff[i].age;i++)if(strcmp(staff[i].category,"退休人员")!=0&&strcmp(staff[i].category,"临时工")!=0){count++; printf_one(staff[i]);} printf("\t\t\t\t 共有%d 条记录",count); }else if(w0=='2'){/*统计党员*/ printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].p_landscape,"党员count++; printf_one(staff[i]);} printf("\t\t\t\t 共有%d 条记录",count);}else if(w0=='3'){/*统计女工人员*/ printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].sex,"女")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t 共有%d 条记录",count);}else {/*统计高学历人员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].Qualifications,"硕士学位")==0||strcmp(staff[i].Qualifications,"更高")==0){count++; printf_one(staff[i]);} printf("\t\t\t\t 共有%d 条记录",count);} do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)继续统计 2)回主菜单 3)退出 [ ]\b\b"); w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1') goto loop; else if(w1=='2')menu(); else exit(0); }(6) 排序功能void sort() {int i,j;char w0,w1; struct staff s1; loop: n=load();system("cls"); do{fflush(stdin); /*清除缓冲区输入*/printf("通过 1)年龄 2)来院时间w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){/*按年龄排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(staff[i].age>staff[j].age){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}else {/*按来院时间排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(strcmp(staff[i].come_time,staff[j].come_time)>0){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}printf_face();for(i=0;i<n;i++) /*显示排序结果*/printf_one(staff[i]);do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)回主菜单 2)继续排序 3)退出[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') menu();else if(w1=='2')goto loop;else exit(0);}四、运行与测试报告*********************************高校人事管理系统******************************1)增加人员信息2)删除人员信息3)查询人员信息4)修改人员信息5)统计人员信息6)对人员排序7)保存人员信息8)浏览人员信息9)退出请选择【 1】请输入编号(如001):20071003335请输入姓名:majianbo请输入性别(男,女):nan请输入年龄:20请输入职务(教授副教授讲师助教学生后勤人员): jiaoshou请输入职称 (无初级高级 ):gaoji请输入政治面貌( 党员非党员 ):danyuan请输入最高学历(小学初中高中大学硕士学位更高): shuoshi请输入任职时间:20070901请输入来院时间(如20050101):20070901请输入人员类别(行政人员教师一般员工退休人员临时工): jiaoshi是否保存?1)是 2)否 [1]该信息已成功保存!1)继续增加人员信息 2)回主菜单 3)退出 [ ]程序:#include<stdlib.h>#include <stdio.h>#include <string.h>struct staff/*定义结构体*/{char num[10];/*编号*/char name[20];/*姓名*/char sex[10];/*性别*/int age;/*年龄*/char duty[20];/*职务*/char title[20];/*职称*/char p_landscape[30];/*政治面貌*/char Qualifications[30];/*学历*/int Service_time;/*任职时间*/char come_time[30];/*来院时间*/char category[30];/*人员类别*/}staff[100];struct staff s;int n;void menu();void printf_face()/*显示数据结构项目函数*/{printf("编号姓名性别年龄职务职称政治面貌学历任职时间来院时间人员类别\n");}void printf_one(struct staff p)/*输出单个数据函数*/{printf("%-4s%-7s%-5s%-3d%-7s%-5s%-8s%-12s%-5d%-12s%-3s\n",p.num,,p.se x,p.age,p.duty,p.title,p.p_landscape,p.Qualifications,p.Service_time,e_tim e,p.category);}int load()/*加载函数*/{int i=0;FILE *fp;if((fp=fopen("text.txt","rb"))==NULL){return 0; exit(0);}for(i=0;!feof(fp);i++){ /*输出数据到结构体*/fscanf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",staff[i].num,staff[i].name,staff [i].sex,&staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,staff[i ].Qualifications,&staff[i].Service_time,staff[i].come_time,staff[i].category);} fclose(fp);return i;}int search_data()/*查找单个数据函数*/{int i,flag;char s[30],w0;system("cls");/*清屏*/n=load();do{fflush(stdin); /*清除缓冲区输入*/printf(" 通过1)编号 2)姓名 [ ]\b\b");w0=getchar(); }while(w0<'1'||w0>'2');if(w0=='1'){/*按编号查找*/flag=0;puts("输入人员编号:");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,staff[i].num)==0){printf_face();printf_one(staff[i]);flag=1;break;}else continue;}if(flag==0)puts("该人员不存在!");}else {/*按姓名查找*/flag=0;puts("输入人员姓名:");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,staff[i].name)==0){printf_face();printf_one(staff[i]);flag=1;break;}else continue;}if(flag==0) puts("该人员不存在!");}return i;}void save_all()/*保存所有数据函数*/{int i;FILE *fp;if((fp=fopen("text.txt","wb"))==NULL){printf("无法打开文件!");exit(0);}for(i=0;i<n;i++){if(staff[i].age!=0)fprintf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",staff[i].num,staff[i].name, staff[i].sex,staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,sta ff[i].Qualifications,staff[i].Service_time,staff[i].come_time,staff[i].category );else continue;}fclose(fp);}int test(char h[10])/*检查编号是否重复*/{int i;n=load();for(i=0;i<n;i++)if(strcmp(h,staff[i].num)==0){puts("输入的编号有重复!请重新输入编号!");system("pause");return 1;}return 0;}void single_save(struct staff p)/*保存单个数据函数*/{FILE *fp;if((fp=fopen("text.txt","ab+"))==NULL){printf("无法打开文件!");exit(0);}fprintf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",p.num,,p.sex,p.age,p.duty ,p.title,p.p_landscape,p.Qualifications,p.Service_time,e_time,p.category);printf("该信息已成功保存!\n");fclose(fp);}/*********************************修改模块**********************************/ void modify(){int k=0,w0,g;char h[30],w1,w2;loop: g=search_data();if(g<n){do{puts("\t\t\t修改: 1)编号");puts("\t\t\t 2)姓名");puts("\t\t\t 3)性别");puts("\t\t\t 4)年龄");puts("\t\t\t 5)职务");puts("\t\t\t 6)职称");puts("\t\t\t 7)政治面貌");puts("\t\t\t 8)最高学历");puts("\t\t\t 9)任职时间");puts("\t\t\t 10)来院时间");puts("\t\t\t 11)人员类别");printf(" 请选择 : [ ]\b\b");scanf("%d",&w0);}while(w0<1||w0>11);switch(w0){case 1:puts("请输入新编号:");scanf("%s",h);strcpy(staff[g].num,h);break;case 2:puts("请输入姓名:");scanf("%s",h);strcpy(staff[g].name,h);break;case 3:puts("请输入性别:");scanf("%s",h);strcpy(staff[g].sex,h);break;case 4:puts("请输入年龄:");scanf("%d",&k);staff[g].age=k;break;case 5:puts("请输入职务:");scanf("%s",h);strcpy(staff[g].duty,h);break;case 6:puts("请输入职称:");scanf("%s",h);strcpy(staff[g].title,h);break;case 7:puts("请输入政治面貌:");scanf("%s",h);strcpy(staff[g].p_landscape,h);break;case 8:puts("请输入最高学历:");scanf("%s",h);strcpy(staff[g].Qualifications,h);break;case 9:puts("请输入任职时间:");scanf("%d",&k);staff[g].Service_time=k;break;case 10:puts("请输入来院时间:");scanf("%s",h);strcpy(staff[g].come_time,h);break;case 11:puts("请输入人员类别:");scanf("%s",h);strcpy(staff[g].category,h);break;}do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)保存 2)否[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'2');if(w1=='1'){save_all(); puts("保存修改成功!");}}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续修改 2)回主菜单 3)退出[ ]\b\b");w2=getchar();}while(w2<'1'||w2>'3');if(w2=='1')goto loop;else if(w2=='2')menu();else exit(0);}/************************保存模块******************************/void save(){char w0;save_all();printf("所有信息已保存!\n");do{fflush(stdin); /*清除缓冲区输入*/printf("1) 回主菜单 2) 退出 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1')menu();else exit(0);}/*************************查找模块*****************************/ void search(){int k;char w1;loop: k=search_data();do{fflush(stdin); /*清除缓冲区输入*/printf("1)回主菜单 2)退出 3)继续查询 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')menu();else if(w1=='2')exit(0);else goto loop;}/***************************增加模块*****************************/ void add(){char w0,w1;loop: system("cls");puts("请输入编号(如001):");scanf("%s",s.num);if(test(s.num))goto loop;/*编号重复*/puts("请输入姓名:");scanf("%s",);puts("请输入性别(男,女):");scanf("%s",s.sex);puts("请输入年龄:");scanf("%d",&s.age);puts("请输入职务(教授副教授讲师助教学生后勤人员):");scanf("%s",s.duty);puts("请输入职称 (无初级高级 ):");scanf("%s",s.title);puts("请输入政治面貌( 党员非党员 ):");scanf("%s",s.p_landscape);puts("请输入最高学历(小学初中高中大学硕士学位更高):");scanf("%s",s.Qualifications);puts("请输入任职时间:");scanf("%d",&s.Service_time);puts("请输入来院时间(如20050101):");scanf("%s",e_time);puts("请输入人员类别(行政人员教师一般员工退休人员临时工):");scanf("%s",s.category);do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');switch(w0-48){case 1:single_save(s);break;case 2:break;}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续增加人员信息 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')goto loop;else if(w1=='2')menu();else exit(0);}/*******************************删除模块*****************************/void delete_data(){int k; char w0,w1;loop: k=search_data();if(k<n){do{fflush(stdin); /*清除缓冲区输入*/printf("确认要删除该人员信息? 1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){staff[k].age=0;save_all();puts("该人员信息已被删除!");}}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续删除数据 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') goto loop;else if(w1=='2')menu();else exit(0);}/********************************统计模块*******************************/void stastic(){int i,count;char w0,w1;n=load();if(n==0){puts("没有数据!");getchar();menu();}loop: system("cls");do{fflush(stdin); /*清除缓冲区输入*/printf("通过1)在职人员 2)党员\n");printf(" 3)女工人数 4)最高学历 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'4');if(w0=='1'){/*统计在职人员*/printf_face();for(i=0,count=0;i<n&&staff[i].age;i++)if(strcmp(staff[i].category,"退休人员")!=0&&strcmp(staff[i].category,"临时工")!=0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}else if(w0=='2'){/*统计党员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].p_landscape,"党员")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}else if(w0=='3'){/*统计女工人员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].sex,"女")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}else {/*统计高学历人员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].Qualifications,"硕士学位")==0||strcmp(staff[i].Qualifications,"更高")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)继续统计 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') goto loop;else if(w1=='2')menu();else exit(0);}/*******************************排序模块***********************************/ void sort(){int i,j;char w0,w1;struct staff s1;loop: n=load();system("cls");do{fflush(stdin); /*清除缓冲区输入*/printf("通过 1)年龄 2)来院时间 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){/*按年龄排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(staff[i].age>staff[j].age){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}else {/*按来院时间排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(strcmp(staff[i].come_time,staff[j].come_time)>0){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}printf_face();for(i=0;i<n;i++) /*显示排序结果*/printf_one(staff[i]);do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)回主菜单 2)继续排序 3)退出[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') menu();else if(w1=='2')goto loop;else exit(0);}/********************************浏览模块**************************************/void browse(){int i;char w0;n=load();system("cls");printf_face();for(i=0;i<n ;i++)printf_one(staff[i]);printf("\t\t\t\t共有%d条人员记录\n",n);do{fflush(stdin); /*清除缓冲区输入*/printf(" 1)回主菜单 2)退出 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1') menu();if(w0=='2') exit(0);}/********************************主菜单函数*************************************/void menu(){char w0;do{system("cls");fflush(stdin); /*清除缓冲区输入*/puts("*********************************高校人事管理系统*******************************\n\n");puts("\t\t\t\t1)增加人员信息\n");puts("\t\t\t\t2)删除人员信息 \n");puts("\t\t\t\t3)查询人员信息\n");puts("\t\t\t\t4)修改人员信息\n");puts("\t\t\t\t5)统计人员信息\n");puts("\t\t\t\t6)对人员排序\n");puts("\t\t\t\t7)保存人员信息\n");puts("\t\t\t\t8)浏览人员信息\n");puts("\t\t\t\t9)退出\n");printf("\t\t\t\t请选择 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'9');switch(w0-48){case 1:add();break;case 2:delete_data();break;case 3:search();break;case 4:modify();break;case 5:stastic();break;case 6:sort();break;case 7:save();break;case 8:browse();break;case 9:break;}}/***********************************主函数****************************************/void main(){menu();}。
C语言课程设计人事管理报告
![C语言课程设计人事管理报告](https://img.taocdn.com/s3/m/688ed0d0d15abe23482f4d13.png)
C语言程序设计上机实习报告指导教师:吴杰学生姓名:董建光学生学号:20051000746班级序号:023052题目编号:23 人事管理系统一.题目要求设计某高校的人事管理系统,实现人员档案信息的添加删除,查询,编辑,统计,排序,保存等功能模块,本程序有功能菜单实现,数据输入和结果输出均用文件存放。
(1)添加删除功能:根据人事变动的情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)统计功能:能根据多种参数进行人员的统计,统计要求同时显示被统计者信息;(4)编辑功能:根据查询对相应的记录进行修改,并储存;(5)排序功能:按照年龄,来院时间进行排序;(6)保存功能:能对输入的数据进行相应的存储;二.需求实践分析需要熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、数组、结构体等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
根据题目要求,由于人事信息是存放在文件中,所以应提供文件的输入和输出等操作;在程序中需要浏览职工的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择。
三.总体设计割据上面的需求分析,可以将这个系统的设计分为追加模块,修改模块,删除模块,查找四.感受与总结优点:如果修改成功,则此算法功能强大而齐备,能够比较全面的对数据信息进行处理,能够综合我们学习的文件处理知识,对于知识与技巧的掌握很有帮助。
缺点:各个功能模块之间有重叠,使程序比较缀余,而且编译浪费时间。
此外本程序的主要漏洞在于加载函数,保存函数及所用到的几个基本函数,其运行出错在于函数总体结构有问题。
感受:我认为可以将所有的函数全部写成一个函数的嵌套形式,使得程序更加简洁,可惜我还不能实现,可以不用菜单,只留下查找函数将其他的加入其内部,使用者也比较容易看懂。
此外还应该考虑一下查找和排序的效率问题,排序我用的是快速排序法可以短时间内处理大量数据,但查找就比较麻烦,还需改进,请老师帮忙改进。
c人事管理系统课程设计
![c人事管理系统课程设计](https://img.taocdn.com/s3/m/473051849a89680203d8ce2f0066f5335b81675d.png)
c人事管理系统课程设计一、教学目标本课程旨在通过学习c人事管理系统,使学生掌握相关的知识、技能以及情感态度价值观。
具体目标如下:1.理解c人事管理系统的基本概念和原理;2.掌握c人事管理系统的主要组成部分及其功能;3.了解c人事管理系统的发展历程和趋势。
4.能够熟练使用c人事管理系统软件;5.能够独立完成c人事管理系统的安装、配置和维护;6.能够根据实际需求,设计和实施c人事管理系统。
情感态度价值观目标:1.培养学生对c人事管理系统的兴趣和热情;2.培养学生对工作的责任心和敬业精神;3.培养学生团队协作和沟通的能力。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.c人事管理系统的基本概念和原理:介绍c人事管理系统的基本概念,如人事管理、人力资源管理等,以及其原理和作用。
2.c人事管理系统的主要组成部分及其功能:详细讲解c人事管理系统的主要组成部分,如员工信息管理、薪酬管理、考勤管理等,并阐述其功能和应用。
3.c人事管理系统的发展历程和趋势:介绍c人事管理系统的发展历程,分析其未来发展趋势,让学生了解行业动态。
4.c人事管理系统的安装、配置和维护:讲解c人事管理系统的安装、配置和维护方法,培养学生具备实际操作能力。
5.c人事管理系统的设计和实施:结合实际案例,讲解如何设计和实施c人事管理系统,培养学生具备实际项目经验。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
1.讲授法:通过讲解c人事管理系统的基本概念、原理和发展趋势,使学生掌握相关知识。
2.讨论法:学生就c人事管理系统的设计和实施展开讨论,培养学生的思考和沟通能力。
3.案例分析法:分析实际案例,使学生了解c人事管理系统的应用场景和实际效果。
4.实验法:安排实验课程,让学生动手操作c人事管理系统,提高其实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将选用以下教学资源:1.教材:选用权威、实用的c人事管理系统教材,作为课程主要学习资料。
c人事管理系统课程设计
![c人事管理系统课程设计](https://img.taocdn.com/s3/m/382c3110ce84b9d528ea81c758f5f61fb73628c1.png)
c人事管理系统课程设计一、课程目标知识目标:1. 理解人事管理系统的基本概念、功能及在企业管理中的应用;2. 掌握人事管理系统的主要模块,如员工信息管理、薪资管理、考勤管理等;3. 学会使用数据库管理人事数据,了解数据查询、更新、删除等基本操作。
技能目标:1. 能够运用所学知识,设计简单的人事管理系统功能模块;2. 学会使用至少一种编程语言(如Java、C#等)实现人事管理系统的部分功能;3. 提高分析问题、解决问题的能力,通过实际操作,学会调试和优化系统。
情感态度价值观目标:1. 培养学生对信息技术学科的兴趣,提高学习积极性;2. 增强学生的团队协作意识,学会与他人共同解决问题;3. 培养学生的创新意识,鼓励敢于尝试、勇于探索的精神。
课程性质:本课程为信息技术学科,旨在让学生了解并掌握人事管理系统的基本知识和技能,提高实际操作能力。
学生特点:学生为高中年级,已具备一定的计算机操作能力和编程基础,对实际应用场景感兴趣。
教学要求:结合课程性质和学生特点,注重理论联系实际,强调实践操作,培养学生的学习兴趣和动手能力。
将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 人事管理系统概述- 了解人事管理系统的概念、作用及发展历程;- 分析人事管理系统在实际企业中的应用场景。
2. 人事管理系统模块介绍- 员工信息管理:学习如何录入、查询、修改和删除员工信息;- 薪资管理:掌握薪资计算、发放及个人所得税处理方法;- 考勤管理:了解考勤制度,学习如何进行考勤数据统计和分析;- 招聘管理:了解招聘流程,学习如何发布招聘信息、筛选简历等。
3. 数据库技术在人事管理系统中的应用- 学习数据库基础知识,如数据表、字段、数据类型等;- 掌握数据库设计原则,学会使用SQL语言进行数据操作;- 结合人事管理系统,设计数据库表结构,实现数据存储和管理。
4. 编程语言实现人事管理系统功能- 选择一种编程语言(如Java、C#等),学习其基本语法和应用;- 结合实际需求,编写程序实现人事管理系统的部分功能;- 学会调试程序,优化系统性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、设计题目(问题)描述和要求1.题目:人事管理系统2.问题描述:某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。
现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。
要求:(1)其中,人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
(2)程序对所有人员有提升级别的功能(3)月薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成, 销售经理既拿固定月薪也领取销售提成。
(4)能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息二、系统分析与模块设计根据问题描述和要求,系统要求能够按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。
确定程序至少应该具备如下功能:“查询人员”、“增加人员”、“删除人员”、“数据存盘”基本模块。
系统既然具有“数据存盘”功能-人员数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出人员数据,所以系统增加了“人员数据装入” 模块,以方便用户使用、避免数据重复录入。
考虑到系统实现简捷,人员数据文件采用文本文件,人员数据文件名:Person.txt 。
做为一个完整系统,除了具有增加人员,删除人员信息模块,还应该具有修改人员相关信息的功能,所以本系统设计时考虑增加“修改人员”模块。
考虑到根据编号查找人员信息功能在“删除人员” 、“修改人员”等模块都使用,所以可以考虑设置为一个模块。
考虑到系统要求人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
这样就要求人员编号在增加人员时自动生成(增加1)且不重复。
根据这个要求,可以考虑设置一个全局量:“当前最大编号”,每增加一个人员,当前最大编号自动增1,然后新增加人员使用这个编号。
为了保证系统能记忆这个编号,可以使用一个数据文件保存当前这个编号。
系统每次开始运行前从文件读入这个编号,随着人员增加,编号自动增加,系统每次运行结束时将这个编号写入文件。
本系统将初值(没有一个用户时)设置为0。
考虑到人员的许多固定信息如:经理、销售经理的固定月薪,销售经理、销售人员提成,技术人员小时工资等都是一些不需要每个人员都要输入的信息,所以可以将这些信息都保存在一个数据文件中,本系统为了方便起见,将这些信息与“最大编号”全部保存在一个文件中,并使用“基础数据设置”模块进行设置和管理。
基础数据文件也采用文本文件,基础数据文件名:Base.txt 。
本系统还提供“查询本月经营信息”帮助计算销售总额,工资总额,并按照公式计算本月盈亏。
综合考虑系统具有下面8 项功能模块:增加人员,删除人员,修改人员,查询本月经营信息,基础数据设置,数据存盘,数据装入。
系统使用的数据文件格式如下:Base.txt:(格式:项目数据)经理固定月薪3000 销售经理固定月薪1000 销售经理提成%1 销售人员提成% 2 技术人员小时工资20ID 6Person.txt:(格式:编号,姓名,人员类别,其它数据,销售员销售额,技术人员工作小时)2 wang3 1000003 liu 14 wu 4 1005 huang 26 tao 3 150000注:人员类型编号1-经理;2-销售经理;3-销售员;4-技术人员三、系统设计1. 系统总体框架使用面向对象的程序设计思想进行分析,整个系统涉及两大类信息和操作,公司,人员。
所以系统主要涉及两个大类:公司类Company人员类Person。
系统的总体框架就是公司类,人员类的定义;主函数中定义一个公司对象,循环显 示主菜单并根据用户选择调用公司类的相应方法 (成员函数)。
⑴公司类Company 考虑系统操作的人员信息的数量具有不确定性,所以考虑 使用链表保存、处理人员信息。
公司类包含:所有人员信息的一个不带头结点的 链表(作为数据成员)及可以对人员信息进行增,删,改,查询经营信息,基础 数据设置,数据存盘,数据装入等操作的相关模块 (Add,Delete,Modify,Query,Set,Save,Load) 作为成员函数。
⑵人员类Person :所有人员都具有的公共信息及操作可以使用人员类进行描 述。
由于系统具有4类人员且4类人员数据,操作有所不同,如销售员包含销售 额,而技术人员包含工作小时数且计算工资的方法不同,所以应当为4类人员创 建相应的Person 类的派生类。
(3)为了使公司类可以方便处理人员信息,可以考虑将公司类确定为人员类的友 元类或者人员类提供公共的方法以便公司类进行操作。
为了公司类可以用共同方法操作人员类,可以将人员类的方法确定为虚函数。
2. 类的层次图Person{ No,Name,Duty,Earni ng, next,Perso n( ),CalcSalary(),Output()} 其中:(1) Person 类的No-人员编号,Name 人员姓名,Duty-人员类别,Earning-工 资,next-指向下一个人员的指针;Person 类的CalcSalary() ,Output()定义为 纯虚函数分别表示要计算人员工资和输出人员信息 ,由于定义纯虚函数,所以 Person 是抽象类,具体计算工资,输出人员信息由派生类完成。
(2) 各个派生的类,包含本类对象特有的数据,Sales::Amount-销售员销售额, { Ma nager(), {Amou nt, {Amou nt, { t, CalcSalary(), Sales(),GetAmou nt(), SalesMa nager(), Tech nician(),Output()}SetAmou nt(), SetAmou nt(), GetT(),SetT(), CalcSalary(), CalcSalary(), CalcSalary(), Output()} Output()} Output()}Tech ni cia nSalesManager::Amount-销售经理的总销售额(系统统计各个销售员销售额得到销售经理的总销售额),Technician::t- 技术人员工作小时数。
Compa ny{Person *Worker,Clear(),Compa ny(),~Compa ny(),Add(),Delete(),Modify(),Query(),Set(),Save(),Load()}其中:(1)Worker就是人员链表。
(2)Clear()用于清除人员链表所有结点。
(3)Add(),Delete(),Modify(),Query(),Set(),Save(),Load() 分别表示系统各个功能模块:增加人员,删除人员,修改人员,查询本月经营信息,基础数据设置,数据存盘,数据装入。
3. 系统关键算法流程图(1)主函数流程⑵ Compa ny::Add()⑶ Compa ny::Delete()开始输入员工ID⑷ Compa ny::Modify输入员工ID(5) Compa ny::Query()遍历统计销售额J遍历统计工资总额计算盈亏打印本月经营信息结束(6)Company::Save()(7) Compa ny::Load()四、源程序清单参见附录五、系统测试(列出各功能具体的输入数据及对应的输出结果,说明其是否符合设计要求)六、小结(设计过程心得体会)附录:/*本程序有关的两个数据文件:base.txt-基础数据文件(必须存在,且按规定格式保存)person .txt —人员信息文件(可选)*/ #include <iostream.h>#include <fstream.h>#include <ctype.h>#include <string.h> //全局数据,对象double ManagerSalary; //经理固定月薪double SalesManagerSalary; //销售经理固定月薪double SalesManagerPercent; 销// 售经理提成% double SalesPercent; //销售人员提成% class Person //员工类{ protected:int No; //编号char Name[20]; //姓名int Duty; //岗位double Earning; //收入Person *next;public:Person(char ID,char *Name,int Duty){this->Duty=Duty;strcpy(this->Name,Name);this->No=ID;}virtual void CalcSalary()=0;virtual void Output()=0;friend class Company;};class Manager:public Person //经理类{public:Manager(char ID,char *Name,int Duty):Person(ID,Name,Duty){} voidCalcSalary(){Earning=ManagerSalary;}void Output(){CalcSalary(); cout<<No<<"\t"<<Name<<"\t 经理 \t"<<Earning<<endl;}};class SalesManager:public Person //销售经理类{private:double Amount;public:double WagePerHour; int ID; //技术人员小时工资//员工标识 (要保证唯一 )SalesManager(char ID,char *Name,int Duty):Person(ID,Name,Duty){} voidSetAmount(double s){Amount=s;}void CalcSalary(){Earning=SalesManagerSalary+Amount*SalesManagerPercent/100;}void Output(){CalcSalary(); cout<<No<<"\t"<<Name<<"\t 销售经理\t"<<Earning<<endl;}};class Technician:public Person //技术员类{private:double t;public:Technician(char ID,char *Name,int Duty,double T):Person(ID,Name,Duty){ this->t=T;}double GetT(){return t;}void SetT(double T){this->t=T;}void CalcSalary(){Earning=WagePerHour*t;}void Output(){ CalcSalary(); cout<<No<<"\t"<<Name<<"\t 技术员\t"<<t<<"\t"<<Earning<<endl;}};class Sales:public Person // 销售员类{private:double Amount;public:Sales(char ID,char *Name,int Duty,double Amount):Person(ID,Name,Duty) {this->Amount=Amount;}double GetAmount(){return Amount;}void SetAmount(double Amount){ this->Amount=Amount;}void CalcSalary(){ Earning=SalesPercent/100*Amount;}void Output(){CalcSalary(); cout<<No<<"\t"<<Name<<"\t 销售员\t"<<Amount<<"\t"<<Earning<<endl;}};class Company //公司类{private:Person *Worker; //员工表void Clear(); //清除内存中数据public:Company(){Worker=0;Load();}~Company(){Person *p;p=Worker;while(p){ p=p->next; delete Worker; Worker=p;}Worker=0;}void Add(); //增加人员void Delete(); //删除人员void Modify(); //修改人员void Query(); //查询人员void Set(); //基础数据设置void Save(); //数据存盘(包括基础数据,人员数据) void Load(); //数据装入(包括基础数据,人员数据) };void Company::Clear() //清除内存中人员数据(内部使用) { Person* p=Worker;while(p){Worker=p->next;delete p; p=Worker;}}void Company::Add()Person *p; //新结点指针int Duty;char Name[20];double Amount,T;cout<<"\n** 新增员工**\n";//输入员工信息ID++;coutvv"输入岗位(1-经理2-销售经理3-销售员4-技术员):";cin>>Duty; cout«"输入姓名:";cin>>Name;if(Duty==3){cout«"本月销售额:";cin>>Amount;}else if(Duty==4){coutvv"本月工作小时数(0-168):";cin>>T;}//创建新员工结点switch(Duty){case 1:p=new Manager(ID,Name,Duty); break;case 2:p=new SalesManager(ID,Name,Duty); break;case 3:p=new Sales(ID,Name,Duty,Amount); break;case 4:p=new Technician(ID,Name,Duty,T); break;}p->next=0;//员工结点加入链表if(Worker) //若已经存在结点{Person *p2;p2=Worker;while(p2->next) //查找尾结点{p2=p2->next;}p2->next=p; //连接}else //若不存在结点(表空){Worker=p; //连接}void Company::Delete() //删除人员{int No; cout<<"\n** 删除员工**\n"; cout<<"ID:"; cin>>No;//查找要删除的结点Person *p1,*p2; p1=Worker; while(p1){ if(p1->No==No) break;else{ p2=p1; p1=p1->next;}}//删除结点if(p1!=NULL)// 若找到结点,则删除{ if(p1==Worker) //若要删除的结点是第一个结点{Worker=p1->next; delete p1;}else // 若要删除的结点是后续结点{ p2->next=p1->next; delete p1;} coutvv"找到并删除\n";}else //未找到结点cout«"未找到!\n";}void Company::Modify()int No,Duty;char Name[20];double Amount,T;cout<<"\n** 修改员工**\n"; cout<<"ID:"; cin>>No;//查找要修改的结点Person *p1,*p2; p1=Worker; while(p1){if(p1->No==No)break;else{p2=p1; p1=p1->next;}}//修改结点if(p1!=NULL)// 若找到结点{p1->Output();cin>>Duty; coutvv"调整岗位(1-经理2-销售经理3-销售员4-技术员):";if(p1->Duty!=Duty) //若岗位发生变动{ //修改其它数据cout«"输入姓名:";cin>>Name; if(Duty==3){cout«"本月销售额:";cin>>Amount;}else if(Duty==4){coutvv"本月工作小时数(0-168):"; cin>>T;}//创建新员工结点Person *p3;switch(Duty){case 1:p3=new Manager(p1->No,Name,Duty); break;case 2:p3=new SalesManager(p1->No,Name,Duty); break; case3:p3=new Sales(p1->No,Name,Duty,Amount); break;case 4:p3=new Technician(p1->No,Name,Duty,T); break;}//员工结点替换到链表p3->next=p1->next;if(p1==Worker) //若要替换的结点是第一个结点Worker=p3;else //若要删除的结点是后续结点p2->next=p3;//删除原来的员工结点delete p1;}else // 若岗位没有变动{coutvv"输入姓名:";cin>>p1->Name;if(Duty==3){cout«"本月销售额:";cin»Amount; ((Sales *)p1)->SetAmount(Amount);}else if(Duty==4){cout«"本月工作小时数(0-168):";cin»T; ((Technician *)p1)->SetT(T);}}cout«"修改成功!\n";}else //未找到结点cout«"未找到!\n";}void Company::Query(){cout<<"\n** 查询人员本月销售信息**\n";double sum=0; //销售额总和Person *p=Worker;while(p){if(p->Duty==3)sum+=((Sales *)p)->GetAmount(); p=p->next;}p=Worker;double sum2=0; //工资总和while(p){if(p->Duty==2)((SalesManager *)p)->SetAmount(sum);p->Output(); sum2+=p->Earning; p=p->next;}cout«"本月盈利:"v<sum*0.20-sum2v<endl;coutvv"(按照20%利润计算)\n";}void Company::Set(){cout<<"\n** 设置基础数据**\n";cout«"经理固定月薪["<<ManagerSalaryvv"元]:"; cin>>ManagerSalary;cout«"销售经理固定月薪["«SalesManagerSalaryvv'元]:";cin>>SalesManagerSalary;coutvv"销售经理提成["vvSalesManagerPercent<<% ]:";cin>>SalesManagerPercent;coutvv"销售人员提成["vvSalesPercent<<"%]:"; cin>>SalesPercent;coutvv"技术人员小时工资["v<WagePerHourvv"(元/小时)]:";cin>>WagePerHour;coutvv"员工标识[>="vv|Dvv"]:";cin>>ID;}void Company::Save() //数据存盘(包括基础数据,人员数据),均采用文本文件{ofstream fPerson,fBase;char c;coutvv"\n 保存人员和基础数据,是否继续?[Y/N]:"; cin>>c;if(toupper(c)!='Y')return;//保存人员编号、姓名、岗位fPerson.open("person.txt",ios::out);Person *p=Worker;while(p){fPersonvvp->Novv"\t"vvp->Namevv"\t"vvp->Dutyvv"\t";if(p->Duty==3) fPerson<<((Sales*)p)->GetAmount()<<"\t";else if(p->Duty==4)fPerson<<((Technician *)p)->GetT()<<"\t"; fPerson<<endl;p=p->next;}fPerson.close();//保存基础数据fBase.open("base.txt",ios::out);fBase«"经理固定月薪 \t"v<ManagerSalaryvvendl;fBase«"销售经理固定月薪 \t"<<SalesManagerSalaryvvendl; fBase«"销售经理提成% \t"<<SalesManagerPercent<<endl; fBasevv"销售人员提成%\t"<<SalesPercent<<endl;fBasevv"技术人员小时工资 \t"v<WagePerHourv<endl; fBasevv"ID\t"vvIDvvendl; fPerson.close();coutvv"\n 保存人员和基础数据已经完成 ...\n";}void Company::Load() //数据装入 (包括基础数据,人员数据 ) {//基础数据装入ifstream fBase;char buf[80]; //buf 用于保存数据文件中的注释字符串fBase.open("base.txt",ios::in);fBase>>buf>>ManagerSalary; //经理固定月薪fBase>>buf>>SalesManagerSalary; //销售经理固定月薪fBase>>buf>>SalesManagerPercent; /销/ 售经理提成%fBase>>buf>>SalesPercent; fBase>>buf>>WagePerHour; fBase>>buf>>ID; fBase.close();//清除内存人员数据Clear();//人员数据数据装入ifstream fPerson;Person *p=Worker;int No; char Name[20]; int Duty;double Amount,T;fPerson.open("person.txt",ios::in);//读一条记录 fPerson>>No>>Name>>Duty; if(Duty==3)fPerson>>Amount; else if(Duty==4)fPerson>>T;while(fPerson.good()){//创建员工结点//销售人员提成% //技术人员小时工资 //员工标识switch(Duty){case 1:p=new Manager(No,Name,Duty); break; case 2:p=newSalesManager(No,Name,Duty); break; case 3:p=newSales(No,Name,Duty,Amount); break; case 4:p=newTechnician(No,Name,Duty,T); break;}p->next=0;//员工结点加入链表if(Worker) //若已经存在结点{Person *p2;p2=Worker;while(p2->next) //查找尾结点{ p2=p2->next;}p2->next=p; //连接}else //若不存在结点(表空){Worker=p; // 连接}//读下一条记录fPerson>>No>>Name>>Duty; if(Duty==3)fPerson>>Amount; else if(Duty==4)fPerson>>T;}fPerson.close();cout<<"\n 人员和基础数据已经装入...\n";void main(){char c;Company a;do{cout<<"\n*** 公司人员管理系统 ***\n";cout<<"1 —增加人员 \n";cout<<"2 —删除人员 \n";cout<<"3 —修改人员 \n";cout<<"4 —查询本月经营信息\n";cout<<"5 —基础数据设置\n";cout<<"6 —数据存盘 \n";cout<<"7 —数据装入 \n";cout<<"8 —退出 \t 请选择(1-8):";cin>>c; switch(c)a.Add(); break; a.Delete();break; a.Modify();break; a.Query(); break; a.Set(); break; a.Save(); break; a.Load(); break; } }while(c!='8'); { case '1' case '2' case '3' case '4'case '5'case '6'case '7'。