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__
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。