c语言编程求助---下面的这个程序编了一半 其他的有些不会求高手帮忙
/* student.txt是文本文件,记录班级学生信息 *//* 程序的功能:添加学生记录,查询班级学生信息 */
#include "stdio.h"
typedef struct student{ /*学生记录的结构体*/
long id; /*记录ID*/
long no; /*记录学生学号*/
char name[11]; /*记录学生姓名*/
char sex[3]; /*记录学生性别*/
//int age; /*记录学生年龄*/
char nation[11]; /*记录学生民族*/
char address[21]; /*记录学生家庭所在地*/
char classes[15]; /*记录学生所在班级*/
char college[11]; /*记录学生所在学院*/
}ST;
ST a[500]; /*学生结构体数组*/
int size; /*学生总数*/
void readfile()
{
FILE *fp; int i,n; ST *p=a;
if((fp=fopen("student.txt", "r")) == NULL)
{printf("can not open file student.txt!\n");
exit(0); }
i=0;
//fscanf(fp,"%*ld%*ld%*s%*s%*s%*s%*s%*s");
do
{n=fscanf(fp,"%ld%ld%s%s%s%s%s%s",&p->id,&p->no,p->name,
p->sex,p->nation,p->address,p->classes,
p->college);
p++;i++;
}while(n>0);
size=i-1;
fclose(fp);
}
void savefile()
{
FILE *fp; int i,n; ST *p=a;
if((fp=fopen("student.txt", "w")) == NULL)
{printf("can not open file student.txt!\n");
exit(0); }
//fprintf(fp,"序号 学号 姓名 性别 民族 来源地区 班级 学院\n");
for(i=0;i<size;i++,p++)
fprintf(fp,"%-4ld %-6ld %-8s %-2s %-8s %-16s %-6s %-6s\n",
p->id,p->no,p->name,p->sex,p->nation,
p->address,p->classes,p->college);
fclose(fp);
}
void display()
{
int i; ST *p=a;
printf("序号 学号 姓名 性别 民族 来源地区 班级 学院\n");
for(i=0;i<size;i++,p++)
printf("%-4ld %-6ld %-8s %-2s %-8s %-16s %-6s %-6s\n",
p->id,p->no,p->name,p->sex,p->nation,
p->address,p->classes,p->college);
}
void addnew()
{
int i,n; ST *p=a+size;
printf(" 请输入学号:");
scanf("%ld",&p->no);
printf(" 请输入姓名:");
scanf("%s",p->name);
printf(" 请输入性别:");
scanf("%s",p->sex);
printf(" 请输入民族:");
scanf("%s",p->nation);
printf(" 请输入家庭所在地:");
scanf("%s",p->address);
printf(" 请输入所在班级:");
scanf("%s",p->classes);
printf(" 请输入所在学院:");
scanf("%s",p->college);
size++;
p->id=size;
}
void query()
{
long no; int i;ST *p;
printf(" 请输入学号:");
scanf("%ld",&no);
for(i=0,p=a;i<size;i++,p++)
if(p->no==no)break;
if(i<size)
printf("%-4ld %-6ld %-8s %-2s %-8s %-16s %-6s %-6s\n",
p->id,p->no,p->name,p->sex,p->nation,
p->address,p->classes,p->college);
else printf("无此学生.\n");
}
int inputchoice() /*选择操作参数*/
{
int mychoice;
printf("\n请用键盘键入数字选择:\n");
printf("1 - 新生报到.\n");
printf("2 - 显示全体学生.\n");
printf("3 - 查询.\n");
printf("4 - 修改.\n");
printf("5 - 删除.\n");
printf("6 - 保存.\n");
printf("0 - 退出系统.\n");
scanf("%d",&mychoice);
return mychoice;
}
int main(void)
{
int choice;
readfile();
while((choice=inputchoice())!=0){
switch(choice){
case 1:
addnew( );
break;
case 2:
display( );break;/*列出所有学生信息*/
case 3:
query( );
break;/*查询学生信息*/
case 6:
savefile( );
break;/*保存学生信息*/
default:
printf("Input Error.");break;
}
}
/*函数功能:修改学生信息*/
void modify(struct student *parr,int len)
{
int no = 0;
char ch = '\0';
int i;
printf("请您输入要修改的学生的学号:");
scanf("%d",&no);
for( i=0; i<len; i++ )
{
if(no == parr[i].no)
{
printf("姓名:%s 学号:%d\n",
parr[i].name,parr[i].no);
printf("您确定要修改该学生信息(y/n)");
scanf(" %c",&ch);
if(ch == 'y')
{
printf("请输入姓名:");
scanf("%s",parr[i].name);
printf("请输入学号:");
scanf("%d",&parr[i].no);
printf("姓名:%s 学号:%d\n",
parr[i].name,parr[i].no);
printf("修改成功!");
getch();
}
else
{
printf("没有找到该学生");
getch();
break;
}
}
}
return;
}
return 0;
}