分享
 
 
 

改编 的 C版 职工管理系统

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

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

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);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有