| 订阅 | 在线投稿
分享
 
 
 

改编 的 C版 职工管理系统

来源:互联网  宽屏版  评论
2008-06-01 02:10:43

/*八、简单的职工治理系统

1.问题描述

对单位的职工进行治理,包括插入、删除、查找、排序等功能。

2.要求

职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。

(1)新增一名职工:将新增职工对象按姓名以字典方式职工治理文件中。

(2)删除一名职工:从职工治理文件中删除一名职工对象。

(3)查询:从职工治理文件中查询符合某些条件的职工。

(4)修改:检索某个职工对象,对其某些属性进行修改。

(5)排序:按某种需要对职工对象文件进行排序。

3.实现提示

职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。

(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。

(2)对职工对象中的"姓名"按字典顺序进行排序。

(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。

4.选做内容

将职工对象按散列法存储,并设计解决冲突的方法。在此基础上实现增、删、查询、修改、排序等操作。

*/

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <conio.h>

#define N 100

typedef strUCt employee//职工基本情况

{

int num;//工号

int position;//职位1为董事长2为总经理3为副总经理等

char name[8];//姓名

char sex[2];//性别f为女m为男

int age;//年龄

int cult;//文化程度1为专家2为博士3为硕士4为学士5为其他

int salary;//工资

int state;//健康情况分为good,general,bad

char day[10];//工作年月

}ro;

ro em[N];

typedef struct communication//职工通讯录

{

char name[8];

char Officetel[13];

char hometel[13];

char handtel[13];

char address[13];

char time[13];

}el;

el empc[N];

void manage();

void query();

void communicate();

void input();

void display();

void change();

void del();

void add();

int changeposition();

int changecult();

int changesalary();

int changestate();

void inputcommunicate();

void querycommunicate();

void changecommunicate();

char *changetel1();

char *changetel2();

char *changetel3();

int total;

int p;

char passWord[10]="talentxch";

void main()

{

int choice;

char s[10];

int flag=0;

int n=3;

do

{

printf("请你输入密码: ");

scanf("%s",s);

if(!strcmp(s,password))//若密码正确

{

printf("恭喜你成功登陆了 ");

flag=1;

break;

}

else

{

printf("输入有错误请重新输入: ");

n--;

}

}while(n>0);

if(!flag)

{

printf("你的输入次数已到再见 ");

}

do

{

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");

printf(" 欢迎进入职工治理系统中文版 ");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");

printf(" 请你选择操作类型: ");

printf("====================================================== ");

printf(" 1进入治理系统 ");

printf(" 2进入查询系统 ");

printf(" 3进入通讯录 ");

printf(" 0退出系统 ");

printf("====================================================== ");

scanf("%d",&choice);

switch(choice)

{

case 1:manage();

break;

case 2:query();

break;

case 3:communicate();

break;

case 0:

{

printf("谢谢使用再见 ");

exit(0);

}

default:

{

printf("输入有错误请重新输入: ");

return;

}

}

}while(1);

}

void manage()

{

int choicemanage;

char choice='y';

while(choice=='y'choice=='Y')

{

printf(" 欢迎进入治理系统 ");

printf("====================================================== ");

printf(" 请你选择操作类型: ");

printf(" 1输入职工信息 ");

printf(" 2显示职工信息 ");

printf(" 3修改职工信息 ");

printf(" 4追加一个职工信息 ");

printf(" 5删除一个职工信息 ");

printf(" 0返回 ");

printf("====================================================== ");

scanf("%d",&choicemanage);

switch(choicemanage)

{

case 1: input();//输入职工信息

break;

case 2:display();//显示职工信息

break;

case 3:change();//修改职工信息

break;

case 4:add();//追加一个职工信息

break;

case 5:del();//删除一个职工信息

break;

case 0:

printf("谢谢你的使用再见 ");

return;

default:printf("你的输入有错请重新输入 ");

}

printf("是否继续治理?(y/n)");

scanf("%s",&choice);

}

if(toupper(choice)=='N'(choice)=='n')

{

printf("输入完毕,任意键返回 ");

getch();

return;

}

}

void input()

