*/ * copyright (c) 2016,烟台大学计算机与控制工程学院 * all rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:worldhello * 完成日期:2016年6月30日 * 版本号:v1.0 * 问题描述:模块化设计,分别有录入信息,删除信息,浏览信息,查询信息,修改信息,采用链表存储数据,用文件保存职工信息等 * 程序输入:无 * 程序输出:见运行结果 */
在此博文中的程序可能会有一些bug,如想获取此程序的工程压缩包,请关注微信公众号:worldhello,在后台回复:职工信息管理,即可获得压缩包与完整的程序设计报告。另外回复:银行储蓄,可获得通过使用xml文件存取用户信息的c++程序。后台获得的程序bug相对来说会比较少,因为一直在优化。
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "malloc.h" struct work{ int number; //工号 char name[32]; //姓名 char sex[2]; //性别 int old; //年龄 char edu[20]; //学历 float salary; //工资 char address[64]; //住址 long tel; //电话 struct work *next; }; work* worker=null; void help(); //帮助 void savewortofile(); //保存职工信息到文件 void addworker(work *wor); //添加职工信息(链表操作) void delwork(char* name); //删除职工信息(链表操作) void delworker(); //删除职工信息 void add(); //录入职工信息 void lookthrough(); //浏览职工信息 void query(); //查询职工信息 void reviseworker(); //修改职工信息 int menu_select(); //菜单界面 void readworkerput (); //从文件中读取职工信息 int main() { readworkerput (); char choose; for(;;) { choose=menu_select(); if(choose==1) add(); else if(choose==2) lookthrough(); else if(choose==3) query(); else if(choose==4) delworker(); else if(choose==5) reviseworker() ; else if(choose==6) help(); else break; } return 0; } int menu_select() //菜单函数定义 { char c; printf("===============================================================\n"); printf("|----------------------职工信息管理系统 v1.0------------------|\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(" 请输入(1-7)进行操作:\n"); do{ scanf("%c",&c); }while(c<'1'||c>'7'); return c-48; } /****************************************************************************************************************************/ void add() //1、录入职工信息函数定义 { work *p; p=worker; int tmp=1; int number; char name[32]; char sex[2]; int old; char edu[20]; float salary; char address[64]; long tel; printf("输入工号:"); scanf("%d",&number); while(p!=null) { if(p->number ==number) { printf("该工号已存在!\n"); tmp =2; } p=p->next; } if(tmp==2) return ; printf("输入姓名:"); //姓名 scanf("%s",name); printf("输入性别:"); //性别 scanf("%s",sex); printf("输入年龄:"); //年龄 scanf("%d",&old); printf("输入学历:"); //学历 scanf("%s",edu); printf("输入工资:"); //工资 scanf("%f",&salary); printf("输入地址:"); //地址 scanf("%s",address); printf("输入电话:"); //电话 scanf("%ld",&tel); work *n=(work *)malloc(sizeof(work)); n->number=number; strcpy(n->name,name); strcpy(n->sex,sex); n->old=old; strcpy(n->edu,edu); n->salary=salary; strcpy(n->address,address); n->tel=tel; addworker(n); savewortofile(); printf("录入成功!\n"); } void addworker(work *wor) { work *p; if(worker==null) { worker =wor; wor->next=null; } else { p = worker; while(p) { if(p->next==null) { p->next =wor; wor->next =null; } p= p->next; } } } /***************************************************************************************************************************/ void lookthrough() //2、浏览信息 { work * p; p=worker; if(p!=null) { printf("工号 姓名 性别 年龄 学历 工资 地址 电话\n"); while(p!=null) { printf("%d %s %s %d %s %f %s %ld\n",p->number,p->name,p->sex,p->old,p->edu,p->salary,p->address,p->tel); p=p->next; } } else printf("暂无职工信息!\n"); } /***************************************************************************************************************************/ void query() //3、查询职工信息 { int num; int tmp=1; work * p; p=worker; int ju; int nianling; char xueli[20]; int judge; printf(" 精确查找请按--1\n 批量查找请按--2\n"); scanf("%d",&judge); switch(judge) { case 1: printf("请输入您要查询的工号:\n"); scanf("%d",&num); while(p!=null) { if(p->number==num) { tmp =3; break; } p=p->next; } if(tmp==3) { printf("工号 姓名 性别 年龄 学历 工资 地址 电话\n"); printf("%d %s %s %d %s %f %s %ld\n",p->number,p->name,p->sex,p->old,p->edu,p->salary,p->address,p->tel); } else printf("工号不存在!\n"); break; case 2: printf(" 查询同一年龄职工信息请按------1\n 查询同一学历职工信息请按------2\n"); scanf("%d",&ju); if(ju==1) { printf("请输入年龄:\n"); scanf("%d",&nianling); if(p!=null) { printf("工号 姓名 性别 年龄 学历 工资 地址 电话\n"); while(p!=null) { if(p->old==nianling) { printf("%d %s %s %d %s %f %s %ld\n",p->number,p->name,p->sex,p->old,p->edu,p->salary,p->address,p->tel); } p=p->next; } } else printf("暂无职工信息!"); } else if(ju==2) { printf("请输入学历:"); scanf("%s",xueli); if(p!=null) { while(p!=null) { if(!strcmp(p->edu,xueli)) { printf("%d %s %s %d %s %f %s %ld\n",p->number,p->name,p->sex,p->old,p->edu,p->salary,p->address,p->tel); } p=p->next; } } else printf("暂无职工信息!"); } } } /***************************************************************************************************************************/ void delworker() //4、删除职工信息 { work * p; p=worker; int n; int tem=1; char panduan[4]; printf("请输入要删除的工号:\n"); scanf("%d",&n); printf("确定删除%d?(yes/no)\n",n); scanf("%s",panduan); if(strcmp("no",panduan)==0) return; else { while(p!=null) { if(p->number==n) { tem =2; break; } p=p->next; } } if(tem==2) delwork(p->name); savewortofile(); } void delwork(char *name) { work *p,*pre; if (worker==null) { return; } p =pre=worker; while(p) { if (!strcmp(p->name,name)) { if(p==worker) { worker = worker->next; free(p); printf("删除成功!\n"); p=null; } else { pre->next =p->next; free(p); printf("删除成功!\n"); p=null; } } else { pre =p; p= p->next; } } } /***************************************************************************************************************************/ void reviseworker() //修改职工信息 { char name[32]; char sex[2]; int old; char edu[20]; float salary; char address[64]; long tel; work * p; p=worker; int num; int a=1; char xueli[20]; float money; int judge; printf("选择精确修改请按1\n选择批量修改请按2\n"); scanf("%d",&judge); switch(judge) { case 1: printf("请输入被修改职工工号:\n"); scanf("%d",&num); if(p==null) { printf("暂无职工信息录入!\n"); return ; } while(p) { if(p->number==num) { printf("此职工原来信息如下:\n"); printf("工号 姓名 性别 年龄 学历 工资 地址 电话\n"); printf("%d %s %s %d %s %f %s %ld\n",p->number,p->name,p->sex,p->old,p->edu,p->salary,p->address,p->tel); printf("输入姓名:"); //姓名 scanf("%s",name); printf("输入性别:"); //性别 scanf("%s",sex); printf("输入年龄:"); //年龄 scanf("%d",&old); printf("输入学历:"); //学历 scanf("%s",edu); printf("输入工资:"); //工资 scanf("%f",&salary); printf("输入地址:"); //地址 scanf("%s",address); printf("输入电话:"); //电话 scanf("%ld",&tel); strcpy(p->name,name); strcpy(p->sex,sex); p->old=old; strcpy(p->edu,edu); p->salary=salary; strcpy(p->address,address); p->tel=tel; savewortofile(); //保存修改后信息 printf("修改成功!\n"); a=0; break; } p=p->next; } if(a==1) printf("没有此职工信息!\n"); break; case 2: printf("根据学历批量修改职工工资\n"); printf("请输入所要批量修改的职工学历和所加工资:\n"); printf("学历:"); scanf("%s",xueli); printf("所加工资:"); scanf("%f",&money); if(p==null) { printf("暂无职工信息录入!\n"); return ; } while(p) { if(!strcmp(p->edu,xueli)) { p->salary=p->salary+money; } p=p->next; } printf(" 修改成功!"); savewortofile(); break; } } /**************************************************************************************************************************/ void help() //使用帮助 { system("cls"); printf("该系统用来存储职工成员信息!\n\n"); printf("使用说明:\n查询信息有两种方式,分为精确查找(凭借学号),批量查找(凭借年龄和学历)\n"); printf("修改信息有两种方式,分为精确修改(个人信息的修改)和批量修改(同一学历的工资修改)\n"); printf("学历格式:小学、初中、高中、中专、大专、大学\n\n\n\n"); printf("项目开发:常轩 技术支持:worldhello 微信公众号:worldhello\n\n\n\n "); char a[10]; printf("按任意键,回车后继续........\n"); scanf("%s",a); system("cls"); } /***************************************************************************************************************************/ void savewortofile() //保存职工信息到文件 { file *fp; work*p; p = worker; if((fp=fopen("worker.txt","w"))==null) { printf("can not open the file,press any key exit!"); exit(1); } // fprintf(fp,"工号 姓名 性别 年龄 学历 工资 地址 电话\n"); while(p) { fprintf(fp,"%d %s %s %d %s %f %s %ld\n",p->number,p->name,p->sex,p->old,p->edu,p->salary,p->address,p->tel); p=p->next; } fclose(fp); } /***************************************************************************************************************************/ void readworkerput () //运行前把文件内容读取到电脑内存 { file *fp; fp=fopen("worker.txt","rb"); //以只读方式打开当前目录下的.txt if(fp==null) { printf("无法打开文件\n"); exit(0); //-------- 终止程序 --------- } int i=0; while(!feof(fp)) { work *p=(work *)malloc(sizeof(work)); fscanf(fp,"%d %s %s %d %s %f %s %ld",&p->number,p->name,&p->sex,&p->old,p->edu,&p->salary,p->address,&p->tel); i++; } fclose(fp); file *fp; fp=fopen("worker.txt","rb"); //以只读方式打开当前目录下的.txt if(fp==null) { printf("无法打开文件\n"); exit(0); //-------- 终止程序 --------- } int b=i-1; int j=1; if(i==1) { fclose(fp); } else { while(!feof(fp)) { work *n=(work *)malloc(sizeof(work)); fscanf(fp,"%d %s %s %d %s %f %s %ld",&n->number,n->name,&n->sex,&n->old,n->edu,&n->salary,n->address,&n->tel); //printf("%d %s %s %d %s %f %s %ld\n",n->number,n->name,n->sex,n->old,n->edu,n->salary,n->address,n->tel); addworker(n); n=n->next; if(j==b) break; j++; } fclose(fp); //----关闭文件----- } }
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!
网友评论