博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言职工信息管理系统
阅读量:6602 次
发布时间:2019-06-24

本文共 11343 字,大约阅读时间需要 37 分钟。

*/ * 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);    //----关闭文件-----	}}

转载于:https://www.cnblogs.com/chxuan/p/8232172.html

你可能感兴趣的文章
VM虚拟机安装win7
查看>>
VMWare vShere/ESX硬盘的后置备与精简配置之间的转换
查看>>
time_wait和close_wait产生原因及解决
查看>>
python核心编程 -chapter 13
查看>>
业主关心的问题,监理干了什么,监理单位具体回答
查看>>
Ubuntu安装bbr教程
查看>>
我的友情链接
查看>>
linux批量替换文件内容3种方法(perl,sed,shell)
查看>>
Operations Manager 2012 SP1配置部署系列之(一) 单服务器的部署
查看>>
binder 驱动
查看>>
nginx tcp代理
查看>>
tomcat Native APR安装
查看>>
谢烟客---------Linux之总结Linux基础
查看>>
状态栏和导航栏设置备忘
查看>>
centos6下安装node-zk-browser
查看>>
高斯告诉我们的
查看>>
组建自己的Linux-03安装grub,提供系统初始化配置
查看>>
Zend Server的WebAPI焦点:异步操作
查看>>
android源码大放送(实战开发必备)
查看>>
跨进程通信概述
查看>>