学生选课系统C语言课程设计.docx
- 文档编号:8949335
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:16
- 大小:63.12KB
学生选课系统C语言课程设计.docx
《学生选课系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《学生选课系统C语言课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
学生选课系统C语言课程设计
西安理工大学C语言课程设计任务:
题目:
学生选修课程系统设计
功能:
假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。
试设计一选修课程系统。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;
2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上
3、完成上述添加、查找(课程编号、课程名称、课程性质等)、修改等功能。
4、进一步要求:
学生选修课程(可选项)
要求:
1、用C语言实现程序设计;
2、利用结构体数组实现信息的数据结构设计;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序加必要的注释。
课程设计实验报告要求:
1、预习报告:
题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。
2、实验总结报告:
流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。
源程序代码:
#defineN20/*宏定义最多课程数,即结构体数组长度*/
#include
#include
#include
structxkxt
{
intnum;/*课程编号*/
charname[20];/*课程名称*/
charkind[10];/*课程性质*/
intstime;/*总学时*/
intttime;/*授课学学时*/
intetime;/*实验或上机学时*/
floatscore;/*学分*/
intterm;/*开课学时*/
}x[N];
intsize1,size2;
voidnewbuild()/*新建课程信息函数*/
{
FILE*fp;
inti;
fp=fopen("xk.txt","wb");/*打开文件并判断是否打开*/
for(i=0;i if(fwrite(&x[i],sizeof(structxkxt),1,fp)! =1) {printf("\n文件写入错误\n"); exit(0); } else {if(i==0) {printf("\n你输入的内容为: \n"); printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); } printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); } fclose(fp); } voidadd()/*添加课程信息函数*/ { FILE*fp; inti; if((fp=fopen("xk.txt","ab"))==NULL)/*打开文件并判断是否打开*/ {printf("\n不能打开此文件\n"); exit(0); } for(i=0;i if(fwrite(&x[i],sizeof(structxkxt),1,fp)! =1) {printf("\n文件写入错误\n"); exit(0); } else {if(i==0) {printf("\n你输入的内容为: \n"); printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); } printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); } fclose(fp); } voidsearch()/*查找课程信息函数*/ {FILE*fp; inti,n; intnum; charname[20]; charkind[10]; if((fp=fopen("xk.txt","rb"))==NULL)/*打开文件并判断是否打开*/ {printf("\n不能打开此文件\n"); exit(0); } printf("\n全部内容为: \n"); printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); for(i=0;fread(&x[i],sizeof(structxkxt),1,fp)! =0;i++)/*写入文件并在屏幕输出*/ {printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); } printf("\n请输入你要按哪个类型查找: 1,课程编号;2,课程名称;3,课程性质。 \n"); do/*根据类型查找课程*/ {scanf("%d",&n); switch(n) {case1: printf("\n请输入课程编号: \n");scanf("%d",&num); for(i=0;i<20;i++) if(num==x[i].num) {printf("\n你要查找的课程信息为: \n"); printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); break; } break; case2: printf("\n请输入课程名称: \n");scanf("%s",name); for(i=0;i<20;i++) if(strcmp(name,x[i].name)==0) {printf("\n你要查找的课程信息为: \n"); printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); break; } break; case3: printf("\n请输入课程性质: \n");scanf("%s",kind); for(i=0;i<20;i++) if(strcmp(kind,x[i].kind)==0) {printf("\n你要查找的课程信息为: \n"); printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); break; } break; default: printf("\n输入错误,请重新输入: \n"); } } while(n<1||n>3);/*实现重新输入的功能*/ if(i==20) printf("\n无法找到所对应的课程,请重新查找。 \n"); fclose(fp); } voidmodify()/*修改课程信息函数*/ {FILE*fp; intflag=0,size=0,n,i; intnum[2],num1; charname[2][20],name1[20]; charkind[2][10],kind1[10]; intstime[2]; intttime[2]; intetime[2]; floatscore[2]; intterm[2]; if((fp=fopen("xk.txt","rb"))==NULL)/*打开文件并判断是否打开*/ {printf("\n不能打开此文件\n"); exit(0); } printf("\n原来内容为: \n"); printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); for(i=0;fread(&x[i],sizeof(structxkxt),1,fp)! =0;i++)/*写入文件并在屏幕输出*/ {printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); } fclose(fp); printf("\n请先按以下三种方式确定你要修改的课程: 1,课程编号;2,课程名称;3,课程性质。 \n"); do/*根据类型查找课程*/ {scanf("%d",&n); switch(n) {case1: printf("\n请输入课程编号: \n");scanf("%d",&num1); for(i=0;i<20;i++) if(num1==x[i].num) {printf("\n你要查找的课程信息为: \n"); printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); break; } break; case2: printf("\n请输入课程名称: \n");scanf("%s",name1); for(i=0;i<20;i++) if(strcmp(name1,x[i].name)==0) {printf("\n你要查找的课程信息为: \n"); printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); break; } break; case3: printf("\n请输入课程性质: \n");scanf("%s",kind1); for(i=0;i<20;i++) if(strcmp(kind1,x[i].kind)==0) {printf("\n你要查找的课程信息为: \n"); printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); break; } break; default: printf("\n输入错误,请重新输入: \n"); } } while(n<1||n>3);/*实现重新输入的功能*/ if(i==20) {printf("\n无法找到所对应的课程,请重新修改。 \n"); return; } printf("\n请输入你要修改课程信息的编号: \n1,课程编号;2,课程名称;3,课程性质;4,总学时;5,授课学学时;\n6,实验或上机学时;7,学分;8,开课学时。 \n"); do {if(flag)/*判断是否是重新输入*/ printf("\n输入有误,请重新输入你要修改课程信息的编号: \n"); scanf("%d",&n); switch(n) {case1: printf("\n请输入要修改的课程编号: \n"); scanf("%d",&num[0]); printf("\n请输入修改后的课程编号: \n"); scanf("%d",&num[1]); flag=1; if(num[0]==x[i].num) {x[i].num=num[1]; flag=0; } break; case2: printf("\n请输入要修改的课程名称: \n"); scanf("%s",&name[0]); printf("\n请输入修改后的课程名称: \n"); scanf("%s",&name[1]); flag=1; if(strcmp(x[i].name,name[0])==0) {strcpy(x[i].name,name[1]); flag=0; } break; case3: printf("\n请输入要修改的课程性质: \n"); scanf("%s",&kind[0]); printf("\n请输入修改后的课程性质: \n"); scanf("%s",&kind[1]); flag=1; if(strcmp(x[i].kind,kind[0])==0) {strcpy(x[i].kind,kind[1]); flag=0; } break; case4: printf("\n请输入要修改的课程总学时: \n"); scanf("%d",&stime[0]); printf("\n请输入修改后的课程总学时: \n"); scanf("%d",&stime[1]); flag=1; if(stime[0]==x[i].stime) {x[i].stime=stime[1]; flag=0; } break; case5: printf("\n请输入要修改的课程授课学学时: \n"); scanf("%d",&ttime[0]); printf("\n请输入修改后的课程授课学学时: \n"); scanf("%d",&ttime[1]); flag=1; if(ttime[0]==x[i].ttime) {x[i].ttime=ttime[1]; flag=0; } break; case6: printf("\n请输入要修改的课程实验或上机学时: \n"); scanf("%d",&etime[0]); printf("\n请输入修改后的课程实验或上机学时: \n"); scanf("%d",&etime[1]); flag=1; if(etime[0]==x[i].etime) {x[i].etime=etime[1]; flag=0; } break; case7: printf("\n请输入要修改的课程学分: \n"); scanf("%f",&score[0]); printf("\n请输入修改后的课程学分: \n"); scanf("%f",&score[1]); flag=1; if(score[0]==x[i].score) {x[i].score=score[1]; flag=0; } break; case8: printf("\n请输入要修改的课程开课学期: \n"); scanf("%d",&term[0]); printf("\n请输入修改后的课程开课学期: \n"); scanf("%d",&term[1]); flag=1; if(term[0]==x[i].term) {x[i].term=term[1]; flag=0; } break; } } while(flag); for(i=0;i<20;i++)/*统计总的课程数*/ if(x[i].term) size++; fp=fopen("xk.txt","wb");/*打开文件并判断是否打开*/ for(i=0;i if(fwrite(&x[i],sizeof(structxkxt),1,fp)! =1) printf("\n文件写入出错\n"); fclose(fp); if((fp=fopen("xk.txt","rb"))==NULL)/*打开文件并判断是否打开*/ {printf("\n不能打开此文件\n"); exit(0); } printf("\n修改后的全部内容为: \n"); printf("*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n"); for(i=0;i printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num, x[i].name,x[i].kind,x[i].stime,x[i].ttime, x[i].etime,x[i].score,x[i].term); fclose(fp); } voidmain() { intn,i; do {printf("\n***************************欢迎使用学生选修课程系统***************************\n\n"); printf("\t\t\t请输入实现功能的编号\n\t\t\t*\t1,新建;\t*\n\t\t\t*\t2,添加;\t*\n\t\t\t*\t3,查找;\t*\n\t\t\t*\t4,修改;\t*\n\t\t\t*\t0,退出。 \t*\n"); printf("\n你选择的是: "); scanf("%d",&n); switch(n)/*实现新建、添加、查找、修改功能*/ { case0: break; case1: printf("\n请输入要输入的课程数目: "); scanf("%d",&size1); printf("\n请输入所有课程的信息: \n*******************************************************************************\n"); for(i=0;i { if(i) printf("\n请再输入下一门课的信息: \n\n"); printf("请输入课程编号: "); scanf("%d",&x[i].num); printf("\n请输入课程名称: "); scanf("%s",x[i].name); printf("\n请输入课程性质: "); scanf("%s",x[i].kind); printf("\n请输入课程总学时: "); scanf("%d",&x[i].stime); printf("\n请输入课程授课学学时: "); scanf("%d",&x[i].ttime); printf("\n请输入课程实验或上机学时: "); scanf("%d",&x[i].etime); printf("\n请输入课程学分: "); scanf("%f",&x[i].score); printf("\n请输入课程开课学期: "); scanf("%d",&x[i].term); } newbuild();break; case2: printf("\n请输入要输入的课程数目: "); scanf("%d",&size2); printf("\n请输入所有课程的信息: \n*******************************************************************************\n"); for(i=0;i { if(i) printf("\n请再输入下一门课的信息: \n\n"); printf("\n请输入课程编号: "); scanf("%d",&x[i].num); printf("\n请输入课程名称: "); scanf("%s",x[i].name); printf("\n请输入课程性质: "); scanf("%s",x[i].kind); printf("\n请输入课程总学时: "); scanf("%d",&x[i].stime); printf("\n请输入课程授课学学时: "); scanf("%d",&x[i].ttime); printf("\n请输入课程实验或上机学时: "); scanf("%d",&x[i].etime); printf("\n请输入课程学分: "); scanf("%f",&x[i].score); printf("\n请输入课程开课学期: "); scanf("%d",&x[i].term); } add();break; case3: search();break; case4: modify();break; default: printf("\n输入有误,请重新输入! \n"); } } while(n);/*实现循环输入*/ printf("******************************谢谢使用本系统,再见******************************\n"); } 运行示例: ###############
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 选课 系统 语言 课程设计