c语言高手有木有,帮看看这个程序有什么问题?

下面这个程序,在添加信息的时候总会把上一次添加的覆盖掉,所以显示信息里只能有一个人的信息。各位麻烦帮看看怎么可以把上次输入的信息储存而不是被覆盖掉?源程序2楼,VC6.0... 下面这个程序,在添加信息的时候总会把上一次添加的覆盖掉,所以显示信息里只能有一个人的信息。各位麻烦帮看看怎么可以把上次输入的信息储存而不是被覆盖掉?
源程序2楼,VC6.0可以运行
源代码看回答
展开
 我来答
沧海雄风2009
2011-07-03 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:3425万
展开全部
这个就是答案了 add函数 输入个数 由 宏定义 SIZE 决定
void add()
{
int i;
struct student s;
for (i=0;i<SIZE;i++)
{
printf("请输入学号:");
scanf("%s",s.num);
printf("请输入名字:");
scanf("%s",s.name);
printf("请输入班级:");
scanf("%s",s.banji);
printf("请输入电话:");
scanf("%s",s.phone);
printf("请输入地址:");
scanf("%s",s.address);
strcpy(stu[i].num,s.num);
strcpy(stu[i].name,s.name);
strcpy(stu[i].banji,s.banji);
strcpy(stu[i].phone,s.phone);
strcpy(stu[i].address,s.address);
}
}
航市专09
2011-07-03
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
源代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
# define SIZE 5
# define LEN sizeof(struct student)
void fopen();
void add();
void del();
void search();
void list();
void numsearch();
void namesearch();
void save();
struct student
{
char num[10];
char name[15];
char banji[10];
char phone[20];
char address[20];
}stu[SIZE];

void main()

{
int n;
do
{
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf(">>>> >>>>\n");
printf(">>>> 学生信息管理系统 >>>>\n");
printf(">>>> 1.添加 2.查询 3.删除 >>>>\n");
printf(">>>> 4.显示 5.读取 6.保存 >>>>\n");
printf(">>>> 7.退出 >>>>\n");
printf(">>>> >>>>\n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("输入你的选择:\n");
scanf("%d",&n);
switch(n)
{
case 1:add();break;
case 2:search();break;
case 3:del();break;
case 4:list();break;
case 5:fopen();break;
case 6:save();break;
case 7:exit(0);

default:printf("输入错误!\n");break;
}
}while(n!=7);
}

void fopen()
{ int i=0;
FILE*fp;
fp=fopen("数据.txt","rb");
for(i=0;i<SIZE;i++)
{fread(&stu[i],LEN,1,fp);
printf("现有学生信息:\n");
printf("学号 姓名 班级 电话 地址");
printf("%s\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].banji,stu[i].phone,stu[i].address);
}
fclose(fp);
}
void add()
{
int i=2;
struct student s;
printf("请输入学号:");
scanf("%s",s.num);
printf("请输入名字:");
scanf("%s",s.name);
printf("请输入班级:");
scanf("%s",s.banji);
printf("请输入电话:");
scanf("%s",s.phone);
printf("请输入地址:");
scanf("%s",s.address);
strcpy(stu[i].num,s.num);
strcpy(stu[i].name,s.name);
strcpy(stu[i].banji,s.banji);
strcpy(stu[i].phone,s.phone);
strcpy(stu[i].address,s.address);

}

void search()
{
int s;
do{
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf(" 8.学号查询 \n");
printf(" 9.姓名查询 \n");
printf(" 10.退出 \n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("\n请输入查询方式:\n");
scanf("%d",&s);
switch(s)
{
case 8:numsearch();break;
case 9:namesearch();break;
case 10:break;
default:printf("输入错误!\n");break;
}
}while(s!=10);
printf("退出\n");
}
void numsearch()
{ int i,flag;
char num[10];
printf("输入需查询的学号:\n");
scanf("%s",num);
for( flag=0,i=0;i<SIZE;i++)
{if(strcmp(num,stu[i].num)==0)
{printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("搜索结果:\n");
printf(" \n");
printf("学号 姓名 班级 电话 地址\n");
printf(" \n");
printf("%s\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].banji,stu[i].phone,stu[i].address);
flag=1;
}
}
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
if(flag!=1)printf("无此记录\n");
}
void namesearch()
{
int i,flag;
char name[15];
printf("输入需查询的名字:\n");
scanf("%s",name);
for(flag=0,i=0;i<SIZE;i++)
{
if(strcmp(name,stu[i].name)==0)
{
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("查询结果:\n");
printf(" \n");
printf("学号 姓名 班级 电话 地址\n");
printf(" \n");
printf("%s\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].banji,stu[i].phone,stu[i].address);
flag=1;
}
}
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
if(flag!=1)printf("无此记录\n");
}

void del()
{ int i,n;
char num[10];
printf("输入需删除信息学生的学号:\n");
scanf("%s",num);
for(i=0;i<SIZE;i++)

{
if(strcmp(num,stu[i].num)==0)

{
n=i;
for(i=0;i<SIZE;i++)
{
strcpy(stu[n].num,stu[n+1].num);
strcpy(stu[n].name,stu[n+1].name);
strcpy(stu[n].banji,stu[n+1].banji);
strcpy(stu[n].phone,stu[n+1].phone);
strcpy(stu[n].address,stu[n+1].address);
}
break;
}
}
}

void list()
{ int i;
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("学号 姓名 班级 电话 地址\n");
printf(" \n");
for(i=0;i<SIZE;i++)
printf("%s\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].banji,stu[i].phone,stu[i].address);
printf(" \n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
}

void save()
{ FILE*fp;
int i;
if((fp=fopen("数据.txt","wb"))==NULL)
{printf("打开文件错误!\n");
exit(0);
}
for(i=0;i<SIZE;i++)
if(fwrite(&stu[i],LEN,1,fp)!=1)
printf("信息保存出错!\n");
fclose(fp);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shidanshen
2011-07-03 · TA获得超过268个赞
知道小有建树答主
回答量:383
采纳率:0%
帮助的人:222万
展开全部
fp=fopen("数据.txt","rb");
rb
换成ab+试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-07-05
展开全部
计算天数时,在月份中有错误,貌似只是加了当月的天数,而没加该月之前的月份
另外,虚机团上产品团购,超级便宜
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式