数据结构简单的职工管理系统完整版

合集下载

数据结构员工管理系统

数据结构员工管理系统

数据结构员工管理系统一、前言数据结构员工管理系统是一种基于计算机技术和信息管理的管理系统,主要用于协调和管理企业或机构的人事事务,如员工基础信息、工资管理、考核等,方便将数据按照某种规则分类处理和管理,使管理人员能够更好地了解员工情况、加强员工管理、提高企业生产效率和员工满意度等。

本文将对数据结构员工管理系统的设计、实现和功能等方面进行详细介绍。

二、系统设计该系统基于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.引言本文档旨在设计一个数据结构员工管理系统,用于管理公司内部的员工信息。

该系统将实现员工的基本信息维护、部门管理、工资管理、考勤管理等功能,以提高员工管理的效率和准确性。

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. 考勤记录考勤记录是记录员工出勤情况的数据,包含以下字段:- 日期:考勤记录的日期。

- 上班时间:员工的上班时间。

- 下班时间:员工的下班时间。

- 考勤结果:员工的考勤结果,如正常、迟到、早退、缺勤等。

为了存储员工的考勤记录,可以使用以下数据结构:- 链表:用于按照日期顺序存储员工的考勤记录。

(完整word版)员工管理系统

(完整word版)员工管理系统

一系统层次模块图总的系统模块主要包括:管理员的登陆;员工信息查看、修改、删除、增加;职位信息修改、删除、增加;部门信息修改、删除、增加;签到信息管理等功能模块。

总的系统功能结构图,如图2-1所示:图2-1 总的系统层次模块图系统设计流程图如2-3图所示:图2-3 系统设计流程图一个员工对应一个职位,一个员工对应一个部门,一个员工对应一个签到信息。

员工与相关信息表的E-R图如图3-5所示:1. admin(管理员信息表)管理员信息表用来存储管理员的基本信息。

其中包括管理员用户名和管理员登录密码等字段,表admin的结构如表3-1所示:字段名数据类型长度是否主键描述Id int 4 是唯一标识ldy_str_uname varchar30管理员用户名ldy_str_pwd varchar 20 登陆密码2. users (员工信息表)员工信息表(users)此表主要用于存储员工的相关信息,包括员工编号,员工名,员工地址,员工性别,员工备注,员工年龄以及与各表连接的相关字段等。

表users的结构如表3-2所示。

3. dep(部门信息表)此表主要用于存储部门的信息,包括部门编号,部门名称,部门备注等。

表dep的结构如表3-3所示。

4. job(职位信息表)职位信息表主要用于保存各类职位信息,包括职位编号,职位名称,职位工资,职位备注等字段。

表job的结构如表3-4所示。

5. qiandao(签到信息表)签到信息表主要用于保存员工签到信息,包括签到编号,员工编号,签到次数等字段。

表qiandao的结构如表3-5所示。

数据结构员工管理系统

数据结构员工管理系统

一、设计题目[问题描述]每个员工的信息包括:编号、姓名、性别、出生年月、学历职务、电话、住址等。

系统能够完成员工信息的查询、更新、插入、删除、排序等功能。

