C课程设计选课系统程序.docx
- 文档编号:29780318
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:26
- 大小:330.85KB
C课程设计选课系统程序.docx
《C课程设计选课系统程序.docx》由会员分享,可在线阅读,更多相关《C课程设计选课系统程序.docx(26页珍藏版)》请在冰豆网上搜索。
C课程设计选课系统程序
《高级语言程序设计》课程设计报告
设计题目:
学生选修课程系统设计
计人班级:
软件1111
设计组名称:
伊利
项目组
学号
姓名
组长
2011813012
高嵩
组员
2011813013
杨杰斌
组员
2011813015
任清凡
组员
2011813017
翁金闪
设计起止时间:
2012.6.18-2012.6.20
集美大学计算机学院软件工程专业
2012年6月21日
项目组工作总结暨评价
项目组名称:
学号
姓名
职责
评价
2011813012
高嵩
负责课程信息浏览和学生选修课程模块
2011813013
杨杰斌
负责课程信息录入和写设计报告
2011813015
任清凡
负责课程信息查询
2011813017
翁金闪
负责选课程序和程序整合
1.功能综述
①、系统以菜单方式工作
②、课程信息录入功能(课程信息用文件保存)--输入
③、课程信息浏览功能--输出
④、课程信息查询功能--算法
查询方式:
按学分查询、按课程性质查询、
⑤、学生选修课程(可选项)
2.分析与设计说明
程序流程图
●
3.代码分析
Ⅰ.课程信息录入
voidinsert()
{
voidmain();
FILE*fp;/*声明fp是指针,用来指向FILE类型的对象*/
structcoursec;
intcount;
inti;/*定义整形变量count,i*/
if((fp=fopen("course.txt","a+"))==NULL)
/*以读和追加方式打开文件course.txt,如果失败,则指向空指针*/
{
printf("cannotopenfile\n");
}
printf("\n请输入课程门数:
\n");
scanf("%d",&count);
printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:
\n");
for(i=0;i { scanf("%d%s%s%d%d%d%d%d",&c.number,&c.name,&c.kind,&c.total_time,&c.lesson_time,&c.test_time,&c.mark,&c.term); fprintf(fp,"%d%s%s%d%d%d%d%d\n",c.number,c.name,c.kind,c.total_time,c.lesson_time,c.test_time,c.mark,c.term); } fclose(fp);/*关闭fp所指向的文件*/ main(); } Ⅱ.课程信息浏览 voidlook() { voidmain(); FILE*fp; structcoursec; inta; if((fp=fopen("course.txt","r"))==NULL)/*以只读方式打开文件course.txt,如果失败,则指向空指针*/ { printf("\nCannotopencourse! \n"); } printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期: \n"); for(;! feof(fp);)/*判断指针是否已经到达文件尾部,若fp已经指向文件末尾,则! feof(fp)函数值为“假”则跳出循环*/ { fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.number,&c.name,&c.kind,&c.total_time,&c.lesson_time,&c.test_time,&c.mark,&c.term); printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.number,c.name,c.kind,c.total_time,c.lesson_time,c.test_time,c.mark,c.term); } fclose(fp);/*关闭fp所指向的文件*/ printf("\n1-返回主菜单;2-退出选课系统\n"); scanf("%d",&a); if(a==2) exit(0); elseif(a==1) main(); else{ printf("输入错误,请重新使用系统\n"); main(); } } Ⅲ.课程信息查询 voidsearch() { voidmain(); FILE*fp; structcoursec; Intscore;/*学分*/ charkind[10];/*性质*/ inta; intb; printf("1.按学分查询,2.按课程性质查询.\n"); printf("请选择查询方式,输入选项数字: "); scanf("%d",&b); if(b==1) { printf("\n请输入您要查询的学分: \n"); scanf("%d",&score); if((fp=fopen("course.txt","r"))==NULL) { printf("\nCannotopencourse! \n"); } printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期: \n"); for(;! feof(fp);)/*检测是否到文件尾*/ { fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.number,&c.name,&c.kind,&c.total_time,&c.lesson_time,&c.test_time,&c.mark,&c.term); if(c.mark==score) printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.number,c.name,c.kind,c.total_time,c.lesson_time,c.test_time,c.mark,c.term); } } elseif(b==2){ printf("\n请输入您要查询的课程性质: \n"); scanf("%s",&kind); if((fp=fopen("course.txt","r"))==NULL) { printf("\nCannotopencourse! \n"); } printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期: \n"); for(;! feof(fp);) { fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.number,&c.name,&c.kind,&c.total_time,&c.lesson_time,&c.test_time,&c.mark,&c.term); if(strcmp(c.kind,kind)==0) printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.number,c.name,c.kind,c.total_time,c.lesson_time,c.test_time,c.mark,c.term); } } else{ printf("输入错误! "); exit (1); } fclose(fp); printf("\n1-返回主菜单;2-退出选课系统\n"); scanf("%d",&a); if(a==2) exit(0); elseif(a==1) main(); else{ printf("输入错误,请重新使用系统\n"); main(); } } Ⅳ.统计选课情况 voidinformation()/*自定义函数*/ { voidmain(); inttotal=0; inta; FILE*fp;/*声明fp是指针,用来指向FILE类型的对象*/ structstudents;/*定义结构变量*/ if((fp=fopen("student.txt","r"))==NULL)/*以只读方式打开文件student.txt,如果失败,则指向空指针*/ { printf("\nCannotopenstudent! \n"); } printf("学号课程编号课程名称\n"); for(;! feof(fp);)/*判断指针是否已经到达文件尾部,若fp已经指向文件末尾,则! feof(fp)函数值为“假”则跳出循环*/ { fscanf(fp,"%d%d%s\n",&s.snum,&um,&ame);/*读取fp*/ total++; printf("%7d%9d%13s\n",s.snum,um,ame); } printf("\n选课学生总人数为: %d人",total); fclose(fp);/*关闭fp所指向的文件*/ printf("\n1-返回主菜单;2-退出选课系统\n"); scanf("%d",&a); if(a==2) exit(0); elseif(a==1) main();/*回到主函数*/ else{ printf("输入错误,请重新使用系统\n"); main(); } } Ⅴ.学生选修课程 voidxuanxiukecheng() { voidmain(); structstudents; structcoursec; inta; FILE*fp;/*声明fp是指针,用来指向FILE类型的对象*/ printf("\n请输入您的学号及您要选择的课程编号: "); scanf("%d%d",&s.snum,&um); if((fp=fopen("course.txt","r"))==NULL)*以只读方式打开文件course.txt,如果失败,则指向空指针*/ { printf("\nCannotopencourse! \n"); } for(;! feof(fp);) /*判断指针是否已经到达文件尾部,若fp已经指向文件末尾,则! feof(fp)函数值为“假”则跳出循环*/ { fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.number,&c.name,&c.kind,&c.total_time,&c.lesson_time,&c.test_time,&c.mark,&c.term); if(um==c.number)/*判断输入选课的课程编码是否与已有的课程编码相同*/ break; } fclose(fp);/*关闭fp所指向的文件*/ if((fp=fopen("student.txt","a+"))==NULL) /*以读和追加方式打开文件student.txt,如果失败,则指向空指针*/ { printf("\nCannotopenstudent! \n"); } fprintf(fp,"%d%d%s\n",s.snum,um,c.name); fclose(fp);/*关闭fp所指向的文件*/ printf("\n1-返回主菜单;2-退出选课系统\n"); scanf("%d",&a); if(a==2) exit(0); elseif(a==1) main();/*回到主函数*/ else{ printf("输入错误,请重新使用系统\n"); main(); } } 4.运行结果 5.设计总结 刚接到课程设计题目的时候,小组成员都刚一片茫然,无从下手。 之后的一个早上里,小组成员一起忙碌,上网查资料,看书,一起讨论。 经过一个早上的努力,终于有了一点思路。 又经过下午的奋斗,程序大体的框架就这么确定下来。 虽然思路有了,但是在此后一天的编程,很艰难,程序总是不断出错,然后小组成员一起找错,终于在第二天下午攻克了这个程序。 在本次课程设计中,我们遇到了很多困难,很多编程小问题都不断出现,最终,我们在此次课程设计中学到了很多。 一个好的程序,不仅需要优秀的程序员,小组间的合作更是不可缺少的。 6.附录: ●附录1: ●#include ●#include ●#include ● ●structcourse ●{ ●intnumber;/*课程编号*/ ●charname[20];/*课程名称*/ ●charkind[10];/*程序性质*/ ●inttotal_time;/*总学时*/ ●intlesson_time;/*授课学时*/ ●inttest_time;/*实验或上机学时*/ ●intmark;/*学分*/ ●intterm;/*开课学期*/ ●}; ●structstudent ●{ ●intsnum;/*学生学号*/ ●intcnum;/*学生所选课程编号*/ ●charcname[20];/*学生所选课程名称*/ ●}; ● ● ●/*课程信息录入*/ ●voidinsert() ●{ ●voidmain(); ●FILE*fp; ●structcoursec; ●intcount; ●inti; ●if((fp=fopen("course.txt","a+"))==NULL) ●{ ●printf("cannotopenfile\n"); ●} ●printf("\n请输入课程门数: \n"); ●scanf("%d",&count); ●printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期: \n"); ●for(i=0;i ●{ ●scanf("%d%s%s%d%d%d%d%d",&c.number,&c.name,&c.kind,&c.total_time,&c.lesson_time,&c.test_time,&c.mark,&c.term); ●fprintf(fp,"%d%s%s%d%d%d%d%d\n",c.number,c.name,c.kind,c.total_time,c.lesson_time,c.test_time,c.mark,c.term); ●} ●fclose(fp); ●main(); ●} ● ●/*课程信息浏览*/ ●voidlook() ●{ ●voidmain(); ●FILE*fp; ●structcoursec; ●inta; ●if((fp=fopen("course.txt","r"))==NULL) ●{ ●printf("\nCannotopencourse! \n"); ●} ●printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期: \n"); ●for(;! feof(fp);) ●{ ●fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.number,&c.name,&c.kind,&c.total_time,&c.lesson_time,&c.test_time,&c.mark,&c.term); ●printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.number,c.name,c.kind,c.total_time,c.lesson_time,c.test_time,c.mark,c.term); ●} ●fclose(fp); ●printf("\n1-返回主菜单;2-退出选课系统\n"); ●scanf("%d",&a); ●if(a==2) ●exit(0); ●elseif(a==1) ●main(); ●else{ ●printf("输入错误,请重新使用系统\n"); ●main(); ●} ●} ●/*课程信息查询*/ ●voidsearch() ●{ ●voidmain(); ●FILE*fp; ●structcoursec; ●intscore; ●charkind[10]; ●inta; ●intb; ●printf("1.按学分查询,2.按课程性质查询.\n"); ●printf("请选择查询方式,输入选项数字: "); ●scanf("%d",&b); ●if(b==1) ●{ ●printf("\n请输入您要查询的学分: \n"); ●scanf("%d",&score); ● ●if((fp=fopen("course.txt","r"))==NULL) ●{ ●printf("\nCannotopencourse! \n"); ●} ●printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期: \n"); ●for(;! feof(fp);) ●{ ●fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.number,&c.name,&c.kind,&c.total_time,&c.lesson_time,&c.test_time,&c.mark,&c.term); ●if(c.mark==score) ●printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.number,c.name,c.kind,c.total_time,c.lesson_time,c.test_time,c.mark,c.term); ●} ●} ●elseif(b==2){ ●printf("\n请输入您要查询的课程性质: \n"); ●scanf("%s",&kind); ● ●if((fp=fopen("course.txt","r"))==NULL) ●{ ●printf("\nCannotopencourse! \n"); ●} ●printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期: \n"); ●for(;! feof(fp);) ●{ ●fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.number,&c.name,&c.kind,&c.total_time,&c.lesson_time,&c.test_time,&c.mark,&c.term); ●if(strcmp(c.kind,kind)==0) ●printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.number,c.name,c.kind,c.total_time,c.lesson_time,c.test_time,c.mark,c.term); ●} ●} ●else{ ●printf("输入错误! "); ●exit (1); ●} ●fclose(fp); ●printf("\n1-返回主菜单;2-退出选课系统\n"); ●scanf("%d",&a); ●if(a==2) ●exit(0); ●elseif(a==1) ●main(); ●else{ ●printf("输入错误,请重新使用系统\n"); ●main(); ●} ●} ● ●/*统计选课情况*/ ●voidinformation() ●{ ●voidmain(); ●inttotal=0; ●inta; ●FILE*fp; ●structstudents; ●if((fp=fopen("student.txt","r"))==NULL) ●{ ●printf("\nCannotopenstudent! \n"); ●} ●printf("学号课程编号课程名称\n"); ●for(;! feof(fp);) ●{ ●fscanf(fp,"%d%d%s\n",&s.snum,&um,&ame); ●total++; ●printf("%7d%9d%13s\n",s.snum,um,ame); ●} ●printf("\n选课学生总人数为: %d人",total); ●fclose(fp); ●printf("\n1-返回主菜单;2-退出选课系统\n"); ●scanf("%d",&a); ●if(a==2) ●exit(0); ●elseif(a==1) ●main(); ●else{ ●printf("输入错误,请重新使用系统\n"); ●main(); ●} ●} ● ●/*学生选修课程*/ ●voidxuanxiukecheng() ●{ ●voidmain(); ●structstudents; ●structcoursec; ●inta; ●FILE*fp; ●printf("\n请输入您的学号及您要选择的课程编号: "); ●scanf("%d%d",&s.snum,&um); ●if((fp=fopen("course.txt","r"))==NULL) ●{ ●printf("\nCannotopencourse! \n"); ●} ●for(;! feof(fp);) ●{ ●fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.number,&c.name,&c.kind,&c.total_time,&c.lesson_time,&c.test_time,&c.mark,&c.term); ●if(um==c.number) ●break; ●} ●fclose(fp); ●if((fp=fopen("student.txt","a+"))==NULL) ●{ ●printf("\nCannotopenstudent! \n"); ●} ●fprintf(fp,"%d%d%s\n",s.snum,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 选课 系统 程序