新手求大神帮助!

liangtian131211 2016-07-04 11:20:15
求大神帮忙把这段程序改到可以在C++程序运行,我才学不久。


#define N 30
#include<stdio.h>
#include<string.h>
struct student
{char name[20]; char phone[50]; char stunum[15]; char dorm[20];}stu[N];

void printf_face()
{ printf("\n\t姓名\t电话号码\t学号\t宿舍号\n"); }

void printf_one(int i)
{ printf("\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].phone,stu[i].stunum,stu[i].dorm); }

void printf_n(int n)
{ int j;
for(j=0;j<n;j++)
{ if((j!=0)&&(j%10==0)) {printf("\n\nPress any key to continue...:"); getchar(); puts("\n\n");}
printf_one(j);
} getchar();
}

int load()
{ FILE *fp;
int i;
if((fp=fopen("file","rb"))==NULL)
{ printf("\nCan not open file\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}

int modify_data(int i,int n)
{ int c,w1; void input(int i); void menu();
do
{ puts("\n修改选项=>\n\n 1).姓名 2).电话号码 3).学号 4).宿舍号 5).所有数据 6).取消并返回");

printf("请选择?: [ ]\b\b");
scanf("%d",&c);
if(c>6||c<1) {puts("\nChoose error! Please again!"); getchar();}
}while(c>6||c<1);
do
{ switch(c)
{ case 1: printf("name:"); scanf("%s",stu[i].name); break;
case 2: printf("phone:"); scanf("%s",stu[i].phone); break;
case 3: printf("stunum:"); scanf("%s",stu[i].stunum); break;
case 4: printf("dorm:"); scanf("%s",stu[i].dorm); break;
case 5: input(i); break;
case 6: menu();
}
puts("\nNow:\n");
printf_face(); printf_one(i);
printf("\n确定?\n\n\t1).是 2).不,重新修改 3).返回不保存 [ ]\b\b");
scanf("%d",&w1);
}while(w1==2);
return(w1);
}

void input(int i)
{ printf_face(); printf("\t");
scanf("%s\t%s\t%s\t%s",stu[i].name,stu[i].phone,stu[i].stunum,stu[i].dorm); }

void save(int n)
{ FILE *fp; int i;
if((fp=fopen("file","wb"))==NULL)
{ printf("\nCan not open file\n");
exit(0);
}
for(i=0;i<n;i++)
if(stu[i].name[0]!='\0')
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}

void printf_back()
{
int w; void browse(); void menu();
printf("\n\n\t^_^.Successful. ^_^\n\n");
printf("What do you want to do?\n\n\t1).浏览所有\t2).返回: [ ]\b\b");
scanf("%d",&w);
if(w==1) browse();
else menu();
}


void main()
{
void menu();
menu();
}
void menu()
{
int n, w1;
void enter(); void add(); void delete(); void modify(); void search();
do
puts("\t*************欢迎进入建电151通讯录菜单*********** ");
puts("\n\t\t*****************1.录入信息*******************");
puts("\t\t*******************2.插入信息*******************");
puts("\t\t*******************3.删除信息*******************");
puts("\t\t*******************4.变更信息*******************");
puts("\t\t*******************5.查询信息*******************");
puts("\t\t*******************6.退 出*******************");
puts("\n\n\t**************建电151通讯录********************* ");
printf("请选择服务种类(1-6) : [ ]\b\b");
scanf("%d",&n);
if(n<1||n>6)
{w1=1;getchar();}
else w1=0;

}while(w1==1);
switch(n)
; {
case 1: enter(); break;
case 2: add(); break;
case 3: delete(); break;
case 4: modify(); break;
case 5: search(); break;
case 6: exit(0);
}
}

void enter()
{ int i,n;
printf("How many student(0-%d)?:",N-1);
scanf("%d",&n);
printf("请输入数据:\n");
for(i=0;i<n;i++)
{printf("\n输入第 %d个记录.\n",i+1);
input(i);
}
if(i!=0) save(n);
printf_back();
}

void add()
{ int i,n,k,t;
n=load();
printf("How many student do you want to add(0-%d)?:",N-n-1);
scanf("%d",&t); k=n+t;
for(i=n;i<k;i++)
{ printf("\n输入第 %d个记录.\n",i-n+1); input(i);}
save(k); printf_back();
}

void delete();
{struct student s; int i,n,k,w0,w1;
n=load();
do
{ k=-1; printf_face(); printf_n(n);
do
{ printf("\n\nEnter name that you want to delete!\nName:");
scanf("%s",s.name);
for(i=0;i<n;i++)
if(strcmp(s.name,stu[i].name)==0) {k=i; s=stu[i];}
if(k==-1) printf("\n\n没有记录请重新输入!");
}while(k==-1);
printf_face(); printf_one(k);
printf("\n确定?\n\t1).是 2).返回 [ ]\b\b");
scanf("%d",&w0);
if(w0==1) {stu[k].name[0]='\0'; save(n);} else break;
printf("\n\t^_^.Successful^_^.\n");
printf("What do you want to do?\n\t1).继续 2).返回 [ ]\b\b");
scanf("%d",&w1);
}while(w1==1);
menu();
}

void modify()
{ struct student s; int i,n,k,w0=1,w1,w2=0;
n=load();
do
{ k=-1; printf_face(); printf_n(n);
do
{ printf("\n\nEnter name that you want to modify!\nName:");
scanf("%s",s.name);
for(i=0;i<n;i++)
if(strcmp(s.name,stu[i].name)==0) {k=i; s=stu[i];}
if(k==-1) printf("\n\n没有记录请重新输入!");
}while(k==-1);
printf_face(); printf_one(k);
w1=modify_data(k,n);
if(w1==1) {printf("\n\t^_^.Successful ^_^.\n\n是否继续?\n\n\t1).是 2).保存返回\t[ ]\b\b");
scanf("%d",&w0); w2=1;}
else
{w0=0; if(w2==0) stu[k]=s;}
if((w0!=1)&&(w2==1)) save(n);
}while(w0==1); menu();
}

void search()
{ int w0,k,i,n,w1,w2; struct student s; n=load();
do
{printf("请选择查找类别: 1).姓名 2).学号 [ ]\b\b");
scanf("%d",&w1); if(w1<1||w1>2) {printf("输入错误!请重新输入!\n"); w2=1;}
}while(w2==1);
if(w1==1)
{do
{ k=-1;
do
{ printf("\n\nEnter name that tou want to search!\nName:");
scanf("%s",s.name);
for(i=0;i<n;i++)
if(strcmp(s.name,stu[i].name)==0) {k=i; s=stu[i];}
if(k==-1) printf("\n\n没有记录请重新输入!");
}while(k==-1);
printf_face(); printf_one(k);
printf("\nWhat do you want to do?\n\t1).继续 2).返回菜单 [ ]\b\b");
scanf("%d",&w0);
}while(w0==1);
menu();
}
else
{ do
{ k=-1;
do
{printf("\n\nEnter student number that tou want to search!\nphone:");
scanf("%s",s.stunum);
for(i=0;i<n;i++)
if(strcmp(s.stunum,stu[i].stunum)==0) {k=i; s=stu[i];}
if(k==-1) printf("\n\n没有记录请重新输入!");
}while(k==-1);
printf_face(); printf_one(k);
printf("\nWhat do you want to do?\n\t1).继续 2).返回菜单 [ ]\b\b");
scanf("%d",&w0);
}while(w0==1);
menu();
}
}
...全文
111 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-07-04
  • 打赏
  • 举报
回复
很多小错误。 1.中文字符 2.多分号 3.少括号 4.你的printf_back函数里调用了browse函数,但是没有看到这个函数的声明和实现(所以帮你随便加了个browse的实现)

#define N 30          
#include<stdio.h>    
#include<string.h>  
#include<stdlib.h>
struct student         
{char name[20]; char phone[50]; char stunum[15]; char dorm[20];}stu[N];

void printf_face()
{ printf("\n\t姓名\t电话号码\t学号\t宿舍号\n"); }

void printf_one(int i)
{ printf("\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].phone,stu[i].stunum,stu[i].dorm); }

void printf_n(int n)
{ 
	int j;
	for(j=0;j<n;j++)
	{ if((j!=0)&&(j%10==0)) {printf("\n\nPress any key to continue...:"); getchar(); puts("\n\n");}
	printf_one(j);
	}    getchar();
}

int load()
{
	FILE *fp;
	int i;
	if((fp=fopen("file","rb"))==NULL)
	{ printf("\nCan not open file\n");
	exit(0);
	}
	for(i=0;!feof(fp);i++)
		fread(&stu[i],sizeof(struct student),1,fp);
	fclose(fp);
	return(i-1);
}

int modify_data(int i,int n)
{ 
	int c,w1;  void input(int i);  void menu();
	do
	{ puts("\n修改选项=>\n\n  1).姓名  2).电话号码  3).学号  4).宿舍号  5).所有数据  6).取消并返回");

	printf("请选择?: [ ]\b\b");
	scanf("%d",&c);
	if(c>6||c<1)  {puts("\nChoose error! Please again!"); getchar();}
	}while(c>6||c<1);
	do
	{ switch(c)
	{ case 1: printf("name:"); scanf("%s",stu[i].name); break;
	case 2: printf("phone:"); scanf("%s",stu[i].phone); break;
	case 3: printf("stunum:"); scanf("%s",stu[i].stunum); break;
	case 4: printf("dorm:"); scanf("%s",stu[i].dorm); break;
	case 5: input(i); break;
	case 6: menu(); 
	}
	puts("\nNow:\n");
	printf_face();  printf_one(i);
	printf("\n确定?\n\n\t1).是  2).不,重新修改  3).返回不保存 [ ]\b\b");
	scanf("%d",&w1);
	}while(w1==2);
	return(w1);
}

void input(int i)
{ 
	printf_face(); printf("\t");
	scanf("%s\t%s\t%s\t%s",stu[i].name,stu[i].phone,stu[i].stunum,stu[i].dorm); }

void save(int n)
{ 
	FILE *fp; int i;
	if((fp=fopen("file","wb"))==NULL)
	{ printf("\nCan not open file\n");
	exit(0);
	}
	for(i=0;i<n;i++)
		if(stu[i].name[0]!='\0')
			if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
				printf("file write error\n");
	fclose(fp);
}

void browse()
{
	printf("browse()\n");
}

void printf_back()
{
	int w;  void browse();  void menu();
	printf("\n\n\t^_^.Successful. ^_^\n\n");
	printf("What do you want to do?\n\n\t1).浏览所有\t2).返回:  [ ]\b\b");
	scanf("%d",&w);
	if(w==1) browse();
	else menu();
}


void main()
{
	void menu();       
	menu();
}
void menu()
{
	int n, w1;
	void enter();  
	void add();  
	void my_delete(); 
	void modify();  
	void search();
	do{
		puts("\t*************欢迎进入建电151通讯录菜单*********** ");
		puts("\n\t\t*****************1.录入信息*******************");
		puts("\t\t*******************2.插入信息*******************");
		puts("\t\t*******************3.删除信息*******************");
		puts("\t\t*******************4.变更信息*******************");
		puts("\t\t*******************5.查询信息*******************");
		puts("\t\t*******************6.退    出*******************");
		puts("\n\n\t**************建电151通讯录********************* ");
		printf("请选择服务种类(1-6) : [ ]\b\b");
		scanf("%d",&n);
		if(n<1||n>6)
		{w1=1;getchar();}
		else w1=0;

	}while(w1==1);
	switch(n)
	{
	case 1: enter(); break;
	case 2: add(); break;
	case 3: my_delete(); break;
	case 4: modify(); break;
	case 5: search(); break;
	case 6: exit(0); 
	}
}

void enter()        
{ 
	int i,n;
	printf("How many student(0-%d)?:",N-1);
	scanf("%d",&n);
	printf("请输入数据:\n");
	for(i=0;i<n;i++)
	{printf("\n输入第 %d个记录.\n",i+1); 
	input(i);
	}
	if(i!=0) save(n);
	printf_back();
}

void add()           
{ 
	int i,n,k,t;   
	n=load();
	printf("How many student do you want to add(0-%d)?:",N-n-1);
	scanf("%d",&t);     k=n+t;
	for(i=n;i<k;i++)
	{ printf("\n输入第 %d个记录.\n",i-n+1);  input(i);}
	save(k);  printf_back();
}

void my_delete()   
{
	struct student s;  int i,n,k,w0,w1; 
	n=load();
	do
	{ k=-1;  printf_face();  printf_n(n);
	do
	{ printf("\n\nEnter name that you want to delete!\nName:");
	scanf("%s",s.name);
	for(i=0;i<n;i++)
		if(strcmp(s.name,stu[i].name)==0) {k=i; s=stu[i];}
		if(k==-1) printf("\n\n没有记录请重新输入!");
	}while(k==-1);
	printf_face();  printf_one(k);
	printf("\n确定?\n\t1).是   2).返回  [ ]\b\b");
	scanf("%d",&w0);  
	if(w0==1) {stu[k].name[0]='\0'; save(n);}  else break;
	printf("\n\t^_^.Successful^_^.\n");
	printf("What do you want to do?\n\t1).继续   2).返回  [ ]\b\b");
	scanf("%d",&w1);
	}while(w1==1);
	menu();
}

void modify()      
{ 
	struct student s;  int i,n,k,w0=1,w1,w2=0; 
	n=load();
	do
	{ k=-1;  printf_face();  printf_n(n);
	do
	{ printf("\n\nEnter name that you want to modify!\nName:");
	scanf("%s",s.name);
	for(i=0;i<n;i++)
		if(strcmp(s.name,stu[i].name)==0) {k=i; s=stu[i];}
		if(k==-1) printf("\n\n没有记录请重新输入!");
	}while(k==-1);
	printf_face();   printf_one(k);
	w1=modify_data(k,n);
	if(w1==1) {printf("\n\t^_^.Successful ^_^.\n\n是否继续?\n\n\t1).是 2).保存返回\t[ ]\b\b");
	scanf("%d",&w0);  w2=1;}
	else
	{w0=0;  if(w2==0) stu[k]=s;}
	if((w0!=1)&&(w2==1))  save(n);
	}while(w0==1);    menu();
}

void search()             
{ 
	int w0,k,i,n,w1,w2; struct student s;  n=load();
	do
	{printf("请选择查找类别:  1).姓名  2).学号   [ ]\b\b");
	scanf("%d",&w1); if(w1<1||w1>2) {printf("输入错误!请重新输入!\n"); w2=1;}
	}while(w2==1);
	if(w1==1)
	{do
	{ k=-1; 
	do
	{ printf("\n\nEnter name that tou want to search!\nName:");
	scanf("%s",s.name);
	for(i=0;i<n;i++)
		if(strcmp(s.name,stu[i].name)==0) {k=i; s=stu[i];}
		if(k==-1) printf("\n\n没有记录请重新输入!");
	}while(k==-1);
	printf_face();  printf_one(k);
	printf("\nWhat do you want to do?\n\t1).继续   2).返回菜单   [ ]\b\b");
	scanf("%d",&w0);
	}while(w0==1);
	menu();
	}
	else
	{ do
	{ k=-1; 
	do
	{printf("\n\nEnter student number that tou want to search!\nphone:");
	scanf("%s",s.stunum);
	for(i=0;i<n;i++)
		if(strcmp(s.stunum,stu[i].stunum)==0) {k=i; s=stu[i];}
		if(k==-1) printf("\n\n没有记录请重新输入!");
	}while(k==-1);
	printf_face();  printf_one(k);
	printf("\nWhat do you want to do?\n\t1).继续   2).返回菜单   [ ]\b\b");
	scanf("%d",&w0);
	}while(w0==1);
	menu();
	}
}

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