[基本要求](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。

- 添加节点:根据输入的职工信息创建一个新节点,并将其插入到链表的合适位置。

- 删除节点:根据职工的编号或者姓名等条件,找到对应的节点,并将其从链表中删除。

数据结构简单的职工管理系统

数据结构简单的职工管理系统
void ListInitiate(SLNode **head)//---------------------------------链表初始化
{
if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//动态分配存储空间
2.2
由系统管理员依次输入现有职工和新增职工的以下信息:姓名(可以重复)、性别、出生年月、工作年月、学历、职务、地址、电话等信息,并且注意输入时姓名、学历、职务、地址为字符串形式,性别为字符,其余的为长整型数字。
系统管理员根据公司的人员流动情况,选择系统提供的各项功能进行操作,并输出相应的结果。
2.3
经过本次课程设计,我们对于数据结构基本理论和存储结构及算法设计将有更加深入的理解,并提高我们在实际设计操作中系统分析、结构确定、算法选择、数学建模和信息加工的能力,提高我们的C/C++语言程序设计能力,以及培养学我们编写程序设计文档的能力。
在经济繁荣中的今天对于职工管理有很大程度上的要求,一个工程能否较好较快的运行,与职工管理的好坏分不开关系,通过该系统,能够更好的管理职工,简化管理,使管理更方便,准确性和直观性更强。本着实践为目的,通过设计与制作进一步学习和掌握职工管理系统的原理和使用方法。虽然在一定程度上较为简单,但也能体现在出在人员管理上的方便快捷。
初始化链表
系统处理模块
SLNode *ListInsert(SLNode *head,DataType x)
插入职工信息
ListDelete(SLNode *head)
删除职工信息
ListModify(SLNode *head)
修改职工信息
put(SLNode *head,FILE *fp)

简单的职工管理系统_数据结构试验

简单的职工管理系统_数据结构试验

#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( 1) 排序: 按不同关键字, 对所有员工的信息进行排序( 2) 查询: 按特定条件查找员工( 3) 更新: 按编号对某个员工的某项信息进行修改。

( 4) 插入: 加入新员工的信息( 5) 删除: 按编号删除已离职的员工的信息。

二、运行环境Mrosoft Visual C++6.0三、算法设计的思想构造链表存储用户记录。

四、算法的流程图3五、算法设计分析(1) 构造顺序表存储用户记录。

(2) 利用冒泡法对用户名和号码分别进行排序(3) 利用直接查找法进行查找六、源代码#i nclude"stdio.h"4#i nclude"stdlib.h" #in elude "stri ng.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);}5else{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");6。

数据结构课程设计员工信息管理系统.doc

数据结构课程设计员工信息管理系统.doc

12信计2013-2014(一)数据结构课程设计设计题目员工信息管理系统设计时间2014.1.6~2014.1.10学生姓名葛考学生学号20120402127所在班级12精算指导教师刘风华徐州工程学院数学与物理科学学院题目员工信息管理系统一、需求分析员工信息管理系统设计,具体功能如下:1、系统以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中的输入异常情况。

2、员工信息录入系统(员工信息用文件保存),注意员工按员工编号进行区分,即每个员工的员工编号都是唯一的,不允许出现两个员工或员工编号相同的情况。

3、可对员工信息进行查询,具体分为:按姓名查询、按员工号查询、按生日查询;4、可对员工信息进行删除;5、可对员工信息进行修改,但应注意员工号不能修改,修改应逐个进行,一个员工记录的更改不应影响其他的员工记录;6、可对全部的员工信息进行显示v(员工信息浏览),注意员工信息的显示规范;员工信息应包括姓名、员工编号、性别、年龄、生日、学历、职务、联系电话、住址。

二、概要设计2.1、抽象数据类型ADT List{数据对象:D={ai|ai∈ElemSet,i=1,2,······,n,n>=0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=1,2,······,n}基本操作:Init List(&L);操作结果:构造一个空的线性表L。

DestroyList(&L);初始条件:线性表L存在。

操作结果:销毁线性表L。

LocateElem(L,I,&e);初始条件:线性表L存在,1<i<Listlength(L)。

操作结果:用e返回线性表L中第i个数据元素的值。

简单的员工管理系统

简单的员工管理系统
Link Del(Link Head) Link Sort(Link Head) VoidSave_ByFile(LinkHead,fstream&
ofile) void Display_Node(Link pNode)
功能
定义链表结点
创建带头节点的空链表 释放链表
前插法添加数据 查询职工信息 显示职工信息 修改职工信
2.课程设计任务与要求:
任务 根据教材《数据结构-C 语言描述》(耿国华主编)和参考书《数据结构题集(C 语言版)》(严蔚 敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构 的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。 设计题目从任务书所列选题表中选取,每班每题不得超过 2 人。 学生自选课题 学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性, 能够巩固数据结构课程所学的知识。学生自选课题需在 18 周前报课程设计指导教师批准方可生效。 要求: 1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设 计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前 期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函 数,加大代码的重用率。 2、.设计的题目要求达到一定工作量(300 行以上代码),并具有一定的深度和难度。 3、程序设计语言推荐使用 C/C++,程序书写规范,源程序需加必要的注释; 4、每位同学需提交可独立运行的程序; 5 、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少 于 10 页(代码不算);
6、课程设计实践作为培养学生动手能力的一种手段,单独考核。

简单职工管理系统 dot

简单职工管理系统 dot

系统类的设计
1 类的对象: 系统有两个类: Employee :对象是公司里的每一个员工,是系统中最重要的类。 DBOperate :对象是系统的数据文件,完成对员工信息的保存和读取。 2 类的属性列表: Employee : 员工的编号:EmployeeNum (long) 员工的姓名:EmployName (string) 员工所属部门:EmployeeDepart (string) 员工级别:EmployeeGrade (string) 员工工龄:EmpoyeeWorkTime (long) 3 类的行为: Employee : 添加新员工信息:NewInfo(); 员工信息浏览:ShowInfo(); 员工信息修改:RefreshInfo(); 删除员工: DeleteInfo(); DBOperate : 保存员工信息:WriteIn(int iflag); 读取员工信息:ReadOut(); 更新员工总人数:RefreshMaxNum(int iflag); 注释:当iflag 为1时,人数增大;为零时,人数不变,即是修改;为 -1时,人数减少。
主函数设计 void NewInfo(); //添加新成员函数 void ShowInfo(); //员工信息查询函数 void showall(); //全体员工输出函数 void shownum(long number); //按编号输出函数 void RefreshInfo(); //修改员工信息函数 void DeleteInfoname(string name);//按姓名删除员工数据函数 void DeleteInfoall(); //删除所有员工信息函数 void DeleteInfo(); //删除员工信息函数 static int MaxNum();//返回系统已存储人数函数

数据结构简单的职工管理系统完整版

数据结构简单的职工管理系统完整版

湖南涉外经济学院数据结构课程设计报告题目:简单的职工管理系统院系名称:计算机学院专业名称:计算机科学与技术班级:计科201001班****:***学号:30****:***设计起止时间:2011年11月20日~2011年12月30日完成于2011年12月29日星期四目录第一章序 (1)第二章系统总体功能的设计和分析 (3)1、问题描述 (3)2、详细要求 (3)3、功能分析 (4)1、具体要求................................................................. 错误!未定义书签。

2、系统流程分析 (4)3、系统功能结构 (5)4、模块函数构造 (6)第三章详细设计分析 (7)1、抽象数据类型定义 (7)2、主函数设计 (8)3、查找算法设计 (9)4、排序算法设计 (8)第四章源程序代码 (11)第五章系统实现 (29)第六章课程设计总结 (31)第一章序电子信息时代由如洪水一样的凶猛,能在现实社会应用软件给我们的生活和工作带来方便和实用性就是软件存在的最大的价值。

数据结构所能解决的就是这些复杂的问题简单化。

《数据结构》是计算机专业学生学习的一门基础课程,但十分的重要。

本课程系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术。

本课程将为整个专业的学习以及软件设计水平的提高打下良好的基础。

为了学好《数据结构》,必须掌握编写一些在特定数据结构上的算法,并通过上机调试,更好地掌握各种数据结构及其特点。

经过本次课程设计,我们对于数据结构基本理论和存储结构及算法设计将有更加深入的理解,并提高我们在实际设计操作中系统分析、结构确定、算法选择、数学建模和信息加工的能力,提高我们的C/C++语言程序设计能力,以及培养学我们编写程序设计文档的能力,为将来在实战工作中打下良好的基础。

在经济发达的今天对于职工简单的管理都是有很大程度上的要求,一个工司能否较好较快的运行,与职工管理的好坏分不开关系,通过该系统,将一系列的问题系统化,能够更好的管理职工。

数据结构--员工管理信息系统代码

数据结构--员工管理信息系统代码

数据结构—员工管理信息系统源程序#include<iostream>#include〈string>#include <stdlib.h〉#include <stdio。

h>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW —2typedef int Status;//Status 是函数返回值类型,其值是函数结果状态代码。

#define MAXSIZE 100//顺序表可能达到的最大长度typedef struct {//ElemType 为自定义的数据类型,要根据实际情况定义,本例为学生信息:(学号,成绩)int num;string name;string sex;string birth;string edu;string job;string phone;string add;}ElemType;typedef struct {//定义顺序表类型为ListElemType *elem;int length;}List;void InitList(List &L)//创建空顺序表{L。

elem=new ElemType[MAXSIZE]; //动态分配空间L.length=0;}void ListInput(List &L,int n)//输入顺序表数据{int i;cout〈〈"请输入员工信息"<〈endl;for(i=0;i<n;i++){cout〈<"请输入员工编号:"〈<endl;cin>〉L.elem[i]。

num;//输入员工编号cout〈〈”请输入员工姓名"<<endl;cin〉〉L.elem[i].name; //输入姓名cout〈<"请输入员工性别:"〈〈endl;cin>〉L。

数据结构简单教职工管理系统课程设计报告

数据结构简单教职工管理系统课程设计报告

课程设计报告(本科)课程:数据结构学号:姓名:班级:教师:时间:计算机科学与技术系创建文件,录入信息,并保存到文件中以修改生日为例,修改职工的某些属性附录:源程序代码# 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;}。

数据结构课程设计_职工信息管理系统_单链表实现程序源代码

数据结构课程设计_职工信息管理系统_单链表实现程序源代码

//要求用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是否重复。

数据结构课程设计_职工信息管理系统_单链表实现程序源代码

数据结构课程设计_职工信息管理系统_单链表实现程序源代码

//要求用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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南涉外经济学院数据结构课程设计报告题目:简单的职工管理系统院系名称:计算机学院专业名称:计算机科学与技术班级:计科201001班****:***学号:30****:***设计起止时间:2011年11月20日~2011年12月30日完成于2011年12月29日星期四目录第一章序 (1)第二章系统总体功能的设计和分析 (3)1、问题描述 (3)2、详细要求 (3)3、功能分析 (4)1、具体要求................................................................. 错误!未定义书签。

2、系统流程分析 (4)3、系统功能结构 (5)4、模块函数构造 (6)第三章详细设计分析 (7)1、抽象数据类型定义 (7)2、主函数设计 (8)3、查找算法设计 (9)4、排序算法设计 (8)第四章源程序代码 (11)第五章系统实现 (29)第六章课程设计总结 (31)第一章序电子信息时代由如洪水一样的凶猛,能在现实社会应用软件给我们的生活和工作带来方便和实用性就是软件存在的最大的价值。

数据结构所能解决的就是这些复杂的问题简单化。

《数据结构》是计算机专业学生学习的一门基础课程,但十分的重要。

本课程系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术。

本课程将为整个专业的学习以及软件设计水平的提高打下良好的基础。

为了学好《数据结构》,必须掌握编写一些在特定数据结构上的算法,并通过上机调试,更好地掌握各种数据结构及其特点。

经过本次课程设计,我们对于数据结构基本理论和存储结构及算法设计将有更加深入的理解,并提高我们在实际设计操作中系统分析、结构确定、算法选择、数学建模和信息加工的能力,提高我们的C/C++语言程序设计能力,以及培养学我们编写程序设计文档的能力,为将来在实战工作中打下良好的基础。

在经济发达的今天对于职工简单的管理都是有很大程度上的要求,一个工司能否较好较快的运行,与职工管理的好坏分不开关系,通过该系统,将一系列的问题系统化,能够更好的管理职工。

简化管理,使管理更方便,准确性、直观性和实用性更强。

本着以锻炼自己的能力为目的,通过设计与制作进一步学习和掌握简单的职工管理系统的原理和使用方法。

虽然在一定程度上较为简单,但也能体现在出在人员管理上的方便快捷,也体现一个领导的管理水平是不是充满艺术。

第二章系统总体功能的设计和分析1 、问题描述根据课程设计题目的要求,由于职工信息是一定要存放在指定的文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、删除、插入、排序等一系列的操作;另外还应提供键盘式选择菜单实现功能选择对功能要求的实现是解决管理系统的关键问题。

一个管理系统能将其划分为插入、删除、查找、排序等功能。

对不同的功能模块进行代码的编写实现,最后通过一定的方式的进行连接测试和最终的调用,从而完成对各部分的操作。

2 、详细要求1.要求职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。

(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。

(2)删除一名职工:从职工管理文件中删除一名职工对象。

(3)查询:从职工管理文件中查询符合某些条件的职工。

(4)修改:检索某个职工对象,对其某些属性进行修改。

(5)排序:按某种需要对职工对象文件进行排序。

3 功能分析1、实现提示职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。

(1)由键盘输入职工对象,以文件方式保存。

程序执行时先将文件读入内存。

(2)对职工对象中的"姓名"按字典顺序进行排序。

(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。

2、系统流程分析(1)输入功能的实现:要想实现职工管理系统的输入,必须要建立一个职工信息系统的抽象数据类型,其中职工信息以链表的存储方式实现。

由键盘输入职工对象,以文件方式保存。

程序执行时先将文件读入内存。

(2)系统处理功能的实现:系统管理员根据公司的人员流动情况,在提示信息的提示下,选择相应的服务进行操作。

如对职工对象中的"姓名"按字典顺序进行排序;对排序后的职工对象进行增、删、查询、修改、排序等操作。

(3)输出的实现:根据选择的操作,输出与之对应的信息。

综上可以绘制出职工管理功能的系统流程图,如图1所示图1系统流程图3、系统功能结构根据职工管理系统问题的分析和设计要求,可以得到该职工管理系统可以分为五个模块:职工信息添加模块、职工信息修改模块、职工信息删除模块、职工信息查询模块、职工信息排序模块。

其系统功能结构如图2所示。

图2系统功能结构图4、模块函数构造根据系统功能结构图的描述,可以构造出该系统的抽象数据类型和相对应的函数,其方法名和功能如表1所示。

表1函数功能表第三章详细设计分析1、抽象数据类型定义(1)定义表结点(typedef struct Node)(2)定义职工信息(typedef struct Datatype)(3)初始化链表(ListInitiate(SLNode **head))2、主函数设计(1)根据详细设计要求,可以得到主函数代码及其对应的程序流程图:在主函数中,实现了友好的界面设计。

系统需要输入职工的基本信息:姓名、性别、出生年月、工作年月、学历、职务、住址、电话等。

这个系统还利用键盘输入提供的主菜单服务,在主菜单中,有七种操作的调用:新增职工信息:SLNode *ListInsert(SLNode *head,DataType x)查询职工信息:Listfind(SLNode head)删除职工信息:ListDelete(SLNode *head)修改职工信息:ListModify(SLNode *head)职工信息排序:Listpaixu(SLNode *head)保存职工信息:put(SLNode *head,FILE *fp)显示职工信息:print(SLNode *head)(2)主函数程序流程图如图3所示:图3主函数程序流程图3、查找算法设计在查询算法中,职工管理系统提供了七种查询操作,实现了系统的人性化查询操作。

这些查询操作分别为:对姓名进行查询,对性别进行查询,对出生年月进行查询,对工作年月进行查询,对学历进行查询,对职位进行查询,对住址进行查询,对电话进行查询等一些列操作。

查找算法中,利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。

查询算法程序流程图如图4所示:图4 查询算法程序流程图4、排序算法设计在排序算法中,职工管理系统提供了四种查询操作,实现了系统的基本排序操作。

这些排序操作分别为:对姓名进行排序,对性别进行排序,对出生年月进行排序,对工作年月进行排序,等一些列操作。

排序算法中,利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。

排序的核心代码:排序算法流程图如图5所示:图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){//创建一个带头节点的空链表。

Head=(Link)new Node;if(!Head){cout<<"分配内存失败!"<<endl; return NULL;}Head->m_Code="";Head->m_Name="";Head->m_Year=0;Head->m_Sex="";Head->m_Post="";Head->m_Department="";Head->m_Wage=0;Head->Next=NULL;return Head;}void Release(Link Head){//释放链表。

Link ptr;//声明一个操作用的指针。

while(Head!=NULL){ptr=Head;Head=Head->Next;delete ptr;//释放节点资源。

}}Link Add(Link Head){//前插法添加数据。

Link pNew;// 声明一个新节点。

char again;string code,name,sex,post,department; unsigned short int year;unsigned int wage;do{pNew=(Link)new Node;//数据域。

cout<<"请输入职工代码:";cin>>code;cout<<endl<<"请输入职工姓名:"; cin>>name;cout<<endl<<"请输入职工出生年份:"; cin>>year;while(cin.fail()){cout<<"请输入正确的年份格式。

相关文档
最新文档