{

FILE *fp;

int i=0;

char choiceinput='y';

if((fp=fopen("employee.txt","w"))==NULL)

return;

while(choiceinput=='y'choiceinput=='Y')

{

i++;

total++;

printf("第%d个职工 ",i);

printf(" ");

printf("请你输入工号: ");//输入工号

scanf("%d",&em[i].num);

printf(" ");

printf("请你输入职位: ");//输入职位

printf("1董事长 2总经理 3副总经理 ");

printf("4部门经理 5工程师 6秘书 ");

printf("7技术员 8领班 9员工 ");

scanf("%d",&em[i].position);

printf(" ");

printf("请你输入姓名: ");//输入姓名

scanf("%s",em[i].name);

printf(" ");

printf("请你输入性别以(m男f女): ");//输入性别

scanf("%s",em[i].sex);

printf(" ");

printf("请你输入文化程度: ");//输入文化程度

printf("1专家 2博士 3硕士 4学士 5其他 ");

scanf("%d",&em[i].cult);

printf(" ");

printf("请你输入工资: ");//输入工资

scanf("%d",&em[i].salary);

printf(" ");

printf("请你输入身体情况: ");//身体情况

printf("1好 2一般 3差 ");

scanf("%d",&em[i].state);

printf("请你输入工作年月: ");

scanf("%s",em[i].day);

printf(" ");

printf("是否继续输入?(y/n) ");

scanf("%s",&choiceinput);

fwrite(&em[i],sizeof(struct employee),1,fp);

}

if(toupper(choiceinput)=='N') //字符大小写转换

{

fclose(fp);

printf("输入完毕,任意键返回 ");

getch();

return;

}

}

void display()//显示职工信息

{

FILE *fp;

int i;

if((fp=fopen("employee.txt","r"))==NULL)

return;

printf("输出结果: ");

printf("工号 职位 姓名 性别 文化程度 工资 身体情况 ");

printf(" ");

for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)

{

printf(" ");

printf("工号: %d ",em[i].num);

printf("职位: %d ",em[i].position);

printf("1董事长 2总经理 3副总经理 ");

printf("4部门经理 5工程师 6秘书 ");

printf("7技术员 8领班 9员工 ");

printf("姓名: %s ",em[i].name);

printf("性别: %s ",em[i].sex);

printf("其中(m男f女) ");

printf("文化程度: %d ",em[i].cult);

printf("1专家 2博士 3硕士 4学士 5其他 ");

printf("工资: %d ",em[i].salary);

printf("身体情况: %d ",em[i].state);

printf("1好 2一般 3差 ");

printf("工作年月: %s",em[i].day);

printf(" ");

}

printf(" ");

printf("完毕按任意键返回 ");

getch(); //文件里用

fclose(fp);

return;

}

void change()

{

FILE *fp;

int i;

char chname[8];

int choicechange;

ro a[N];

printf("请你输入要修改的人的姓名: ");

scanf("%s",&chname);

if((fp=fopen("employee.txt","w+"))==NULL)

{

printf("不能够打开这个文件 ");

return;

}

for(i=0;i<N;i++)

{

if(strcmp(chname,em[i].name)==0)

{

printf("这是你要修改的人的信息 ");

printf("工号:%d 职位:%d 姓名:%s 性别:%s 文化程度:%d 工资:%d 身体:%d ",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].cult,em[i].salary,em[i].state);

printf("-------------------------------------------------------- ");

printf("请你输入要修改的部分: ");

printf("======================================================== ");

printf("1修改职位 ");

printf("2修改文化程度 ");

printf("3修改工资 ");

printf("4修改身体情况 ");

printf("0退出系统 ");

printf("======================================================== ");

printf("请选择 ");

scanf("%d",&choicechange);

switch(choicechange)

{

case 1:

em[i].position=changeposition();

break;

case 2:

em[i].cult=changecult();

break;

case 3:

em[i].salary=changesalary();

break;

case 4:

em[i].state=changestate();

break;

case 0:

return;

default :

printf("输入有错误");

}

a[i]=em[i];

}

else

{

a[i]=em[i];

}

}

for(i=0;i<total;i++)

{

em[i]=a[i];

}

i=0;

fwrite(&em[i],sizeof(struct employee),total,fp);

fclose(fp);

printf("操作完成按任意键返回 ");

getch();

return;

}

