问题描述
- 求c语言大神帮忙看看哪里出错了
-
#include
#include
#includestruct course
{
int num; //选题编号
char name[20];//课题名称
char kind[10];//课程性质
int taltime,ttime,etime,mark,term;//课程时间,学分,开课信息
};
struct student
{
int snum; //学生学号
int cnum; //所选课题编号
char cname[20];//所选课题名称
};
//函数原型
void fl();
void menu();
void browser();
void search();
void xuan_ti();
void xuanti_information();
void input();void fl()
{
printf("n 选题编号课题名称课程性质授课学时实验或上机学时总学时学分开课学期:n");
}
void menu()
{
printf("nnn");
printf(" 欢迎使用毕业设计选题管理系统! n");
printf(" 1-浏览选题信息 2-查询选题信息n");
printf(" 3-进入选题操作 4-选题情况统计n");
printf(" 5-录入选题信息 0-退出选题系统n");
printf(" 请选择输入选项编号(请选择5进行课程信息录入):");
}void main()
{
int n;
menu();
scanf("%d",&n);
//防止错误,提示重新输入
for(;n>5||n
{
printf("n 输入错误,请重新输入! ");
scanf("%d",&n);
}
while(n>0&&n
{
switch(n)
{
case 1:browser();break;//浏览选题信息
case 2:search();break; //查询选题信息
case 3:xuan_ti();break;//进入选题信息
case 4:xuanti_information();break;//选题情况统计
case 5:input();break;//录入选题信息
}
scanf("%d",&n);
for(;n>5||n
{
printf("n 输入错误,请重新输入! ");
scanf("%d",&n);
}
system("cls");//清除屏幕
}
if(n==0)
exit(0);//退出系统
}
//浏览选题信息
void browser()
{
FILE*fp;//定义指向文件的指针
struct course c;//定义课程结构体变量c
if((fp=fopen("course.txt","r"))==NULL)
{
printf("nCannot open course!n");
}
fl();
for(;!feof(fp);)//直到文件结束
{
fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);//格式化输出
}
fclose(fp);//关闭文件
menu();
}
//查询选题信息
void search()
{
FILE*fp;//定义文件指针变量
struct course c;//定义学生结构体变量c
int score;
char kind[10];
char name[20];
int b;
//输入需要的查询选题信息的方式
printf("n 1.按学分查询n");
printf("n 2.按课程性质查询n");
printf("n 3.按课程名称查询n");
printf("n 请选择查询方式,输入选项数字:");
scanf("%d",&b);
for(;b3;)
{
printf("n 输入错误,请重新输入! ");
scanf("%d",&b);
}
//按学分查询
if(b==1)
{
printf("n 请输入您要查询的学分:");
scanf("%d",&score);
if((fp=fopen("course.txt","r"))==NULL)
printf("nCannot open coruse!n");
fl();
for(;!feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);
if(c.mark==score)
printf("%5d%12s%9s%9d%12d%13d%8d%9dn",c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);
}
}
//按课程性质查询
else if(b==2)
{
printf("n 请输入您要查询的课程性质:");
scanf("%s",&kind);
if((fp=fopen("course.txt","r"))==NULL)
printf("nCannot open coruse!n");
fl();
for(;!feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);
if(strcmp(c.kind,kind)==0)
printf("%5d%12s%9s%9d%12d%13d%8d%9dn",c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);
}
}
//按选题名称查询
else if(b==3)
{
printf("n 请输入您要查询的选题名称:");
scanf("%s",&name);
if((fp=fopen("course.txt","r"))==NULL)
printf("nCannot open coruse!n");
fl();
for(;!feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);
if(strcmp(c.name,name)==0)
printf("%5d%12s%9s%9d%12d%13d%8d%9dn",c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);
}
}
else{
printf("输入错误!");
exit(1);
}
fclose(fp);
menu();//调用menu函数
}
//进入选题操作
void xuan_ti()
{
struct student s;//定义学生结构体变量s
struct course c;
FILE*fp;
printf("n请输入您的学号及您要选择的课题编号(用空格分开):");
scanf("%d%d,&s.snum,&s.cnum");
if((fp=fopen("course.txt","r"))==NULL)//打开选题记录文件
{
printf("nCannot open course!n");
}
for(;feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);
if(s.cnum==c.num)
break;
}
fclose(fp);//关闭选题记录文件
if((fp=fopen("student.txt","a+"))==NULL)
{
printf("nCannot open student!n");
}//将学生选题信息输入文件
fprintf(fp,"%d%d%sn",s.snum,s.cnum,c.name);
fclose(fp);
printf("n 恭喜您选题成功!n");
menu();
}
//选题情况统计
void xuanti_infomation()
{
int total=0;//人数统计变量
FILE*fp;
struct student s;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("nCannot open student!n");
}
printf("n 学号选题编号名称n");
for(;!feof(fp);)
{
fscanf(fp,"%d%d%sn",&s.snum,&s.cnum,&s.cname);
total++;
printf("%22d%17d%18sn",s.snum,s.cnum,s.cname);
}
printf("n 选题学生总人数:%d人",total);
fclose(fp);
menu();
}
//录入课题信息
void input()
{
FILE*fp;
struct course c;
int count;
int i;
if((fp=fopen("course.txt","a+"))==NULL)//建立文件设计题目的信息
{
printf("cannot open filen");
}
printf("n (录入选题信息)请输入课题数量:");
scanf("%d",&count);
printf("n (各项目间用空格分开)");
fl();
for(i=0;i<count;i++)
{
scanf("%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);
fprintf(fp,"%d%s%s%d%d%d%d%dn",c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);
}
fclose(fp);
printf("n 录入信息成功!");
menu();
}
解决方案
// 你这不是抄的我跟你信 ,给你改了。自己运行看看
//
#include
#include
#include
struct course
{
int num; //选题编号
char name[20];//课题名称
char kind[10];//课程性质
int taltime,ttime,etime,mark,term;//课程时间,学分,开课信息
};
struct student
{
int snum; //学生学号
int cnum; //所选课题编号
char cname[20];//所选课题名称
};
//函数原型
void fl();
void menu();
void browser();
void search();
void xuan_ti();
void xuanti_information();
void input();
void fl()
{
printf("n 选题编号课题名称课程性质授课学时实验或上机学时总学时学分开课学期:n");
}
void menu()
{
printf("nnn");
printf(" 欢迎使用毕业设计选题管理系统! n");
printf(" 1-浏览选题信息 2-查询选题信息n");
printf(" 3-进入选题操作 4-选题情况统计n");
printf(" 5-录入选题信息 0-退出选题系统n");
printf(" 请选择输入选项编号(请选择5进行课程信息录入):");
}
void main()
{
int n;
menu();
scanf("%d",&n);
//防止错误,提示重新输入
if(n>5)
{
printf("n 输入错误,请重新输入! ");
scanf("%d",&n);
}
while(n>0&&n) {
switch(n)
{
case 1:browser();break;//浏览选题信息
case 2:search();break; //查询选题信息
case 3:xuan_ti();break;//进入选题信息
case 4:xuanti_information();break;//选题情况统计
case 5:input();break;//录入选题信息
}
scanf("%d",&n);
if(n>5)
{
printf("n 输入错误,请重新输入! ");
scanf("%d",&n);
}
system("cls");//清除屏幕
}
if(n==0)
exit(0);//退出系统
}
//浏览选题信息
void browser()
{
FILE*fp;//定义指向文件的指针
struct course c;//定义课程结构体变量c
if((fp=fopen("course.txt","r"))==NULL)
{
printf("nCannot open course!n");
}
fl();
for(;!feof(fp);)//直到文件结束
{
fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);//格式化输出
}
fclose(fp);//关闭文件
menu();
}
//查询选题信息
void search()
{
FILE*fp;//定义文件指针变量
struct course c;//定义学生结构体变量c
int score;
char kind[10];
char name[20];
int b;
//输入需要的查询选题信息的方式
printf("n 1.按学分查询n");
printf("n 2.按课程性质查询n");
printf("n 3.按课程名称查询n");
printf("n 请选择查询方式,输入选项数字:");
scanf("%d",&b);
for(;b>3;)
{
printf("n 输入错误,请重新输入! ");
scanf("%d",&b);
}
//按学分查询
if(b==1)
{
printf("n 请输入您要查询的学分:");
scanf("%d",&score);
if((fp=fopen("course.txt","r"))==NULL)
printf("nCannot open coruse!n");
fl();
for(;!feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);
if(c.mark==score)
printf("%5d%12s%9s%9d%12d%13d%8d%9dn",c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);
}
}
//按课程性质查询
else if(b==2)
{
printf("n 请输入您要查询的课程性质:");
scanf("%s",&kind);
if((fp=fopen("course.txt","r"))==NULL)
printf("nCannot open coruse!n");
fl();
for(;!feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);
if(strcmp(c.kind,kind)==0)
printf("%5d%12s%9s%9d%12d%13d%8d%9dn",c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);
}
}
//按选题名称查询
else if(b==3)
{
printf("n 请输入您要查询的选题名称:");
scanf("%s",&name);
if((fp=fopen("course.txt","r"))==NULL)
printf("nCannot open coruse!n");
fl();
for(;!feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);
if(strcmp(c.name,name)==0)
printf("%5d%12s%9s%9d%12d%13d%8d%9dn",c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);
}
}
else{
printf("输入错误!");
exit(1);
}
fclose(fp);
menu();//调用menu函数
}
//进入选题操作
void xuan_ti()
{
struct student s;//定义学生结构体变量s
s.cnum=0;
s.snum=0;
struct course c;
FILE*fp;
printf("n请输入您的学号及您要选择的课题编号(用空格分开):");
scanf("%d%d,&s.snum,&s.cnum");
if((fp=fopen("course.txt","r"))==NULL)//打开选题记录文件
{
printf("nCannot open course!n");
}
for(;feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);
if(s.cnum==c.num)
break;
}
fclose(fp);//关闭选题记录文件
if((fp=fopen("student.txt","a+"))==NULL)
{
printf("nCannot open student!n");
}//将学生选题信息输入文件
fprintf(fp,"%d%d%sn",s.snum,s.cnum,c.name);
fclose(fp);
printf("n 恭喜您选题成功!n");
menu();
}
//选题情况统计
void xuanti_infomation()
{
int total=0;//人数统计变量
FILE*fp;
struct student s;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("nCannot open student!n");
}
printf("n 学号选题编号名称n");
for(;!feof(fp);)
{
fscanf(fp,"%d%d%sn",&s.snum,&s.cnum,&s.cname);
total++;
printf("%22d%17d%18sn",s.snum,s.cnum,s.cname);
}
printf("n 选题学生总人数:%d人",total);
fclose(fp);
menu();
}
//录入课题信息
void input()
{
FILE*fp;
struct course c;
int count;
int i;
if((fp=fopen("course.txt","a+"))==NULL)//建立文件设计题目的信息
{
printf("cannot open filen");
}
printf("n (录入选题信息)请输入课题数量:");
scanf("%d",&count);
printf("n (各项目间用空格分开)");
fl();
for(i=0;i<count;i++)
{
scanf("%d%s%s%d%d%d%d%dn",&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);
fprintf(fp,"%d%s%s%d%d%d%d%dn",c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);
}
fclose(fp);
printf("n 录入信息成功!");
menu();
}
解决方案二:
你运行后的错误日志是什么?看日志你应该可以找到错误的地方
解决方案三:
是否能说明你预期得到什么结果,以及实际的结果(或错误信息)?
解决方案四:
很多地方语法都是错的,楼主还是自己先编译一下吧。漏洞百出。
解决方案五:
楼主的代码应该会有好多问题,可以根据错误提示从前往后修改,因为有的代码出现错误是由于前面的错误并未修改,还有楼主用到的for语句好多都是类似for( ; value; )的形式,好像是判断语句似的,如果代码不是拿来主义的话可以好好修改一下。