#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();
}
// 你這不是抄的我跟你信 ,給你改了。自己運行看看
//
#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);
//防止錯誤,提示重新輸入
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%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(;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%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
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%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();
}