int changeposition()

{

int newposition;

printf("请你输入新职位: ");

printf("1董事长 2总经理 3副总经理 ");

printf("4部门经理 5工程师 6秘书 ");

printf("7技术员 8领班 9员工 ");

scanf("%d",&newposition);

return(newposition);

}

int changecult()

{

int newcult;

printf("请你输入新的文凭: ");

printf("1专家 2博士 3硕士 4学士 5其他 ");

scanf("%d",&newcult);

return(newcult);

}

int changesalary()

{

int newsalary;

printf("请你输入新的工资: ");

scanf("%d",&newsalary);

return(newsalary);

}

int changestate()

{

int newstate;

printf("请你输入现在的身体情况: ");

printf("1好 2一般 3差 ");

scanf("%d",&newstate);

return(newstate);

}

void add()//追加一个职工信息

{

struct employee emp;

FILE *fp;

int i=0;

if((fp=fopen("employee.txt","ab+"))==NULL)

{

printf("不能够打开这个文件 ");

getch();

return;

}

printf("请你输入新人的内容: ");

printf("请你输入工号: ");//输入工号

scanf("%d",&emp.num);

printf("请你输入职位: ");//输入职位

printf("1董事长 2总经理 3副总经理 ");

printf("4部门经理 5工程师 6秘书 ");

printf("7技术员 8领班 9员工 ");

scanf("%d",&emp.position);

printf("请你输入姓名: ");//输入姓名

scanf("%s",emp.name);

printf("请你输入性别以(m男f女): ");//输入性别

scanf("%s",emp.sex);

printf("请你输入文化程度: ");//输入文化程度

printf("1专家 2博士 3硕士 4学士 5其他 ");

scanf("%d",&emp.cult);

printf("请你输入工资: ");//输入工资

scanf("%d",&emp.salary);

printf("请你输入身体情况: ");//身体情况

printf("1好 2一般 3差 ");

scanf("%d",&emp.state);

printf("请你输入工作年月: ");

scanf("%s",emp.day);

fwrite(&emp,sizeof(struct employee),1,fp);

rewind(fp);

printf("插入完毕,按任意键返回 ");

getch();

total=total+1;

fclose(fp);

return;

}

void del()//删除一个职工信息

{

int i=0;

char delname[8];

FILE *fp;

if((fp=fopen("employee.txt","w"))==NULL)

{

printf("文件为空,不能够打开 ");

printf("按任意键返回 ");

getch();

return;

}

printf("请你输入要删除的人的姓名: ");//删除的职工的信息

scanf("%s",delname);

for(i=0;i<N;i++)

{

if(strcmp(em[i].name,delname)==0)

{

total--;

for(;i<N;i++)

{

em[i]=em[i+1];

}

}

}

i=0;

fwrite(&em[i],sizeof(struct employee),total,fp);

fclose(fp);

}

void query()

{

FILE *fp;

int i=0;

char quename[8];

if((fp=fopen("employee.txt","r"))==NULL)

{

printf("不能够打开文件,按任意键返回 ");

getch();

return;

}

printf("请你输入要查询的人的姓名 ");

scanf("%s",quename);

for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)

{

if(strcmp(em[i].name,quename)==0) /*找到,并显示该职工记录*/

{

printf(" 查询到的职工号或姓名为的信息如下: ");

printf("以下是你要查询的人的信息 ");

printf("工号: %d ",em[i].num);

printf("职位: %d ",em[i].position);

printf("1董事长 2总经理 3副总经理 ");

printf("4部门经理 5工程师 6秘书 ");

printf("7技术员 8领班 9员工 ");

printf("姓名: %s ",em[i].name);

printf("性别: %s ",em[i].sex);

printf("其中(m男f女) ");

printf("文化程度: %d ",em[i].cult);

printf("1专家 2博士 3硕士 4学士 5其他 ");

printf("工资: %d ",em[i].salary);

printf("身体情况: %d ",em[i].state);

printf("1好 2一般 3差 ");

printf("工作年月: %s ",em[i].day);

printf(" ");

printf("查询完毕,按任意键返回 ");

getch();

fclose(fp);

return;

}

}

printf("没有这样的人,按任意键返回 ");

getch();

fclose(fp);

return;

}

