员工管理系统
来源:互联网 发布:深圳网络诈骗案 编辑:程序博客网 时间:2024/06/10 03:31
【员工管理系统】
问题描述:每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
基本要求:排序:按不同关键字,对所有员工的信息进行排序;查询:按特定条件查找员工;更新,按编号对某个员工的某项信息进行修改;插入,加入新员工的信息;删除,按编号删除已离职的员工的信息。
选作内容:实现图形用户界面。
通过链表实现
数据结构:
struct workers
{
char name[15];//姓名
char department[18];//单位
char gender;//性别
unsigned int age;//年龄
unsigned long telephone;//电话
unsigned long wage;//工资
unsigned long num;//职工号
struct workers *next;
};
操作实现:
/*插入职工信息,通过链表实现 */
/*具体实现职工信息的插入*/
/*对职工信息的删除操作*/
/*修改操作*/
/*实现对员工信息的查找*/
/*排序*/
/* 输出员工信息 */
/* 显示职工工资情况 计算平均工资 */
#include<stdio.h>#include<stdlib.h>#include<string.h>#include <iostream>using namespace std;struct workers{ char name[15];//姓名 char department[18];//单位 char gender;//性别 unsigned int age;//年龄 unsigned long long telephone;//电话 unsigned long wage;//工资 unsigned long num;//职工号 struct workers *next; char xueli[20];//学历 char zhiwu[20];//职务 char zhuzhi[20];//住址 workers operator=(workers &b) { strcpy(name,b.name); strcpy(department,b.department); strcpy(xueli,b.xueli); strcpy(zhiwu,b.zhiwu); strcpy(zhuzhi,b.zhuzhi); age=b.age; num=b.num; wage=b.wage; gender=b.gender; telephone=b.telephone; }};workers *creat_list(workers *head,int n)//创建一个长度为n的链表{ workers *p,*q; int i; q=head; for(i=0; i<n; i++) { p=(workers *)malloc(sizeof(workers));//开辟一个新结点 if(p!=NULL) { q->next=p; q=p; } } p->next=NULL; return head;//返回头指针,这样就可以对链表进行操作}void output(workers *head)//输出函数,从链表头部输到尾部{ workers *p=head; if(head->next==NULL) {printf("链表为空!\n");return;} else { cout<<"现存员工信息为:\n"; printf("姓名 单位 性别 年龄 电话"); printf(" 工资 职工号 学历 职务 住址\n"); while(1) { p=p->next; printf("%-15s ",p->name); printf("%-20s ",p->department); printf(" %c ",p->gender); printf("%-5d ",p->age); printf("%-13lld ",p->telephone); printf("%-6ld ",p->wage); printf("%-12ld ",p->num); printf("%-15s ",p->xueli); printf("%-15s ",p->zhiwu); printf("%-15s ",p->zhuzhi); printf("\n"); if(p->next==NULL) break; } }}void input(workers *head,int n)//输入员工信息{ workers *p=head->next; while(n>0) { cout<<"\n输入员工姓名: ";cin>>p->name; cout<<"输入员工单位: ";cin>>p->department; cout<<"输入员工职务: ";cin>>p->zhiwu; cout<<"输入员工性别: ";cin>>p->gender; cout<<"输入员工年龄: ";cin>>p->age; cout<<"输入员工电话: ";cin>>p->telephone; cout<<"输入员工工资: ";cin>>p->wage; cout<<"输入员工职工号: ";cin>>p->num; cout<<"输入员工学历: ";cin>>p->xueli; cout<<"输入员工住址: ";cin>>p->zhuzhi; //system("pause"); cout<<endl; p=p->next; n--; }}workers *shanchu(workers *head,unsigned long num)//按照职工号删除{ workers temp; workers *p=head->next,*q,*ans=head; if(p->num==num) head->next=p->next; else for(p=head->next;p->next!=NULL;p=p->next) { if(p->next->num==num) { q=p->next->next; p->next=q; break; } } cout<<"删除成功\n"; return ans;}void Sortbyage(workers *head)//排序函数,年龄升序{ workers temp; workers *p,*q,*max; for(p=head->next;p->next!=NULL;p=p->next) { max=p; for(q=p->next;q!=NULL;q=q->next) if(q->age< max->age) max=q; if(max!=p) //交换结点的数据域内容,指针内容没变。 { temp=*p; *p=*max; *max=temp; } }}void SortbyWage(workers *head)//排序函数,工资升序{ workers temp; workers *p,*q,*max; for(p=head->next;p->next!=NULL;p=p->next) { max=p; for(q=p->next;q!=NULL;q=q->next) if(q->wage <max->wage) max=q; if(max!=p) //交换结点的数据域内容,指针内容没变。 { temp=*p; *p=*max; *max=temp; } }}void SortbyNum(workers *head)//排序函数,工号升序{ workers temp; workers *p,*q,*max; for(p=head->next;p->next!=NULL;p=p->next) { max=p; for(q=p->next;q!=NULL;q=q->next) if(q->num< max->num) max=q; if(max!=p) //交换结点的数据域内容,指针内容没变。 { temp=*p; *p=*max; *max=temp; } }}void SearchbyNum(workers *head,unsigned long num)//按职工号查询,职工号唯一{ workers *p=head; int f=0; while(1) { p=p->next; if(p->num==num) { f=1; printf("%-15s ",p->name); printf("%-20s ",p->department); printf(" %c ",p->gender); printf("%d ",p->age); printf("%lld ",p->telephone); printf("%ld ",p->wage); printf("%ld ",p->num); printf("%-15s ",p->xueli); printf("%-15s ",p->zhiwu); printf("%-15s ",p->zhuzhi); printf("\n");break;} if(p->next==NULL) break; }if(f==0)cout<<"查无此人\n";}bool check(workers *head,unsigned long num){ workers *p=head; while(1) { p=p->next; if(p->num==num) return true; if(p->next==NULL) break; } return false;}void SearchbyName(workers *head,char name[20])//按名字查询,可查重名的{ workers *p=head; int f=0; while(1) { p=p->next; if(strcmp(p->name,name)==0) { f=1; printf("%-15s ",p->name); printf("%-20s ",p->department); printf(" %c ",p->gender); printf("%d ",p->age); printf("%lld ",p->telephone); printf("%ld ",p->wage); printf("%ld ",p->num); printf("%-15s ",p->xueli); printf("%-15s ",p->zhiwu); printf("%-15s ",p->zhuzhi); printf("\n");} if(p->next==NULL) break; } if(f==0)cout<<"查无此人\n";}void charu(workers *head){ workers *p=(workers *)malloc(sizeof(workers)); workers *q=head->next; head->next=p; p->next=q; cout<<"\n输入员工姓名: ";cin>>p->name; cout<<"输入员工单位: ";cin>>p->department; cout<<"输入员工职务: ";cin>>p->zhiwu; cout<<"输入员工性别: ";cin>>p->gender; cout<<"输入员工年龄: ";cin>>p->age; cout<<"输入员工电话: ";cin>>p->telephone; cout<<"输入员工工资: ";cin>>p->wage; cout<<"输入员工职工号: ";cin>>p->num; cout<<"输入员工学历: ";cin>>p->xueli; cout<<"输入员工住址: ";cin>>p->zhuzhi; cout<<"插入完成\n";}void xiugai(workers *head,unsigned long num){ SearchbyNum(head,num); shanchu(head,num); charu(head);}void title(){ printf("*****************员工管理系统********************\n"); printf("* *\n"); printf("* 功能说明: *\n"); printf("* 按下 0 输出员工信息 *\n"); printf("* 按下 1 新建一个链表存储员工信息 *\n"); printf("* 按下 2 按照职工号查询员工信息 *\n"); printf("* 按下 3 按照 姓名 查询员工信息 *\n"); printf("* 按下 4 按照职工号删除员工信息 *\n"); printf("* 按下 5 按照职工号对员工信息进行排序 *\n"); printf("* 按下 6 按照 年龄 对员工信息进行排序 *\n"); printf("* 按下 7 按照 工资 对员工信息进行排序 *\n"); printf("* 按下 8 输入工号可对员工信息进行修改 *\n"); printf("* 按下 9 可新增一个员工的信息 *\n"); printf("* 按下 10 退出系统 *\n"); printf("* *\n"); printf("*************************************************\n");}void solve(){ workers *head=(workers *)malloc(sizeof(workers)); head->next=NULL; int m; while(1) { title(); int n; cin>>n; int flag=0; switch(n) { case 0:output(head);break; case 1:cout<<"请输入要存储的员工信息的个数\n";cin>>m;creat_list(head,m);input(head,m);break; case 2:cout<<"请输入要查询的工号\n";int num;cin>>num;SearchbyNum(head,num);break; case 3:cout<<"请输入要查询的姓名\n";char name[20];cin>>name;SearchbyName(head,name);break; case 4:cout<<"请输入要删除的职工号\n";unsigned long hao;cin>>hao;if(check(head,hao))shanchu(head,hao);else cout<<"查无此人\n";break; case 5:cout<<"按照职工号对员工信息进行排序后结果如下:\n";SortbyNum(head);output(head);break; case 6:cout<<"按照 年龄 对员工信息进行排序后结果如下:\n";Sortbyage(head);output(head);break; case 7:cout<<"按照 工资 对员工信息进行排序后结果如下:\n";SortbyWage(head);output(head);break; case 8:cout<<"请输入要修改信息的员工的职工号\n";int aaa;cin>>aaa;xiugai(head,aaa);break; case 9:cout<<"新增一个员工信息\n";charu(head);break; case 10:flag=1;break; default: cout<<"输入有误,重新输入\n"; } if(flag==1)break; }}int main(){ solve(); return 0;}
测试数据:
5zhangsanjiaowuchu zhuzhen m 39 18846795237 5000 11101 shuoshi jiashuqu#1*1lisibangongshizhiyuanf3218846789454450011505benkejiashuqu#2*8wangwu yanjiushi caozuoyuan f 28 18867887854 4750 11809 benke jiashuqu#3*5zhaoliu baoweichu baoan m 42 18564973854 3750 11209 gaozhong jiashuqu#7*4zhangsan jiaowuchu chuzhang m 45 13345671238 6600 11001 yanjiusheng jiashuqu#4*3
阅读全文
0 0
- 员工考勤管理系统
- 员工管理系统
- 课程设计----员工管理系统
- 员工管理系统(数组)
- 员工管理系统
- 员工管理系统
- 员工管理系统
- 员工管理系统
- 员工管理系统
- 员工管理系统
- 员工管理系统
- 员工管理系统
- 员工管理系统
- java 员工管理系统
- 员工管理系统
- 简单的员工管理系统
- 员工学生管理系统小结
- java【源码】员工管理系统
- MediaCodec硬编码YUV和PCM——非常具有参考意义
- 完全覆盖
- ios-实现可拉伸的图片
- 数据结构 学习笔记(十):排序(上):简单排序(冒泡,插入),希尔 / 选择 / 堆 / 归并 排序
- Oracle根据当前时间获取最近5年,最近6个月,最近30天的时间
- 员工管理系统
- 关于offsetTop与offsetHeight的区别以及使用方法
- 倍增算法(LCA)
- Caffe 安装OpenCV-2.4.13
- 一个自登陆谷歌插件
- matplotlib(学习一)
- 网页资源加载动画
- 【精】TCP/IP的三次握手和四次挥手
- Hibernate 查询结果集转成自定义模型类class