课程管理系统2.docx
- 文档编号:30553771
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:11
- 大小:16.92KB
课程管理系统2.docx
《课程管理系统2.docx》由会员分享,可在线阅读,更多相关《课程管理系统2.docx(11页珍藏版)》请在冰豆网上搜索。
课程管理系统2
#include
#include
#include
#include
#defineN100/*最多的课程数*/
#defineP"课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期\n"
/*宏定义*/
structlesson/*课程结构体定义*/
{
charno[10];
charname[20];
charxingzhi[30];
intstime;
intttime;
intetime;
intscore;
intterm;
}les[N];
intnum,i;/*定义全局变量*/
#defineQles[i].no,les[i].name,les[i].xingzhi,les[i].stime,les[i].ttime,les[i].etime,les[i].score,les[i].term
/*宏定义*/
voidoutput();/*输出函数声明*/
voidinit();/*初始化函数声明*/
voidnewfile();/*新建文件函数声明*/
voidread1();/*读取文件函数声明*/
voidluru();/*录入函数声明*/
voidliulan();/*浏览函数声明*/
voidsort();/*排序函数声明*/
voidfind();/*查询函数声明*/
intfindname();/*判断字符匹配函数声明*/
voidxuanke();
intfindno();
voidsave();/*保存文件函数声明*/
voidmain()/*主控菜单的设计*/
{
intchoice=1;
printf("\t\t\t\t欢迎使用课程管理系统!
!
!
\n");
init();/*调用系统初始化函数*/
while(choice!
=5)
{
printf("\t\t\t***************************************\n");
printf("\t\t\t*主菜单*\n");
printf("\t\t\t*1:
课程信息录入*\n");
printf("\t\t\t*2:
课程信息浏览*\n");
printf("\t\t\t*3:
课程信息排序*\n");
printf("\t\t\t*4:
课程信息查询*\n");
printf("\t\t\t*5:
选课*\n");
printf("\t\t\t*6:
退出*\n");
printf("\t\t\t***************************************\n");
printf("请选择:
");
scanf("%d",&choice);
switch(choice)/*循环*/
{
case1:
luru();/*调用录入课程信息函数*/
break;/*跳出循环*/
case2:
liulan();/*调用浏览课程信息函数*/
break;
case3:
sort();/*调用排序课程信息函数*/
break;
case4:
find();/*调用查询课程信息函数*/
break;
case5:
xuanke();
break;
case6:
save();/*调用保存文件函数*/
printf("谢谢使用本系统!
\n");break;
default:
printf("选择错误,请重新选择!
\n");
}
}
}
voidoutput()/*输出课程信息*/
{
inti;
printf(P);/*宏定义后的简化语句*/
printf("==============================================================================\n");
for(i=0;i { printf("%7s%9s%9s%8d%9d%13d%12d%7d\n",Q); } } voidinit()/*系统初始化*/ { if(access("les.dat",0))/*判断文件是否存在*/ newfile();/*不存在创建新的数据文件*/ else read1();/*若存在,从文件中读取数据*/ } voidnewfile()/*从键盘输入课程信息并保存到文件中*/ { inti; FILE*fp; if((fp=fopen("les.dat","wb"))==NULL)/*创建二进制文件*/ { printf("文件创建失败! 请重新运行程序。 \n"); exit(0);/*终止运行程序*/ } printf("请输入课程数: "); scanf("%d",&num); for(i=0;i { printf("请输入第%d门课程的编号: ",i+1); getchar();/*吃掉回车符*/ gets(les[i].no); printf("课程名称: "); gets(les[i].name); printf("课程性质: "); gets(les[i].xingzhi); printf("总学时: "); scanf("%d",&les[i].stime); printf("授课学时: "); scanf("%d",&les[i].ttime); printf("试验或上机学时: "); scanf("%d",&les[i].etime); printf("学分: "); scanf("%d",&les[i].score); printf("开课学期: "); scanf("%d",&les[i].term); fwrite(&les[i],1,sizeof(structlesson),fp); /*把第i+1门课程信息写入文件*/ } fclose(fp);/*关闭文件*/ printf("你刚才输入的数据共有%d门课程信息。 详细数据为: \n",num); output();/*调用输出课程信息函数*/ } voidread1() { FILE*fp; num=0;/*为数据文件实际存储课程数*/ fp=fopen("les.dat","r"); if(fp==NULL)/*文件不存在*/ { printf("文件打开失败! 请重新运行程序。 \n"); exit(0);/*终止程序运行*/ } while(! feof(fp)) { fread(&les[num],1,sizeof(structlesson),fp);/*成块读取文件*/ num++; } num--; fclose(fp);/*关闭文件*/ } voidluru()/*录入课程信息*/ { printf("请输入课程编号: "); getchar();/*吃掉回车符*/ gets(les[num].no); printf("课程名称: "); gets(les[num].name); printf("课程性质: "); gets(les[num].xingzhi); printf("总学时: "); scanf("%d",&les[num].stime); printf("授课学时: "); scanf("%d",&les[num].ttime); printf("试验或上机学时: "); scanf("%d",&les[num].etime); printf("学分: "); scanf("%d",&les[num].score); printf("开课学期: "); scanf("%d",&les[num].term); num++; printf("现在共有%d个课程信息: \n",num); output();0 } voidliulan()/*浏览课程信息*/ { printf("\n目前有如下课程: \n"); output(); printf("回车返回上层菜单! "); getchar(); getchar(); } voidsort()/*按学期选择法排序*/ { inti,j,k; structlessontemp; for(i=0;i { k=i; for(j=i+1;j if(les[k].term>les[j].term) k=j; if(k! =i) { temp=les[i]; les[i]=les[k]; les[k]=temp; } } printf("排序后的课程信息为: \n"); output(); } voidfind()/*查询课程信息*/ { charcname[20]; inti; printf("请输入要查询课程的名称: "); getchar();/*吃掉回车符*/ gets(cname); i=findname(cname);/*调用判断字符匹配函数*/ if(i==-1) printf("要查询的课程名称不存在。 \n"); else { printf("查到的课程信息为: \n"); printf(P);/*宏定义后的简化语句*/ printf("===========================================================================\n"); printf("%7s%9s%9s%8d%9d%13d%12d%7d\n",Q); } } intfindname(charcname[]) { inti; for(i=0;i if(strcmp(les[i].name,cname)==0)/*判断两个字符串相等*/ returni;/*查询成功*/ return-1;/*查询失败*/ } voidxuanke()/*选课*/ { inti,j,n,s=0; chardno[10]; do{ printf("请输入你希望选择的课程数目: "); scanf("%d",&n); for(j=0;j { printf("请输入课程编号: "); scanf("%s",dno); i=findno(dno);/*调用判断字符匹配函数*/ if(i! =-1) s+=les[i].score; else printf("所选课程不存在! \n"); } if(s<60) printf("你选的课程总学分不足60! 请继续选择! \n"); }while(s<60); printf("选课成功! ! 你选的课程总学分为%d! \n",s); } intfindno(charsno[]) { inti; for(i=0;i if(strcmp(les[i].no,sno)==0)/*判断两个字符串相等*/ returni; return-1; } voidsave()/*将修改过的课程信息重新写回到数据文件中*/ { inti; FILE*fp; if((fp=fopen("les.dat","wb"))==NULL)/*创建二进制文件*/ { printf("文件创建失败! 请重新运行程序。 \n"); exit(0);/*终止程序运行*/ } for(i=0;i fwrite(&les[i],1,sizeof(structlesson),fp);/*把第i+1门课程写入文件*/ fclose(fp); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程 管理 系统