C语言职工信息管理系统
- */
- * 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); //----关闭文件-----
- }
- }
C语言职工信息管理系统的更多相关文章
- c语言学生信息管理系统-学习结构体
#include<stdio.h> #include<stdlib.h> //结构体可以存放的学生信息最大个数,不可变变量 ; //学生信息结构体数组,最多可以存放100个学生 ...
- C语言学生信息管理系统项目源码
#include //包含printf().scanf().gets().puts().getchar()函数 #include //包含malloc()函数 #include //包含s ...
- 职工工资管理系统 --C语言
#include<stdio.h> #include<string.h> #include<stdlib.h> #define NUM 1000 void ente ...
- C语言练习-学生信息管理系统
题目要求: 学生信息管理系统struct studentInfo{ int id; char name[128]; int age; char sex; int c_score; int cpp_sc ...
- 【转载】C语言综合实验1—学生信息管理系统
http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的 ...
- C语言小练习之学生信息管理系统
C语言小练习之学生信息管理系统 main.c文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...
- C语言实现天气信息管理系统
这篇文章主要介绍了C语言实现天气信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C语言实现天气信息管理系统的具体代码,供大家参考,具体内 ...
- 大一C语言结课设计之《学生信息管理系统》
第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...
- 用C语言制作小型商品信息管理系统过程中的问题
大神请默默飘过... 以下是第一次制作时的源码: // 商品信息管理.cpp : 定义控制台应用程序的入口点. // // 小型商品信息管理系统.cpp : 定义控制台应用程序的入口点. // #in ...
随机推荐
- springMVC的注解@PathVariable是什么?详情及用法解析
在路由中定义变量规则后,通常我们需要在处理方法(也就是@RequestMapping注解的方法)中获取这个URL变量的具体值,并根据这个值(例如用户名)做相应的操作,Spring MVC提供的@Pat ...
- ZJNU 1129 - The sum problem——中级
枚举区间可能的长度len,将m减去1~len构成的序列和后如果结果是len的倍数,则可以构成答案区间. /* Written By. StelaYuri */ #include<stdio.h& ...
- [HNOI2019]鱼(计算几何)
看到数据范围n<=1000,但感觉用O(n^2)不现实,所以考虑方向应该是O(n^2logn). 一种暴力做法:用vector存到1点相同的2点和到2点相同的1点,然后枚举A,枚举BC,再枚举D ...
- Metasploit详解
title date tags layout Metasploit 详解 2018-09-25 Metasploit post 一.名词解释 exploit 测试者利用它来攻击一个系统,程序,或服务, ...
- shell_切割日志
可以修改的:1.日志存放目录:logdir='/data/logs/'2.每个类型日志保留个数:savefiles=30 #!/bin/bashnum=$(date -d"+1 day ag ...
- C# 关闭登录窗体,显示主窗体
首先在programm.cs里设置登录窗体显示 static class Program { /// <summary> /// The main ent ...
- P - Atlantis (线段树+扫描线)
There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Som ...
- IP命令介绍
ip指令可以显示或操作路由.网络设备.设置路由策略和通道 1.语法 ip [选项] Object COMMAND [help] Object对象可以是: link 网络设备.addr 设备的协议 ...
- 3dmax2016卸载/安装失败/如何彻底卸载清除干净3dmax2016注册表和文件的方法
3dmax2016提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dmax2016失败提示3dmax2016安装未完成,某些产品无法安装,也有时候想重新安装3 ...
- highcharys去掉x轴,y轴轴线和刻度
x轴 xAxis: { lineWidth :,//去掉x轴线 tickWidth:,//去掉刻度 labels: { enabled: false },//去掉刻度数字 }, y轴 yAxis: { ...