C语言职工管理系统设计
本文实例为大家分享了C语言职工管理系统设计代码,供大家参考,具体内容如下
代码如下:
#include<stdio.h> #include<stdlib.h> #include<string.h> structWorker { intid;//工号 charname[16];//姓名 charsex[8];//性别 intage;//年龄 charedu_exp[32];//学历 intwage;//工资 charadress[32];//地址 charphong[16];//电话 Worker*next; }; //创建表头 Workerm_head={0}; //用户输入信息 intuser_input(Worker*w) { printf("ID:"); scanf("%d",&w->id); getchar();//吸收回车字符 printf("name:"); gets_s(w->name); printf("sex:"); gets_s(w->sex); printf("age:"); scanf("%d",&w->age); getchar();//吸收回车字符 printf("edu_exp:"); gets_s(w->edu_exp); printf("wage:"); scanf("%d",&w->wage); getchar();//吸收回车字符 printf("adress:"); gets_s(w->adress); printf("phone:"); gets_s(w->phong); return0; } //添加对象 voidadd(Worker*w) { w->next=m_head.next; m_head.next=w; } //按插入对象 intinsert(Worker*w) { Worker*cur=m_head.next;//当前节点current Worker*pre=&m_head;//上一个节点previous while(cur) { if(w->id<cur->id)//找到这个位置 break; pre=cur; cur=cur->next;//找到最后一个对象 } //插入到pre节点的后面 w->next=pre->next; pre->next=w; return0; } //删除对象 intremove(intid) { Worker*cur=m_head.next;//当前节点为第一个对象 Worker*pre=&m_head;//当前节点的前一个节点,为头节点,指向第一个对象 while(cur) { if(id==cur->id)//找到要删除的节点 { pre->next=cur->next; free(cur);//删除该节点 return1;//成功删除返回1 } pre=cur; cur=cur->next; } return0; } //查找对象 intfind(intid) { Worker*p=m_head.next; while(p) { if(id==p->id) { printf("ID:%d\nName:%s\nSex:%s\nAge:%d\nEdu-exp:%s\nWage:%d\nAdress:%s\nPhone:%s\n", p->id,p->name,p->sex,p->age,p->edu_exp,p->wage,p->adress,p->phong); return1;//找到目标返回1 } p=p->next; } return0; } //遍历 voidshow_all() { Worker*p=m_head.next; if(!p) { printf("暂无员工信息!\n"); return; } printf("工号姓名性别年龄学历工资住址电话\n"); printf("----------------------------------------------------------------\n"); while(p) { printf("%d%s%s%d%s%d%s%s\n",p->id,p->name,p->sex,p->age,p->edu_exp, p->wage,p->adress,p->phong); p=p->next; } } //向文件存入数据 intsave() { constchar*filename="F:\\data.txt"; FILE*fp=fopen(filename,"a"); if(fp==NULL) { printf("cannotopenthefile...."); exit(0); } Worker*p=m_head.next; while(p) { fprintf(fp,"\r"); fprintf(fp,"%d",p->id); fprintf(fp,"%s",p->name); fprintf(fp,"%s",p->sex); fprintf(fp,"%d",p->age); fprintf(fp,"%s",p->edu_exp); fprintf(fp,"%d",p->wage); fprintf(fp,"%s",p->adress); fprintf(fp,"%s",p->phong); fprintf(fp,"\t\r\n"); p=p->next; } fclose(fp); return0; } //修改对象 voidrewrite(intid) { Worker*p=m_head.next; while(p) { if(id==p->id) { user_input(p); } p=p->next; } } //主菜单 voidList() { Worker*w=NULL; charkey; while(1) { do { system("cls"); printf("*******************************************************\n"); printf("*主菜单操作界面*\n"); 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("*******************************************************\n"); key=getchar(); }while(key!='1'&&key!='2'&&key!='3'&&key!='4' &&key!='5'&&key!='6'&&key!='7'); switch(key) { case'1':system("cls"); while(1) { Worker*w=(Worker*)malloc(sizeof(Worker)); user_input(w); insert(w); if(getchar()=='N') { break; } } save(); free(w); break; case'2':system("cls"); show_all(); system("pause"); break; case'3':system("cls"); if(!m_head.next) { printf("暂无员工信息!\n"); system("pause"); break; } while(1) { intn; printf("---------------------------------\n"); printf("请输入要查找的ID号:"); scanf("%d",&n); if(!find(n)) { printf("找不到ID号为%d的职工信息...\n",n); } charch=getchar(); if(ch=='N') { break; } } break; case'4':system("cls"); if(!m_head.next) { printf("暂无员工信息!\n"); system("pause"); break; } while(1) { intn; printf("---------------------------------\n"); printf("请输入要删除的ID号:"); scanf("%d",&n); if(remove(n)) { printf("成功删除ID号为%d的职工信息.\n",n); } else printf("无法删除ID号为%d的职工信息.\n",n); charch=getchar(); if(ch=='N')//摁N退出 { break; } } break; case'5':system("cls");// if(!m_head.next) { printf("暂无员工信息!\n"); system("pause"); break; } while(1) { intn; printf("请输入要修改的ID号:\n"); scanf("%d",&n); printf("请修改:\n"); rewrite(n); if(getchar()=='N') { break; } } break; case'6':system("cls"); printf("职工系统使用说明:摁相应数字进入相应的子菜单,若想退出则摁N\n开始无数据,需要先进行录入.\n"); system("pause"); break; case'7':system("cls");// return; break; } } } intmain() { List(); return0; }
这是一个简单的小例子,主要是给大家一些思路,我这里只是简单的写了保存输入的数据到文件中,你也可用写一个从文件中读取数据到控制台,并且可以通过链表进行修改.这就麻烦一点,但是思路很简单.有兴趣的同学可以dobetter.
推荐几篇文章:
C++实现简单的图书管理系统
C++实现简单的职工信息管理系统
C++基础学生管理系统
关于管理系统的更多内容请点击《管理系统专题》进行学习
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。