#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("\n\n\n");
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%d\n",&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%d\n",&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%9d\n",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%d\n",&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%9d\n",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%d\n",&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%9d\n",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%d\n",&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%s\n",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%s\n",&s.snum,&s.cnum,&s.cname);
total++;
printf("%22d%17d%18s\n",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 file\n");
}
printf("\n (录入选题信息)请输入课题数量:");
scanf("%d",&count);
printf("\n (各项目间用空格分开)");
fl();
for(i=0;i<count;i++)
{
scanf("%d%s%s%d%d%d%d%d\n",&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%d\n",c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);
}
fclose(fp);
printf("\n 录入信息成功!");
menu();
}