*/
* 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语言职工信息管理系统的更多相关文章

  1. c语言学生信息管理系统-学习结构体

    #include<stdio.h> #include<stdlib.h> //结构体可以存放的学生信息最大个数,不可变变量 ; //学生信息结构体数组,最多可以存放100个学生 ...

  2. C语言学生信息管理系统项目源码

    #include   //包含printf().scanf().gets().puts().getchar()函数 #include   //包含malloc()函数 #include   //包含s ...

  3. 职工工资管理系统 --C语言

    #include<stdio.h> #include<string.h> #include<stdlib.h> #define NUM 1000 void ente ...

  4. C语言练习-学生信息管理系统

    题目要求: 学生信息管理系统struct studentInfo{ int id; char name[128]; int age; char sex; int c_score; int cpp_sc ...

  5. 【转载】C语言综合实验1—学生信息管理系统

    http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的 ...

  6. 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 ...

  7. C语言实现天气信息管理系统

    这篇文章主要介绍了C语言实现天气信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C语言实现天气信息管理系统的具体代码,供大家参考,具体内 ...

  8. 大一C语言结课设计之《学生信息管理系统》

    第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...

  9. 用C语言制作小型商品信息管理系统过程中的问题

    大神请默默飘过... 以下是第一次制作时的源码: // 商品信息管理.cpp : 定义控制台应用程序的入口点. // // 小型商品信息管理系统.cpp : 定义控制台应用程序的入口点. // #in ...

随机推荐

  1. vue打包成app后,点击手机上的物理返回按钮后直接退出app

    在浏览器上浏览vue项目时,后退按钮是可以正常返回上一页的,但是打包成app后,点击手机上的屋里返回按钮,就直接退出app回到桌面了, 以下是解决办法: 使用mui进行手机的物理键的监听 1.首先安装 ...

  2. iOS雪花动画、音频图、新闻界面框架、2048游戏、二维码条形码扫码生成等源码

    iOS精选源码 粒子雪花与烟花的动画 iOS 2048游戏 JHSoundWaveView - 简单地声波图.音波图 一个可快速集成的新闻详情界面框架,类似今日头条,腾讯新闻 二维码/条形码扫描及扫描 ...

  3. SSID

    无线网络中SSID,是路由器发送的无线信号的名字!如果你将你的无线路由器的SSID:命名为:gouwancheng ,那么当你的无线路由器开启,并启用了无线功能,和允许了SSID广播,那么你就可以轻易 ...

  4. Navicat for MySQL远程连接报10038的错误

    #################################################### """ 1.网络检测 1)ping主机可以: 2)telnet ...

  5. samtools faidx

    $ samtools faidx t1.fa && echo "faidx built" $ cat t1.fa.fai scaffold332 scaffold3 ...

  6. 二:MySQL的操作

    1:创建数据库 create database  bjpowernode ; 2:使用数据库 use bjpowernode; 3:导入数据库文件sql source  然后把SQL文件拖过来就可以了 ...

  7. LabVIEW部分视觉函数中文解说

    IMAQ Learn Pattern 2 VI 在匹配阶段创建您要搜索的图案匹配的模板图像的描述,此描述的数据被附加到输入模板图像中.在匹配阶段,从模板图像中提取模板描述符并且用于从检查图像中搜索模板 ...

  8. 用Spring Tool Suite简化你的开发

    如果你是一个喜欢用spring的人,你可能会在欣赏spring的强大功能外,对其各样的配置比较郁闷,尤其是相差较大的版本在配置文件方面会存在差异,当然你可以去花不少的时间去网上查找相关的资料,当你准备 ...

  9. web前端校招笔试题集锦

    写一个求和的函数sum,达到下面的效果 // Should equal 15 sum(1, 2, 3, 4, 5); // Should equal 0 sum(5, null, -5); // Sh ...

  10. 详解JavaScript Document对象

    转自:http://segmentfault.com/a/1190000000660947 在浏览器中,与用户进行数据交换都是通过客户端的javascript代码来实现的,而完成这些交互工作大多数是d ...