first commit

master
commit 0f349ce538

@ -0,0 +1,472 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct worker
{
char ID[20];//工号
char name[20];//姓名
char sex[5];//性别
char born[20];//生日
char edu[20];//学历
char position[20];//职务
char wage[10];//工资
char address[100];//住址
char tel[15];//电话
}work[1000];
int n ;
int temp;
//文件读写模块
void read()//读入数据
{
FILE *fp;
int i = 0;
if( (fp = fopen("d:\\date.txt","r")) == NULL )
{
printf("请在D盘根目录下新建一个文本文件文件名为date\n\n\n");
system("pause");
system("cls");
return ;
}
fscanf(fp,"%d\n",&n);
while(i < n)
{
fscanf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].sex,work[i].born,work[i].edu,work[i].position,work[i].wage,work[i].address,work[i].tel);
i ++;
}
fclose(fp);
}
void write()//写入数据
{
FILE *fp;
int i = 0;
if( (fp = fopen("d:\\date.txt","w")) == NULL )
{
printf("无法打开文件!\n");
return ;
}
fprintf(fp,"%d\n",n);
while(i < n)
{
fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].sex,work[i].born,work[i].edu,work[i].position,work[i].wage,work[i].address,work[i].tel);
i ++;
}
fclose(fp);
}
//输入模块
void input()// 从键盘输入
{
int i;
int flag;//标记工号是否已存在
int sz;//标记char型数组是否存贮非数字信息
char sex;//输入性别
char c;//指令Y?N
read();//输入数据前先将文件中原有的数据读入(读取到内存)
do
{
flag = 0;
printf("\t\t请输入职工的工号:(0001-1000) \n\t\t");
scanf("%s",work[n].ID);
for(i = 0 ; i < n ; i ++) //与已有工号作比较
{
temp=atoi(work[n].ID);
if(!(temp>0000&&temp<=1000&&strlen(work[n].ID)<=4))
{
printf("\t\t工号不在规定范围!请重新输入。\n\n\t\t");
getch();system("cls");
input();
}
if(strcmp(work[i].ID,work[n].ID) == 0)
{
flag = 1; //ID已存在则flag为1
break;
}
}
if(flag) //显示比较结果工号存在/不存在
{
printf("\t\t该工号已存在!\n\n");
printf("\t\t是否继续输入?(Y/N): ");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
system("cls");
continue;
}
printf("\n\t\t请输入职工的信息: \n\n");
printf("\t\t姓名:\t\t");
scanf("%s",work[n].name);
printf("\t\t性别:\t\t");
scanf("%s",work[n].sex);
printf("\t\t出生年月:\t");
scanf("%s",work[n].born);
printf("\t\t学历:\t\t");
scanf("%s",work[n].edu);
printf("\t\t职务:\t\t");
scanf("%s",work[n].position);
do //输入工资,并检验是否有非数字信息
{
int j;
char pay[10];
sz=1;
printf("\t\t工资:\t\t");
scanf("%s",pay);
for(j=0;j<strlen(pay);j++)
{
if(pay[j]>='0'&&pay[j]<='9');
else sz=0;
}
if(sz==0) printf("\t\t请不要输入数字以外的信息!\n\n");
else strcpy(work[n].wage,pay);
}while(sz==0);
printf("\t\t住址:\t\t");
scanf("%s",work[n].address);
do //输入电话号码,并检验是否有非数字信息
{
int j;
char num[15];
sz=1;
printf("\t\t电话:\t\t");
scanf("%s",num);
for(j=0;j<strlen(num);j++)
{
if(num[j]>='0'&&num[j]<='9');
else sz=0;
}
if(sz==0) printf("\t\t请不要输入数字以外的信息!\n\n");
else strcpy(work[n].tel,num);
}while(sz==0);
printf("\n\t\t是否继续输入?(Y/N): ");
scanf("%*c%c",&c);
n ++;
}
while( c != 'N' && c != 'n');
write(); //将输入(到内存)的数据写进文件
printf("\n\n\t\t数据已保存!\n\n");
}
//显示模块
void output_inf(int id)
{
printf("\t\t|* *|\n");
printf("\t\t| 工号:\t%s\n",work[id].ID);
printf("\t\t| 姓名:\t%s\n",work[id].name);
printf("\t\t| 性别:\t%s\n",work[id].sex);
printf("\t\t| 出生年月:\t%s\n",work[id].born);
printf("\t\t| 学历:\t%s\n",work[id].edu);
printf("\t\t| 职务:\t%s\n",work[id].position);
printf("\t\t| 工资:\t%s\n",work[id].wage);
printf("\t\t| 住址:\t%s\n",work[id].address);
printf("\t\t| 电话:\t%s\n",work[id].tel);
printf("\t\t|* *|\n");
printf("\t\t|---------------------------------------------|\n");
//printf("\n\n\n");
}
void show()//显示所有职工信息
{
int i;
read();
if(n == 0) printf("无记录!\n\n");
else
for(i = 0 ; i < n ; i ++)
{
if(i==0) printf("\n\t\t|=============================================|\n");
output_inf(i);//调用显示模块
if(i==(n-1)) printf("\t\t|=============================================|\n");
}
}
//查询模块
void que()//查询信息
{
char num;
int flag,i;
char q_id[20] ;//查询工号
char q_name[20] ;//查询姓名
char q_edu[20] ; //查询学历
char q_position[20] ;//查询职位
char c;//指令Y?N
read();//打开程序后,要查询以前的数据,要先读入
while(1)
{
system("cls");
printf("\n\n");
printf("\t\t|====================================================|\n");
printf("\t\t| 查询 |\n");
printf("\t\t|====================================================|\n");
printf("\t\t|* *|\n");
printf("\t\t| 1.按工号查询 |\n");
printf("\t\t| |\n");
printf("\t\t| 2.按姓名查询 |\n");
printf("\t\t| |\n");
printf("\t\t| 3.按学历查询 |\n");
printf("\t\t| |\n");
printf("\t\t| 4.按职务查询 |\n");
printf("\t\t| |\n");
printf("\t\t| 输入其他任意键退出本模块 |\n");
printf("\t\t|* *|\n");
printf("\t\t|====================================================|\n");
printf("\t\t请输入指令(1-4):");
scanf("%*c%c",&num);
if(num <'1' || num >'4')
{
printf("\t\t错误指令!\n\n");
//printf( "即将退回主菜单!\n");
system("pause");
printf( "\n\t\t即将退回主菜单!\n\n");
break;
}
system("cls");
flag = 0;//用来标记职工信息是否存在
if(num == '1')//按工号查询
{
printf("\t\t请输入您要查询职工的工号:");
scanf("%s",q_id);
for(i = 0 ; i < n ;i ++)
{
if( strcmp(work[i].ID,q_id) == 0)
{
output_inf(i);
flag = 1;//标记
break;
}
}
}
else if(num == '2')//按姓名查询
{
printf("\t\t请输入您要查询职工的姓名:");
scanf("%s",q_name);
for(i = 0 ; i < n ;i ++)
{
if( strcmp(work[i].name,q_name) == 0)
{
output_inf(i);
flag = 1;//标记
}
}
}
else if(num == '3')//按学历查询
{
printf("\t\t请输入您要查询职工的学历:");
scanf("%s",q_edu);
for(i = 0 ; i < n ;i ++)
{
if( strcmp(work[i].edu,q_edu) == 0)
{
output_inf(i);
flag = 1;//标记
}
}
}
else if(num == '4')//按职务查询
{
printf("\t\t请输入您要查询职工的职务:");
scanf("%s",q_position);
for(i = 0 ; i < n ;i ++)
{
if( strcmp(work[i].position,q_position) == 0)
{
output_inf(i);
flag = 1;//标记
}
}
}
if(!flag)//判断是否有该职工信息
{
printf("\n\n\t\t无该职工信息!\n\n");
}
printf("\n\n\t\t是否继续查询(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
}
}
//修改信息模块
void mod()//修改职工信息
{
char change_ID[20];//需修改的职工的工号
int number;//职工信息在数据中的位置
char num;//指令
char message[100];//修改的信息
char c;//指令Y?N
int flag;
int i;
int sz;
read();
while(1)
{
flag = 0;
system("cls");
printf("\n\n\t\t请输入需修改的职工的工号:");
scanf("%s",change_ID);
for(i = 0 ; i < n ; i ++)
{
if( strcmp(work[i].ID,change_ID) == 0 )
{
number = i;
flag = 1;
break;
}
}
if(!flag)
{
printf("\n\n\t\t无此员工信息!!\n\n");
printf("\n\n\t\t是否继续修改(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
continue;
}
sz=1;
printf("\n\n");
printf("\t\t|====================================================|\n");
printf("\t\t| 修改 |\n");
printf("\t\t|====================================================|\n");
printf("\t\t|* *|\n");
printf("\t\t| 1.修改姓名 |\n");
printf("\t\t| |\n");
printf("\t\t| 2.修改学历 |\n");
printf("\t\t| |\n");
printf("\t\t| 3.修改职务 |\n");
printf("\t\t| |\n");
printf("\t\t| 4.修改工资 |\n");
printf("\t\t| |\n");
printf("\t\t| 5.修改住址 |\n");
printf("\t\t| |\n");
printf("\t\t| 6.修改电话 |\n");
printf("\t\t| |\n");
printf("\t\t| 输入其他任意键退出本模块 |\n");
printf("\t\t|* *|\n");
printf("\t\t|====================================================|\n");
printf("\n\t\t请输入指令(1-6):");
scanf("%*c%c",&num);
if(num < '1' || num > '6')
{
printf("\t\t错误指令!\n\n");
system("pause");
continue;
}
system("cls");
printf("\n\n\t\t请输入修改后的信息:");
scanf("%s",message);
printf("\n\n\t\t您确认要修改吗(Y/N)");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') {sz=0;break;}
switch(num)
{
case '1' : strcpy(work[number].name,message); break;
case '2' : strcpy(work[number].edu,message); break;
case '3' : strcpy(work[number].position,message); break;
case '4' : strcpy(work[number].wage,message); break;
case '5' : strcpy(work[number].address,message); break;
case '6' : strcpy(work[number].tel,message); break;
}
system("cls");
printf("\n\n\t\t是否继续修改(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') {if(sz==1) write();break;}
else {if(sz==1) write();if(sz==0) read();}
}
}
//删除信息模块
void del()//删除职工信息
{
char delete_ID[20];//删除职工工号
int i,j;
int flag;//标记是否有该职工信息
char c;
read();
while(1)
{
system("cls");
flag = 0;
printf("\t\t请输入需删除职工信息的工号:");
scanf("%s",delete_ID);
for(i = 0 ; i < n ; i ++)
{
if( strcmp(work[i].ID,delete_ID) == 0)
{
n --;
flag = 1;
for(j = i ; j < n ; j ++)
{
work[j] =work[j + 1];
}
break;
}
}
if(!flag) printf("\n\n\t\t无此员工信息!\n\n");
else printf("\n\n\t\t删除成功!\n");
printf("\n\n\t\t是否继续删除(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
}
write();
}
//菜单模块
void menu()//菜单
{
//printf("\t\t************职工信息管理系统菜单**********\n");
printf("\n\n");
printf("\t\t|====================================================|\n");
printf("\t\t| 学生信息管理系统 |\n");
printf("\t\t|====================================================|\n");
printf("\t\t|* *|\n");
printf("\t\t| 1.录入职工信息 |\n");
printf("\t\t| |\n");
printf("\t\t| 2.显示职工信息 |\n");
printf("\t\t| |\n");
printf("\t\t| 3.查询职工信息 |\n");
printf("\t\t| |\n");
printf("\t\t| 4.修改职工信息 |\n");
printf("\t\t| |\n");
printf("\t\t| 5.删除职工信息 |\n");
printf("\t\t| |\n");
printf("\t\t| 0.退出 |\n");
printf("\t\t|* *|\n");
printf("\t\t|====================================================|\n");
printf("\t\t\n");
printf("\t\t请输入指令(0-5): ");
}
int main()
{
int num;
n = 0;
system("color 0B");
while(1)
{
menu(); //调用菜单
scanf("%d",&num);
system("cls");
switch(num)
{
case 1: input(); break;
case 2: show(); break;
case 3: que(); break;
case 4: mod(); break;
case 5: del(); break;
case 0: printf("\t\t谢谢使用!\n\n"); return 0;
default :printf("\n\t\t--->无效的指令!\n\n\n");
}
system("pause");
system("cls");
}
}

Binary file not shown.
Loading…
Cancel
Save