C语言实现职工管理系统
小编找到了一个特别好的职工管理系统,分享给大家一份C语言职工管理系统的具体实现代码,供大家参考,也谢谢这位网友的分享,具体内容如下
person.cpp
#include"person.h" //首页 intPrint_Head(int*num) { printf("\t***********************************************\n"); printf("\t|职工管理系统|\n"); printf("\t*---------------------------------------------*\n"); printf("\t|【1】新增【2】删改|\n"); printf("\t*【3】查询【4】退出*\n"); printf("\t***********************************************\n"); printf("\t◎请输入想进行操作的序号【】\b\b"); *num=getchar(); returnSUCCESS; } //删改画面 intPrint_DelRev(int*num) { printf("\t******************************************\n"); printf("\t**\n"); printf("\t*【1】删除【2】修改【3】返回*\n"); printf("\t**\n"); printf("\t******************************************\n"); printf("\t◎请输入想进行操作的序号【】\b\b"); *num=getchar(); returnSUCCESS; } //查询画面 intPrint_Que(int*num) { printf("\t*******************************************\n"); printf("\t**\n"); printf("\t*【1】全部查询【2】工号查询*\n"); printf("\t**\n"); printf("\t*【3】模糊查询【4】返回菜单*\n"); printf("\t**\n"); printf("\t******************************************\n"); printf("\t◎请输入想进行操作的序号【】\b\b"); *num=getchar(); returnSUCCESS; } //增加画面 intPrint_Add(int*num) { intn=0; printf("\t******************************************\n"); printf("\t**\n"); printf("\t*【1】新增【2】添加【3】返回*\n"); printf("\t**\n"); printf("\t******************************************\n"); printf("\t◎请输入想进行操作的序号【】\b\b"); *num=getchar(); returnSUCCESS; } //标题头 intPrint_Tittle() { printf("-------------------------------------------\n"); printf("工号|姓名|性别|年龄|电话\n"); printf("-------------------------------------------\n"); returnSUCCESS; } //选择将要打开的文件 intFile_name() { printf("\n\t◎请输入您想要打开的文件:"); //memset(filename,0,sizeof(filename)); if(scanf("%s",filename)!=1){ printf("\a选择文件错误!"); returnFAILED; } returnSUCCESS; } //生成链表,参数n是add记录数量 structEmployee*Creat(){ printf("\n\t◎请输入要添加的数据个数:"); intn; if(scanf("%d",&n)!=1){ printf("\aerror!"); } structEmployee*head; structEmployee*p1,*p2; system("cls"); for(inti=1;inum,p1->name,p1->sex, p1->age,p1->tel); p1->next=NULL; if(i==1){ head=p2=p1; } else{ p2->next=p1; p2=p1; } } return(head); } //建立新文件 intWriteData_wb(structEmployee*head){ FILE*fp; structEmployee*p; if((fp=fopen(filename,"wb"))==NULL) printf("\a打开文件错误!"); p=head; while(p!=NULL){ if(fwrite(p,SIZE,1,fp)!=1){ printf("\b写入数据出错\n"); fclose(fp); returnFAILED; } p=p->next; } fclose(fp); returnSUCCESS; } //在已有文件添加 intWriteData_ab(structEmployee*head){ FILE*fp; structEmployee*p; if((fp=fopen(filename,"ab"))==NULL) printf("\a打开文件错误!"); p=head; while(p!=NULL){ if(fwrite(p,SIZE,1,fp)!=1){ printf("\b写入数据出错\n"); fclose(fp); returnFAILED; } p=p->next; } fclose(fp); returnSUCCESS; } //增加 intEmp_Add() { system("cls"); getchar(); intadd; while(1){ system("cls"); Print_Add(&add); while(add!='1'&&add!='2'&&add!='3'){ putchar('\a'); printf("◎请重新输入有效序号(1~3):【】\b\b"); add=getchar(); } switch(add){ case'1': WriteData_wb(Creat()); printf("\n◎新建文件成功数据已保存√\n"); system("pause"); system("cls"); Emp_Add(); break; case'2': WriteData_ab(Creat()); printf("\n◎数据已成功添加√\n"); system("pause"); system("cls"); Emp_Add(); break; case'3': system("cls"); getchar(); Emp_Return(); break; } } returnSUCCESS; } //读取文件的数据到链表中返回链表head指针 structEmployee*Read(){ structEmployee*head=NULL; structEmployee*p1,*p2;//s=p1;p=p2; FILE*fp; if((fp=fopen(filename,"rb+"))==NULL) { printf("打开文件出错\n"); exit(0); } while(!feof(fp)){ if((p1=(structEmployee*)malloc(SIZE))==NULL){ printf("内存申请出错\n"); fclose(fp); exit(0); } if(fread(p1,SIZE,1,fp)!=1){ free(p1); break; } if(head==NULL) head=p2=p1; else{ p2->next=p1; p2=p1; } } fclose(fp); return(head); } //删除 intEmp_Del() { structEmployee*head; structEmployee*pt1,*pt2; charstr_num[10]; memset(str_num,0,sizeof(str_num)); printf("\n◎请输入你要删除的学号信息:"); scanf("%s",str_num); pt1=Read(); pt2=pt1->next; head=pt1; while(pt2!=NULL){ if(!strcmp(pt1->num,str_num)){ WriteData_wb(pt2); }elseif(!strcmp(pt2->num,str_num)){ pt1->next=pt2->next; WriteData_wb(head); } pt2=pt2->next; pt1=pt1->next; } if(pt2!=NULL){ printf("\t◎没有你要删除的数据"); } returnSUCCESS; } //修改 intEmp_Rev() { structEmployee*pt1,*pt2,*head; charstr_num[10]; printf("\t◎请输入要修改的学号信息:"); scanf("%s",str_num); pt1=Read(); pt2=pt1->next; head=pt1; while(pt2!=NULL){ if(strcmp(pt1->num,str_num)==0){ Print_Tittle(); scanf("%s%s%s%d%s",pt1->num,pt1->name,pt1->sex, pt1->age,pt1->tel); WriteData_wb(head); } elseif(strcmp(pt2->num,str_num)==0){ Print_Tittle(); scanf("%s%s%s%d%s",pt1->num,pt1->name,pt1->sex, pt1->age,pt1->tel); WriteData_wb(head); } pt2=pt2->next; pt1=pt1->next; } if(pt2!=NULL) printf("数据库中没有存储您要删除的数据!\n"); return0; } //删改 intEmp_DelRev() { getchar(); intdelrev=0; while(1){ system("cls"); Print_DelRev(&delrev); while(delrev!='1'&&delrev!='2'&&delrev!='3'){ putchar('\a'); //getchar(); printf("○请重新输入有效序号(1~3):【】\b\b"); delrev=getchar(); } switch(delrev){ case'1': Emp_Del(); printf("\n◎已成功删除指定数据!"); system("pause"); getchar(); break; case'2': Emp_Rev(); printf("\n◎已成功修改指定数据!"); system("pause"); getchar(); break; case'3': system("cls"); getchar(); Emp_Return(); break; } } returnSUCCESS; } //总体查询 intEmp_QueAll() { structEmployee*pt; pt=Read(); Print_Tittle(); do{ printf("%2s%5s%4s%2d%3s\n", pt->num,pt->name,pt->sex,pt->age,pt->tel); pt=pt->next; }while(pt!=NULL); printf("\n\n"); returnSUCCESS; } //工号查询 intEmp_QueNum() { structEmployee*pt; charstr_num[10]; printf("\t◎请输入您要查询的学号:"); scanf("%s",str_num); pt=Read(); Print_Tittle(); do{ if(!strcmp(pt->num,str_num)){ printf("%2s%5s%4s%2d%3s\n", pt->num,pt->name,pt->sex,pt->age,pt->tel); printf("\n\n"); return0; } pt=pt->next; }while(pt!=NULL); printf("\t数据库中没有存储您要查询的数据!\n"); printf("\n\n"); returnSUCCESS; } //模糊查询 intEmp_QueVague() { structEmployee*pt; charstr_vague[20]; intm=0; printf("\t◎请输入您要查询的关键词:"); scanf("%s",str_vague); pt=Read(); Print_Tittle(); do{ if(strstr(pt->num,str_vague)!=0||strstr(pt->name,str_vague)!=0 ||strstr(pt->sex,str_vague)!=0||strstr(pt->age,str_vague)!=0 ||strstr(pt->tel,str_vague)!=0){ printf("%2s%5s%4s%2d%3s\n", pt->num,pt->name,pt->sex,pt->age,pt->tel); m=1; } pt=pt->next; }while(pt!=NULL); if(!m) printf("数据库中没有存储您要查询的数据!\n"); printf("\n\n"); returnSUCCESS; } //查询 intEmp_Que() { system("cls"); intque; while(1){ system("cls"); Print_Que(&que); while(que!='1'&&que!='2'&&que!='3'){ putchar('\a'); printf("\t○请重新输入有效序号(1~3):【】\b\b"); que=getchar(); } switch(que){ case'1': Emp_QueAll(); system("pause"); getchar(); break; case'2': Emp_QueNum(); system("pause"); getchar(); break; case'3': Emp_QueVague(); system("pause"); getchar(); break; case'4': Emp_Return(); system("pause"); getchar(); break; } } returnSUCCESS; } //返回 intEmp_Return() { Emp_Menu(); returnSUCCESS; } //退出 voidEmp_Quit() { printf("\n\t◎谢谢使用!"); system("pause"); exit(0); } //menu函数 intEmp_Menu() { //int*Menu=NULL; intmenu=0; //Print_Head(&Menu); //menu=*Menu; //deleteMenu; //printf("%d\n",menu); Print_Head(&menu); while(menu!='1'&&menu!='2'&&menu!='3'&&menu!='4'){ printf("error!pleaseinputtherightnumber!\n"); putchar('\a'); //getchar(); printf("◎请重新输入有效序号(1~4):【】\b\b"); menu=getchar(); } switch(menu){ case'1': File_name(); Emp_Add(); break; case'2': File_name(); Emp_DelRev(); break; case'3': File_name(); Emp_Que(); break; case'4': Emp_Quit(); break; } returnSUCCESS; } /*voidSig(intn) { printf("\n\t◎程序将要退出,操作已保存!"); system("pause"); exit(0); }*/ intmain() { //printf("\t◎使用Ctrl+C终止现在程序的运行!\n"); //signal(SIGINT,Sig); Emp_Menu(); returnSUCCESS; }
person.h
#ifndef__PERSON_H__ #define__PERSON_H_ #define_CRT_SECURE_NO_DEPRECATE #define_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES1 #include#include #include #include #include #defineSUCCESS0 #defineFAILED(!SUCCESS) #defineSIZEsizeof(structEmployee) //全局变量 intflag=0;//返回标志 charfilename[30];//要打开的文件名 //员工信息结构体 structEmployee{ charname[20]; chartel[15]; charsex[5]; charnum[10]; charage[3]; structEmployee*next; }; //建立一个链表 structEmployee*creat(intn); //主函数 intEmp_Menu(); //首页打印 intPrint_Head(); //删改打印 intPrint_DelRev(); //增加打印 intPrint_Add(); //表头打印 intPrint_Tittle(); //新建文件写入 intWriteData_wb(structEmployee*head); //在已有的文件写入 intWriteData_ab(structEmployee*head); //添加 intEmp_Add(); //删除 intEmp_Del(); //修改 intEmp_Rev(); //查询 intEmp_Que(); //返回 intEmp_Return(); //退出 voidEmp_Quit(); #endif//__PERSON_H__
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。