急啊啊!帮忙改下错啦,我是个新手改不了
#include<stdio.h>#include<string.h>
#define N 15
#define M 10
struct xuanke
{
char num[5];
char name[20];
char kecheng[10];
int xueshi;
double xuefen;
int xueqi;
}stu[20];
int i;
struct xuankejieguo
{
char num[10];
char name[10];
char bianhao[2][4];
}xs[M];
//菜单
menu()
{
puts("1:查询\n");
puts("2:增加\n");
puts("3:选课\n");
puts("4:浏览\n");
puts("0:退出\n");
}
void read()
{
FILE *fp;
int st[81];
fp=fopen("E:\\学生选课系统\\tx0135_xk.txt","r");
if(fp=NULL)
{
printf("cannot open file!\n");
return;
}
fgets(st,81,fp); /* 从fp中读取81个字符放在st中 */
for(i=0;i<N;i++)
{
fscanf(fp,"%s%s%s%d%f%d",stu[i].num,stu[i].name,stu[i].kecheng,&stu[i].xueshi,&stu[i].xuefen,&stu[i].xueqi);
}
fclose(fp);
printf("已成功打开数据文件!\n");
}
//按课程名查询
void kechengming()
{
char name[20];
int t,flag=0;
printf("请输入要查询的课程:\n");
scanf("%s",name);
if(strcmp(stu[i].name,name)==0)
{
flag=1;
t=i;
printf("课程信息如下:");
printf("课程编号 课程名 课程性质 总学时 学分 开课学期");
printf("%s %s %s %d %f %d",stu[t].num,stu[t].name,stu[t].kecheng,stu[t].xueshi,stu[t].xuefen,stu[t].xueqi);
}
if(flag=0)
printf("查询失败!");
}
//按编号查询
void bianhao()
{
char num[5];
int t,flag=0;
printf("请输入要查询的编号:\n");
scanf("%s",num);
if(strcmp(stu[i].num,num)==0)
{
flag=1;
t=i;
printf("课程信息如下:");
printf("课程编号 课程名 课程性质 总学时 学分 开课学期");
printf("%s %s %s %d %f %d",stu[t].num,stu[t].name,stu[t].kecheng,stu[t].xueshi,stu[t].xuefen,stu[t].xueqi);
}
if(flag=0)
printf("查询失败!");
}
//按课程性质查询
void xingzhi()
{
char kecheng[10];
int t,flag=0;
printf("请输入要查询的课程:\n");
scanf("%s",kecheng);
if(strcmp(stu[i].kecheng,kecheng)==0)
{
flag=1;
t=i;
printf("课程信息如下:");
printf("课程编号 课程名 课程性质 总学时 学分 开课学期");
printf("%s %s %s %d %f %d",stu[t].num,stu[t].name,stu[t].kecheng,stu[t].xueshi,stu[t].xuefen,stu[t].xueqi);
}
if(flag=0)
printf("查询失败!");
}
//按学分查询
void xuefen()
{
int xuefen,t,flag=0;
printf("请输入要查询的课程:\n");
scanf("%d",&xuefen);
if(stu[i].xuefen==xuefen)
{
flag=1;
t=i;
printf("课程信息如下:");
printf("课程编号 课程名 课程性质 总学时 学分 开课学期");
printf("%s %s %s %d %f %d",stu[t].num,stu[t].name,stu[t].kecheng,stu[t].xueshi,stu[t].xuefen,stu[t].xueqi);
}
if(flag=0)
printf("查询失败!");
}
//查询
void search()
{
int b;
printf("请输入选择\n");
scanf("%d",&b);
switch(b)
{
case 1:kechengming();break;
case 2:bianhao();break;
case 3:xingzhi();break;
case 4:xuefen();break;
}
}
//信息增加功能
void add()
{
FILE *fp;
int flag,t;
char num[5];
printf("请输入要添加的编号:\n");
scanf("%s",num);
{
for(i=0;i<N;i++)
{
if(strcmp(stu[i].num,num)==0)
{
flag=1;
i=t;
printf("新课程信息如下:");
printf("课程编号 课程名 课程性质 总学时 学分 开课学期\n");
printf("%s %s %s %d %f %d",stu[t].num,stu[t].name,stu[t].kecheng,stu[t].xueshi,stu[t].xuefen,stu[t].xueqi);
}
else if(flag=0)
printf("信息添加失败!");
}
}
}
//选课
void choice()
{
char num[10];
int k,j,a=0,b=0,c=0;
printf("请输入你的学号\n");
scanf("%s",num);
for(j=0;j<10;j++)
{
if(strcmp(num[j],xs[j].num)==0)
{
printf("课程编号 课程名 课程性质 总学时 学分 开课学期\n");
printf("%s %s %s %d %f &d\n",stu[j].num,stu[j].name,stu[j].kecheng,stu[j].xuefen,stu[j].xueshi,stu[j].xueqi);
}
}
printf("请输入选课编号\n");
for(k=0;k<5;k++)
{
for(i=0;i<15;i++)
{
printf("请输入课程编号\n");
scanf("%s",num);
a=a+stu[i].num; /*a:总学分*/
if(a>30)
{
printf("您的课程总学分超过了30请从新选择\n");
break;
}
if(stu[i].xueqi==1)
b=b+stu[i].xuefen;/*学期一,b:学分*/
if(stu[i].xueqi==2)
c=c+stu[i].xuefen;/*学期二,c:学分*/
if(b>8||c>8)
{
printf("您选的课程每学期超过了8个学分\n");
break;
}
}
printf("选课完毕!\n退出按0,继续按1\n");
}
}
//浏览
void liulan()
{
}
//主函数
main()
{
int a;
read();
menu();
printf("请输入选择\n");
scanf("%d",&a);
switch(a)
{
case 1:search();break;
case 2:add();break;
case 3:choice();break;
case 4:liulan();break;
}
}