c语言管理系统编程急!
# include & ltwindows.h & gt
# include & lttime.h & gt
# include & ltstring.h & gt
#定义编号100
结构员工
{
int num
字符名称[10];
查尔志成;
int吉本;
int江津;
int宝仙;
int zafei
int《史记》;
} em[100];/*定义一个结构*/
void menu();
void输入();
void save(int);
void显示();
void del();
void search();
void search _ zhi cheng();
void搜索名称();
void modify();/*定义每个函数*/
Void menu() /*菜单功能*/
{
printf(" \ n ");
printf(" Netmeter 091 Group 7 \ n ");
printf(" \ n ");
Printf ("* * * * * * * * * * * *员工信息管理* * * * * * * * * * * * * * * * \ n ");
Printf(" 1。输入员工信息”);
Printf(" 2。浏览员工信息\ n ");
Printf(" 3。查询员工信息”);
Printf(" 4。删除员工信息\ n ");
Printf(" 5。修改员工信息\ n ");
Printf(" 6。退出\ n ");
printf(" * * * * * * * * * * * * * * * *感谢您使用* * * * * * * * * * * * \ n ");
printf(" \ n ");
printf(" \ n ");
}
void main()
{
int n,flag
char a;
while(1)
{
做
{
menu();/*调用菜单功能*/
Printf("请选择您需要操作的步骤(1-6):\ n ");
scanf("%d ",& ampn);
如果(n & gt=1。& ampn & lt=6)
{
flag = 1;
打破;
}
其他
{
flag = 0;
Printf("您输入错误,请重新选择!");
}
} while(flag = = 0);
开关(n)
{
Case 1:printf("输入员工信息\ n ");printf(" \ n ");input();打破;
案例二:printf("浏览员工信息\ n ");printf(" \ n ");系统(“cls”);显示();打破;
案例三:printf("按员工编号查询员工信息\ n ");printf(" \ n ");系统(“cls”);search();打破;
案例四:printf("删除员工信息\ n ");printf(" \ n ");系统(“cls”);del();打破;
案例五:printf("修改员工信息\ n ");printf(" \ n ");系统(“cls”);modify();打破;
案例六:goto la
默认:break
}
}
洛杉矶:
系统(“cls”);
printf(" \ n \ n \ n \ n \ n感谢您的使用!\ n ");
}
Void input() /*输入函数*/
{
int i,m;
Printf("请输入需要创建信息的员工人数(1-100):\ n ");
scanf("%d ",& ampm);
for(I = 0;我& ltm;i++)
{
Printf("请输入员工编号:");
scanf("%d ",& ampem[i]。num);//这里代码不对,应该用数组下标。
printf(" \ n ");
Printf("请输入您的姓名:");
scanf("%s ",em[i]。姓名);//这里代码不对,应该用数组下标。
getchar();
Printf("请输入标题:");
scanf("%c ",& ampem[i]。志诚);//这里代码不对,应该用数组下标。
Printf("请输入基本工资:");
scanf("%d ",& ampem[i]。吉本);//这里代码不对,应该用数组下标。
Printf("请输入奖金:");
scanf("%d ",& ampem[i]。江津);//这里代码不对,应该用数组下标。
Printf("请输入保险:");
scanf("%d ",& ampem[i]。宝贤);//这里代码不对,应该用数组下标。
Printf("请输入杂费:");
scanf("%d ",& ampem[i]。zafei);//这里代码不对,应该用数组下标。
em[i]。shiji=em[i]。jiben + em[i]。江津- em[i]。宝贤- em[i]。扎非;//这里代码不对,应该用数组下标。
printf(" \ n ");
}
printf(" \ n已创建!\ n ");系统(“cls”);
保存(m);
}
Void save(int m) /*保存文件函数*/
{
int I;
FILE * fp
If ((FP = fopen ("employee _ list "," WB ")= = null)/*创建一个文件,判断是否可以打开*/
{
printf("无法打开文件\ n ");
退出(0);
}
for(I = 0;我& ltm;I++) /*将内存中的员工信息输出到磁盘文件*/
if(fwrite(& amp;em,sizeof(结构雇员),1,fp)!=1)
printf("文件写入错误\ n ");
fclose(FP);
}
Int load() /*导入函数*/
{
FILE * fp
int I = 0;
if((fp=fopen("employee_list "," Rb ")= = NULL)
{
printf("无法打开文件\ n ");
退出(0);
}
其他
{
做
{
弗雷德(& ampem,sizeof(struct employee),1,FP);
i++;
}
while(feof(FP)= = 0);
}
fclose(FP);
返回(I-1);
}
Void display() /*浏览函数*/
{
int I;
int m = load();
printf(" \ n员工编号\ t姓名\ t职务\ t基本工资\ t责任\ t保险\ t其他费用\ t实际工资\ n ");
for(I = 0;我& ltm;I++) /*m是输入部分的员工数*/
printf(" \ n % d \ t % s \ t % c \ t % d \ t % d \ t % d \ t % d \ t % d \ n ",em[i]。num,em[i]。姓名,em[i]。志成,em[i]。吉本,em[i]。江津,em[i]。宝贤,em[i]。zafei,em[i]。《史记》);//这里代码不对,应该用数组下标。
Printf("按任意键继续\ n ");
getchar();getchar();系统(“cls”);
}
Void del() /*删除函数*/
{
int m = load();
int i,j,n,t,flag
char name 1[10];
printf(" \ n原始员工信息:\ n ");
显示();/*调用浏览函数*/
printf(" \ n ");
Printf("请输入要删除的员工姓名:\ n ");
scanf("%s ",name 1);
for(flag=1,I = 0;旗帜& amp& amp我& ltm;i++)
{
if(strcmp(em[i].name,name1)==0)
{
printf(" \ n此人已找到,原始记录为:\ n ");
printf(" \ n员工编号\ t姓名\ t职务\ t基本工资\ t责任\ t保险\ t其他费用\ t实际工资\ n ");
printf(" \ n % d \ t % s \ t % c \ t % d \ t % d \ t % d \ t % d \ t % d \ n ",em[i]。num,em[i]。姓名,em[i]。志成,em[i]。吉本,em[i]。江津,em[i]。宝贤,em[i]。zafei,em[i]。《史记》);
printf(" \ n按1删除此人信息,或按0\n "不删除);
scanf("%d ",& ampn);
If(n==1) /*如果删除,所有其他信息将上移一行*/
{
for(j = I;j & ltm-1;j++)
{
em[j]= em[j+1];
}
flag = 0;
}
}
}
如果(!旗帜)
m = m-1;
其他
printf(" \ n抱歉,没有这个人!\ n ");
printf(" \ n浏览所有删除的员工信息:\ n ");
保存(m);/*调用保存函数*/
显示();/*调用浏览函数*/
printf(" \ n按1继续删除,按0停止删除\ n ");
scanf("%d ",& ampt);
开关(t)
{
案例1:del();打破;
案例0:破;
默认:break
}系统(“cls”);
}
Void search()/*查询函数*/
{
int t,flag
做
{
printf(" \ n请按1按名称查询;按职称查询请按2;按3\n”进入主功能);
scanf("%d ",& ampt);
if(t & gt;=1。& ampt & lt=3)
{
flag = 1;
打破;
}
其他
{
flag = 0;
Printf("您输入错误,请重新选择!");
}
} while(flag = = 0);系统(“cls”);
while(flag==1)
{
开关(t)
{
Case 1:printf("按名称查询\ n ");搜索名称();打破;
案例二:printf("按标题查询\ n ");search _ zhi cheng();打破;
案例三:main();打破;
默认:break
}
系统(“cls”);
}
}
void search_name()
{
char name 1[10];
int i,t;
int m = load();
Printf("请输入要查找的名称:\ n ");
scanf("%s ",name 1);
for(I = 0;我& ltm;i++)
if(strcmp(name1,em[i].name)==0)
{
printf(" \ n已找到此人,其记录为:\ n ");
printf(" \ n员工编号\ t姓名\ t职务\ t基本工资\ t责任\ t保险\ t其他费用\ t实际工资\ n ");
printf(" \ n % d \ t % s \ t % c \ t % d \ t % d \ t % d \ t % d \ t % d \ n ",em[i]。num,em[i]。姓名,em[i]。志成,em[i]。吉本,em[i]。江津,em[i]。宝贤,em[i]。zafei,em[i]。《史记》);
打破;
}
如果(i==m)
printf(" \ n抱歉,没有找到此人\ n ");
printf(" \ n ");
Printf("按1返回查询功能,按2\n "继续查询员工号);
scanf("%d ",& ampt);
开关(t)
{
案例1:search();打破;
案例二:破;
默认:break
}
}
void搜索_志诚()
{
查尔志成;
int i,t = 0;
int m = load();
系统(“cls”);
Printf("请输入您要查找的标题:\ n ");
scanf("%c ",& amp志诚);//使用此处的地址。
for(I = 0;我& ltm;i++)
if(em[i]。志成= =志成)
{
printf(" \ n找到记录:\ n ");
printf(" \ n员工编号\ t姓名\ t职务\ t基本工资\ t责任\ t保险\ t其他费用\ t实际工资\ n ");
printf(" \ n % d \ t % s \ t % c \ t % d \ t % d \ t % d \ t % d \ t % d \ n ",em[i]。num,em[i]。姓名,em[i]。志成,em[i]。吉本,em[i]。江津,em[i]。宝贤,em[i]。zafei,em[i]。《史记》);
}
如果(i==m)
printf(" \ n抱歉,没有找到此人\ n ");
printf(" \ n ");
Printf("按1返回查询功能,按2\n "继续学历查询);
scanf("%d ",& ampt);
开关(t)
{
案例1:系统(" cls ");search();打破;
案例二:破;
默认:break
}
}
Void modify() /*修改函数*/
{
int num
字符名称[10];
查尔志成;
int吉本;
int江津;
int宝仙;
int zafei
int《史记》;
int b,c,I,n,t,flag
int m = load();/*导入文件中的信息*/
printf(" \ n原始员工信息:\ n ");
显示();/*调用浏览函数*/
printf(" \ n ");
Printf("请输入要修改的员工姓名:\ n ");
scanf("%s ",名称);
for(flag=1,I = 0;旗帜& amp& amp我& ltm;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf(" \ n此人已找到,原始记录为:\ n ");
printf(" \ n员工编号\ t姓名\ t职务\ t基本\ t责任\ t保险\ t杂项费用\ t实际工资\ n ");
printf(" \ n % d \ t % s \ t % c \ t % d \ t % d \ t % d \ t % d \ t % d \ n ",em[i]。num,em[i]。姓名,em[i]。志成,em[i]。吉本,em[i]。江津,em[i]。宝贤,em[i]。zafei,em[i]。《史记》);
printf(" \ n请按1修改此人的信息;按0\n”)不加修改;
scanf("%d ",& ampn);
如果(n==1)
{
printf(" \ n要修改的选项\n 1。员工2号。名字3。标题4。基本工资5。奖金6。保险7。杂项开支。实际工资\ n ");
Printf("请输入您要修改的序列号:\ n ");
scanf("%d ",& ampc);
if(c & gt;8 | | c & lt1)
printf(" \ n选择错误,请重新选择!\ n ");
}
flag = 0;
}
}
if(flag==1)
printf(" \ n抱歉,没有这个人!\ n ");
做
{
Switch(c) /*因为在找到第I个雇员的时候,我在for语句后面加了1,所以下面要改。
信息分配给i-1个人*/
{
案例1:printf("员工号更改为");
scanf("%d ",& ampnum);
em[i-1]。num = num
打破;
案例二:printf(“名称改为”);
scanf("%s ",名称);
strcpy(em[i-1])。姓名、名称);
打破;
案例三:printf(“标题改为”);
getchar();
scanf("%c ",& amp志诚);
em[i-1]。志成=志成;
打破;
案例四:printf(“底薪改为”);
scanf("%d ",& amp吉本);
em[i-1]。吉本=吉本;
打破;
案例五:printf("奖金改为");
scanf("%d ",& amp江津);//使用此处的地址。
em[i-1]。江津=江津;
打破;
案例6:printf(“保险改为”);
scanf("%d ",& amp宝贤);//使用此处的地址。
打破;
案例7:printf("杂费改为");
scanf("%d ",& ampzafei);//使用此处的地址。
em[i-1]。zafei = zafei
打破;
案例8:printf("实际工资改为");
scanf("%d ",& amp《史记》);
em[i-1]。史记=史记;
打破;
}
printf(" \ n ");
printf(" \ n您确定要修改信息吗?\是的,请按1;否,请按2再次修改:\ n”);
scanf("%d ",& ampb);
}
while(b = = 2);
printf(" \ n浏览所有修改后的员工信息:\ n ");
printf(" \ n ");
保存(m);
显示();
printf(" \ n按1继续修改,按0\n "停止修改);
scanf("%d ",& ampt);
开关(t)
{
案例1:modify();打破;
案例0:破;
默认:break
}系统(“cls”);
}