#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct choose{
int stu_num;
int cou_num;
char time[15];}cho[160];
struct student{
char name[10];
int number;
int class_num;
int al;
}stu[40];
struct course{
char name[8];
char tea_name[10];
int number;
int score;
int al;
}cou[10];
int count_stu=0,count_cou=0,count_cho=0;
int main()
{
void menu();
void menu_stu();
void menu_cou();
void attention();
void new_stu();
void new_cou();
void new_choose_1();
void new_choose_2();
void new_choose();
void del_stu();
void del_cou();
void del_choose_1();
void del_choose_2();
void del_choose();
void change_stu();
void change_cou();
void check_stu();
void check_cou();
void scan_stu();
void scan_cou();
void scan_cho();
menu();
return 0;
}
void new_stu() /*增加学生*/
{
int i,n;
FILE *fp;
if(count_stu>40)
{
clrscr();
printf("the database for students is full,cannot add more student!");
menu_stu();
}
if((fp=fopen("student","ab+"))==NULL)
{
printf("\ncannot open file!\n");
menu_stu();
return;
}
printf("please input the student's number:\n");
scanf("%d",&n);
for(i=0;i<count_stu;i++)
{
fread(&stu,sizeof(struct student),1,fp);
if(stu.number==n)
{
clrscr();
printf("\n\tthis student already exist!\n");
fclose(fp);
menu_stu();
}
}
printf("%-10s%-10s\n","name","class_num");
scanf("%s%d",stu[count_stu].name,&stu[count_stu].class_num);
stu[count_stu].number=n;
fflush(fp);
if(fwrite(&stu[count_stu],sizeof(struct student),1,fp)==1)
count_stu++;
else
{
printf("\n\tfile write error!");
fclose(fp);
menu_stu();
return;
}
fclose(fp);
clrscr();
printf("Add Successfully!\n");
menu_stu();
}
void new_cou()/*增加科目*/
{
int i,n;
FILE *fp;
if(count_cou>9)
{
printf("the database for courses is full,cannot add more courses!\n");
menu_cou();
return;
}
fp=fopen("course","ab+");
if(fp==NULL)
{
printf("\n\tcannot open file!\n");
menu_cou();
return;
}
printf("please input the course's number:\n");
scanf("%d",&n);
for(i=0;i<count_cou;i++)
{
fread(&cou,sizeof(struct course),1,fp);
if(cou.number==n)
{
clrscr();
printf("\n\t\tthis course already exist!");
fclose(fp);
menu_cou();
}
}
printf("%-10s%-10s%-10s\n","name","teacher","score");
scanf("%s%s%d",cou[count_cou].name,cou[count_cou].tea_name,&cou[count_cou].score);
cou[count_cou].number=n;
fflush(fp);
if(fwrite(&cou[count_cou],sizeof(struct course),1,fp)==1)
count_cou++;
else
{
printf("\n\tfile write error!");
fclose(fp);
menu_cou();
return;
}
fclose(fp);
clrscr();
printf("Add Successfully!\n");
menu_cou();
}
void change_stu()/*学生信息修改*/
{
int n,i;
FILE *fp;
fp=fopen("student","rb+");
if(fp==NULL)
{
printf("cannot open file!\n");
menu_stu();
return;
}
printf("please input the student's number you want change:\n");
scanf("%d",&n);
for(i=0;i<count_cou;i++)
{
fread(&stu,sizeof(struct course),1,fp);
if(stu.number==n)
break;
}
if(stu.number!=n)
{
clrscr();
printf("\n\tthe student doesn't exist!\n");
fclose(fp);
menu_stu();/*要跳转到学生管理菜单*/
}
else
{
printf("please re_input the student's information:\n");
printf("%-10s%-10s:\n","name","class");
scanf("%s%d",stu.name,&stu.class_num);
}
fflush(fp);
if((fwrite(&stu,sizeof(struct student),1,fp))!=1)
{
clrscr();
printf("\n\twrite file error!\n");
fclose(fp);
return;
}
else
{
clrscr();
printf("Change Successfully!\n");
}
fclose(fp);
menu_stu();
}
void change_cou()/*课程修改*/
{
int i,n;
FILE *fp;
fp=fopen("course","rb+");
if(fp==NULL)
{
printf("cannot open file!\n");
return;
}
printf("please input the number of the course you want to change:\n");
scanf("%d",&n);
for(i=0;i<count_cou;i++)
{
fread(&cou,sizeof(struct course),1,fp);
if(cou.number==n)
break;
}
if(cou.number!=n)
{
clrscr();
printf("\n\t\tthe course doesn't exist!\n\n");
fclose(fp);
menu_cou();/*要跳转到课程管理菜单*/
}
else
{
printf("please reinput the course's information:\n");
printf("%-10s%-10s%-10s:\n","name","teacher","score");
scanf("%s%s%d",cou.name,cou.tea_name,&cou.score);
cou.number=n;
}
fflush(fp);
if((fwrite(&stu,sizeof(struct student),1,fp))!=1)
{
clrscr();
printf("file write error!");
fclose(fp);
menu_cou();
}
fclose(fp);
clrscr();
menu_cou();
}
void scan_stu()/*学生信息浏览*/
{
int i;
FILE *fp;
if((fp=fopen("student","rb"))==NULL)
{
printf("Error!\n");
menu_stu();
}
printf("all students' informations:\n");
printf("%-10s%-10s%-10s%-10s\n","name","number","class","course_num");
for(i=0;i<count_stu;i++)
{
fread(&stu,sizeof(struct student),1,fp);
printf("%-10s%-10d%-10d%-10d\n",stu.name,stu.number,stu.class_num,stu.al);
}
fclose(fp);
menu_stu();
}
void scan_cou()/*课程浏览*/
{
int i;
FILE *fp;
if((fp=fopen("course","rb"))==NULL)
{
printf("Error!\n");
menu_cou();
}
printf("all courses' informations:\n");
printf("%-10s%-10s%-10s%-10s%-10s\n","name","teacher","number","score","people_num");
for(i=0;i<count_cou;i++)
{
fread(&cou,sizeof(struct course),1,fp);
printf("%-10s%-10s%-10d%-10d%-10d\n",cou.name,cou.tea_name,cou.number,cou.score,cou.al);
}
fclose(fp);
menu_cou();
}
void check_stu()/*学生信息查询*/
{
int i,j,flag=0;
FILE *fp;
printf("Please input your number:");
scanf("%d",&j);
if((fp=fopen("student","rb"))==NULL)
{
printf("Error!\n");
menu_stu();
}
else
for(i=0;i<count_stu;i++)
{
fread(&stu,sizeof(struct student),1,fp);
if(strcmp(stu.number,j)==0)
{
printf("Student select course informations:\n");
printf("%-10s%-10s%-10s%-10s\n","name","number","class","course_num");
for(i=0;i<count_stu;i++)
{
fread(&stu,sizeof(struct student),1,fp);
printf("%-10s%-10d%-10d%-10d\n",stu.name,stu.number,stu.class_num,stu.al);
}
flag=1;
}
}
if(flag==0)
{
printf("No found this student!");
}
fclose(fp);
menu_stu();
}
void check_cou()/*课程信息查询*/
{
int i,j,flag=0;
FILE *fp;
printf("please input course's number:\n");
scanf("%d",&j);
if((fp=fopen("course","rb"))==NULL)
{
printf("Error!\n");
menu_cou();
}
else
for(i=0;i<count_cou;i++)
{
fread(&cou,sizeof(struct student),1,fp);
if(strcmp(cou.number,j)==0)
{
printf("Course select informations:\n");
printf("%-10s%-10s%-10s%-10s\n","name","teacher","number","score","people_num");
for(i=0;i<count_cou;i++)
{
fread(&cou,sizeof(struct course),1,fp);
printf("%-10s%-10s%-10d%-10d%-10d\n",cou.name,cou.tea_name,cou.number,cou.score,cou.al);
}
flag=1;
}
}
if(flag==0)
{
printf("No found this course!");
}
fclose(fp);
menu_cou();
}
void new_choose_1(int n)/*选课子函数*/
{
int i;
FILE *fp;
fp=fopen("student","rb+");
if(fp==NULL)
{
printf("cannot open the file!\n");
return;
}
for(i=0;i<count_stu;i++)
{
fread(&stu,sizeof(struct student),1,fp);
if(stu.number==n)
break;
}
if(i==count_stu)
{
clrscr();
printf("sorry,we donnot have your information now !\n");
printf("\nplease goto the student manager to add your information!\n");
fclose(fp);
menu_stu();/*返回菜单*/
}
else
{
stu.al++;
fflush(fp);
if((fwrite(&stu,sizeof(struct student),1,fp))!=1)
{
clrscr();
printf("file write error!\n");
fclose(fp);
return;
}
}
fclose(fp);
clrscr();
menu_cho();
}
void new_choose_2(int n)/*选课子函数*/
{
int i;
FILE *fp;
fp=fopen("course","rb+");
if(fp==NULL)
{
printf("cannot open file!\n");
return;
}
for(i=0;i<count_cou;i++)
{
fread(&cou,sizeof(struct course),1,fp);
if(cou.number==n)
break;
}
if(cou.al>10)
{
printf("this course is full!\n");
fclose(fp);
menu_cou();/*返回到上一句选课菜单*/
}
else
{
cou.al++;
fflush(fp);
if((fwrite(&cou,sizeof(struct course),1,fp))!=1)
{
clrscr();
printf("file write error!\n");
fclose(fp);
return;
}
}
clrscr();
fclose(fp);
}
void new_choose()/*选课*/
{int i,n;
FILE *fp;
if((fp=fopen("choose","ab+"))==NULL)
{
printf("cannot open file!\n");
return;
}
printf("please input your
number:\n");
scanf("%d",&n);
new_choose_1(n);
cho[count_cho].stu_num=n;
printf("all courses:\n");
scan_cou();
printf("please input the number of the course you want to choose:\n");
scanf("%d",&i);
new_choose_2(i);
/*内部有跳转标志*/
cho[count_cho].cou_num=i;
printf("please input the time:\n");
scanf("%s",cho[count_cho].time);
if(fwrite(&cho[count_cho],sizeof(struct choose),1,fp)==1)
{
count_cho++;
printf("Choose successfully!\n");
}
else
{
printf("file write error!\n");
clrscr();
fclose(fp);
return;
}
fclose(fp);
clrscr();
menu_cho();
}
void del_choose_1(int n)/*退课子函数*/
{
int i;
FILE *fp;
if((fp=fopen("course","rb+"))==NULL)
{
printf("cannot open the file!\n");
return;
}
for(i=0;i<count_cou;i++)
{
fread(&cou,sizeof(struct course),1,fp);
if(cou.number==n)
{
fflush(fp);
if((fwrite(&cou,sizeof(struct course),1,fp))!=1)
{
clrscr();
printf("file write error!\n");
fclose(fp);
return;
}
else
cou.al--;
}
}
fclose(fp);
}
void del_choose_2(int n)/*退课子函数*/
{
int i;
FILE *fp;
if((fp=fopen("student","rb+"))==NULL)
{
printf("cannot open the file!\n");
return;
}
printf("%-10s%-10s%-10s%-10s\n","name","number","class","course_num");
for(i=0;i<count_stu;i++)
{
fread(&stu,sizeof(struct student),1,fp);
if(stu.al==0)
{
clrscr();
fclose(fp);
printf("you haven't chose any courses!\n");
menu_cho();
}
if(stu.number==n)
{
printf("%-10s%-10d%-10d%-10d\n",stu.name,stu.number,stu.class_num,stu.al);
fflush(fp);
if((fwrite(&stu,sizeof(struct student),1,fp))!=0)
{
clrscr();
printf("file write error!\n");
fclose(fp);
return;
}
else
stu.al--;
}
}
fclose(fp);
}
void del_choose()/*退课函数*/
{
int i,n,m,k;
FILE *fp;
if((fp=fopen("choose","rb+"))==NULL)
{
printf("cannot open file!\n");
return;
}
if(count_cho==0)
{
clrscr();
printf("not people have chose any courses!\n");
menu_cho();
}
printf("please input your number:\n");
scanf("%d",&i);
del_choose_2(i);
printf("please choose the course you do not want:\n");
scanf("%d",&n);
del_choose_1(n);
for(m=0;m<count_cho;m++)
{
fread(&cho[m],sizeof(struct choose),1,fp);
if(cho[m].cou_num==n)
if(cho[m].stu_num==i)
{
for(k=m;k<count_cho;k++)
cho[m]=cho[m+1];
count_cho--;
}
}
clrscr();
printf("Delete Succcessfully!\n");
fclose(fp);
menu_cho();/*跳转到 choose manager
菜单*/
}
void scan_cho()/*浏览所有数据*/
{
int i,j,k;
FILE *fp1,*fp2,*fp3;
if((fp1=fopen("student","rb"))==NULL||(fp2=fopen("course","rb"))==NULL||(fp3=fopen("choose","rb"))==NULL)
{
printf("cannot open the file!\n");
return;
}
printf("all data:\n");
printf("%10s%10s%10s%10s%10s%10s%10s%10s\n","stu_name","stu_number","class_num","course_al","cou_name","tea_name","score","time");
for(i=0;i<count_cho;i++)
{
fread(&cho,sizeof(struct choose),1,fp3);
for(j=0;j<count_stu;j++)
{
fread(&stu[j],sizeof(struct student),1,fp1);
if(cho.stu_num==stu[j].number)
for(k=0;k<count_cou;k++)
{
fread(&cou[k],sizeof(struct course),1,fp2);
if(cho.cou_num==cou[k].number)
printf("%10s%10d%10d%10d%10s%10s%10d%10s\n",stu[j].name,stu[j].number,stu[j].class_num,stu[j].al,cou[k].name,cou[k].tea_name,cou[k].score,cho.time);
}
}
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
clrscr();
menu_cho();/*跳转到 choose manager 菜单*/
}
void del_cou() /*删除课程*/
{
int i,n,k;
FILE *fp1,*fp2;
fp1=fopen("course","rb+");
fp2=fopen("choose","rb+");
if((fp1==NULL)||(fp2==NULL))
{
printf("\n\tcannot open the file!\n");
menu_cou();
return;
}
printf("please input the number of the course you do not want:\n");
scanf("%d",&n);
for(i=0;i<count_cou;i++)
{
fread(&cou,sizeof(struct course),1,fp1);
if(cou.number==n)
{
for(k=i;k<count_cou;k++)
cou=cou[i++];
count_cou--;
break;
}
}
fclose(fp1);
for(i=0;i<count_cho;i++)
{
fread(&cho,sizeof(struct choose),1,fp2);
if(cho.cou_num==n)
{
for(k=i;k<count_cho;k++)
cho=cho[i++];
count_cho--;
}
}
fclose(fp2);
printf("Move Successfully!\n");
menu_cou();/*跳转到菜单 course manager*/
}
void del_stu()/*删除学生*/
{
int i,n,k;
FILE *fp1,*fp2;
if((fp1=fopen("student","rb+"))==NULL||(fp2=fopen("choose","rb+"))==NULL)
{
printf("cannot open file!\n");
return;
}
printf("please input the number of the student you want to move:\n");
scanf("%d",&n);
for(i=0;i<count_stu;i++)
{
fread(&stu,sizeof(struct student),1,fp1);
if(stu.number==n)
{
for(k=i;k<count_stu;k++)
stu=stu[i+1];
count_stu--;
break;
}
}
fclose(fp1);
for(i=0;i<count_cho;i++)
{
fread(&cho,sizeof(struct choose),1,fp2);
if(cho.stu_num==n)
{
for(k=i;k<count_cho;k++)
cho=cho[i++];
count_cho--;
}
}
fclose(fp2);
clrscr();
printf("\n\t\tMove Successfully!\n");
menu_cho();/*跳转到choose manager菜单*/
}
void menu()
{
char judge,ch;
printf("\t\t*******************************************************\n");
printf("\t\t*******
MAIN MENU
************\n");
printf("\t\t*******************************************************\n"
"\t\t*
a :student manager
*\n"
"\t\t*
b :course manager
*\n"
"\t\t*
c :choose manager
*\n"
"\t\t*
d :attentions
*\n"
"\t\t*
e :quit
*\n"
"\t\t*******************************************************\n");
printf("\nplease input your choice:\n");
scanf("%c",&judge);
while((ch=getchar())!='\n');
if(judge=='a')
{
clrscr();
menu_stu();
}
else if(judge=='b')
{
clrscr();
menu_cou();
}
else if(judge=='c')
{
clrscr();
menu_cho();
}
else if(judge=='d')
{
clrscr();
attention();
}
else if(judge=='e')
{
clrscr();
printf("\n\n\tTHANK YOU FOR USING!\n");
exit(1);
}
else
{
clrscr();
printf("\n\t\twrong code!\n\t\tplease inut again!\n");
menu();
}
}
void menu_stu()
{
char judge,ch;
printf("\t\t*******************************************************\n");
printf("\t\t*******
STUDENT MENU
************\n");
printf("\t\t*******************************************************\n"
"\t\t*
a :new student
*\n"
"\t\t*
b :move student
*\n"
"\t\t*
c :change student
*\n"
"\t\t*
d :scan student
*\n"
"\t\t*
e :check student
*\n"
"\t\t*
f :back to main menu
*\n"
"\t\t*******************************************************\n");
printf("\nplease input your choice:\n");
scanf("%c",&judge);
/*
while(judge>'f'||judge<'a')
{
printf("wrong code!\nplease input your choice:\n");
scanf("%c",&judge);
}*/
while((ch=getchar())!='\n');
if(judge=='a')
{
clrscr();
new_stu();
}
else if(judge=='b')
{
clrscr();
del_stu();
}
else if(judge=='c')
{
clrscr();
change_stu();
}
else if(judge=='d')
{
clrscr();
scan_stu();
}
else if(judge=='e')
{
clrscr();
check_stu();
}
else if(judge=='f')
{
clrscr();
menu();
}
else
{
clrscr();
printf("\n\t\twrong code!\n\t\tplease inut again!\n");
menu_stu();
}
}
void menu_cou()
{
char judge,ch;
printf("\t\t*******************************************************\n");
printf("\t\t*******
COURSE MENU
************\n");
printf("\t\t*******************************************************\n"
"\t\t*
a :new course
*\n"
"\t\t*
b :move course
*\n"
"\t\t*
c :change course
*\n"
"\t\t*
d :scan course
*\n"
"\t\t*
e :check course
*\n"
"\t\t*
f :back to main menu
*\n"
"\t\t*******************************************************\n");
printf("\nplease input your choice:\n");
scanf("%c",&judge);
/*while(judge>'f'||judge<'a')
{
printf("wrong code!\n");
printf("please input your choice:\n");
judge=getchar();
}*/
while((ch=getchar())!='\n');
if(judge=='a')
{
clrscr();
new_cou();
}
else if(judge=='b')
{
clrscr();
del_cou();
}
else if(judge=='c')
{
clrscr();
change_cou();
}
else if(judge=='d')
{
clrscr();
scan_cou();
}
else if(judge=='e')
{
clrscr();
check_cou();
}
else if(judge=='f')
{
clrscr();
menu();
}
else
{
clrscr();
printf("\n\t\twrong code!\n\t\tplease inut again!\n");
menu_cou();
}
}
int menu_cho()
{
char judge,ch;
printf("\t\t*******************************************************\n");
printf("\t\t*******
CHOOSE MENU
************\n");
printf("\t\t*******************************************************\n"
"\t\t*
a :new choice
*\n"
"\t\t*
b :change choice
*\n"
"\t\t*
c :scan all chioces
*\n"
"\t\t*
d :back to main menu
*\n"
"\t\t*******************************************************\n");
printf("\nplease input your choice:\n");
scanf("%c",&judge);
/*
while(judge>'d'||judge<'a')
{
printf("wrong code!\n");
printf("please input your choice:\n");
scanf("%c",&judge);
}*/
while((ch=getchar())!='\n');
if(judge=='a')
{
clrscr();
new_choose();
}
else if(judge=='b')
{
clrscr();
del_choose();
}
else if(judge=='c')
{
clrscr();
scan_cho();
}
else if(judge=='d')
{
clrscr();
menu();
}
else
{
clrscr();
printf("\n\t\twrong code!\n\t\tplease inut again!\n");
menu_cho();
}
return 0;
}
void attention()
{
printf("\t\t***************************************************************\n");
printf("\t\t*****************>>>>> ATTENTIONS <<<<<<***********************\n");
printf("\t\t*
1.40 students limited!
*\n");
printf("\t\t*
2.10 courses limited!
*\n");
printf("\t\t*
3.one student can only choose 4 courses
*\n");
printf("\t\t*
4.one course can only be chose by 16 students
*\n");
printf("\t\t*
5.all data saved in computer,so do not worry about losing*\n");
printf("\t\t*
6.made by >>>GROUP 8<<<
*\n");
printf("\t\t***************************************************************\n\n\n");
menu();
}