数据结构简单的职工管理系统
- 格式:doc
- 大小:507.00 KB
- 文档页数:23
目录一、前言—--——--—-——-———-—————-———-——-———-—————---—-——————-—--————————-————————2二、需求分析—-———-—---—-——————————-———--——-—--——-————-—--——————————---—----—3 三、概要设计—-——-——-—————-———-—-—————————--——-----—--—--————--——-—---—-—————4四、详细设计—-———-———————--—-—-————-—-—————-—-—-———————-——-——-—-----————-—-—5五、调试分析————-————————-—————-——-————--—-——-——--——--—--—---—--——---—--—-——6六、用户使用说明—--——————-————-————-—-—-—-—--—————————-—————-—-———————-——-7 七、测试结果——————-—--—---——--——————--—-———----———--——-—-—-————————---—-———-8八、总结—-———---—-—--———-———-—--—---——--—————--—-—--—————--————————---—----—-11九、主要参考文献和附录—--——-——-—-————--——-——-—--———---—————-——-———————12前言员工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以员工管理系统应该能够为用户提供充足的信息和快捷的查询手段.但一直以来各个公司基本上都是靠传统的人工方式来管理员工信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于信息的查找、更新和维护都带来了不少的困难。
辽宁工业大学课程设计说明书题目:数据结构课程设计学院(系):电子与信息工程学院专业班级:计算机科学与技术专业学号:学生姓名:指导教师:教师职称:副教授起止时间: 2009.12.01—2009.12.08课程设计(论文)任务及评语院(系):电子与信息工程教研室:软件工程目录第1章课程设计目的与要求 (1)1.1课程设计目的 (1)1.2课程设计的实验环境 (1)1.3课程设计的预备知识 (1)1.4课程设计要求 (1)第2章课程设计内容 (2)2.1第五类题目 (2)2.2题目的具体实现 (2)2.3题目内容 (2)2.4思考题解析 (16)总结 (18)参考文献 (19)第1章课程设计目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业、软件工程专业的专业技术实践课。
本实践课的主要目的是:使学生学会利用在课堂中学过的理论知识,解决相应的实际问题,深入理解和灵活掌握所学的内容,培养学生理论和实践相结合的能力,培养学生分析问题解决问题的能力。
同时,在实验步骤规范化、程序设计方法等方面受到比较系统和规范的训练。
通过实践设计使学生进一步加深对程序设计的规范化及对复杂程序设计步骤的理解。
1.2 课程设计的实验环境PC机,WindowsXP,Win-tc。
1.3 课程设计的预备知识C语言程序设计、高级程序设计应用、数据结构。
1.4 课程设计要求(1)认真查找资料,分析每个题目应选择的数据结构(逻辑结构和物理结构);(2)按时到实验室调试程序,遵守实验室的规章制度,爱护设备;(3)每个题目编写源程序时,每个子功能定义为相应的子函数,在主函数中调用各子函数,程序结构清晰,有必要的注释,可读性强。
(4)程序健壮性强,当数据输入错误时,要进行相应的处理;(5)分析算法的时间复杂度,要求算法的效率尽可能高;(6)对于排序算法,要验证排序算法的稳定性。
第2章课程设计内容2.1 第五类题目1、简单的职工管理系统a.问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。
数据结构员工管理系统一、前言数据结构员工管理系统是一种基于计算机技术和信息管理的管理系统,主要用于协调和管理企业或机构的人事事务,如员工基础信息、工资管理、考核等,方便将数据按照某种规则分类处理和管理,使管理人员能够更好地了解员工情况、加强员工管理、提高企业生产效率和员工满意度等。
本文将对数据结构员工管理系统的设计、实现和功能等方面进行详细介绍。
二、系统设计该系统基于MVC架构设计,将模型(Model)、视图(View)和控制器(Controller)进行了分离,简化了程序结构和实现难度。
其中,M表示业务模型,V表示用户界面,C表示控制器。
主要包括以下五个模块:1. 用户登录和权限管理模块:主要实现用户登录和权限管理,以区分管理员和普通员工的权限。
2. 员工基础信息模块:主要包括员工基本信息(如员工号、姓名、性别、年龄、身份证号、联系方式等)、工龄、职位、部门、入职时间、家庭住址等。
3. 工资管理模块:主要包括员工薪资计算和管理模块,包括基础薪资、津贴、奖励和交通补贴等。
4. 员工考勤管理模块:主要实现员工考勤信息,包括上班时间、下班时间、迟到、早退、请假、加班等。
5. 员工绩效管理模块:主要是对员工的绩效进行管理和考核,包括个人绩效、部门绩效、公司绩效等考核指标。
三、系统功能1. 员工信息管理:通过该系统,管理员可以随时查询员工的基础信息、工资信息、考勤信息、绩效考核信息等。
2. 工资管理:系统可以自动计算每个员工的工资,包括基础工资、津贴、奖励和交通补贴等,从而可以减少人工计算时间,提高工资管理的准确性和效率。
3. 员工考勤管理:员工可以直接在系统中申请请假、加班等,管理员可以及时审核,确保员工的考勤情况的准确性和公正性。
4. 绩效管理:根据设定的考核标准,通过该系统可以对员工个人、部门和企业整体的绩效进行定量评估,反映企业或机构的整体运营能力和员工管理效果。
5. 系统备份与恢复:系统还可以设置自动备份数据并进行定期备份以及手动恢复数据等操作,确保数据的安全性和完整性。
#include <string>#include <iostream>#include <fstream>#include <iomanip>#include <memory.h>#include <stdio.h>#include <conio.h>#include <stdlib.h>using namespace std;struct Employee{//声明职工的结构作为链表节点。
//-----数据域-----string m_Code;string m_Name;unsigned short int m_Year; string m_Sex;string m_Post;string m_Department;unsigned int m_Wage;//链表节点的指针域---struct Employee* Next;};//-----个人习惯:取别名-------typedef struct Employee Node;typedef Node* Link;//-------函数声明-------------Link Create(Link Head);void Release(Link Head);Link Add(Link Head);bool Search(Link Head);Link Search_Unique(Link Head);void Display_List(Link Head);void Display_Node(Link pNode);Link Modify(Link Head);Link Del(Link Head);void Save_ByFile(Link Head,fstream& ofile); Link Sort(Link Head);//-------函数实现--------------------------Link Create(Link Head){//创建一个带头节点的空链表。
目录一、问题描述 1二、测试数据 1三、算法思想 1四、模块划分 1五、数据结构 2六、源程序 2七、测试情况 7八、设计体会 8参考文献 9一、问题描述(1)自定义一个类型表示员工各信息,定义一个顺序表存储员工信息,包括员工编号、姓名、性别、职务、出生年月、学历、电话、地址等。
(2)系统能够完成员工信息的输入、输出、查询、更新、插入、删除、排序等功能,并且数据能由文件导入和导出到文件。
(3)通过菜单选择进行哪一项操作,并输出每一项操作结果。
二、测试数据1 李一女 1989.10.2 本科职员 188******** 广西南宁2 苏三女 1986.3.18 本科职员 180******** 广西北海3 孙大云女 1987.12.1 本科秘书 180******** 广西柳州5 陈二男 1986.7.12 硕士经理 150******** 广西梧州三、算法思想线性表是最常用且最简单的一种线性结构,由数据元素组成,而数据元素又可以包含若干个数据项。
线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,通常用数组表示。
对顺序表的操作可借鉴数组的算法。
在本次课程设计中的员工管理信息系统,每个员工为一个数据元素,包括编号、姓名、性别、学历等数据项。
用一个数组来存储员工信息,对其进行的输入、删除、输出等操作可由一般数组的算法变换而得。
四、模块划分(1)自定义一个数据类型ElemType,表示员工信息,定义一个顺序表List,将员工信息存放于顺序表中,包括员工的编号、姓名、性别、职务、出生年月、学历、电话、地址等,并完成顺序表的初始化;(2)void ListInput(List &L,int n),函数作用是输入员工信息,需要一个循环完成每个员工信息的输入,最后要修改表长;(3)int LocateElem(List L,int num),函数作用是在顺序表里查找某编号员工的信息,从第一个员工开始找,通过编号的两两比较,若找到与要查找员工的编号一致的员工,则返回员工的位置,并在主函数中输出此与员工的信息;(4)void ListInsert(List &L,ElemType e)函数功能是新员工信息的插入,先判断表是否满或此员工的信息是否已存在,若是则不进行插入操作;否则,保持员工编号顺序不变,找到插入点的位置,把从插入点后一位的数据都往后移一个位置,把新信息插入,最后使表长增1;(5)void ListDelete(List &L,int bh)函数作用是员工信息的删除,若表空或所要删除的员工信息不存在,则不进行下一步操作;否则,把删除点后的数据都往前移覆盖其前一个元素,最后使表长减1;(6)void BubbleSort(List &L)函数功能是通过冒泡法试员工信息按编号从小到大排序,进行n-1趟,每趟使小编号的员工信息往上放在表的前端,把编号大的员工信息往下沉到表的末端;(7)ChangeM(List &L),更新员工信息,由菜单选择需要修改的信息项进行修改,并保存新的信息;(8)void newFile(List &L),生成一个新的txt文件,存放员工信息,存入计算机内存;(9)void readFile(List &L),把员工信息从文件中导出;(10)void main()主函数,通过菜单和各函数的调用实现各部分的操作。
数据结构员工管理系统正文:1.引言本文档旨在设计一个数据结构员工管理系统,用于管理公司内部的员工信息。
该系统将实现员工的基本信息维护、部门管理、工资管理、考勤管理等功能,以提高员工管理的效率和准确性。
2.系统概述2.1 系统目标员工管理系统的目标是简化公司内部的员工管理流程,提供一个可靠、高效的方式来记录和查询员工的信息、工资、考勤等。
2.2 主要功能- 员工信息维护:包括员工的基本信息(姓名、性别、年龄、联系方式等)、入职和离职信息、职位信息等。
- 部门管理:包括部门的创建、修改、删除,以及部门人员的调动和查询。
- 工资管理:包括员工的薪资设置、薪资发放记录、薪资查询等。
- 考勤管理:包括员工的考勤打卡记录、请假记录、加班记录等。
3.系统设计3.1 数据结构设计3.1.1 员工信息表员工信息表存储员工的基本信息,包括员工ID、姓名、性别、年龄、联系方式等字段。
3.1.2 部门表部门表存储部门的信息,包括部门ID、部门名称、部门描述等字段。
3.1.3 工资表工资表存储员工的工资信息,包括员工ID、基本工资、奖金、扣款等字段。
3.1.4 考勤表考勤表存储员工的考勤记录,包括员工ID、打卡时间、请假记录、加班记录等字段。
3.2 模块设计3.2.1 员工信息管理模块该模块实现对员工信息的增删改查功能,包括员工基本信息的维护、员工入职和离职操作等。
3.2.2 部门管理模块该模块实现对部门信息的增删改查功能,包括部门的创建、修改、删除,以及部门人员的调动和查询等操作。
3.2.3 工资管理模块该模块实现对员工工资信息的设置和查询功能,包括薪资设置、薪资发放记录的查询等操作。
3.2.4 考勤管理模块该模块实现对员工考勤信息的记录和查询功能,包括考勤打卡记录、请假记录、加班记录的记录和查询等操作。
4.系统实施4.1 开发环境本系统开发环境为Java语言,使用Eclipse开发工具,数据库使用MySQL。
4.2 系统架构本系统采用三层架构,分为表现层、业务逻辑层和数据访问层。
员工管理系统数据结构一、引言员工管理系统是一个用于管理和跟踪员工信息的软件系统。
它使用数据结构来存储和组织员工的相关数据,包括个人信息、工作经历、薪资、考勤记录等。
本文将详细介绍员工管理系统的数据结构设计和实现。
二、数据结构设计1. 员工信息员工信息是员工管理系统的核心数据之一,包含以下字段:- 员工ID:每一个员工在系统中的惟一标识符。
- 姓名:员工的姓名。
- 性别:员工的性别。
- 出生日期:员工的出生日期。
- 联系方式:员工的联系方式,如手机号码或者电子邮件地址。
- 部门:员工所属的部门。
- 职位:员工的职位。
- 入职日期:员工的入职日期。
为了高效地存储和检索员工信息,可以使用以下数据结构:- 哈希表:将员工ID作为键,员工信息作为值,用于快速查找和更新员工信息。
- 链表:用于处理哈希表中的冲突,当发生冲突时,将冲突的员工信息链接到同一哈希桶中。
2. 工作经历工作经历是记录员工在不同公司的工作经历的数据,包含以下字段:- 公司名称:员工曾经工作的公司名称。
- 职位:员工在该公司的职位。
- 入职日期:员工在该公司的入职日期。
- 离职日期:员工在该公司的离职日期。
为了存储员工的工作经历,可以使用以下数据结构:- 数组:用于存储员工的多个工作经历记录。
3. 薪资薪资是记录员工薪资信息的数据,包含以下字段:- 基本工资:员工的基本工资。
- 奖金:员工的奖金。
- 补贴:员工的补贴。
- 扣款:员工的扣款。
- 实际工资:员工的实际工资。
为了存储员工的薪资信息,可以使用以下数据结构:- 树状数组:用于高效地计算员工的实际工资,支持快速的更新和查询操作。
4. 考勤记录考勤记录是记录员工出勤情况的数据,包含以下字段:- 日期:考勤记录的日期。
- 上班时间:员工的上班时间。
- 下班时间:员工的下班时间。
- 考勤结果:员工的考勤结果,如正常、迟到、早退、缺勤等。
为了存储员工的考勤记录,可以使用以下数据结构:- 链表:用于按照日期顺序存储员工的考勤记录。
一、设计题目[问题描述]每个员工的信息包括:编号、姓名、性别、出生年月、学历职务、电话、住址等。
系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
[基本要求](1)排序:按不同关键字,对所有员工的信息进行排序。
(2)查询:按特定条件查找员工。
(3)更新:按编号对某个员工的某项信息进行修改。
(4)插入:加入新员工的信息。
(5)删除:按编号删除已离职的员工的信息。
二、运行环境Mrosoft Visual C++6.0三、算法设计的思想构造链表存储用户记录。
四、算法的流程图五、算法设计分析(1)构造顺序表存储用户记录。
(2)利用冒泡法对用户名和号码分别进行排序(3)利用直接查找法进行查找六、源代码#include"stdio.h"#include"stdlib.h"#include "string.h"//定义节点类型typedef struct node{char id[10];char name[10];char sex[10];char birth[10];char xueli[10];char zhiwu[10];char phone[10];char address[10];struct node *next;}node,*linklist;//头插法生成单链表int creatlist(linklist &L){linklist p;p=(linklist)malloc(sizeof(node));if(!p){return (0);}else{printf("请输入员工编号\n");scanf("%s",p->id);printf("请输入员工姓名\n");scanf("%s",p->name);printf("请输入员工性别\n");scanf("%s",p->sex);printf("请输入员工生日\n");scanf("%s",p->birth);printf("请输入员工学历\n");scanf("%s",p->xueli);printf("请输入员工职务\n");scanf("%s",p->zhiwu);printf("请输入员工电话\n");scanf("%s",p->phone);printf("请输入员工地址\n");scanf("%s",p->address);}p->next=L->next;L->next=p;}//初始化单链表int initlist(linklist &L){L=(linklist)malloc(sizeof(node));if(!L)return (0);L->next=NULL;return 1;}//显示所有员工信息void display(linklist &L){linklist p;for(p=L->next;p;p=p->next){printf("编号 %s",p->id);printf("姓名 %s",p->name);printf("性别 %s",p->sex);printf("生日 %s",p->birth);printf("学历 %s",p->xueli);printf("职务 %s",p->zhiwu);printf("电话 %s",p->phone);printf("地址 %s\n",p->address);}}//按id删除int del(linklist &L,char id[10]){node *p;node *r;p=L->next;r=L;while(!(strcmp(p->id,id)==0)&&p){r=p;p=p->next;}if(!p)printf("\n删除位置不合理\n");else{r->next=p->next;free(p);printf("删除成功\n");}return 1;}//查询idint searchid(linklist &L,char id[10]) {node *p;p=L;while(p){if(strcmp(p->id,id)==0){printf("编号 %s",p->id);printf("姓名 %s",p->name);printf("性别 %s",p->sex);printf("生日 %s",p->birth);printf("学历 %s",p->xueli);printf("职务 %s",p->zhiwu);printf("电话 %s",p->phone);printf("地址 %s\n",p->address);}p=p->next;}return 1;}//查询姓名int searchname(linklist &L,char name[10]) {node *p;p=L;while(p){if(strcmp(p->name,name)==0){printf("编号 %s",p->id);printf("姓名 %s",p->name);printf("性别 %s",p->sex);printf("生日 %s",p->birth);printf("学历 %s",p->xueli);printf("职务 %s",p->zhiwu);printf("电话 %s",p->phone);printf("地址 %s\n",p->address);}p=p->next;}return 1;}//修改int xiugai(linklist &L,char id[10]) {node *p;p=L;while(p){if(strcmp(p->id,id)==0){printf("请输入员工编号\n");scanf("%s",p->id);printf("请输入员工姓名\n");scanf("%s",p->name);printf("请输入员工性别\n");scanf("%s",p->sex);printf("请输入员工生日\n");scanf("%s",p->birth);printf("请输入员工学历\n");scanf("%s",p->xueli);printf("请输入员工职务\n");scanf("%s",p->zhiwu);printf("请输入员工电话\n");scanf("%s",p->phone);printf("请输入员工地址\n");scanf("%s",p->address);}p=p->next;}return 1;}//排序void Sort(linklist &L){。
数据结构课程设计简单的职工管理系统简单的职工管理系统设计1. 引言本文旨在设计一个简单的职工管理系统,用于匡助管理者进行职工信息的录入、查询、修改和删除等操作。
该系统基于数据结构的相关知识,通过合理的数据结构设计和算法实现,实现对职工信息的高效管理。
2. 功能需求2.1 职工信息录入系统提供一个录入界面,管理者可以输入职工的基本信息,包括职工编号、姓名、性别、年龄、职位等。
系统应该能够对输入的信息进行合法性验证,并将信息存储到合适的数据结构中。
2.2 职工信息查询系统提供一个查询界面,管理者可以根据职工的编号、姓名、职位等条件进行查询。
系统应该能够根据查询条件从数据结构中快速定位到符合条件的职工信息,并将结果展示给管理者。
2.3 职工信息修改系统提供一个修改界面,管理者可以根据职工的编号或者姓名等条件选择一个职工信息进行修改。
系统应该能够根据选择的职工信息,提供可修改的字段,并对输入的修改信息进行合法性验证,并更新数据结构中对应的职工信息。
2.4 职工信息删除系统提供一个删除界面,管理者可以根据职工的编号或者姓名等条件选择一个职工信息进行删除。
系统应该能够根据选择的职工信息,从数据结构中删除对应的职工信息,并给出相应的提示。
3. 数据结构设计为了高效地管理职工信息,我们可以采用链表作为基本的数据结构。
每一个节点表示一个职工信息,包括职工编号、姓名、性别、年龄、职位等字段。
节点之间通过指针进行连接,形成一个链表结构。
3.1 链表节点设计每一个链表节点包含以下字段:- 职工编号(int)- 姓名(string)- 性别(string)- 年龄(int)- 职位(string)- 指向下一个节点的指针(Node*)3.2 链表操作设计- 初始化链表:创建一个空链表,并初始化头节点指针为NULL。
- 添加节点:根据输入的职工信息创建一个新节点,并将其插入到链表的合适位置。
- 删除节点:根据职工的编号或者姓名等条件,找到对应的节点,并将其从链表中删除。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define LL long longusing namespace std;const int N = 1000;int sum=0;struct NODE {char name[100];char sex[10];char bir_date[20];char work_date[20];char xueli[100];char zhiwu[50];char address[100];char phonenum[20];} people[N];struct node {char name[100];char sex[10];char bir_date[20];char work_date[20];char xueli[100];char zhiwu[50];char address[100];char phonenum[20];} p;bool cmp_up_name(NODE a,NODE b){return strcmp(,)<0 ? true:false; }int cmp_down_name(NODE a,NODE b){return strcmp(,)>0 ? true:false; }int cmp_up_sex(NODE a,NODE b){return strcmp(a.sex,b.sex)<0 ? true:false;}int cmp_down_sex(NODE a,NODE b){return strcmp(a.sex,b.sex)>0 ? true:false;}int cmp_up_bir_date(NODE a,NODE b){return strcmp(a.bir_date,b.bir_date)<0 ? true:false;}int cmp_down_bir_date(NODE a,NODE b){return strcmp(a.bir_date,b.bir_date)>0 ? true:false;}int cmp_up_work_date(NODE a,NODE b){return strcmp(a.work_date,b.work_date)<0 ? true:false; }int cmp_down_work_date(NODE a,NODE b){return strcmp(a.work_date,b.work_date)>0 ? true:false; }int cmp_up_xueli(NODE a,NODE b){return strcmp(a.xueli,b.xueli)<0 ? true:false;}int cmp_down_xueli(NODE a,NODE b){return strcmp(a.xueli,b.xueli)>0 ? true:false;}int cmp_up_zhiwu(NODE a,NODE b){return strcmp(a.zhiwu,b.zhiwu)<0 ? true:false;}int cmp_down_zhiwu(NODE a,NODE b){return strcmp(a.zhiwu,b.zhiwu)>0 ? true:false;}int cmp_up_address(NODE a,NODE b){return strcmp(a.address,b.address)<0 ? true:false;}int cmp_down_address(NODE a,NODE b){return strcmp(a.address,b.address)>0 ? true:false;}int cmp_up_phonenum(NODE a,NODE b){return strcmp(a.phonenum,b.phonenum)<0 ? true:false; }int cmp_down_phonenum(NODE a,NODE b){return strcmp(a.phonenum,b.phonenum)>0 ? true:false; }void out_list(){printf("\n");printf("\t\t\t\t【1】姓名\n");printf("\t\t\t\t【2】性别\n");printf("\t\t\t\t【3】出生年月\n");printf("\t\t\t\t【4】工作年月\n");printf("\t\t\t\t【5】学历\n");printf("\t\t\t\t【6】职务\n");printf("\t\t\t\t【7】地址\n");printf("\t\t\t\t【8】电话号码\n");printf("\t\t\t\t【9】返回\n");}void out_up_or_down(){printf("\n");printf("\t\t\t\t【1】升序\n");printf("\t\t\t\t【2】降序\n");}void next_people(int n) {for(int i=sum; i>n; i--) {strcpy(people[i].name,people[i-1].name);strcpy(people[i].sex,people[i-1].sex);strcpy(people[i].bir_date,people[i-1].bir_date);strcpy(people[i].work_date,people[i-1].work_date);strcpy(people[i].xueli,people[i-1].xueli);strcpy(people[i].zhiwu,people[i-1].zhiwu);strcpy(people[i].address,people[i-1].address);strcpy(people[i].phonenum,people[i-1].phonenum);}strcpy(people[n].name,);strcpy(people[n].sex,p.sex);strcpy(people[n].bir_date,p.bir_date);strcpy(people[n].work_date,p.work_date);strcpy(people[n].xueli,p.xueli);strcpy(people[n].zhiwu,p.zhiwu);strcpy(people[n].address,p.address);strcpy(people[n].phonenum,p.phonenum);sum++;}void add_people() {getchar();printf("请输入该员工的姓名:");gets();printf("请输入该员工的性别:");gets(p.sex);printf("请输入该员工的出生年月:");gets(p.bir_date);printf("请输入该员工的工作年月:");gets(p.work_date);printf("请输入该员工的学历:");gets(p.xueli);printf("请输入该员工的职务:");gets(p.zhiwu);printf("请输入该员工的住址:");gets(p.address);printf("请输入该员工的电话:");gets(p.phonenum);//system("pause");if(sum==0) {next_people(0);return ;}int n=sum;sort(people,people+sum,cmp_up_name);for(int i=0; i<=n-1; i++) {if(i==sum-1) {next_people(i+1);break;}else if(strcmp(,people[i].name)<0) {next_people(i);break;}else if(strcmp(,people[i].name)==0) {next_people(i+1);break;}else if(strcmp(,people[i].name)*strcmp(,people[i+1].name)==0) {next_people(i+1+1);break;}else if(strcmp(,people[i].name)*strcmp(,people[i+1].name)<0) { next_people(i+1+1);break;}}sort(people,people+sum,cmp_up_name);}void de_people() {getchar();loop_3:printf("\n请输入要删除的职工的名字:\n");char str[100];gets(str);bool mark=true;for(int i=0; i<sum; i++) {if(strcmp(str,people[i].name)==0) {for(int j=i+1; j<sum; j++) {strcpy(people[j-1].name,people[j].name);strcpy(people[j-1].sex,people[j].sex);strcpy(people[j-1].bir_date,people[j].bir_date);strcpy(people[j-1].work_date,people[j].work_date);strcpy(people[j-1].xueli,people[j].xueli);strcpy(people[j-1].zhiwu,people[j].zhiwu);strcpy(people[j-1].address,people[j].address);strcpy(people[j-1].phonenum,people[j].phonenum);}sum--;printf("\n删除成功!\n");return ;}}printf("\n未找到此人,请检查您的输入是否有误。
简单的员工管理系统员工管理是一项重要的任务,对于任何一家公司而言,有效的员工管理可以提高工作效率,加强团队合作,最终实现组织的目标。
为了更好地实现员工管理的目的,许多公司开始采用员工管理系统。
本文将介绍一个简单的员工管理系统的功能和实施方法。
一、系统概述简单的员工管理系统是一种用于管理公司员工信息、考勤记录、培训计划和绩效评估的软件系统。
该系统的目标是提供一个集中存储和管理员工数据的平台,从而方便公司管理层对员工的管理和决策。
二、系统功能1. 员工信息管理:系统可以记录和管理所有员工的基本信息,包括姓名、性别、出生日期、联系方式、职位、薪资等。
同时,系统还可以为每个员工分配一个唯一的员工编号,方便唯一标识和查询。
2. 考勤记录:系统可以记录员工的考勤情况,包括迟到、早退、请假、加班等。
通过考勤记录,管理层可以了解到员工的工作态度和出勤情况,及时发现问题并进行相应的处理。
3. 培训管理:系统可以制定并记录员工的培训计划。
管理层可以根据员工的需求和公司的发展需求,安排相应的培训课程,并记录员工的培训情况和成绩。
4. 绩效评估:系统可以对员工进行绩效评估,并为每个员工生成相应的评估报告。
通过绩效评估,可以对员工的工作表现进行全面评估,为员工的晋升、加薪或奖惩提供依据。
三、系统实施方法1. 软件选择:根据公司的需求和预算,选择适合的员工管理软件。
可以考虑购买商业化的员工管理系统,也可以自行开发或定制。
2. 数据录入:将公司现有的员工信息录入系统,包括基本信息、工作经历、职位等。
同时,可以将以往的考勤记录、培训记录和绩效评估结果导入系统中,以便于管理和查询。
3. 培训计划制定:根据员工的职位和发展需求,制定相应的培训计划。
计划包括培训课程内容、培训时间和培训地点等。
同时,可以设定培训计划的执行进度和完成情况的跟踪。
4. 绩效评估:系统可以根据公司设定的绩效评估指标,自动生成绩效评估表。
评估结果可以由管理层进行评审,并对员工的绩效进行相应的奖励或处罚。
课程设计报告(本科)课程:数据结构学号:姓名:班级:教师:时间:计算机科学与技术系创建文件,录入信息,并保存到文件中以修改生日为例,修改职工的某些属性附录:源程序代码# include <stdio.h># include <stdlib.h>#include <windows.h> //Sleep()函数的头文件功能:执行挂起一段时间#include<conio.h> //getch() 函数的头文件# include <string.h># include <iostream.h>typedef struct{char name[18];char sex[8]; //性别;男male,女femalechar birthday[11];char workday[11];char xueli[10];char zhiwu[10];char address[10];char tel[12];}xinxi;typedef struct XX{char name[18];char sex[8]; //性别;男male,女femalechar birthday[11];char workday[11];char xueli[10];char zhiwu[10];char address[10];char tel[12];struct XX *next;}node,*linklist;char fname[15]="work10.txt"; //不重新创建文件时,对文件work10.txt进行操作;若创建新文件则其值改变//--------------------------------------------------------------------------------------//辅助函数//--------------------------------------------------------------------------------------void menu(){cout<<"|------------------------------------------------------------------------------|"; // - 80个cout<<"| 欢迎使用职工管理系统|"; cout<<"|------------------------------------------------------------------------------|";cout<<"| 0、结束操作|"; cout<<"| 1、创建职工文件|"; cout<<"| 2、添加职工信息|"; cout<<"| 3、删除职工信息|"; cout<<"| 4、查找职工信息|"; cout<<"| 5、修改职工信息|"; cout<<"| 6、排序职工信息|"; cout<<"| 7、显示所有职工信息|"; cout<<"|------------------------------------------------------------------------------|";}void EXIT(){printf("\n\n\n\n\n\n");printf("|------------------------------------------------------------------------------|");printf("| 谢谢使用!|");printf("| |");printf("| 欢迎下次使用!|");printf("| |");printf("| 再见!|");printf("|------------------------------------------------------------------------------|");}void writef(xinxi worker0){FILE*fp;if((fp=fopen(fname,"a"))==NULL){printf("文件不存在!请先创建!\n");exit(0);}if(fwrite(&worker0,sizeof(xinxi),1,fp)!=1)printf("file write error!\n");fclose(fp);printf("信息保存成功!\n");}void print(linklist L){linklist q;q=L->next;while (q){printf("姓名%s\n",q->name);printf("性别%s\n",q->sex);printf("生日%s\n",q->birthday);printf("工日%s\n",q->workday);printf("学历%s\n",q->xueli);printf("职务%s\n",q->zhiwu);printf("地址%s\n",q->address);printf("电话%s\n",q->tel);cout<<endl;q=q->next;}}void readall(linklist &L,xinxi worker0){int i;L=new node;L->next=NULL;linklist u,p;p=L;FILE *fp;if((fp=fopen(fname,"r"))==NULL){printf("无法打开此文件!");exit(0);}while(!feof(fp)){if(fread(&worker0,sizeof(xinxi),1,fp)!=1){if(feof(fp)){fclose(fp);break;}elseprintf("read file error!\n");}u=new node;for(i=0;i<18;i++)u->name[i]=[i];for(i=0;i<8;i++)u->sex[i]=worker0.sex[i];for(i=0;i<11;i++)u->birthday[i]=worker0.birthday[i];for(i=0;i<11;i++)u->workday[i]=worker0.workday[i];for(i=0;i<10;i++)u->xueli[i]=worker0.xueli[i];for(i=0;i<10;i++)u->zhiwu[i]=worker0.zhiwu[i];for(i=0;i<10;i++)u->address[i]=worker0.address[i];for(i=0;i<11;i++)u->tel[i]=worker0.tel[i];u->tel[i]=NULL;p->next=u;p=u;}fclose(fp);p->next=NULL;}//-------------------------------------------------------------------------------------- //功能函数//-------------------------------------------------------------------------------------- void create(){void insert();FILE*fp;int num,i;printf("请输入文件名:");scanf("%s",fname);strcat(fname,".txt"); //串连接函数,把第二个字符串添加到第一个字符串后面if((fp=fopen(fname,"w"))==NULL){printf("打开文件出错!\n");exit(0);}fclose(fp);cout<<"文件创建成功!"<<endl;cout<<"下面开始输入职工信息!"<<endl<<"任意键继续..."<<endl;getch();system("cls");cout<<"你想输入多少个职工信息?请输入:";cin>>num;for(i=0;i<num;i++)insert();}void insert(){xinxi worker;int i;for(i=0;i<18;i++)[i]=' ';for(i=0;i<8;i++)worker.sex[i]=' ';for(i=0;i<11;i++)worker.birthday[i]=' ';for(i=0;i<11;i++)worker.workday[i]=' ';for(i=0;i<10;i++)worker.xueli[i]=' ';for(i=0;i<10;i++)worker.zhiwu[i]=' ';for(i=0;i<10;i++)worker.address[i]=' ';for(i=0;i<12;i++)worker.tel[i]=' ';cout<<"请按以下顺序输入职工信息!"<<endl;cout<<"姓名性别生日工日学历职务地址电话"<<endl;scanf("%s%s%s%s%s%s%s%s",&,&worker.sex,&worker.birthday,&worker.wo rkday,&worker.xueli,&worker.zhiwu,&worker.address,&worker.tel);writef(worker);}void del(linklist &L){linklist p,r;jp_c:char name[10],c;int x=0;p=L->next;r=L;system("cls");system("color f0");printf("请输入删除职工的名字:");scanf("%s",name);while(p) //名字不匹配且未找到链尾{if(strcmp(p->name,name)==0){r->next=p->next;free(p);x++;printf("删除成功!\n");printf("是否继续删除(Y/N)?\n");cin>>c;if(c=='Y'||c=='y')goto jp_c;else{printf("是否输出删除后的职工信息(Y/N)?\n");cin>>c;if(c=='Y'||c=='y'){cout<<"*****************************"<<endl;print(L);cout<<"*****************************"<<endl;cout<<"输出完成!"<<endl<<"任意键继续..."<<endl;getch();return;}elsereturn;}}r=p;p=p->next;}if(x==0)printf("未找到该职工的信息!\n");}void search_name(linklist L){int i;node *p;p=L->next;char name[10];int n=0;printf("请输入要查找职工的姓名:");scanf("%s",name);printf("正在进行查找,请稍候...\n");int k=3;for(i=0;i<350000000*k;i++) //延时3秒{}while(p){if(strcmp(p->name,name)==0){printf("该职工的信息如下:\n");printf("********************************\n");printf("姓名%s\n",p->name);printf("性别%s\n",p->sex);printf("生日%s\n",p->birthday);printf("工日%s\n",p->workday);printf("学历%s\n",p->xueli);printf("职务%s\n",p->zhiwu);printf("地址%s\n",p->address);printf("电话%s\n",p->tel);printf("********************************\n");cout<<endl;n++;}p=p->next;}if(n==0)printf("未找到该职工的信息!\n");}void search_tel(linklist L){int i;node *p;p=L->next;char tel[12];int n=0;printf("请输入要查找职工的电话:");scanf("%s",tel);printf("正在进行查找,请稍候...\n");int k=3;for(i=0;i<350000000*k;i++) //延时3秒{}while(p){if(strcmp(p->tel,tel)==0){printf("该职工的信息如下:\n");printf("********************************\n");printf("姓名%s\n",p->name);printf("性别%s\n",p->sex);printf("生日%s\n",p->birthday);printf("工日%s\n",p->workday);printf("学历%s\n",p->xueli);printf("职务%s\n",p->zhiwu);printf("地址%s\n",p->address);printf("电话%s\n",p->tel);printf("********************************\n");cout<<endl;n++;}p=p->next;}if(n==0)printf("未找到该职工的信息!\n");}void search_and(linklist L){int i;node *p;p=L->next;char tel[12],name[10];int n=0;printf("请输入要查找职工的姓名和电话:");scanf("%s%s",name,tel);printf("正在进行查找,请稍候...\n");int k=3;for(i=0;i<350000000*k;i++) //延时3秒{}while(p){if((strcmp(p->name,name)==0)&&(strcmp(p->tel,tel)==0)){printf("该职工的信息如下:\n");printf("********************************\n");printf("姓名%s\n",p->name);printf("性别%s\n",p->sex);printf("生日%s\n",p->birthday);printf("工日%s\n",p->workday);printf("学历%s\n",p->xueli);printf("职务%s\n",p->zhiwu);printf("地址%s\n",p->address);printf("电话%s\n",p->tel);printf("********************************\n");cout<<endl;n++;}p=p->next;}if(n==0)printf("未找到该职工的信息!\n");}void search(linklist &L){jp_c3:int choose;char ch;system("cls");system("color f0");printf("你想按什么进行查找?\n");printf("1、姓名2、电话3、综合查找\n");printf("请选择:");scanf("%d",&choose);switch(choose){case 1:search_name(L);break;case 2:search_tel(L);break;case 3:search_and(L);break;default: cout<<"输入错误!\n";}cout<<"继续按其他分类查找?Y/N:";cin>>ch;if(ch=='Y'||ch=='y')goto jp_c3;}void xiugai(linklist &L){linklist p,q;p=L->next;char name[10],ch;int i=0,choose;system("cls");system("color f0");printf("请输入要修改的职工的名字:");scanf("%s",name);while(p){if(strcmp(p->name,name)==0){printf("你想修改什么?\n");printf("--------------------------------------------------------------------------------");printf("1、姓名2、性别3、生日4、工日5、学历6、职务7、地址8、电话\n");printf("--------------------------------------------------------------------------------");jp_c4:printf("请选择:");scanf("%d",&choose);printf("\n********************************\n");for(int j=0;;j++){switch(choose){case 1:printf("请输入员工姓名:");scanf("%s",p->name);break;case 2:printf("请输入员工性别:");scanf("%s",p->sex);break;case 3:printf("请输入员工生日:");scanf("%s",p->birthday);break;case 4:printf("请输入员工工日:");scanf("%s",p->workday);break;case 5:printf("请输入员工学历:");scanf("%s",p->xueli);break;case 6:printf("请输入员工职务:");scanf("%s",p->zhiwu);break;case 7:printf("请输入员工地址:");scanf("%s",p->address);break;case 8:printf("请输入员工电话:");scanf("%s",p->tel);break;default: cout<<"输入错误!\n";}cout<<"继续修改?Y/N:";cin>>ch;if(ch=='Y'||ch=='y'){printf("********************************\n\n");goto jp_c4;}else{q=p;break;}}i++;}p=p->next;}if(i){system("cls");system("color f0");cout<<"修改成功!"<<endl<<"修改后该职工的信息为:"<<endl;printf("********************************\n");printf("姓名%s\n",q->name);printf("性别%s\n",q->sex);printf("生日%s\n",q->birthday);printf("工日%s\n",q->workday);printf("学历%s\n",q->xueli);printf("职务%s\n",q->zhiwu);printf("地址%s\n",q->address);printf("电话%s\n",q->tel);printf("********************************\n");cout<<endl;}elsecout<<"不存在职工信息,无法修改!"<<endl;}void rank_name(linklist &L){void Show_all(linklist L);linklist La;linklist p,q,m;La=(linklist)malloc(sizeof(node));La->next =NULL;while(L->next){for(q=L->next,p=L->next;p->next;p=p->next){if((strcmp( p->next->name,q->name ))>0 ){m=p;q=p->next ;}}if(q==L->next){L->next =L->next->next ;}else{m->next =q->next ;}q->next =La->next ;La->next =q ;}L=La;cout<<"按姓名排序后";Show_all(L);}void rank_birthday(linklist &L){void Show_all(linklist L);linklist La;linklist p,q,m;La=(linklist)malloc(sizeof(node));La->next =NULL;while(L->next){for(q=L->next,p=L->next;p->next;p=p->next){if((strcmp( p->next->birthday,q->birthday ))>0 ){m=p;q=p->next ;}}if(q==L->next){L->next =L->next->next ;}else{m->next =q->next ;}q->next =La->next ;La->next =q ;}L=La;cout<<"按生日排序后";Show_all(L);}void rank_workday(linklist &L){void Show_all(linklist L);linklist La;linklist p,q,m;La=(linklist)malloc(sizeof(node));La->next =NULL;while(L->next){for(q=L->next,p=L->next;p->next;p=p->next){if((strcmp( p->next->workday,q->workday ))>0 ){m=p;q=p->next ;}}if(q==L->next){L->next =L->next->next ;}else{m->next =q->next ;}q->next =La->next ;La->next =q ;}L=La;cout<<"按工日排序后";Show_all(L);}void rank(linklist &L){int i;jp_c2:int choose;char ch;system("cls");system("color f0");printf("你想按什么进行排序?\n");printf("1、姓名2、生日3、工日\n");printf("请选择:");scanf("%d",&choose);printf("正在进行排序,请稍候...\n");int k=3;for(i=0;i<350000000*k;i++) //延时3秒{}switch(choose){case 1:rank_name(L);break;case 2:rank_birthday(L);break;case 3:rank_workday(L);break;default: cout<<"输入错误!\n";}cout<<"继续按其他分类排序?Y/N:";cin>>ch;if(ch=='Y'||ch=='y')goto jp_c2;}void Show_all(linklist L){linklist p;p=L->next;system("cls");system("color f0");cout<<"所有职工信息:"<<endl;cout<<"--------------------------------------------------------------------------------";cout<<"姓名性别生日工日学历职务地址电话"<<endl;while(p){printf("%-9s",p->name);printf("%-7s",p->sex);printf("%-13s",p->birthday);printf("%-13s",p->workday);printf("%-8s",p->xueli);printf("%-10s",p->zhiwu);printf("%-9s",p->address);printf("%-11s",p->tel);p=p->next;}cout<<"--------------------------------------------------------------------------------"; }//--------------------------------------------------------------------------------------//主函数//--------------------------------------------------------------------------------------int main(){char ch;int m;linklist L;xinxi Worker;system("title 职工管理系统");system("color f0");menu();readall(L,Worker);for(int i=0;;i++){cout<<"请选择:";cin>>m;if(m==0)break;switch (m){case 1: create();readall(L,Worker);break;case 2: insert();readall(L,Worker);break;case 3: del(L); break;case 4: search(L); break;case 5: xiugai(L); break;case 6: rank(L); break;case 7: Show_all(L); break;default: cout<<"输入错误!\n";}cout<<"continue? Y/N:";cin>>ch;if(ch=='Y'||ch=='y'){system("cls");menu();continue;}elsebreak;}system("cls");system("color 3f");EXIT();printf("\n任意键退出程序!\n");getch();return 0;}。
简单的职工管理系统设计一、问题描述对单位的职工进行管理,包括录入、删除、查询、修改、排序、显示软件信息等功能。
1.要求职工信息包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
(1)新增一名职工:将新增职工对象录入职工管理文件中。
(2)删除一名职工:从职工管理文件中删除一名职工对象。
(3)查询:从职工管理文件中按条件查询符合某些条件的职工。
(4)修改:检索某个职工对象,按条件对其某些属性进行修改。
(5)排序:按名字首字母对职工信息对职工对象文件进行排序。
(6)显示:显示软件信息等功能。
二、设计1.信息输入:要想实现职工管理系统的输入,必须要建立一个职工信息系统的抽象数据类型,其中职工信息以链表的存储方式实现。
2.信息处理:由于职工会存在流动周转,职工的信息会有所变化,因此该算法实现了员工的录入、删除、查询、修改、排序等功能3.信息输出:根据不同的操作,输出相应数据。
5.函数类型6.函数间的调用(主函数内)核心代码void main(){int n;QD = ( struct worker* )malloc( sizeof( struct worker ) );QD->next = NULL;chushi();do{scanf("%d",&n);while( n > 8 || n < 1 ){scanf("%d",&n);}switch(n){case 1:input();break;信息录入case 2:delet();break;信息删除case 3:search();break;信息查询case 4:change();break;信息修改case 5:inorder();break;信息排序case 6:system("CLS");break;清屏case 7:rjxx();break;软件信息}cx();}while(n!=8);}三、测试1.主界面2.录入职工信息(1)核心代码void input(){struct worker *p;char qname[20];int wu;do{scanf( "%s",qname );p = ( struct worker* )malloc( sizeof( struct worker ) );if( p == NULL){return;}strcpy(p->name,qname);scanf("%s",qname);strcpy(p->sex,qname);scanf( "%s",qname);strcpy(p->birday,qname);scanf( "%s",qname);strcpy(p->workday,qname);scanf( "%s",qname);strcpy(p->edu,qname);scanf( "%s",qname);strcpy(p->post,qname);scanf( "%s",qname);strcpy(p->add,qname);scanf( "%s",qname);strcpy(p->tele,qname);p->next = QD->next;QD->next = p;scanf("%d",&wu );printf("\n\n");system("CLS");}while( wu == 1 );}。
//要求用C语言完成课程设计职工信息管理系统—单链表实现#include <stdio.h>#include <stdlib.h>#include <string.h>int saveflag=0; /*是否需要存盘的标志变量*/struct employee{char name[15];char num[10];/* 工号*/char sex[4];char bm[15];char zc[20];int gz;};typedef struct node{struct employee data;struct node *next;}Node,*Link;//Link l (注意是:字母l不是数字1)void add(Link l);void disp(Link l); //查看职工所有信息void del(Link l); //删除功能Node* Locate(Link l,char findmess[],char nameornum[]);void Qur(Link l); //查询功能void Tongji(Link l); //统计void Sort(Link l); //排序void Modify(Link l); //修改功能void save(Link l); //将单链表l中的数据写入文件void printe(Node *p); //本函数用于打印链表中某个节点的数据内容*///以下4个函数用于输出中文标题void printstart();void Wrong();void Nofind();void printc();void menu(){printf("\t*****************************************************************\n");printf("\t**\n");printf("\t* 职工信息管理系统_结构体数组实现*\n");printf("\t**\n")printf("\t* [1] 增加职工信息[2] 删除职工信息*\n");printf("\t* [3] 查询职工信息[4] 修改职工信息*\n");printf("\t* [5] 插入职工记录[6] 统计职工记录*\n");printf("\t* [7] 排序[8] 保存职工信息*\n");printf("\t* [9] 显示数据[0] 退出系统*\n");printf("\t**\n");printf("\t*****************************************************************\n");} //void menu菜单结束void Disp(Link l) //显示单链表l中存储的职工记录,内容为employee结构中定义的内容{int count=0;Node *p;p=l->next; // l存储的是单链表中头结点的指针,该头结点没有存储职工信息,指针域指向的后继结点才有职工信息if(!p) /*p==NULL,NUll在stdlib中定义为0*/{printf("\n=====>提示:没有职工记录可以显示!\n");return;}printf("\t\t\t\t显示结果\n");printstart(); //打印横线printc(); //打印各学科标题printf("\n");while(p) //逐条输出链表中存储的职工信息{printe(p);p=p->next;}printstart();printf("\n");} //void Disp结束void printstart(){printf("-----------------------------------------------------------------------\n"); }void Wrong(){printf("\n=====>提示:输入错误!\n");}void Nofind(){printf("\n=====>提示:没有找到该职工!\n");}void printc() /* 本函数用于输出中文*/{printf(" 工号\t 姓名性别部门职称工资总工资平均工资\n"); }void printe(Node *p)/* 本函数用于打印链表中某个节点的数据内容*/ {printf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->,p->data.sex,p->data.bm,p->data.zc,p->data.gz); }//Locate(l,findmess,"num");/* 该函数用于定位连表中符合要求的结点,并返回该指针*/Node* Locate(Link l,char findmess[],char zcornum[]){Node *r;if(strcmp(zcornum,"num")==0) /* 按工号查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的工号*/ return r;r=r->next;}}else if(strcmp(zcornum,"zc")==0) /* 按职称查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.zc,findmess)==0) /*若找到findmess值的职工职称*/ return r;r=r->next;}}return 0; /*若未找到,返回一个空指针*/}//add()函数中,无节点时,r指向list头,有节点时,r指向末尾节点void Add(Link l) /* 增加职工*/{Node *p,*r,*s; /*实现添加操作的临时的结构体指针变量*/char num[10];int flag=0;r=l;s=l->next; //链表没有节点时,s=null;/链表有节点时,指向第一个职工节点while(r->next!=NULL) //如果存在后继结点时,r指针后移一个r=r->next; /*将指针移至于链表最末尾,准备添加记录*/while(1){printf("请你输入工号(以'0'返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0) //输入'0',跳出while(1),即跳出add()函数break;s=l->next; //作用?每次从第一个节点开始找,看num是否重复。
(员工管理)数据结构员工管理系统壹、设计题目[问题描述]每个员工的信息包括:编号、姓名、性别、出生年月、学历职务、电话、住址等。
系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
[基本要求](1)排序:按不同关键字,对所有员工的信息进行排序。
(2)(2)查询:按特定条件查找员工。
(3)(3)更新:按编号对某个员工的某项信息进行修改。
(4)(4)插入:加入新员工的信息。
(5)(5)删除:按编号删除已离职的员工的信息。
二、运行环境MrosoftVisualC++6.0三、算法设计的思想构造链表存储用户记录。
四、算法的流程图五、算法设计分析(1)构造顺序表存储用户记录。
(2)利用冒泡法对用户名和号码分别进行排序(3)利用直接查找法进行查找六、源代码#include"stdio.h"#include"stdlib.h"#include"string.h"//定义节点类型typedefstructnode{charid[10];charname[10];charsex[10];charbirth[10];charxueli[10];charzhiwu[10];charphone[10]; charaddress[10];structnode*next;}node,*linklist;//头插法生成单链表intcreatlist(linklist&L){linklistp;p=(linklist)malloc(sizeof(node)); if(!p){return(0);}else{printf("请输入员工编号\n"); scanf("%s",p->id);printf("请输入员工姓名\n"); scanf("%s",p->name); printf("请输入员工性别\n"); scanf("%s",p->sex); printf("请输入员工生日\n"); scanf("%s",p->birth); printf("请输入员工学历\n"); scanf("%s",p->xueli); printf("请输入员工职务\n"); scanf("%s",p->zhiwu); printf("请输入员工电话\n"); scanf("%s",p->phone); printf("请输入员工地址\n"); scanf("%s",p->address);}p->next=L->next;L->next=p;}//初始化单链表intinitlist(linklist&L){L=(linklist)malloc(sizeof(node)); if(!L)return(0);L->next=NULL;return1;}//显示所有员工信息voiddisplay(linklist&L){linklistp;for(p=L->next;p;p=p->next){printf("编号%s",p->id);printf("姓名%s",p->name); printf("性别%s",p->sex); printf("生日%s",p->birth); printf("学历%s",p->xueli); printf("职务%s",p->zhiwu); printf("电话%s",p->phone); printf("地址%s\n",p->address); }}//按id删除intdel(linklist&L,charid[10]) {node*p;node*r;p=L->next;r=L;while(!(strcmp(p->id,id)==0)&&p) {r=p;p=p->next;}if(!p)printf("\n删除位置不合理\n"); else{r->next=p->next;free(p);printf("删除成功\n");}return1;}//查询idintsearchid(linklist&L,charid[10]) {node*p;p=L;while(p){if(strcmp(p->id,id)==0){printf("编号%s",p->id);printf("姓名%s",p->name); printf("性别%s",p->sex); printf("生日%s",p->birth); printf("学历%s",p->xueli); printf("职务%s",p->zhiwu); printf("电话%s",p->phone); printf("地址%s\n",p->address); }p=p->next;}return1;}//查询姓名intsearchname(linklist&L,charname[10]) {node*p;p=L;while(p){if(strcmp(p->name,name)==0){printf("编号%s",p->id);printf("姓名%s",p->name);printf("性别%s",p->sex);printf("生日%s",p->birth);printf("学历%s",p->xueli);printf("职务%s",p->zhiwu);printf("电话%s",p->phone);printf("地址%s\n",p->address);}p=p->next;}return1;}//修改intxiugai(linklist&L,charid[10]) {node*p;p=L;while(p){if(strcmp(p->id,id)==0){printf("请输入员工编号\n"); scanf("%s",p->id);printf("请输入员工姓名\n"); scanf("%s",p->name);printf("请输入员工性别\n"); scanf("%s",p->sex); printf("请输入员工生日\n"); scanf("%s",p->birth); printf("请输入员工学历\n"); scanf("%s",p->xueli); printf("请输入员工职务\n"); scanf("%s",p->zhiwu); printf("请输入员工电话\n"); scanf("%s",p->phone); printf("请输入员工地址\n"); scanf("%s",p->address); }p=p->next;}return1;}//排序voidSort(linklist&L){linklistLa;linklistp,q,m;La=(linklist)malloc(sizeof(node));La->next=NULL;while(L->next){for(q=L->next,p=L->next;p->next;p=p->next) {if((strcmp(p->next->id,q->id))>0){m=p;q=p->next;}}if(q==L->next){L->next=L->next->next; }else{m->next=q->next;}q->next=La->next;La->next=q;}L=La;display(L);}#include"stdio.h"#include"stdlib.h"#include"string.h"#include"head.h"//主函数voidmain(){linklistL;inta;charm;charname[10];charid[10];initlist(L);inty;intx=1;while(x){printf("****************\n"); printf("1添加员工信息\n"); printf("2修改员工信息\n"); printf("3删除员工信息\n"); printf("4查询员工信息\n"); printf("5排序员工信息\n"); printf("6显示所有员工信息\n");printf("7退出\n");printf("****************\n"); printf("请输入代码:"); scanf("%d",&y);switch(y){case1:creatlist(L);do{printf("否继续输入?(y/n)"); getchar();scanf("%c",&m);if(m=='y'){creatlist(L);}}while(m!='n');break;case2:printf("请输入修改员工编号");getchar();scanf("%s",&id);xiugai(L,id);break;case3:printf("请输入删除员工编号");getchar();scanf("%s",&id);del(L,id);break;case4:printf("请输入查询方式(1按编号查询,2按姓名查找)"); scanf("%d",&a);if(a==1){printf("请输入查询员工编号\n");scanf("%s",&id);searchid(L,id);}if(a==2){printf("请输入查询员工姓名\n");scanf("%s",&name);searchname(L,name);}break;case5:Sort(L);break;case6:printf("所有员工信息如下所示\n"); display(L);break;case7:x=0;break;}}}七、运行结果主界面添加员工信息修改员工信息删除员工信息查询员工信息排序显示八、收获及体会实训期间,让我学到了很多东西,不仅使我于理论上对软件行业有了全新的认识,于实践能力上也得到了提高,真正地做到了学以致用,对我来说受益非浅。