我改了下,你说的增加雇员只能输入前3个参数的问题解决了,但是我运行了下,你后面查询的模块也有毛病,你自己再继续调试吧
结构体里面是8个变量,你很多地方都是scanf和fprintf都是9个参数,你自己核对修改下
电脑原因,我把文件放到D盘了,从excel表改成了txt,不过这个影响不大,你可以改回去就是了。
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <wtypes.h>
#include <winbase.h>
#include <time.h>
#include <conio.h>
struct employeeinfo
{
char jobno[10];
char name[20];
char sex;
int age;
char edulevel[10];
float salary;
char addr[10];
char tel[11];
}empinfo;
FILE*fp;
void output();
void search();
void append();
void modify();
void abc();
void exit();
void nameway();
void numway();
void menu();
int main()
{
FILE *fp;
fp=fopen("d:\\worker.txt","a+");
menu();
}
void menu()
{
int m,w;
do
{
system("color 0a");
printf("\n\n\n ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*\n\n");
printf(" 欢迎使用职工信息管理系统\n\n");
printf(" ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*\n\n");
printf(" | * | 1.添加职工信息 | * | \n");
printf(" | * | 2.查找职工信息 | * | \n");
printf(" | * | 3.修改职工信息 | * | \n");
printf(" | * | 4.删除职工信息 | * | \n");
printf(" | * | 5.输出职工信息 | * | \n");
printf(" | * | 6.退出信息系统 | * | \n\n");
printf(" ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*\n\n");
printf(" 请输入对应的字符[ ]\b\b");
scanf("%d",&m);
getchar();
if(m<1||m>6){
w=1;
}
else{
w=0;
}
}while(w=0);
switch(m)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: abc();
break;
case 5: output();
break;
case 6: exit(0);
return;
}
}
void append()
{
int choice;
system("cls");
if((fp=fopen("d:\\worker.txt","a+"))==NULL)
{
printf("\n对不起,无法查询信息文件。\n\n");
exit(0);
}
printf(" *********************************\n");
printf(" 请输入需要添加的职工信息 \n");
printf(" *********************************\n");
printf(" 职工号,姓名,性别,年龄,学历,工资,住址,电话\n");
// scanf("%s%s%c%d%s%f%s%s",empinfo.jobno,empinfo.name,&empinfo.sex,&empinfo.age,empinfo.edulevel,&empinfo.salary,&empinfo.addr,empinfo.tel);
printf("jobno:");gets(empinfo.jobno);
printf("name:");gets(empinfo.name);
printf("sex:");scanf("%c",&empinfo.sex);getchar();
printf("age:");scanf("%d",&empinfo.age);getchar();
printf("edulevel:");gets(empinfo.edulevel);
printf("salary:");scanf("%f",&empinfo.salary);getchar();
printf("address:");gets(empinfo.addr);
printf("telphone:");gets(empinfo.tel);
fprintf(fp,"%-20s%-20s%-20c%-20d%-20s%-20f%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
fclose(fp);
printf("\n\n操作完成,请按下回车继续");
choice=getch();
system("cls");
menu();
}
void output()
{
int choice,i=1;
system("cls");
if((fp=fopen("d:\\worker.txt","r"))==NULL)
{
system("cls");
printf("\n对不起,无法查询信息文件。\n\n");
exit(0);
}
printf(" =========================\n");
printf(" 职工信息\n");
printf(" =========================\n");
printf(" 姓名,职工号,性别,职位,工资,出生年月,学历,住址,电话\n\n");
while(!feof(fp))
{
fscanf(fp,"%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,&empinfo.sex,&empinfo.age,empinfo.edulevel,&empinfo.salary,&empinfo.addr,empinfo.tel);
printf("%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
i++;
if((i%10)==0) {
printf("按任意键继续...");
getchar();
puts("\n\n");
}
}
fclose(fp);
printf("\n\n显示完毕,请按下回车继续");
choice=getch();
system("cls");
menu();
}
void search()
{
int l;
system("cls");
printf(" 按姓名查找请按: 1\n");
printf(" 按工号查找请按: 2\n");
scanf("%d",&l);
if(l>0&&l<3)
{
switch(l)
{
case 1:nameway();
break;
case 2:numway();
break;
}
}
else
{
printf("\n\n无效指令,请重试");
}
}
void nameway()
{
int choice;
int k=0;
char nam[50];
printf("\n请输入您要查询的职工姓名:");
scanf("%s",nam);
if((fp=fopen("d:\\worker.txt","r"))==NULL)
{
printf("\n对不起,无法查询信息文件。");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,&empinfo.sex,empinfo.age,&empinfo.edulevel,&empinfo.salary,empinfo.addr,empinfo.tel);
if(strcmp(nam,empinfo.name)==0)
{
printf("\n\n已查到,记录为:");
printf("%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
k=1;
}
}
if(k==0)
{
printf("\n\n对不起,查无此人。\n");
fclose(fp);
}
printf("\n\n操作完成,请按下回车继续");
choice=getch();
system("cls");
menu();
}
void numway()
{
int i=0;
int choice;
char numb[50];
printf(" 输入你要查询的工号\n");
scanf("%s",numb);
if((fp=fopen("d:\\worker.txt","r"))==NULL)
{
printf("\n对不起,无法查询信息文件。");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
if(!strcmp(numb,empinfo.jobno))
{
printf("\n\n已查到,记录为:");
printf("%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
i=1;
}
}
if(!i)
{
printf("\n\n对不起,查无此人。");
fclose(fp);
}
printf("\n\n操作完成,请按下回车继续");
choice=getch();
system("cls");
menu();
}
void modify()
{
int choice;
int k=0;
long a;
char namekey[50];
system("cls");
printf("\n请输入您要修改的职工姓名:");
scanf("%s",namekey);
if((fp=fopen("d:\\worker.txt","r+"))==NULL)
{
printf("\n对不起,无法查询信息文件。");
exit(0);
}
while(!feof(fp))
{
a=ftell(fp);
fscanf(fp,"%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
if(!strcmp(namekey,empinfo.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为:");
printf("\n%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
printf("\n请输入需要修改的信息。\n");
printf("(姓名,职工号,性别,职位,工资,出生年月,学历,住址,电话顺序输入)\n");
// scanf("%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
// printf("按照:职工号,姓名,性别,年龄,学历,工资,住址,电话\n");
scanf("%s%s%c%d%s%f%s%s",empinfo.jobno,empinfo.name,&empinfo.sex,&empinfo.age,empinfo.edulevel,&empinfo.salary,&empinfo.addr,empinfo.tel);
fseek(fp,a,0);
fprintf(fp,"%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
}
else
{
printf("\n对不起,查无此人,无法修改。");
fclose(fp);
}
printf("\n\n操作完成,请按下回车继续");
choice=getch();
system("cls");
menu();
}
void abc()
{
int m;
int choice;
int k=0;
long a;
char namekey[50];
char valid[50];
system("cls");
printf("\n请输入您要修改的职工姓名:");
scanf("%s",namekey);
if((fp=fopen("d:\\worker.txt","r+"))==NULL)
{
printf("\n对不起,无法查询信息文件。");
exit(0);
}
while(!feof(fp))
{
a=ftell(fp);
fscanf(fp,"%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
if(strcmp(namekey,empinfo.name)==0)
{
k=1;
break;
}
}
if(k==1)
{
printf("\n已查到,记录为:");
printf("\n%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
printf("\n确定删除按1,不删除按0:");
scanf("%d",&m);
if(m==1)
{
fseek(fp,a,0);
fprintf(fp,"%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n","","","","","");
}
}
else
{
printf("\n对不起,查无此人。");
}
fclose(fp);
printf("\n\n操作完成,请按下回车继续");
choice=getch();
system("cls");
menu();
}
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
[此贴子已经被作者于2016-6-23 13:53编辑过]