请教一下,这个程序是在哪里出错的?
#include<string.h>#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream.h>
#define N 100
struct people
{
char num[100];
char name[15];
char sex[20];
char age[20];
char xueli[20];
char gongzhi[20];
char address[20];
char telephone[20];
}people[N];
void input(int i);
void enter();
void browse();
void add();
//void no_input(int i,int n) ;
void search();
void modify();
void save(int n);
int load();
int modify_data(int i);
void printf_face();
void printf_back();
void printf_one(int i);
void menu();
void chack_No(int i);
void chack_No(int i)
{
if(i>0)
{
for(int k=0;k<i;k++)
{
if(strcmp(people[k].num,people[i].num)==0)
{
cout<<"您输入的职工号已存在,请更换号码!"<<endl;
cout<<"职工号:";
cin>>people[i].num;
chack_No(i);
break;
}
}
}
}
void input(int i)
{
//no_input(i,i);
printf("职工号:");
scanf("%s",people[i].num);
chack_No(i);
printf("姓名:");
scanf("%s", people[i].name) ;
printf("性别:");
scanf("%s",people[i].sex);
printf("年龄:");
scanf("%s",people[i].age);
printf("学历:");
scanf("%s",people[i].xueli);
printf("工资:");
scanf("%s",people[i].gongzhi);
printf("住址:");
scanf("%s",people[i].address);
printf("电话:");
scanf("%s",people[i].telephone);
}
void enter()/*信息录入函数*/
{
int i,n;
printf("请输入人数(0-%d) :",N-1);
scanf("%d",&n);
printf("\n 录入信息\n");
for(i=0;i<n;i++)
{
printf("\n 请输入第%d个人的信息.",i+1);
input(i);
}
if(i!=0)save(n);
printf_back();
}
void browse() /*信息浏览函数*/
{
int i,n;
n=load();
printf_face();
for(i=0;i<n;i++)
{
if((i!=0)&&(i%10==0))
{
printf("\n\n按任意键继续....");
getch();
puts("\n\n");
}
printf_one(i) ;
}
printf("\t共有%d条记录.\n",n);
printf("\n按任意键继续...");
getch();
menu();
}
void add()
{
int i,n,m,k;
FILE*fp;
n=load();
printf("你想添加的人数为(0-%d):",N-1-n);
scanf("%d",&m);
k=m+n;
for(i=n;i<k;i++)
{
printf("\n输入第%d个人的信息.",i-n+1 );
input(i);
}
if((fp=fopen("Pro.txt","ab"))==NULL)
{
printf("文件打开失败!\n");
}
for(i=n;i<k;i++)
if(fwrite(&people[i],sizeof(struct people),1,fp)!=1)
printf("文件写入失败!\n");
fclose(fp);
printf_back();
}
void search() /*信息查找函数*/
{
int i,n,k,w1=1,w2,w3,w4,m,a;
struct people p;
n=load();
do
{
printf("\n选择你要查询的方式 \n\t1).按学历 2).按职工号 [ ]\b\b");
scanf("%d",&m);
switch(m)
{
case 1:
do
{
k=-1;
printf("\n\n请输入你要查询的学历:");
scanf("%s",p.xueli);
printf_face();
for(i=0;i<n;i++)
if(strcmp(p.xueli,people[i].xueli)==0)
{
k=i;
printf_one(k);
break;
}
if(k==-1)
{
printf("\n\n你输入的学历不存在!");
printf("\n\n你想继续查询吗?\n\t 1).是 2).否 [ ]\b\b");
scanf("%d",&w1);
if(w1==2)
printf_back();
}
}while(k==-1&&w1==1);
break;
case 2:
do
{
k=-1;
printf("\n\n请输入你要查询的职工号:");
scanf("%s",p.num);
printf_face();
for(i=0;i<n;i++)
if(strcmp(p.num,people[i].num)==0)
{
k=i;
printf_one(k);break;
}
if(k==-1)
{
printf("\n\n你输入的职工号不存在!");
printf("\n\n你想继续查询吗?\n\t1).是 2).否 [ ]\b\b");
scanf("%d",&w1);
if(w1==2)
printf_back();
}
}while(k==-1&&w1==1);
break;
}
w4=0;w3=0;
if(k!=-1)
{
printf("\n\n请选择你要进行的操作:\n\t 1).查询 2).修改 3).删除 4).返回主菜单 [ ]\b\b");
scanf("%d",&w2);
switch(w2)
{
case 2:
w3=modify_data(k);
break;
case 3:
printf("\n你确定要删除吗?\n\t 1).是 2).否 [ ]\b\b");
scanf("%d",&w4);
if(w4==1)
for(a=k;a<n;a++)
{
strcpy(people[a].num,people[a+1].num);
strcpy(people[a].name,people[a+1].name);
strcpy(people[a].sex,people[a+1].sex);
strcpy(people[a].age,people[a+1].age);
strcpy(people[a].xueli,people[a+1].xueli);
strcpy(people[a].gongzhi,people[a+1].gongzhi);
strcpy(people[a].address,people[a+1].address);
strcpy(people[a].telephone,people[a+1].telephone);
}
break;
}
if(w3==1||w4==1)
{
save(n);
printf("\n\n操作成功! ^_^ ");
printf("\n\n请输入你要进行的操作: \n\t 1).继续查询 2).返回上一级 [ ]\b\b" );
scanf("%d",&w2);
}
}
}
while(w2==1);
menu();
}
void modify() /*信息修改函数*/
{
struct people p;
int i,n,k,w0=1,w1,w2=0;
n=load();
do
{
k=-1;
printf_face();
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0))
{printf("\n\n请记着你要修改的职工号。按任意键继续 ...");
getch();
puts("\n\n");
}
printf_one(i);
}
do
{printf("\n\n请输入你要修改的职工信息的职工号:");
scanf("%s",p.num);
for(i=0;i<n;i++)
if(strcmp(p.num,people[i].num)==0)
{k=i;
p=people[i];
}
if(k==-1)printf("\n\n你的输入有误,请从新输入");
}while(k==-1);
printf_face();
printf_one(k);
w1=modify_data(k);
if(w1==1)
{printf("\n操作成功! ^_^.\n是否继续修改?\n\n\t 1).是 2).否\t[ ]\b\b");
scanf("%d",&w0);
w2=1;
}
else
{w0=0;
if(w2==1)
people[k]=p;
}
if(w0!=1&&w2==1)
save(n);
}while(w0==1);
menu();
}
void save(int n)
{FILE *fp;
int i;
if((fp=fopen("Pro.txt","wb"))==NULL)
{printf("\n文件打开失败!\n");
//return NULL;
}
for(i=0;i<n;i++)
if(people[i].num!=0)
if(fwrite(&people[i],sizeof(struct people),1,fp)!=1)
printf("文件写入失败!\n");
fclose(fp);
}
int load()
{FILE *fp;
int i;
if((fp=fopen("Pro.txt","rb"))==NULL)
{printf("\n文件打开失败!\n");
return NULL;
}
for(i=0;!feof(fp);i++)
fread(&people[i],sizeof(struct people),1,fp);
fclose(fp);
return(i-1);
}
int modify_data(int i)
{
int c,w1;
do
{
puts("\n请选择你要修改的选项\n\n 1).职工号 2).姓名 3).性别 4).年龄 5).学历 6)工资 7)住址 8)电话 ");
printf("您的选择是:[ ]\b\b");
scanf("%d",&c);
if(c>8||c<1)
{
puts("\n输入错误,请重新输入!");
getchar();
}
}while(c>8||c<1);
do
{
switch(c)
{
case 1:printf("职工号:");scanf("%s",people[i].num);break;
case 2:printf("姓名:");scanf("%s",people[i].name);break;
case 3:printf("性别:");scanf("%s",people[i].sex);break;
case 4:printf("年龄:");scanf("%s",people[i].age);break;
case 5:printf("学历:");scanf("%s",people[i].xueli);break;
case 6:printf("工资:");scanf("%s",people[i].gongzhi);break;
case 7:printf("住址:");scanf("%s",people[i].address);break;
case 8:printf("电话:");scanf("%s",people[i].telephone);break;
}
puts("\n现在信息:\n");
printf_face();
printf_one(i);
printf("\n你确定吗\n\n\t 1).是 2).否 3).返回且不保存 [ ]\b\b");
scanf("%d",&w1);
}while(w1==2);
return w1;
}
void no_input(int i,int n)
{int j,k,w1;
do
{w1=0;
for(j=0;people[i].num[j]!='\0';j++)
if(people[i].num[j]>'9')
{puts("输入错误,请重新输入!\n");
w1=1;break;
}
if(w1!=1)
for(k=0;k<n;k++)
if(k!=i&&strcmp(people[k].num,people[i].num)==0)
{puts("你输入的职工号已经存在了,请从新输入!\n");
}
}
while(w1==1);
}
void printf_face()
{
printf(" 职工号 姓名 性别 年龄 学历 工资 住址 电话 \n");
}
void printf_one(int i)
{
printf("%9s%9s%9s%9s%9s%9s%10s%12s\n",people[i].num,people[i].name,people[i].sex,people[i].age,people
[i].xueli,people[i].gongzhi,people[i].address,people[i].telephone);
}
void printf_back()
{
int w;
printf("\n\t操作成功!.^_^\n\n");
printf("请选择:\n\n\t1).浏览所有信息 \t2).返回 : [ ]\b\b");
scanf("%d",&w);
if(w==1)
browse();
else menu();
}
void Delete ()/*信息删除函数*/
{
struct Info info;
FILE*fp1,*fp2;
int flag;
char ch[10];
char f;
char temp[10];
do
{
if((fp1=fopen("inform.txt","rb"))==NULL)
{
printf("\tCan not open the inform file!");
getch();
exit(1);
}
if((fp2=fopen("temp.txt","wb"))==NULL
{
printf("\tCan not open the temp file!");
getch();
exit(1);
}
printf("Please input the num you want to delete:");
gets(ch);
flag=0;
while(fread(&info,sizeof(info),1,fp1)==1)
{
if(strcmp(ch,info.num)==)
{
print1();
print2(info);
flag=1;
break;
}
else
fwrite(&info,sizeof(info),1,fp2);
}
fclose(fp1);
fclose(fp2);
if(flag==1)
{
printf("删除成功!\n");
remove("inform.txt);
rename("temp.txt","inform.txt");
}
else
printf("Can not find this record!\n");
printf("继续删除吗?(Y/N):[]\b\b");
f=getchar();getchar();
}while(f=='Y'||f=='y');
}
do
{
if((fp1=fopen("inform.txt
void menu()
{
int n,w1;
do
{
printf("\n\t ************************************************\n");
printf("\t *********欢迎进入职工信息管理系统***************\n");
printf("\t ************************************************\n");
printf("\t **************计科2班 李永杰制作105060440083***************\n");
printf("\t 1 录入职工信息 \n");
printf("\t 2 浏览职工信息 \n");
printf("\t 3 查询职工信息(学历/职工号) \n");
printf("\t 4 添加职工信息 \n");
printf("\t 5 修改职工信息 \n");
printf("\t 6 删除职工信息\n");
printf("\t 7 退出系统\n");
printf("\t ************************************************\n");
printf("\t请选择(1-6):[ ]\b\b");
scanf("%d",&n);
if(n<1||n>6)
w1=1;
else w1=0;
}
while(w1==1);
switch(n)
{
case 1:enter();break;
case 2:browse();break;
case 3:search();break;
case 4:add();break;
case 5:modify();break;
case 6:Delete();break;
case 7:exit(0);
}
}
void main()
{
system("color f0");
system("cls");
menu();
}