|
|
|
@ -0,0 +1,415 @@
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <windows.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
int i=1;
|
|
|
|
|
struct staffsinfor
|
|
|
|
|
{
|
|
|
|
|
char staffnums[100];
|
|
|
|
|
char name[100];
|
|
|
|
|
char sex[100];
|
|
|
|
|
char year[100];
|
|
|
|
|
char studyF[100];
|
|
|
|
|
char homedress[100];
|
|
|
|
|
char money[100];
|
|
|
|
|
char phonenum[100];
|
|
|
|
|
}staffs[50];
|
|
|
|
|
void reader()
|
|
|
|
|
{
|
|
|
|
|
FILE *fp;
|
|
|
|
|
int n = 0;
|
|
|
|
|
if( (fp = fopen("g:\\..txt","r")) == NULL )
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
fscanf(fp,"%d\n",&i);
|
|
|
|
|
while(n < i)
|
|
|
|
|
{
|
|
|
|
|
fscanf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n",staffs[n].staffnums,staffs[n].name,staffs[n].sex,staffs[n].studyF,staffs[n].homedress,staffs[n].money,staffs[n].phonenum);
|
|
|
|
|
n ++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fclose(fp);
|
|
|
|
|
}
|
|
|
|
|
void writeer()
|
|
|
|
|
{
|
|
|
|
|
FILE *fp;
|
|
|
|
|
int n = 0;
|
|
|
|
|
if( (fp = fopen("g:\\..txt","wb")) == NULL )
|
|
|
|
|
{
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
fprintf(fp,"%d\n",i);
|
|
|
|
|
while(n < i)
|
|
|
|
|
{
|
|
|
|
|
fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n",staffs[n].staffnums,staffs[n].name,staffs[n].sex,staffs[n].studyF,staffs[n].homedress,staffs[n].money,staffs[n].phonenum);
|
|
|
|
|
n ++;
|
|
|
|
|
}
|
|
|
|
|
fclose(fp);
|
|
|
|
|
}
|
|
|
|
|
void input(struct staffsinfor staffs[]){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int n;
|
|
|
|
|
int a;
|
|
|
|
|
int c,d;
|
|
|
|
|
reader();
|
|
|
|
|
system("cls");
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
system("cls");
|
|
|
|
|
printf("\t\t\t\t您在进行的是信息录入!\t\t\t\n\n\n");
|
|
|
|
|
a = 0;
|
|
|
|
|
printf("\t\t请输入职工的工号: \n\t\t");
|
|
|
|
|
scanf("%s",staffs[i].staffnums);
|
|
|
|
|
for(n = 0 ; n < i ; n ++)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(staffs[n].staffnums,staffs[i].staffnums) == 0)
|
|
|
|
|
{
|
|
|
|
|
a = 1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(a!=0)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
MessageBox(NULL,"职工号已存在","系统提示",MB_OK);
|
|
|
|
|
d= MessageBox(NULL,"是否继续","系统提示",MB_YESNO);
|
|
|
|
|
if(d==6)
|
|
|
|
|
continue;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
printf("\t\t请输入职工的姓名: \n\t\t");
|
|
|
|
|
scanf("%s",staffs[i].name);
|
|
|
|
|
printf("\t\t请输入职工的性别: \n\t\t");
|
|
|
|
|
scanf("%s",staffs[i].sex);
|
|
|
|
|
printf("\t\t请输入职工的年龄: \n\t\t");
|
|
|
|
|
scanf("%s",staffs[i].year);
|
|
|
|
|
printf("\t\t请输入职工的学历: \n\t\t");
|
|
|
|
|
scanf("%s",staffs[i].studyF);
|
|
|
|
|
printf("\t\t请输入职工的工资: \n\t\t");
|
|
|
|
|
scanf("%s",staffs[i].money);
|
|
|
|
|
printf("\t\t请输入职工的住址: \n\t\t");
|
|
|
|
|
scanf("%s",staffs[i].homedress);
|
|
|
|
|
printf("\t\t请输入职工的电话: \n\t\t");
|
|
|
|
|
scanf("%s",staffs[i].phonenum);
|
|
|
|
|
c=MessageBox(NULL,"是否继续","系统提示",MB_YESNO);
|
|
|
|
|
i ++;
|
|
|
|
|
}while( c ==6);
|
|
|
|
|
writeer();
|
|
|
|
|
MessageBox(NULL,"操作完成","系统提示",MB_OK);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void look(struct staffsinfor staffs[]){
|
|
|
|
|
int j;;char o;
|
|
|
|
|
reader();j=i-1;
|
|
|
|
|
three :
|
|
|
|
|
system("cls");
|
|
|
|
|
printf("\t\t\t\t您在进行的是浏览名单!\n\n\n");
|
|
|
|
|
if(j==0)
|
|
|
|
|
{
|
|
|
|
|
MessageBox(NULL,"未找到名单信息!","系统提示",MB_OK);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
system("cls");
|
|
|
|
|
printf("\t\t\t姓名:\n\t\t\t\t\t\t\t%s",staffs[j].name);
|
|
|
|
|
printf("\n\t\t\t职工号:\n\t\t\t\t\t\t\t%s",staffs[j].staffnums);
|
|
|
|
|
printf("\n\t\t\t性别:\n\t\t\t\t\t\t\t%s",staffs[j].sex);
|
|
|
|
|
printf("\n\t\t\t年龄:\n\t\t\t\t\t\t\t%s",staffs[j].year);
|
|
|
|
|
printf("\n\t\t\t学历:\n\t\t\t\t\t\t\t%s",staffs[j].studyF);
|
|
|
|
|
printf("\n\t\t\t工资:\n\t\t\t\t\t\t\t%s",staffs[j].money);
|
|
|
|
|
printf("\n\t\t\t家庭住址:\n\t\t\t\t\t\t\t%s",staffs[j].homedress);
|
|
|
|
|
printf("\n\t\t\t电话号码:\n\t\t\t\t\t\t\t%s",staffs[j].phonenum);
|
|
|
|
|
printf("\n\n\n\t\t\t\t\t\t按A和D切换名单\n\t\t\t\t\t\t按BackSpace退回菜单");
|
|
|
|
|
o=getch();
|
|
|
|
|
if(o=='A')
|
|
|
|
|
{
|
|
|
|
|
if(j==1)
|
|
|
|
|
{system("cls");
|
|
|
|
|
printf("这已经是第一个了");
|
|
|
|
|
system("pause");
|
|
|
|
|
goto three;
|
|
|
|
|
}
|
|
|
|
|
j--;
|
|
|
|
|
goto three;
|
|
|
|
|
}
|
|
|
|
|
if(o=='D')
|
|
|
|
|
{
|
|
|
|
|
if(j==i&&j!=i)
|
|
|
|
|
{system("cls");
|
|
|
|
|
printf("这是最后一个了");
|
|
|
|
|
system("pause");
|
|
|
|
|
goto three;
|
|
|
|
|
}
|
|
|
|
|
j++;
|
|
|
|
|
goto three;
|
|
|
|
|
}
|
|
|
|
|
if(o==8)
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
void output_inf(int id)
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t 姓名: %s\n",staffs[id].name);
|
|
|
|
|
printf("\t\t 工号: %s\n",staffs[id].staffnums);
|
|
|
|
|
printf("\t\t 性别: %s\n",staffs[id].sex);
|
|
|
|
|
printf("\t\t 年龄: %s\n",staffs[id].year);
|
|
|
|
|
printf("\t\t 学历: %s\n",staffs[id].studyF);
|
|
|
|
|
printf("\t\t 工资: %s\n",staffs[id].money);
|
|
|
|
|
printf("\t\t 住址: %s\n",staffs[id].homedress);
|
|
|
|
|
printf("\t\t 电话: %s\n",staffs[id].phonenum);
|
|
|
|
|
printf("\n\n\n");
|
|
|
|
|
}
|
|
|
|
|
void shanchu(){
|
|
|
|
|
int n,j;char delete_ID[20];
|
|
|
|
|
int flag;
|
|
|
|
|
char c;
|
|
|
|
|
reader();
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
system("cls");
|
|
|
|
|
flag = 0;
|
|
|
|
|
printf("请输入需删除职工信息的工号:");
|
|
|
|
|
scanf("%s",delete_ID);
|
|
|
|
|
for(n=0;n<i;n++)
|
|
|
|
|
{
|
|
|
|
|
if( strcmp(staffs[n].staffnums,delete_ID) == 0)
|
|
|
|
|
{
|
|
|
|
|
i--;
|
|
|
|
|
flag = 1;
|
|
|
|
|
for(j=n ; j < i ; j ++)
|
|
|
|
|
{
|
|
|
|
|
staffs[j] =staffs[j + 1];
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(!flag) printf("\n\n无此员工信息!\n\n");
|
|
|
|
|
else printf("\n\n删除成功!\n");
|
|
|
|
|
int k;
|
|
|
|
|
k=MessageBox(NULL,"是否继续?","系统提示",MB_YESNO);
|
|
|
|
|
|
|
|
|
|
if(k!=6) break;
|
|
|
|
|
}
|
|
|
|
|
writeer();
|
|
|
|
|
}
|
|
|
|
|
void que()//查询信息
|
|
|
|
|
{
|
|
|
|
|
char num;
|
|
|
|
|
int flag,n;
|
|
|
|
|
char q_id[20] ;//查询工号
|
|
|
|
|
char q_name[20] ;//查询姓名
|
|
|
|
|
char q_edu[20] ; //查询学历
|
|
|
|
|
int c;//
|
|
|
|
|
|
|
|
|
|
reader();//打开程序后,要查询以前的数据,要先读入
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
system("cls");
|
|
|
|
|
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* 按0退出本模块 *\n");
|
|
|
|
|
printf("\t\t******************************************\n");
|
|
|
|
|
printf("\t\t请输入指令(1-2):");
|
|
|
|
|
scanf("%d",&num);
|
|
|
|
|
if(num < 0 || num > 2)
|
|
|
|
|
{
|
|
|
|
|
printf("错误指令!\n\n");
|
|
|
|
|
system("pause");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
system("cls");
|
|
|
|
|
flag = 0;//用来标记职工信息是否存在
|
|
|
|
|
if(num == 1)//按工号查询
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t请输入您要查询职工的工号:");
|
|
|
|
|
scanf("%s",q_id);
|
|
|
|
|
for(n = 0 ; n < i ;n ++)
|
|
|
|
|
{
|
|
|
|
|
if( strcmp(staffs[n].staffnums,q_id) == 0)
|
|
|
|
|
{
|
|
|
|
|
output_inf(n);
|
|
|
|
|
flag = 1;//标记
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if(num == 2)//按姓名查询
|
|
|
|
|
{
|
|
|
|
|
printf("\t\t请输入您要查询职工的姓名:");
|
|
|
|
|
scanf("%s",q_name);
|
|
|
|
|
for(n = 0 ; n < i ;n ++)
|
|
|
|
|
{
|
|
|
|
|
if( strcmp(staffs[n].name,q_name) == 0)
|
|
|
|
|
{
|
|
|
|
|
output_inf(n);
|
|
|
|
|
flag = 1;//标记
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if(num ==0)
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
if(!flag)//判断是否有该职工信息
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n无该职工信息!\n\n");
|
|
|
|
|
}
|
|
|
|
|
int k;
|
|
|
|
|
k= MessageBox(NULL,"是否继续?","系统提示",MB_YESNO);
|
|
|
|
|
if(k!=6) break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void xiugai(){
|
|
|
|
|
char change_ID[20];//需修改的职工的工号
|
|
|
|
|
int number;//职工信息在数据中的位置
|
|
|
|
|
char num;//指令
|
|
|
|
|
char message[100];//修改的信息
|
|
|
|
|
char c;//指令Y?N
|
|
|
|
|
int flag;
|
|
|
|
|
int n;
|
|
|
|
|
reader();
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
flag = 0;
|
|
|
|
|
system("cls");
|
|
|
|
|
printf("请输入需修改的职工的工号:");
|
|
|
|
|
scanf("%s",change_ID);
|
|
|
|
|
for(n = 0 ; n < i ; n ++)
|
|
|
|
|
{
|
|
|
|
|
if( strcmp(staffs[n].staffnums,change_ID) == 0 )
|
|
|
|
|
{
|
|
|
|
|
number = n;
|
|
|
|
|
flag = 1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(!flag)
|
|
|
|
|
{
|
|
|
|
|
printf("\n\n无此员工信息!!\n\n");
|
|
|
|
|
c=MessageBox(NULL,"是否继续?","系统提示",MB_YESNO);
|
|
|
|
|
if(c==6) continue;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
printf("\n\n\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* 按0退出 *\n");
|
|
|
|
|
printf("\t\t******************************************\n");
|
|
|
|
|
printf("\t\t请输入指令(1-6):");
|
|
|
|
|
scanf("%*c%c",&num);
|
|
|
|
|
if(num < '1' || num > '6')
|
|
|
|
|
{
|
|
|
|
|
printf("错误指令!\n\n");
|
|
|
|
|
system("pause");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
system("cls");
|
|
|
|
|
printf("请输入修改后的信息:");
|
|
|
|
|
scanf("%s",message);
|
|
|
|
|
switch(num)
|
|
|
|
|
{
|
|
|
|
|
case '1' : strcpy(staffs[number].name,message); break;
|
|
|
|
|
case '2' : strcpy(staffs[number].studyF,message); break;
|
|
|
|
|
case '3' : strcpy(staffs[number].money,message); break;
|
|
|
|
|
case '4' : strcpy(staffs[number].homedress,message); break;
|
|
|
|
|
case '5' : strcpy(staffs[number].phonenum,message); break;
|
|
|
|
|
case '6' : strcpy(staffs[number].sex,message);break;
|
|
|
|
|
case '0' :exit(1);
|
|
|
|
|
}
|
|
|
|
|
system("cls");int k;
|
|
|
|
|
k=MessageBox(NULL,"是否继续?","系统提示",MB_YESNO);
|
|
|
|
|
|
|
|
|
|
if(k==6) break;
|
|
|
|
|
}
|
|
|
|
|
writeer();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
char a;
|
|
|
|
|
/*职工信息管理系统设计(最多2人)
|
|
|
|
|
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
|
|
|
|
|
试设计一职工信息管理系统,使之能提供以下功能:
|
|
|
|
|
1、系统以菜单方式工作
|
|
|
|
|
2、职工信息录入功能(职工信息用文件保存)--输入
|
|
|
|
|
3、职工信息浏览功能--输出
|
|
|
|
|
4、职工信息查询功能--算法
|
|
|
|
|
查询方式
|
|
|
|
|
按学历查询等
|
|
|
|
|
按职工号查询等
|
|
|
|
|
5、职工信息删除、修改功能(可选项)*/
|
|
|
|
|
|
|
|
|
|
one :
|
|
|
|
|
system("cls");
|
|
|
|
|
printf("\t\t\t\t管理菜单\t\t\t\t\n");
|
|
|
|
|
printf("**********************************************************************\n\n\n");
|
|
|
|
|
printf("\t\t\t\tA.录入信息\t\t\t\t\n\n");
|
|
|
|
|
printf("\t\t\t\tB.浏览名单\t\t\t\t\n\n");
|
|
|
|
|
printf("\t\t\t\tC.查询信息\t\t\t\t\n\n");
|
|
|
|
|
printf("\t\t\t\tD.删除信息\t\t\t\t\n\n");
|
|
|
|
|
printf("\t\t\t\tE.修改信息\t\t\t\t\n\n");
|
|
|
|
|
printf("\t\t\t\t\t按BackSpace返回上一页\n\n\n");
|
|
|
|
|
printf("\t\t\t\t\tBy--罗丁,高论域\n\n");
|
|
|
|
|
printf("**********************************************************************\n");
|
|
|
|
|
a=getch();
|
|
|
|
|
if(a=='A')
|
|
|
|
|
{
|
|
|
|
|
input(staffs);
|
|
|
|
|
goto one;
|
|
|
|
|
}
|
|
|
|
|
else if(a=='B')
|
|
|
|
|
{
|
|
|
|
|
look(staffs);
|
|
|
|
|
goto one;
|
|
|
|
|
}
|
|
|
|
|
else if(a=='C')
|
|
|
|
|
{
|
|
|
|
|
que(staffs);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
goto one;
|
|
|
|
|
}
|
|
|
|
|
else if(a=='D')
|
|
|
|
|
{
|
|
|
|
|
shanchu();
|
|
|
|
|
goto one;
|
|
|
|
|
}
|
|
|
|
|
else if(a=='E')
|
|
|
|
|
{
|
|
|
|
|
xiugai();
|
|
|
|
|
goto one;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
printf("输入错误!");
|
|
|
|
|
system("pause");
|
|
|
|
|
goto one;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|