资源描述
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int N=0;
struct date
{
int year;
int month;
int day;
};
struct worker
{
int num;
char name[10];
char sex[2];
struct date bir;
char edu[6];
char sta[10];
char bra[10];
long wage;
char addr[50];
char tel[11];
};
struct worker worker[100],worker1;
void menu();
void zi_menu();
void xuanze();
void key();
void file();
void xiugai_xuanze();
void xiugai_name();
void del_xuanze();
void xiugai_num();
void del_name();
void del_num();
void liulan();
void search();
void search_num();
void search_edu();
void search_tel();
void paixu();
void paixu_num();
void paixu_age();
void paixu_wage();
void save();
void diao();
void main()
{
menu();
}
void menu() /*主菜单*/
{
system("color A");
char s[20];
int a,M=1314,n=3,flag=0;
printf(" ****************** 计算机科学与工程学院 **********************\n");
printf(" 欢迎进入职工信息管理系统 \n");
printf(" *****************************************************************\n");
printf(" *** 职工信息管理系统 ***\n");
printf(" ***------------------ 组长 XXX ---------------------------***\n");
printf(" *************** 组员:XX XXX ************************\n");
printf(" *****************************************************************\n");
printf(" ***---------------- 小组分工 ------------------------***\n");
printf(" *****************************************************************\n");
printf(" ********* X X: 数据录入、修改与删 **************\n");
printf(" ********* X X: 文件读取与写入操作,及信息查询**************\n");
printf(" ********* XXX: 排序与浏览 **************\n");
printf(" *********************************************************谢谢使用\n");
do
{
printf("请输入您的帐号:");
scanf("%s",s);
printf("请你输入密码:\n");
scanf("%d",&a);
if(a==M)
{
printf("恭喜你成功登陆了\n\n\n");
flag=1;
break;
}
else
{
printf("输入有错误请重新输入:\n");
n--;
}
}while(n>0);
if(flag==0)
{
printf("你的输入次数已到再见!");
exit(1);
}
zi_menu();
}
void zi_menu() /*选择你所需要的服务*/
{
int a;
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3请选择您所需要的操作\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3 1.录入职工信息 2.修改职工信息 \3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3 3.删除职工信息 4.浏览职工信息 \3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3 5.查询职工信息 6.排序职工信息 \3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3 7.退出 \3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf("您想查询哪一个内容呢?1-7\n");
scanf("%d",&a);
if(1<=a&&a<=7)
switch(a)
{
case 1: xuanze(); break;
case 2: xiugai_xuanze(); break;
case 3: del_xuanze(); break;
case 4: liulan(); break;
case 5: search(); break;
case 6: paixu(); break;
case 7: break;
default:printf("请输入正确的数字:");
}
}
void xuanze()
{
int a;
printf("****************************************************************************\n");
printf("***** 1.从键盘读取 2.从文件中读取 *************************\n");
printf("****************************************************************************\n");
scanf("%d",&a);
if(a==1)
key();
if(a==2)
file();
}
void file() /*文件中读取*/
{
FILE *p;
if((p=fopen("d:职工2.txt","r"))==NULL)
{
printf("can not open file\n");
exit(1);
}
for(int i=0;i<N+6;i++)
{
fscanf(p,"%d%s%s%d%d%d%s%s%s%ld%s%s\n",
&worker[i].num,worker[i].name,worker[i].sex,&worker[i].bir.year,&worker[i].bir.month,&worker[i].bir.day,
worker[i].edu,worker[i].sta,worker[i].bra,&worker[i].wage,worker[i].addr,worker[i].tel);
printf("%d\t%s\t%s\t%d\t%d\t%d\t%s\t%s\t%s\t%ld\t%s\t%s\n",worker[i].num,worker[i].name,worker[i].sex,
worker[i].bir.year,worker[i].bir.month,worker[i].bir.day,worker[i].edu,
worker[i].sta,worker[i].bra,worker[i].wage,worker[i].addr,worker[i].tel);
}
fclose(p);
zi_menu();
}
void key() /*键盘录入函数*/
{
int i;
FILE *fp;
printf("请输入需要创建信息的职工人数(1--100):\n");
scanf("%d",&N);
for (i=0;i<N;i++)
{
printf("请输入职工号: ");
scanf("%d",&worker[i].num);
printf("\n");
printf("请输入姓名: ");
scanf("%s",worker[i].name);
getchar();
printf("请输入性别(女 男): ");
scanf("%s",&worker[i].sex);
printf("请输入生日: ");
scanf("%d%d%d",&worker[i].bir.year,&worker[i].bir.month,&worker[i].bir.day);
printf("请输入学历: ");
scanf("%s",worker[i].edu);
printf("请输入职位: ");
scanf("%s",&worker[i].sta);
printf("请输入部门: ");
scanf("%s",&worker[i].bra);
printf("请输入工资: ");
scanf("%ld",&worker[i].wage);
printf("请输入住址: ");
scanf("%s",worker[i].addr);
printf("请输入电话: ");
scanf("%s",worker[i].tel);
printf("\n");
}
printf("\n创建完毕!\n");
if((fp=fopen("d:职工2.txt","a+"))==NULL)
{ printf("\n cannot open file press any key exit!");
getchar();
exit(1);
}
char strInput[512];
for (i=0;i<N;i++) /*将内存中职工的信息输出到磁盘文件中去*/
{
memset(strInput,0,sizeof(strInput));
sprintf(strInput,"%d %s %s %d %d %d %s %s %s %ld %s %s\n",
worker[i].num,worker[i].name,worker[i].sex,worker[i].bir.year,worker[i].bir.month,worker[i].bir.day,
worker[i].edu,worker[i].sta,worker[i].bra,worker[i].wage,worker[i].addr,worker[i].tel);
int len = 0;
for (len = 0; len<512; len++)
{
if (strInput[len] == '\0')
{
break;
}
}
if (fwrite(strInput,len,1,fp)!=1)
printf("file write error\n");
}
fclose(fp);
zi_menu();
}
void xiugai_xuanze()
{
int a;
printf("请输入你想按哪种方法定位职工?");
printf("1 姓名 2职工号");
scanf("%d",&a);
switch(a)
{
case 1:xiugai_name(); break;
case 2:xiugai_num(); break;
default: break;
}
}
void xiugai_name()
{
diao();
char name[10];
int i,a,j,b;
printf("请问你想修改几位员工的信息?");
scanf("%d",&a);
for(j=0;j<a;j++)
{
printf("请输入你所想修改的员工的姓名:");
scanf("%s",name);
for(i=0;i<N+6;i++)
{
if(strcmp(worker[i].name,name)==0)
{
printf("请输入职工号: ");
scanf("%d",&worker[i].num);
printf("\n");
printf("请输入姓名: ");
scanf("%s",worker[i].name);
getchar();
printf("请输入性别(女 男): ");
scanf("%s",&worker[i].sex);
printf("请输入生日: ");
scanf("%d%d%d",&worker[i].bir.year,&worker[i].bir.month,&worker[i].bir.day);
printf("请输入学历: ");
scanf("%s",worker[i].edu);
printf("请输入职位: ");
scanf("%s",&worker[i].sta);
printf("请输入部门: ");
scanf("%s",&worker[i].bra);
printf("请输入工资: ");
scanf("%ld",&worker[i].wage);
printf("请输入住址: ");
scanf("%s",worker[i].addr);
printf("请输入电话: ");
scanf("%s",worker[i].tel);
printf("\n");
}
printf("%d\t%s\t%s\t%d\t%d\t%d\t%s\t%s\t%s\t%ld\t%s\t%s\n",worker[i].num,worker[i].name,worker[i].sex,
worker[i].bir.year,worker[i].bir.month,worker[i].bir.day,worker[i].edu,
worker[i].sta,worker[i].bra,worker[i].wage,worker[i].addr,worker[i].tel);
}
}
save();
printf("请输入您接下来想要进行的操作:【1 返回主菜单】 【2 继续修改资料】");
scanf("%d",&b);
switch(b)
{
case 1:zi_menu(); break;
case 2:xiugai_xuanze(); break;
default:break;
}
}
void xiugai_num()
{
diao();
int i,num,a,j,b;
printf("请问你想修改几位员工的信息?");
scanf("%d",&a);
for(j=0;j<a;j++)
{
printf("请输入你所想修改的员工的职工号:");
scanf("%d",&num);
for(i=0;i<N+6;i++)
{
if(worker[i].num==num)
{
printf("请输入职工号: ");
scanf("%d",&worker[i].num);
printf("\n");
printf("请输入姓名: ");
scanf("%s",worker[i].name);
getchar();
printf("请输入性别(女 男): ");
scanf("%s",&worker[i].sex);
printf("请输入生日: ");
scanf("%d%d%d",&worker[i].bir.year,&worker[i].bir.month,&worker[i].bir.day);
printf("请输入学历: ");
scanf("%s",worker[i].edu);
printf("请输入职位: ");
scanf("%s",&worker[i].sta);
printf("请输入部门: ");
scanf("%s",&worker[i].bra);
printf("请输入工资: ");
scanf("%ld",&worker[i].wage);
printf("请输入住址: ");
scanf("%s",worker[i].addr);
printf("请输入电话: ");
scanf("%s",worker[i].tel);
printf("\n");
}
printf("%d\t%s\t%s\t%d\t%d\t%d\t%s\t%s\t%s\t%ld\t%s\t%s\n",worker[i].num,worker[i].name,worker[i].sex,
worker[i].bir.year,worker[i].bir.month,worker[i].bir.day,worker[i].edu,
worker[i].sta,worker[i].bra,worker[i].wage,worker[i].addr,worker[i].tel);
}
save();
}
printf("请输入您接下来想要进行的操作:【1 返回主菜单】 【2 继续修改资料】");
scanf("%d",&b);
switch(b)
{
case 1:zi_menu(); break;
case 2:xiugai_xuanze(); break;
default:break;
}
}
void del_xuanze() /*选择如何删除函数*/
{
int a;
printf("请选择你想按那种方法删除员工信息?");
printf("1 姓名 2 职工号");
scanf("%d",&a);
switch(a)
{
case 1:del_name(); break;
case 2:del_num(); break;
default:break;
}
}
void del_name() /*按职工姓名删除函数*/
{
diao();
char name[20]= {0};
int a,i,j,b,k;
printf("请问你想要删除几位员工的信息?");
scanf("%d",&b);
for(k=0;k<b;k++)
{
printf("请输入您想要删除的职工的姓名:");
scanf("%s",name);
for(i=0;i<N+6;i++)
{
if(strcmp(worker[i].name,name)==0)
{
for(j=i;j<N+6-k;j++)
worker[j]=worker[j+1];
}
}
}
N--;
save();
liulan();
printf("你想要继续删除职工信息还是返回主菜单?");
printf("【1 继续删除员工信息】 【2 返回主菜单】");
scanf("%d",&a);
switch(a)
{
case 1:del_xuanze(); break;
case 2:zi_menu(); break;
default:break;
}
save();
}
void del_num() /*按职工号删除函数*/
{
diao();
long num;
int a,i,b,j,k;
printf("请问你想要删除几位员工的信息?");
scanf("%d",&b);
for(k=0;k<b;k++)
{
printf("请输入您想要删除的职工的职工号:");
scanf("%d",&num);
for(i=0;i<N+6;i++)
{
if(num==worker[i].num)
for(j=i;j<N-k;j++)
worker[j]=worker[j+1];
}
N--;
save();
}
liulan();
printf("你想要继续删除职工信息还是返回主菜单?");
printf("【1 继续删除员工信息】 【2 返回主菜单】");
scanf("%d",&a);
switch(a)
{
case 1:del_xuanze(); break;
case 2:zi_menu(); break;
default:break;
}
}
void liulan() /*浏览*/
{
int a;
FILE *p;
if((p=fopen("d:职工2.txt","r"))==NULL)
{
printf("can not open file\n");
exit(1);
}
printf("\n职工号\t姓名\t性别\t出生年月\t\t学历\t职务\t部门\t工资\t住址\t电话 \n");
for(int i=0;i<N+6;i++)
{
fscanf(p,"%d%s%s%d%d%d%s%s%s%ld%s%s\n",
&worker[i].num,worker[i].name,worker[i].sex,&worker[i].bir.year,&worker[i].bir.month,&worker[i].bir.day,
worker[i].edu,worker[i].sta,worker[i].bra,&worker[i].wage,worker[i].addr,worker[i].tel);
printf("%d\t%s\t%s\t%d\t%d\t%d\t%s\t%s\t%s\t%ld\t%s\t%s\n",worker[i].num,worker[i].name,worker[i].sex,
worker[i].bir.year,worker[i].bir.month,worker[i].bir.day,worker[i].edu,
worker[i].sta,worker[i].bra,worker[i].wage,worker[i].addr,worker[i].tel);
}
fclose(p);
printf("请问你想退出还是返回主菜单?");
printf("【1 退出】 【2 返回主菜单】");
scanf("%d",&a);
switch(a)
{
case 1:exit(1); break;
case 2:zi_menu();break;
default:break;
}
}
void search()/*查询函数*/
{
int t,flag;
do
{
printf("\n【1按职工号查询 】【2按学历查询】 【3 按电话号码查询】【4进入主函数按】\n");
scanf("%d",&t);
if(t>=1&&t<=4)
{
flag=1;
break;
}
else
{
flag=0;
printf("您输入有误,请重新选择!");
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
case 1:printf("按职工号查询\n");search_num();break;
case 2:printf("按学历查询\n");search_edu();break;
case 3:printf("按电话号码查询\n");search_tel();break;
case 4:main();break;
default:break;
}
}
}
void search_num()
{
diao();
int num;
int i,t;
printf("请输入要查找的职工号(00001---32767):\n");
scanf("%d",&num);
printf("\n已找到此人,其记录为:\n");
printf("\n职工号\t姓名\t性别\t出生年月\t\t学历\t职务\t部门\t工资\t住址\t电话 \n");
for(i=0;i<N+6;i++)
{
if(num==worker[i].num)
{
printf("\n%d\t%s\t%s\t%d\t%d\t%d\t%s\t%s\t%s\t%ld\t%s\t%s\n",worker[i].num,worker[i].name,worker[i].sex,worker[i].bir.year,worker[i].bir.month,worker[i].bir.day,worker[i].edu,worker[i].sta,worker[i].bra,worker[i].wage,worker[i].addr,worker[i].tel);
break;
}
if(i>=N+6)
printf("\n对不起,查无此人\n");
}
printf("\n");
printf("【1 返回主菜单】【2 返回继续查询函数】\n");
scanf("%d",&t);
switch(t)
{
case 1:zi_menu(); break;
case 2:search(); break;
default:break;
}
}
void search_edu()
{
diao();
char edu[6];
int i,t;
printf("请输入要查找的学历:\n");
scanf("%s",edu);
printf("\n已找到,其记录为:\n");
printf("\n职工号\t姓名\t性别\t出生年月\t\t学历\t职务\t部门\t工资\t住址\t电话 \n");
for(i=0;i<N+6;i++)
if(strcmp(worker[i].edu,edu)==0)
{
printf("\n%d\t%s\t%s\t%d\t%d\t%d\t%s\t%s\t%s\t%ld\t%s\t%s\n",worker[i].num,worker[i].name,worker[i].sex,worker[i].bir.year,worker[i].bir.month,worker[i].bir.day,worker[i].edu,worker[i].sta,worker[i].bra,worker[i].wage,worker[i].addr,worker[i].tel);
}
if(i>N+6)
printf("\n对不起,查无此人\n");
printf("\n");
printf("【1 返回主菜单】【2 返回继续查询函数】\n");
scanf("%d",&t);
switch(t)
{
case 1:zi_menu();; break;
case 2:search(); break;
default :break;
}
}
void search_tel()
{
diao();
char tel[11];
展开阅读全文