大学生c++实训之职工管理系统设计
大家好,我是码农七哥,每到到期末身边学习计算机有好多小伙伴都为c++实训头疼,作为一位刚刚入门的小白,斗胆在这里想跟大家分享一下我的源代码,希望那里不足的地方,大佬多多指教。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
struct worker //结构体
{
char num[20];//工号
char name[20];//姓名
char sex[3];//性别
char age[3];//年龄
char salary[6];//工资
char xueli[6]; //学历
char add[20]; //家庭地址
char call[15];//电话号
}w[100];
void vsa();//录入功能
void vsb();//增加功能
void Delete();//删除功能
void vsd();//姓名搜索
void vse();//工号搜索
void change();//修改功能
void vsg();//排序功能
void save(int current);//保存功能
int load();//写入功能
void serach();//搜索功能
void menu();//菜单功能
void vsk();//统计功能
void main() //主函数
{
menu();}
int load() //导入函数
{
FILE*fp;
int i=0;
if((fp=fopen("worker_list.txt","rb"))==NULL) //打开输出文件
{
printf("cannot open file\n"); //如果打开时出错,就输出打不开信息
exit(0); //终止程序
}
else{
do{
fread(&w[i],sizeof(struct worker),1,fp); //fread从指定文件中读取数据块
i++;
}while(!feof(fp)); //feof若到函数末尾,函数值为真,
}
fclose(fp); //fclose 关闭文件
return(i-1);
}
void save(int current) //保存函数
{
int i;
FILE*fp;
if((fp=fopen("worker_list.txt","wb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
for(i=0;i<current;i++)
if(fwrite(&w[i],sizeof(struct worker),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void vsg() //排序函数
{
int i,j,t,a;
char c;
struct worker wor;
int current=load();
printf("请选择查看方式:\n");
printf("1.按年龄查看。\n");
printf("2.按工资查看。\n");
printf("\n");
printf("\n");
scanf("%d",&a);
while(a==1)
{
system("cls");
printf ("工号 姓名 性别 年龄 工资 学历 住址 电话\n");
for(i=0;i<current;i++)
{
t=i;
for(j=i+1;j<current;j++)
{
if(strcmp(w[t].age,w[j].age)<0) //选择法年龄排序
{
wor=w[t];
w[t]=w[j];
w[j]=wor;
}
};
printf ("%2s%10s%7s%8s%8s%5s%8s%20s\n",w[i].num ,w[i].name ,w[i].sex ,w[i].age ,w[i].salary ,w[i].xueli ,w[i].add,w[i].call );
};
printf("是否继续?(y or n)\n");
scanf("%s",&c);
if(c='n')
{
system("cls");menu();}; //是否继续执行
}
while(a==2)
{
system("cls");
printf ("工号 姓名 性别 年龄 工资 学历 住址 电话\n");
for(i=0;i<current;i++)
{
t=i;
for(j=i+1;j<current;j++)
{
if(strcmp(w[t].salary,w[j].salary)<0) //选择法薪水排序
{
wor=w[t];
w[t]=w[j];
w[j]=wor;
}
};
printf ("%2s%10s%7s%8s%8s%5s%8s%20s\n",w[i].num ,w[i].name ,w[i].sex ,w[i].age ,w[i].salary ,w[i].xueli ,w[i].add,w[i].call );
}
printf("是否继续?(y or n)\n");
scanf("%s",&c);
if(c='n')
{
system("cls");menu();}; //是否继续执行
}
while(a!=1&&a!=2) //不输入指定数字将会出现错误
{
system("cls");
printf("*****输入错误,请重新选择***********\n");
printf("\n");
scanf("%d",&a);
};
}
void serach() //查看函数
{
int t,flag;
do{
printf("\n1.按工号查询;2.按姓名查询;\n");
scanf("%d",&t);
if(t>=1&&t<=2)
{
flag=1;
break;
}
else{
flag=0;
printf("你输入有误,请重新选择!");
}
}while(flag==0);
while(flag==1){
switch(t){
case 1:vse();break;
case 2:vsd();break;
default:break;
};
}
}
void vsd() //姓名搜索
{
char name[20];
char c;
int i;
int current