void communicate()

{

int choicecommunicate;

printf("欢迎进入通讯录系统 ");

printf("请你选择操作类型: ");

printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ");

printf("1为输入通讯录信息 ");

printf("2为查询通讯录信息 ");

printf("3为修改通讯录信息 ");

printf("0为退出通讯录系统 ");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");

scanf("%d",&choicecommunicate);

switch(choicecommunicate)

{

case 1:inputcommunicate();

break;

case 2:querycommunicate();

break;

case 3:changecommunicate();

break;

case 0:

{

printf("谢谢使用再见 ");

printf("按任意键返回 ");

getch();

return;

}

default:

printf("输入有错 ");

}

}

void inputcommunicate()

{

FILE *fp;

int choiceincom='y';

int i=0;

if((fp=fopen("empcom.txt","w"))==NULL)

{

printf("不能够打开文件 ");

printf("任意键返回 ");

getch();

return;

}

printf("请你输入通讯录的信息: ");

while(choiceincom=='y'choiceincom=='Y')

{

p++;

i++;

printf("第%d个职工 ",i);

printf("请你输入姓名: ");

scanf("%s",empc[i].name);

printf("请你输入生日: ");

scanf("%s",empc[i].time);

printf("请你输入办公室电话号码: ");

scanf("%s",empc[i].officetel);

printf("请你输入家庭电话号码: ");

scanf("%s",empc[i].hometel);

printf("请你输入手机号码: ");

scanf("%s",empc[i].handtel);

printf("请你输入地址: ");

scanf("%s",empc[i].address);

printf("是否继续输入?(y/n) ");

choiceincom=getch();

fwrite(&empc[i],sizeof(struct communication),1,fp);

}

if(toupper(choiceincom)=='N')

{

fclose(fp);

printf("输入完毕,任意键返回 ");

return;

}

}

void querycommunicate()

{

FILE *fp;

int i=0;

char qcname[8];

if((fp=fopen("empcom.txt","r"))==NULL)

{

printf("不能够打开文件,按任意键返回 ");

getch();

return;

}

printf("请你输入要查询的人的姓名: ");

scanf("%s",qcname);

for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)

{

if(strcmp(empc[i].name,qcname)==0)

{

printf("以下为您所要求的信息: ");

printf("姓名: %s ",empc[i].name);

printf("生日: %s ",empc[i].time);

printf("办公室电话号码: %s ",empc[i].officetel);

printf("家庭电话号码: %s ",empc[i].hometel);

printf("手机号码: %s ",empc[i].handtel);

printf("家庭地址: %s ",empc[i].address);

printf("查询完毕,按任意键返回 ");

getch();

fclose(fp);

return;

}

}

printf("没有这样的人,按任意键返回 ");

getch();

fclose(fp);

return;

}

void changecommunicate()

{

FILE *fp;

int i=0;

char chcname[8];

int choicecom;

el b[N];

if((fp=fopen("empcom.txt","w+"))==NULL)

{

printf("打不开文件按任意键返回 ");

getch();

return;

}

printf("请你输入你要修改的人的姓名: ");

scanf("%s",chcname);

for(i=0;i<p;i++)

{

if(strcmp(empc[i].name,chcname)==0)

{

printf("以下为您所要修改的人的信息: ");

printf("姓名:%s ",empc[i].name);

printf("生日: %s ",empc[i].time);

printf("办公室电话号码: %s ",empc[i].officetel);

printf("家庭电话号码: %s ",empc[i].hometel);

printf("手机号码: %s ",empc[i].handtel);

printf("家庭地址: %s ",empc[i].address);

printf("请你选择要修改的东西: ");

printf("$$$$$$$$$$$$$$$$$$$$$$ ");

printf("1修改办公室电话号码 ");

printf("2修改家庭电话号码 ");

printf("3修改手机电话号码 ");

printf("0退出系统 ");

printf("$$$$$$$$$$$$$$$$$$$$$$ ");

scanf("%d",&choicecom);

switch(choicecom)

{

case 1:strcpy(empc[i].officetel,changetel1());

break;

case 2:strcpy(empc[i].hometel,changetel2());

break;

case 3:strcpy(empc[i].handtel,changetel3());

break;

case 0:

return;

default:

printf("输入有错 ");

}

b[i]=empc[i];

}

else

}

for(i=0;i<p;i++)

i=0;

fwrite(&empc[i],sizeof(struct communication),p,fp);

fclose(fp);

printf("操作完成按任意键返回 ");

getch();

return;

}

