职工信息管理系统
来源:互联网 发布:unity3d游戏源代码 编辑:程序博客网 时间:2024/04/28 01:19
/************************************************************ 版权所有(C)2017. zangyunpeng
** 文件名称:职工信息管理系统* 文件标识:无* 内容摘要:该代码用于函数声明及结构体构建* 其它说明:无* 当前版本: V1.0* 作 者:臧云鹏* 完成日期: 2017 12 22**修改记录1:
*修改日期: 2017 12 22
*版本号 V1.0
*修改人: zangyunpeng
***********************************************************/
课程设计要求:
6
块
。
职
工
信
息
管
理
系
统
职
工
信
息
包
括
职
工
号
、
姓
名
、
性
别
、
年
龄
、
学
历
、
工
资
、
住
址
、
电
话
等
(
职
工
号
不
重
复
)
。
设
计
一
个
职
工
信
息
管
理
系
统
,
使
之
能
提
供
以
下
功
能
:
(
1
)
系
统
以
菜
单
方
式
工
作
(
2
)
职
工
信
息
录
入
功
能
(
职
工
信
息
用
文
件
保
存
)
-
-
输
入
(
3
)
职
工
信
息
浏
览
功
能
-
-
输
出
,
包
括
在
退
出
系
统
时
,
将
数
据
保
存
到
文
件
(
4
)
查
询
和
排
序
功
能
:
按
工
资
查
询
按
学
历
查
询
等
6
块
。
职
工
信
息
管
理
系
统
职
工
信
息
包
括
职
工
号
、
姓
名
、
性
别
、
年
龄
、
学
历
、
工
资
、
住
址
、
电
话
等
(
职
工
号
不
重
复
)
。
设
计
一
个
职
工
信
息
管
理
系
统
,
使
之
能
提
供
以
下
功
能
:
(
1
)
系
统
以
菜
单
方
式
工
作
(
2
)
职
工
信
息
录
入
功
能
(
职
工
信
息
用
文
件
保
存
)
-
-
输
入
(
3
)
职
工
信
息
浏
览
功
能
-
-
输
出
,
包
括
在
退
出
系
统
时
,
将
数
据
保
存
到
文
件
(
4
)
查
询
和
排
序
功
能
:
按
工
资
查
询
按
学
历
查
询
等
6
块
。
职
工
信
息
管
理
系
统
职
工
信
息
包
括
职
工
号
、
姓
名
、
性
别
、
年
龄
、
学
历
、
工
资
、
住
址
、
电
话
等
(
职
工
号
不
重
复
)
。
设
计
一
个
职
工
信
息
管
理
系
统
,
使
之
能
提
供
以
下
功
能
:
(
1
)
系
统
以
菜
单
方
式
工
作
(
2
)
职
工
信
息
录
入
功
能
(
职
工
信
息
用
文
件
保
存
)
-
-
输
入
(
3
)
职
工
信
息
浏
览
功
能
-
-
输
出
,
包
括
在
退
出
系
统
时
,
将
数
据
保
存
到
文
件
(
4
)
查
询
和
排
序
功
能
:
按
工
资
查
询
按
学
历
查
询
等
职工信息管理系统职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。设计一个职工信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)职工信息录入功能(职工信息用文件保存)--输入(3)职工信息浏览功能--输出,包括在退出系统时,将数据保存到文件(4)查询和排序功能:按工资查询按学历查询等
6
块
。
职
工
信
息
管
理
系
统
职
工
信
息
包
括
职
工
号
、
姓
名
、
性
别
、
年
龄
、
学
历
、
工
资
、
住
址
、
电
话
等
(
职
工
号
不
重
复
)
。
设
计
一
个
职
工
信
息
管
理
系
统
,
使
之
能
提
供
以
下
功
能
:
(
1
)
系
统
以
菜
单
方
式
工
作
(
2
)
职
工
信
息
录
入
功
能
(
职
工
信
息
用
文
件
保
存
)
-
-
输
入
(
3
)
职
工
信
息
浏
览
功
能
-
-
输
出
,
包
括
在
退
出
系
统
时
,
将
数
据
保
存
到
文
件
(
4
)
查
询
和
排
序
功
能
:
按
工
资
查
询
按
学
历
查
询
等
实现源代码如下:
1.source.cpp
#include<stdio.h>#include<stdlib.h>#include<string.h>#include"head.h"/****************************************************************************************功能描述:菜单函数*输入参数:无*输出参数:无*返回值:1***************************************************************************************/void menu(){ system("color 6E"); printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n"); printf("\t◆ 欢迎使用职工信息管理系统 ◆\n"); printf("\t◆ ◆\n"); printf("\t◆ 【菜单】 ◆\n"); printf("\t◆ 1.录入职工信息 ◆\n"); printf("\t◆ 2.查询职工信息 ◆\n"); printf("\t◆ 3.职工信息排序 ◆\n"); printf("\t◆ 4.插入职工信息 ◆\n"); printf("\t◆ 5.浏览职工信息 ◆\n"); printf("\t◆ 6.修改职工信息 ◆\n"); printf("\t◆ 7.删除职工信息 ◆\n"); printf("\t◆ 8.保存职工信息 ◆\n"); printf("\t◆ 【9】退出系统 ◆\n"); printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");}/****************************************************************************************功能描述:初始化单链表*输入参数:无*输出参数:无*返回值:1***************************************************************************************/int Initlist(Linklist *L) //初始化单链表{ *L=(Linklist )malloc(sizeof(LNode)); if((*L)==NULL) return (0); (*L)->next=NULL; return OK;}/****************************************************************************************功能描述:头插法生成单链表*输入参数:职工各项信息工号、姓名、性别、年龄、学历、工资、住址 *输出参数:无*返回值:1或0***************************************************************************************/int CreatList(Linklist L)//头插法生成单链表{ LNode *p,*r,*s;char id[30]; int k=0;r=L;s=L->next;//链表没有节点时,s=null;/链表有节点时,指向第一个职工节点while(r->next!=NULL)//如果存在后继结点时,r指针后移一个{r=r->next;}while(L){ printf("\t职工号:"); scanf("%s",id);s=L->next;//每次从第一个节点开始找,看id是否重复while(s){if(strcmp(s->data.id,id)==0){printf("\t提示:职工号为'%s'的职工已经存在!\n",id); k=1;return OK;}s=s->next;} p=(Linklist)malloc(sizeof(LNode));memset(p,0,sizeof(LNode));//清空内存 strcpy(p->data.id,id); printf("\t姓名:"); scanf("%s",p->data.name); printf("\t性别:"); scanf("%s",p->data.sex); printf("\t年龄:"); scanf("%d",&p->data.age); printf("\t学历:"); scanf("%s",p->data.edu); printf("\t工资:"); scanf("%lf",&p->data.salary); printf("\t电话:"); scanf("%s",p->data.phone); printf("\t地址:"); scanf("%s",p->data.address); break;} p->next=NULL;//表明这是链表的尾部结点r->next=p;//将新建的结点加入链表尾部中 r=p;return OK;}/****************************************************************************************功能描述:显示职工信息*输入参数:p指针*输出参数:职工各项信息*返回值:无***************************************************************************************/void Display(Linklist L)//显示职工信息{ LNode *p;p=L->next; if(p==NULL) { printf("\t现在没有职工信息,请先输入职工信息\n\n"); return; } printf("\t职工号\t姓名\t\t性别\t年龄\t学历\t工资\t电话\t地址\n\n"); while(p) { printf("\t%s\t",p->data.id); printf("%s\t\t",p->data.name); printf("%s\t",p->data.sex); printf("%d\t",p->data.age); printf("%s\t",p->data.edu); printf("%0.2lf\t",p->data.salary); printf("%s\t",p->data.phone); printf("%s\t",p->data.address);printf("\n"); p=p->next; }}/****************************************************************************************功能描述:职工信息查询*输入参数:a k*输出参数:查找到的职工信息*返回值:1***************************************************************************************/void Search(Linklist L)//职工信息查询 { int a,k=0; char name[10]; char id[20]; char phone[30]; printf("\t请输入查询方式(1按职工号查询,2按姓名查找):"); scanf("%d",&a); if(a==1) { k=1; printf("\t请输入查询职工号:"); scanf("%s",&id); SearchID(L,id);//ID查询 } if(a==2) { k=1; printf("\t请输入查询职工姓名:"); scanf("%s",&name); SearchName(L,name);//姓名查询 } if(k==0) { printf("\t请输入正确的序号!\n"); } }/****************************************************************************************功能描述:职工号查询*输入参数:职工工号 p指针 L*输出参数:该职工各项信息*返回值:1***************************************************************************************/int SearchID(Linklist L,char id[20])//职工号查询{ LNode *p; p=L;int k=0; while(p) { if(strcmp(p->data.id,id)==0) { printf("\t职工号 %s\n",p->data.id); printf("\t姓名 %s\n",p->data.name); printf("\t性别 %s\n",p->data.sex); printf("\t年龄 %d\n",p->data.age); printf("\t学历 %s\n",p->data.edu); printf("\t工资 %0.2lf\n",p->data.salary); printf("\t电话 %s\n",p->data.phone); printf("\t地址 %s\n",p->data.address);k=1; } p=p->next; }if(k==0){printf("\t对不起,没有您想要查找的人!\n");} return OK;}/****************************************************************************************功能描述:姓名查询*输入参数:职工姓名 p指针*输出参数:该职工各项信息*返回值:1***************************************************************************************/int SearchName(Linklist L,char name[10])//姓名查询{ LNode *p; p=L;int k=0; while(p) { if(strcmp(p->data.name,name)==0) { printf("\t职工号 %s\n",p->data.id); printf("\t姓名 %s\n",p->data.name); printf("\t性别 %s\n",p->data.sex); printf("\t年龄 %d\n",p->data.age); printf("\t学历 %s\n",p->data.edu); printf("\t工资 %0.2lf\n",p->data.salary); printf("\t电话 %s\n",p->data.phone); printf("\t地址 %s\n",p->data.address);k=1; } p=p->next; }if(k==0){printf("\t对不起,没有您想要查找的人!\n");} return OK;}/****************************************************************************************功能描述:职工信息排序*输入参数:b k *输出参数:ID排序 ;姓名排序; 工资排序后的职工信息*返回值:无***************************************************************************************/void Sort(Linklist L)//职工信息排序{ int b,k=0; printf("\t请输入排序方式(1按职工号排序,2按姓名排序,3按工资排序):"); scanf("%d",&b); if(b==1) { k=1; printf("\t按职工号排序为:\n"); SortID(L);//职工号排序 Display(L); } if(b==2) { k=1; printf("\t按姓名排序为:\n"); SortName(L);//姓名排序 Display(L);//显示职工信息 }if(b==3) {k=1;printf("\t按工资排序为:\n");SortSalary(L);//工资排序Display(L);//显示职工信息 }if(k==0){printf("\t请输入正确的序号!\n");}}/****************************************************************************************功能描述:职工号排序*输入参数:p指针 q指针*输出参数:按照职工号排序后各职工各项信息*返回值:无***************************************************************************************/void SortID(Linklist L)//职工号排序{ Linklist p,q; struct employee temp; for(p=L->next;p!=NULL;p=p->next) { for(q=p->next;q!=NULL;q=q->next) { if((strcmp(p->data.id,q->data.id)>0)) { temp=q->data; q->data=p->data; p->data=temp; } } }}/****************************************************************************************功能描述:姓名排序*输入参数:p,q指针*输出参数:按照姓名排序后各职工各项信息*返回值:无*其他说明:***************************************************************************************/void SortName(Linklist L)//姓名排序{ Linklist p,q; struct employee temp; for(p=L->next;p!=NULL;p=p->next) { for(q=p->next;q!=NULL;q=q->next) { if((strcmp(p->data.name,q->data.name)>0)) { temp=q->data; q->data=p->data; p->data=temp; } } }}/****************************************************************************************功能描述:职工工资排序*输入参数:p,q指针*输出参数:按照职工工资排序后各职工各项信息*返回值:无***************************************************************************************/void SortSalary(Linklist L)//职工工资排序{ Linklist p,q; struct employee temp; for(p=L->next;p!=NULL;p=p->next){ for(q=p->next;q!=NULL;q=q->next) { if(p->data.salary>q->data.salary) { temp=q->data; q->data=p->data; p->data=temp; } } }}/****************************************************************************************功能描述:插入信息*输入参数:pre s 指针 *输出参数:职工信息*返回值:1*其他说明:***************************************************************************************/int Ins(Linklist L, char id[20])//插入信息{ LNode *pre,*s;int k=0; pre=L; while(pre->next!=NULL) { pre=pre->next; if((strcmp( pre->data.id,id))==0) {k=1;printf("\t对不起,要查找职工号已存在!\n"); } }if(k==0){s=(LNode*)malloc(sizeof(LNode));printf("\t请输入要插入员工信息\n");printf("\t职工号:");scanf("%s",&s->data.id);printf("\t姓名:");scanf("%s",&s->data.name);printf("\t性别:");scanf("%s",&s->data.sex);printf("\t年龄:");scanf("%d",&s->data.age);printf("\t学历:");scanf("%s",&s->data.edu);printf("\t工资:");scanf("%0.2lf",&s->data.salary);printf("\t电话:");scanf("%s",&s->data.phone);printf("\t地址:");scanf("%s",&s->data.address);s->next=pre->next;pre->next=s;printf("\t插入员工信息成功!\n");} return OK;}/****************************************************************************************功能描述:更改信息*输入参数: c k p指针 *输出参数:修改后的职工信息*返回值:1*其他说明:***************************************************************************************/int Alter(Linklist L,char id[20])//更改信息{ int c;int k=0; LNode *p; p=L; while(p) { if(strcmp(p->data.id,id)==0) {k=1;printf("\t原来的职工信息:\n");printf("\t职工号 %s\n",p->data.id); printf("\t姓名 %s\n",p->data.name); printf("\t性别 %s\n",p->data.sex); printf("\t年龄 %d\n",p->data.age); printf("\t学历 %s\n",p->data.edu); printf("\t工资 %0.2lf\n",p->data.salary); printf("\t电话 %s\n",p->data.phone); printf("\t地址 %s\n",p->data.address); printf("\t请输入要修改的选项(1职工号,2姓名,3性别,4年龄\n"); printf(" \t 5学历,6工资,7电话,8地址):"); scanf("%d",&c); switch(c) { case 1: { printf("\t请输入修改员工编号:",p->data.id); scanf("%s",p->data.id); printf("\t修改员工信息成功!\n"); break; } case 2: { printf("\t请输入员工修改姓名:",p->data.name); scanf("%s",p->data.name); printf("\t修改员工信息成功!\n"); break; } case 3: { printf("\t请输入员工修改性别:",p->data.sex); scanf("%s",p->data.sex); printf("\t修改员工信息成功!\n"); break; } case 4: { printf("\t请输入员工修改年龄:",p->data.age); scanf("%d",&p->data.age); printf("\t修改员工信息成功!\n");break; } case 5: { printf("\t请输入员工修改学历:",p->data.edu); scanf("%s",p->data.edu); printf("\t修改员工信息成功!\n"); break; } case 6: { printf("\t请输入员工修改工资:",p->data.salary); scanf("%lf",&p->data.salary); printf("\t修改员工信息成功!\n"); break; } case 7: { printf("\t请输入员工修改电话:",p->data.phone); scanf("%s",p->data.phone); printf("\t修改员工信息成功!\n"); break; } case 8: { printf("\t请输入员工修改地址:",p->data.address); scanf("%s",p->data.address); printf("\t修改员工信息成功!\n"); break; }default:printf("\t请输入正确序号!\n"); break; } } p=p->next; }if(k==0){printf("\t该职工号不存在!\n");} return OK; }/****************************************************************************************功能描述:按职工号删除*输入参数:p r 指针*输出参数:无*返回值:1*其他说明:***************************************************************************************/int Del(Linklist L,char id[20])//按ID删除{ LNode *p; LNode *r; p=L->next; r=L; while(!(strcmp(p->data.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;}/****************************************************************************************功能描述:将操作完成后的信息存储到文件*输入参数:无*输出参数:无*返回值:无***************************************************************************************/void Save(Linklist L){ FILE *fpb2; //文件指针 LNode *p2; fpb2=fopen("worker.txt","wb"); //把职工信息写入到文件中 for(p2=L->next; p2!=NULL; p2=p2->next) fwrite(p2,sizeof(LNode),1,fpb2); fclose(fpb2);}/****************************************************************************************功能描述:把文件中的职工信息读出来*输入参数:无*输出参数:无*返回值:无***************************************************************************************/void Read(Linklist L){ FILE *fpb1; //文件指针 LNode *p1,*s1; fpb1=fopen("worker.txt","rb"); //读方式打开职工文件 if(fpb1!=NULL) { p1=(Linklist)malloc(sizeof(LNode)); if(!p1)exit(1); p1->next=NULL; while(fread(p1,sizeof(LNode),1,fpb1)==1) { if(L->next==NULL) { L->next=p1; s1=p1; } else { s1->next=p1; s1=p1; } p1=(Linklist)malloc(sizeof(LNode)); if(!p1)exit(1); p1->next=NULL; } }}
2.main.cpp
#include<stdio.h>#include<stdlib.h>#include<string.H>#include"D://head.h"#define OK 1#define ERROR 0/****************************************************************************************功能描述:测试函数*输入参数:你的选择*输出参数:无*返回值:0*其他说明:完成各个函数测试,消息字段之间用分号(;)隔离***************************************************************************************/int main()//主函数{ Linklist L; int x=1; int y; char m;char id[20]; Initlist(&L);//初始化单链表 Read(L); while(x) { menu(); printf("\t请选择操作序号并按回车:"); scanf("%d",&y); switch(y) { case 1: { system ("cls");//清空主界面 printf("\t*********************欢迎进入录入模块********************\n"); CreatList(L);//头插法生成单链表 do { printf("\t是否继续输入?(y/n):"); getchar(); scanf("%c",&m); if(m=='y') { CreatList(L);//显示职工信息 } } while(m!='n'); printf("\t*******************欢迎下次进入录入模块******************\n"); break; } case 2:{ system ("cls");//清空主界面 printf("\t*********************欢迎进入查询模块********************\n");Search(L);//职工信息查询 do{ printf("\t是否继续查询?(y/n):"); getchar(); scanf("%c",&m); if(m=='y'){ Search(L);//职工信息查询}} while(m!='n'); printf("\t*******************欢迎下次进入查找模块******************\n"); break;} case 3:{ system ("cls");//清空主界面 printf("\t*******************欢迎进入排序模块**********************\n"); Sort(L); do{ printf("\t是否继续查询?(y/n):"); getchar(); scanf("%c",&m);if(m=='y') { Sort(L); }}while(m!='n'); printf("\t*******************欢迎下次进入排序模块******************\n"); break;} case 4:system ("cls");//清空主界面 printf("\t*********************欢迎进入插入模块********************\n");printf("\t请输入要插入查找的职工号:"); getchar(); scanf("%s",&id); Ins(L,id);//插入信息do{printf("\t是否继续插入?(y/n):");getchar();scanf("%c",&m); if(m=='y'){printf("\t请输入要插入查找的职工号:");getchar(); scanf("%s",&id);Ins(L,id);//插入信息}}while(m!='n'); printf("\t*******************欢迎下次进入插入模块******************\n"); break; case 5: system ("cls");//清空主界面 printf("\t*********************欢迎进入显示模块********************\n"); printf("\t所有职工信息如下所示\n"); Display(L);//显示职工信息 printf("\t*******************欢迎下次进入显示模块******************\n"); break; case 6: system ("cls");//清空主界面 printf("\t*********************欢迎进入修改模块********************\n"); printf("\t请输入要修改员工职工号:"); getchar(); scanf("%s",&id); Alter(L,id);//更改信息do{printf("\t是否继续修改?(y/n):");getchar();scanf("%c",&m); if(m=='y'){printf("\t请输入要修改员工职工号:");getchar(); scanf("%s",&id);Alter(L,id);//更改信息}}while(m!='n'); printf("\t******************欢迎下次进入修改模块*******************\n"); break; case 7:system ("cls");//清空主界面 printf("\t*********************欢迎进入删除模块********************\n"); printf("\t请输入删除员工职工号:"); getchar(); scanf("%s",&id); Del(L,id);//按职工号删除do{printf("\t是否继续删除?(y/n):");getchar();scanf("%c",&m);if(m=='y'){printf("\t请输入要删除员工职工号:");getchar(); scanf("%s",&id);Del(L,id);//按职工号删除}}while(m!='n'); printf("\t******************欢迎下次进入删除模块*******************\n"); break;case 8:system("cls");printf("\t*********************欢迎进入保存模块********************\n");Save(L);//保存数据printf("\t职工信息保存成功!\n"); printf("\t******************欢迎下次进入保存模块*******************\n"); break; case 9: system ("cls");//清空主界面x=0; printf("\t****************感谢您使用本系统,再见!*****************\n"); exit(0); default: printf("\t请输入正确序号!\n"); break; } } return 0;}3。head
#define OK 1#define ERROR 0struct employee{ char id[20];//职工号 char name[20];//姓名 char sex[20];//性别 int age;//年龄 char edu[20];//学历 double salary;//工资 char phone[30];//电话 char address[30];//地址};//存储结构typedef struct LNode{ struct employee data; struct LNode* next;}LNode, *Linklist;void menu();//菜单函数int Initlist(Linklist *L);//初始化单链表int CreatList(Linklist L);//头插法生成单链表void Display(Linklist L);//显示职工信息void Search(Linklist L);//职工信息查询int SearchID(Linklist L,char id[20]);//职工号查询int SearchName(Linklist L,char name[10]);//姓名查询void Sort(Linklist L);//职工信息排序void SortID(Linklist L);//职工号排序void SortName(Linklist L);//姓名排序void SortSalary(Linklist L);//工资排序int Ins(Linklist L, char id[20]);//插入信息int Alter(Linklist L,char id[20]);//更改信息int Del(Linklist L,char id[20]);//按职工号删除void Save(Linklist L);//保存到文件void Read(Linklist L);//读取信息
运行结果截图:
阅读全文
0 0
- 职工信息管理系统
- 职工信息管理系统
- 职工信息管理系统实验设计
- 职工信息管理系统
- 职工信息管理系统:
- 职工信息管理系统
- 职工信息管理系统
- 【C语言】职工信息管理系统
- C语言职工信息管理系统
- 课程设计之职工信息管理系统
- 课程设计之职工信息管理系统
- 数据结构课程设计、职工信息管理系统
- 职工信息管理系统(未完成)
- 职工信息管理系统(课程设计)
- C语言课程设计职工信息管理系统
- 《c语言课程设计》---职工信息管理系统
- C语言课程设计之职工信息管理系统
- C++课程设计(职工信息管理系统)
- 如何实时查看linux下的日志
- centOS 6.5关闭防火墙步骤
- spark-kafka direct方式读取和receiver方式读取的区别
- 深入探索透视投影变换
- 让curl命令支持http2
- 职工信息管理系统
- linux查看系统的日志的一些实用操作
- 使用 Electric Imp 平台快速启动物联网产品开发---凯利讯半导体
- bzoj2055 80人环游世界(有源汇有上下界最小费用流)
- 圆桌讨论:人工智能的未来
- Oracle数据库字符集和客户端字符集不同,强制转化可能会造成不可预期的后果
- 深度学习领域四个不可不知的重大突破
- 2017回顾与2018前瞻:机器学习与人工智能
- Struts2 --- 入门简介