#include <stdio.h>#include <windows.h>#include <stdlib.h>#include <string.h>#define N 20struct xk//定义选课信息{ int num;//课程编号 char name[20];//课程名称 char xz[10];//课程性质 int zks;//总课时 int ks;//授课课时 int syks;//实验或上机课时 int xf;//学分 int kk;//开课学期}kc[N];//总共20门课程struct xsxx//学生信息{ int xsnum[N];//选的课程编号 int xuefen; //学分}xs;struct xkjl//记录信息{ char name[20];//记录名称 int jlxf;//记录学分}jl[N];void lr()//录入模块{ FILE *fp; int i,n; struct xk kc[N]; fp=fopen("d:\\kcxx.txt","ab+"); if(fp==NULL){ printf("Can not open file\n"); exit(1); } printf("输入几门课程信息\n"); scanf("%d",&n); for(i=0;i<n;i++) { printf("第%d门课程编号\t第%d门课程名称\t第%d门课程性质\t第%d门总课时\t第%d门授课学时\t第%d门实验或上机学时\t第%d门学分\t第%d门开课学期\n",i+1,i+1,i+1,i+1,i+1,i+1,i+1,i+1); scanf("%d%s%s%d%d%d%d%d",&kc[i].num,kc[i].name,kc[i].xz,&kc[i].zks,&kc[i].ks,&kc[i].syks,&kc[i].xf,&kc[i].kk);//输出课程信息 } fwrite(kc,sizeof(struct xk),n,fp);//将键盘上的信息录入文件 fclose(fp);}void ll()//浏览模块{ FILE *fp; int i; struct xk kc[N]; fp=fopen("d:\\kcxx.txt","rb"); if(fp==NULL){ printf("Can not open file\n"); exit(1); } printf("课程编号\t课程名称\t课程性质\t总课时\t授课学时\t实验或上机学时\t学分\t开课学期\n"); for(i=0;(!feof(fp));i++){ fread(&kc[i],sizeof(struct xk),1,fp); printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",kc[i].num,kc[i].name,kc[i].xz,kc[i].zks,kc[i].ks,kc[i].syks,kc[i].xf,kc[i].kk);//输出课程信息 } fclose(fp);}void xfcx()//学分查询模块{ FILE *fp; struct xk kc[N]; int i,n; fp=fopen("d://kcxx.txt","rb"); if(fp==NULL){ printf("Can not open file\n"); exit(1); } printf("输入学分\n"); scanf("%d",&i); for(n=0;!feof(fp);n++){ fread(&kc[n],sizeof(struct xk),1,fp); if(i==(kc[n].xf)) { printf("课程编号\t课程名称\t课程性质\t总课时\t授课学时\t实验或上机学时\t学分\t开课学期\n"); printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",kc[n].num,kc[n].name,kc[n].xz,kc[n].zks,kc[n].ks,kc[n].syks,kc[n].xf,kc[n].kk);//输出课程信息 } } fclose(fp);}void xzcx()//性质查询模块{ FILE *fp; struct xk kc[N]; int n=0; char i[20]; fp=fopen("d://kcxx.txt","rb"); if(fp==NULL){ printf("Can not open file\n"); exit(1); } printf("输入课程性质\n"); scanf("%s",i); while(!feof(fp)){//for(n=0;!feof(fp);n++){ fread(&kc[n],sizeof(struct xk),1,fp); if(!(strcmp(i,kc[n].xz))) { printf("课程编号\t课程名称\t课程性质\t总课时\t授课学时\t实验或上机学时\t学分\t开课学期\n"); printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",kc[n].num,kc[n].name,kc[n].xz,kc[n].zks,kc[n].ks,kc[n].syks,kc[n].xf,kc[n].kk);//输出课程信息 n++; } } fclose(fp);}void cx()//查询模块{ int i; printf("1、学分查询,2、课程性质查询\n"); scanf("%d",&i); switch(i) { case 1:xfcx();//进入学分查询 break; case 2:xzcx();//进入性质查询 break; default:printf("输入有误,重新输入。\n"); }}void xsxk()//学生选课{ FILE *fp; struct xk kc[N]; struct xsxx xs; struct xkjl jl[N]; fp=fopen("d:\\kcxx.txt","rb"); int n=0,i,j; if(fp==NULL){ printf("Can not open file\n"); exit(1); } while(!feof(fp)){//for(n=0;!feof(fp);n++){ fread(&kc[n],sizeof(struct xk),1,fp); n++; } xs.xuefen=0; for(n=0;n<N;n++){ jl[n].jlxf=0; printf("请输入课程名称\n");loop:scanf("%s",jl[n].name); for(i=0;!feof(fp);i++){ if(!(strcmp(jl[n].name,kc[i].name))){ jl[n].jlxf=kc[i].xf; xs.xsnum[n]=kc[i].num; break; } } if(!feof(fp)){ printf("课程不存在,请重新输入!\n"); goto loop; } for(i=0;i<n;i++){ if(xs.xsnum[n]==xs.xsnum[i]){ printf("输入有重复,请重新输入。\n"); goto loop; } } xs.xuefen+=jl[n].jlxf; if(xs.xuefen>60){ printf("选课成功!\n"); break; } } printf("课程编号\t课程名称\t课程性质\t总课时\t授课学时\t实验或上机学时\t学分\t开课学期\n"); for(j=0;j<=n;j++){ for(i=0;i<N;i++){ if(xs.xsnum[j]==kc[i].num){ printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",kc[i].num,kc[i].name,kc[i].xz,kc[i].zks,kc[i].ks,kc[i].syks,kc[i].xf,kc[i].kk);//输出课程信息 } } } fclose(fp);}void main()//主菜单{ int i; while(1){ printf(" 学生选课系统 \n"); printf(" 1、课程信息的录入 2、课程信息的浏览 3、查询课程 4、学生选课 \n"); scanf("%d",&i); switch(i) { case 1:lr(); break; case 2:ll();system("pause"); break; case 3:cx();system("pause"); break; case 4:xsxk();system("pause"); break; default:printf("输入有误!\n"); } system("cls"); }}
- 3 回答
- 0 关注
- 1553 浏览
添加回答
举报
0/150
提交
取消