char *changetel1()

{

char newofficetel[13];

printf("请你输入新办公室电话号码: ");

scanf("%s",newofficetel);

return(newofficetel);

}

char *changetel2()

{

char newhometel[13];

printf("请你输入新家庭电话号码: ");

scanf("%s",newhometel);

return(newhometel);

}

char *changetel3()

{

char newhandtel[13];

printf("请你输入新手机电话号码: ");

scanf("%s",newhandtel);

return(newhandtel);

}

/*八、简单的职工治理系统 1.问题描述   对单位的职工进行治理,包括插入、删除、查找、排序等功能。 2.要求   职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。 (1)新增一名职工:将新增职工对象按姓名以字典方式职工治理文件中。 (2)删除一名职工:从职工治理文件中删除一名职工对象。 (3)查询:从职工治理文件中查询符合某些条件的职工。 (4)修改:检索某个职工对象,对其某些属性进行修改。 (5)排序:按某种需要对职工对象文件进行排序。 3.实现提示   职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。 (1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。 (2)对职工对象中的"姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。 4.选做内容   将职工对象按散列法存储,并设计解决冲突的方法。在此基础上实现增、删、查询、修改、排序等操作。 */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #define N 100 typedef strUCt employee//职工基本情况 { int num;//工号 int position;//职位1为董事长2为总经理3为副总经理等 char name[8];//姓名 char sex[2];//性别f为女m为男 int age;//年龄 int cult;//文化程度1为专家2为博士3为硕士4为学士5为其他 int salary;//工资 int state;//健康情况分为good,general,bad char day[10];//工作年月 }ro; ro em[N]; typedef struct communication//职工通讯录 { char name[8]; char Officetel[13]; char hometel[13]; char handtel[13]; char address[13]; char time[13]; }el; el empc[N]; void manage(); void query(); void communicate(); void input(); void display(); void change(); void del(); void add(); int changeposition(); int changecult(); int changesalary(); int changestate(); void inputcommunicate(); void querycommunicate(); void changecommunicate(); char *changetel1(); char *changetel2(); char *changetel3(); int total; int p; char passWord[10]="talentxch"; void main() { int choice; char s[10]; int flag=0; int n=3; do { printf("请你输入密码: "); scanf("%s",s); if(!strcmp(s,password))//若密码正确 { printf("恭喜你成功登陆了 "); flag=1; break; } else { printf("输入有错误请重新输入: "); n--; } }while(n>0); if(!flag) { printf("你的输入次数已到再见 "); } do { printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "); printf(" 欢迎进入职工治理系统中文版 "); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "); printf(" 请你选择操作类型: "); printf("====================================================== "); printf(" 1进入治理系统 "); printf(" 2进入查询系统 "); printf(" 3进入通讯录 "); printf(" 0退出系统 "); printf("====================================================== "); scanf("%d",&choice); switch(choice) { case 1:manage(); break; case 2:query(); break; case 3:communicate(); break; case 0: { printf("谢谢使用再见 "); exit(0); } default: { printf("输入有错误请重新输入: "); return; } } }while(1); } void manage() { int choicemanage; char choice='y'; while(choice=='y'choice=='Y') { printf(" 欢迎进入治理系统 "); printf("====================================================== "); printf(" 请你选择操作类型: "); printf(" 1输入职工信息 "); printf(" 2显示职工信息 "); printf(" 3修改职工信息 "); printf(" 4追加一个职工信息 "); printf(" 5删除一个职工信息 "); printf(" 0返回 "); printf("====================================================== "); scanf("%d",&choicemanage); switch(choicemanage) { case 1: input();//输入职工信息 break; case 2:display();//显示职工信息 break; case 3:change();//修改职工信息 break; case 4:add();//追加一个职工信息 break; case 5:del();//删除一个职工信息 break; case 0: printf("谢谢你的使用再见 "); return; default:printf("你的输入有错请重新输入 "); } printf("是否继续治理?(y/n)"); scanf("%s",&choice); } if(toupper(choice)=='N'(choice)=='n') { printf("输入完毕,任意键返回 "); getch(); return; } } void input() { FILE *fp; int i=0; char choiceinput='y'; if((fp=fopen("employee.txt","w"))==NULL) return; while(choiceinput=='y'choiceinput=='Y') { i++; total++; printf("第%d个职工 ",i); printf(" "); printf("请你输入工号: ");//输入工号 scanf("%d",&em[i].num); printf(" "); printf("请你输入职位: ");//输入职位 printf("1董事长 2总经理 3副总经理 "); printf("4部门经理 5工程师 6秘书 "); printf("7技术员 8领班 9员工 "); scanf("%d",&em[i].position); printf(" "); printf("请你输入姓名: ");//输入姓名 scanf("%s",em[i].name); printf(" "); printf("请你输入性别以(m男f女): ");//输入性别 scanf("%s",em[i].sex); printf(" "); printf("请你输入文化程度: ");//输入文化程度 printf("1专家 2博士 3硕士 4学士 5其他 "); scanf("%d",&em[i].cult); printf(" "); printf("请你输入工资: ");//输入工资 scanf("%d",&em[i].salary); printf(" "); printf("请你输入身体情况: ");//身体情况 printf("1好 2一般 3差 "); scanf("%d",&em[i].state); printf("请你输入工作年月: "); scanf("%s",em[i].day); printf(" "); printf("是否继续输入?(y/n) "); scanf("%s",&choiceinput); fwrite(&em[i],sizeof(struct employee),1,fp); } if(toupper(choiceinput)=='N') //字符大小写转换 { fclose(fp); printf("输入完毕,任意键返回 "); getch(); return; } } void display()//显示职工信息 { FILE *fp; int i; if((fp=fopen("employee.txt","r"))==NULL) return; printf("输出结果: "); printf("工号 职位 姓名 性别 文化程度 工资 身体情况 "); printf(" "); for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++) { printf(" "); printf("工号: %d ",em[i].num); printf("职位: %d ",em[i].position); printf("1董事长 2总经理 3副总经理 "); printf("4部门经理 5工程师 6秘书 "); printf("7技术员 8领班 9员工 "); printf("姓名: %s ",em[i].name); printf("性别: %s ",em[i].sex); printf("其中(m男f女) "); printf("文化程度: %d ",em[i].cult); printf("1专家 2博士 3硕士 4学士 5其他 "); printf("工资: %d ",em[i].salary); printf("身体情况: %d ",em[i].state); printf("1好 2一般 3差 "); printf("工作年月: %s",em[i].day); printf(" "); } printf(" "); printf("完毕按任意键返回 "); getch(); //文件里用 fclose(fp); return; } void change() { FILE *fp; int i; char chname[8]; int choicechange; ro a[N]; printf("请你输入要修改的人的姓名: "); scanf("%s",&chname); if((fp=fopen("employee.txt","w+"))==NULL) { printf("不能够打开这个文件 "); return; } for(i=0;i<N;i++) { if(strcmp(chname,em[i].name)==0) { printf("这是你要修改的人的信息 "); printf("工号:%d 职位:%d 姓名:%s 性别:%s 文化程度:%d 工资:%d 身体:%d ",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].cult,em[i].salary,em[i].state); printf("-------------------------------------------------------- "); printf("请你输入要修改的部分: "); printf("======================================================== "); printf("1修改职位 "); printf("2修改文化程度 "); printf("3修改工资 "); printf("4修改身体情况 "); printf("0退出系统 "); printf("======================================================== "); printf("请选择 "); scanf("%d",&choicechange); switch(choicechange) { case 1: em[i].position=changeposition(); break; case 2: em[i].cult=changecult(); break; case 3: em[i].salary=changesalary(); break; case 4: em[i].state=changestate(); break; case 0: return; default : printf("输入有错误"); } a[i]=em[i]; } else { a[i]=em[i]; } } for(i=0;i<total;i++) { em[i]=a[i]; } i=0; fwrite(&em[i],sizeof(struct employee),total,fp); fclose(fp); printf("操作完成按任意键返回 "); getch(); return; } int changeposition() { int newposition; printf("请你输入新职位: "); printf("1董事长 2总经理 3副总经理 "); printf("4部门经理 5工程师 6秘书 "); printf("7技术员 8领班 9员工 "); scanf("%d",&newposition); return(newposition); } int changecult() { int newcult; printf("请你输入新的文凭: "); printf("1专家 2博士 3硕士 4学士 5其他 "); scanf("%d",&newcult); return(newcult); } int changesalary() { int newsalary; printf("请你输入新的工资: "); scanf("%d",&newsalary); return(newsalary); } int changestate() { int newstate; printf("请你输入现在的身体情况: "); printf("1好 2一般 3差 "); scanf("%d",&newstate); return(newstate); } void add()//追加一个职工信息 { struct employee emp; FILE *fp; int i=0; if((fp=fopen("employee.txt","ab+"))==NULL) { printf("不能够打开这个文件 "); getch(); return; } printf("请你输入新人的内容: "); printf("请你输入工号: ");//输入工号 scanf("%d",&emp.num); printf("请你输入职位: ");//输入职位 printf("1董事长 2总经理 3副总经理 "); printf("4部门经理 5工程师 6秘书 "); printf("7技术员 8领班 9员工 "); scanf("%d",&emp.position); printf("请你输入姓名: ");//输入姓名 scanf("%s",emp.name); printf("请你输入性别以(m男f女): ");//输入性别 scanf("%s",emp.sex); printf("请你输入文化程度: ");//输入文化程度 printf("1专家 2博士 3硕士 4学士 5其他 "); scanf("%d",&emp.cult); printf("请你输入工资: ");//输入工资 scanf("%d",&emp.salary); printf("请你输入身体情况: ");//身体情况 printf("1好 2一般 3差 "); scanf("%d",&emp.state); printf("请你输入工作年月: "); scanf("%s",emp.day); fwrite(&emp,sizeof(struct employee),1,fp); rewind(fp); printf("插入完毕,按任意键返回 "); getch(); total=total+1; fclose(fp); return; } void del()//删除一个职工信息 { int i=0; char delname[8]; FILE *fp; if((fp=fopen("employee.txt","w"))==NULL) { printf("文件为空,不能够打开 "); printf("按任意键返回 "); getch(); return; } printf("请你输入要删除的人的姓名: ");//删除的职工的信息 scanf("%s",delname); for(i=0;i<N;i++) { if(strcmp(em[i].name,delname)==0) { total--; for(;i<N;i++) { em[i]=em[i+1]; } } } i=0; fwrite(&em[i],sizeof(struct employee),total,fp); fclose(fp); } void query() { FILE *fp; int i=0; char quename[8]; if((fp=fopen("employee.txt","r"))==NULL) { printf("不能够打开文件,按任意键返回 "); getch(); return; } printf("请你输入要查询的人的姓名 "); scanf("%s",quename); for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++) { if(strcmp(em[i].name,quename)==0) /*找到,并显示该职工记录*/ { printf(" 查询到的职工号或姓名为的信息如下: "); printf("以下是你要查询的人的信息 "); printf("工号: %d ",em[i].num); printf("职位: %d ",em[i].position); printf("1董事长 2总经理 3副总经理 "); printf("4部门经理 5工程师 6秘书 "); printf("7技术员 8领班 9员工 "); printf("姓名: %s ",em[i].name); printf("性别: %s ",em[i].sex); printf("其中(m男f女) "); printf("文化程度: %d ",em[i].cult); printf("1专家 2博士 3硕士 4学士 5其他 "); printf("工资: %d ",em[i].salary); printf("身体情况: %d ",em[i].state); printf("1好 2一般 3差 "); printf("工作年月: %s ",em[i].day); printf(" "); printf("查询完毕,按任意键返回 "); getch(); fclose(fp); return; } } printf("没有这样的人,按任意键返回 "); getch(); fclose(fp); return; } void communicate() { int choicecommunicate; printf("欢迎进入通讯录系统 "); printf("请你选择操作类型: "); printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ "); printf("1为输入通讯录信息 "); printf("2为查询通讯录信息 "); printf("3为修改通讯录信息 "); printf("0为退出通讯录系统 "); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "); scanf("%d",&choicecommunicate); switch(choicecommunicate) { case 1:inputcommunicate(); break; case 2:querycommunicate(); break; case 3:changecommunicate(); break; case 0: { printf("谢谢使用再见 "); printf("按任意键返回 "); getch(); return; } default: printf("输入有错 "); } } void inputcommunicate() { FILE *fp; int choiceincom='y'; int i=0; if((fp=fopen("empcom.txt","w"))==NULL) { printf("不能够打开文件 "); printf("任意键返回 "); getch(); return; } printf("请你输入通讯录的信息: "); while(choiceincom=='y'choiceincom=='Y') { p++; i++; printf("第%d个职工 ",i); printf("请你输入姓名: "); scanf("%s",empc[i].name); printf("请你输入生日: "); scanf("%s",empc[i].time); printf("请你输入办公室电话号码: "); scanf("%s",empc[i].officetel); printf("请你输入家庭电话号码: "); scanf("%s",empc[i].hometel); printf("请你输入手机号码: "); scanf("%s",empc[i].handtel); printf("请你输入地址: "); scanf("%s",empc[i].address); printf("是否继续输入?(y/n) "); choiceincom=getch(); fwrite(&empc[i],sizeof(struct communication),1,fp); } if(toupper(choiceincom)=='N') { fclose(fp); printf("输入完毕,任意键返回 "); return; } } void querycommunicate() { FILE *fp; int i=0; char qcname[8]; if((fp=fopen("empcom.txt","r"))==NULL) { printf("不能够打开文件,按任意键返回 "); getch(); return; } printf("请你输入要查询的人的姓名: "); scanf("%s",qcname); for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++) { if(strcmp(empc[i].name,qcname)==0) { printf("以下为您所要求的信息: "); printf("姓名: %s ",empc[i].name); printf("生日: %s ",empc[i].time); printf("办公室电话号码: %s ",empc[i].officetel); printf("家庭电话号码: %s ",empc[i].hometel); printf("手机号码: %s ",empc[i].handtel); printf("家庭地址: %s ",empc[i].address); printf("查询完毕,按任意键返回 "); getch(); fclose(fp); return; } } printf("没有这样的人,按任意键返回 "); getch(); fclose(fp); return; } void changecommunicate() { FILE *fp; int i=0; char chcname[8]; int choicecom; el b[N]; if((fp=fopen("empcom.txt","w+"))==NULL) { printf("打不开文件按任意键返回 "); getch(); return; } printf("请你输入你要修改的人的姓名: "); scanf("%s",chcname); for(i=0;i<p;i++) { if(strcmp(empc[i].name,chcname)==0) { printf("以下为您所要修改的人的信息: "); printf("姓名:%s ",empc[i].name); printf("生日: %s ",empc[i].time); printf("办公室电话号码: %s ",empc[i].officetel); printf("家庭电话号码: %s ",empc[i].hometel); printf("手机号码: %s ",empc[i].handtel); printf("家庭地址: %s ",empc[i].address); printf("请你选择要修改的东西: "); printf("$$$$$$$$$$$$$$$$$$$$$$ "); printf("1修改办公室电话号码 "); printf("2修改家庭电话号码 "); printf("3修改手机电话号码 "); printf("0退出系统 "); printf("$$$$$$$$$$$$$$$$$$$$$$ "); scanf("%d",&choicecom); switch(choicecom) { case 1:strcpy(empc[i].officetel,changetel1()); break; case 2:strcpy(empc[i].hometel,changetel2()); break; case 3:strcpy(empc[i].handtel,changetel3()); break; case 0: return; default: printf("输入有错 "); } b[i]=empc[i]; } else } for(i=0;i<p;i++) i=0; fwrite(&empc[i],sizeof(struct communication),p,fp); fclose(fp); printf("操作完成按任意键返回 "); getch(); return; } char *changetel1() { char newofficetel[13]; printf("请你输入新办公室电话号码: "); scanf("%s",newofficetel); return(newofficetel); } char *changetel2() { char newhometel[13]; printf("请你输入新家庭电话号码: "); scanf("%s",newhometel); return(newhometel); } char *changetel3() { char newhandtel[13]; printf("请你输入新手机电话号码: "); scanf("%s",newhandtel); return(newhandtel); }
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有