课程设计(论文)学生选修系统论文.doc
《课程设计(论文)学生选修系统论文.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)学生选修系统论文.doc(44页珍藏版)》请在三一办公上搜索。
1、.1 需求分析1.1课题要解决的问题系统以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;由于课程信息要用文件保存,因而要提供文件的输入输出操作;由于要浏览信息,所以要提供显示功能;要实现查询功能,故要提供查找操作。1.2要求,限制条件及预期的功能整个系统可以设计为信息输入模块、信息查询模块以及信息浏览模块。数据结构采用结构体,这里采用课程信息结构体和学生选课信息结构体。从键盘输入课程信息和学生信息,写入文件。分屏显示课程信息,每屏10条课程记录,按任意键继续。从文件中读数据,然后再显示。学生查询课程信息并选课,将选课信息存入文件。通过菜单选择查询字段,可以按照课程编号、课程名称、课程性
2、质、开课学期、学分对课程信息文件进行查找,查找算法可以选择基本查找、二分查找等算法。可以通过菜单选择课程编号,在学生选课信息文件中查询该课程学生选修情况。2 总体设计思路2.1总体构思学生选修系统需要进入登陆页面,选修课程,管理选修课程(删除,添加,修改等)2.2使用知识及大概实现想法2.2.1使用知识标准化输入输出,输入输出的格式控制,数组的应用,函数的使用,判断、循环等语句使用,字符串比较,程序模块化,文件的基本操作(建立文件,写文件等),分屏显示,清屏。2.2.2大概是实现想法建立首页面显示,信息输入,显示选修信息,查询单课选修信息,添加选修课程信息,删除选修课程信息,修改选修课程信息,
3、学生学修课程信息,显示学生选修信息九大模块。分每个模块实现其功能主模板显示选修信息查询单课选修信息添加选修课程信息删除选修课程信息修改选修课程信息学生学修课程信息显示学生选修信息退出信息输入 图2-1 总流程图3 详细设计3.1主函数模块 首先创建文件,输入课程信息,将课程信息读入文件,其次再用switch语句实现八个模块的调用,再从八个大模块中运用几个小模块事项操作目的。if(cfptr=fopen(LessonInfo.txt,r)=NULL)printf(the file cantt be openedn);printf(You should enter the class inform
4、ation!n);mywrite(desk);else i=0;while(!feof(cfptr)fscanf(cfptr,%s%s%s%d%d%d%f%d,deski.courseCode,deski.courseName,deski.courseType,&deski.totalPeriod,&deski.classPeriod,&deski.experiPeriod,&deski.creditHour,&deski.term);i+;while(choice!=8)switch(choice)case 1:myread(desk);break;case 2:myfind(desk);b
5、reak;case 3:myadd(desk);shunxu(desk);filewhite(desk);break;case 4:mydelete(desk);filewhite(desk);break;case 5:mymodify(desk);shunxu(desk);filewhite(desk);break;case 6:selection(desk,studentin);filewrite(studentin);break;case 7:output(studentin);break;default:break;3.2信息输入模块3.2.1设计函数:int inset(),无参数,
6、实现登录功能。登陆页面进入退出输入学号,密码错误 正确 图3-1 insect函数流程图3.2.2设计思路及代码首先建立第一个文件,之后创建登录页面。if(tp=fopen(password.txt,r)=NULL)printf(The password is miss!n);printf(Please register first);tp=fopen(password.txt,w);printf(Please enter your student number: );scanf(%d,&ai);printf(Please enter the password: );scanf(%d,&bi)
7、;printf(nnregister success!nn);fprintf(tp,%dt%dn,ai,bi);fclose(tp);printf(enter any key to continue.n);fflush(stdin);scanf(%c,&x);system(cls);使用ifelse判断语句,判断是否存在学号,再用for循环逐个筛选,查看密码是否相符。3.3显示选修信息模板3.3.1设计函数:void myread(Classin *wdesk),参数Classin结构体指针,实现选修功能。开始j100 否是Tperiod!=0 否j+=5ij+10 是 i+ 否结束图3-2
8、myread函数流程图3.3.2设计思路及代码两个for循环的嵌套,第一个for循环实现所有科目输出,当总课时为0时,跳出循环;第二个for循环实现分屏显示课程信息,每屏10条课程记录,按任意键继续。从文件中读数据,然后再显示。 for(j=0;jN;j+=10)printf(%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-5sn,Code,Name,Type,Period,tPeriod,ePeriod,cHour,term);for(i=j;ij+10;i+)if(wdeski.totalPeriod=0)break;printf(%-10s%-10s%-10s%
9、-10d%-10d%-10d%-10.2lf%-5dn,wdeski.courseCo de,wdeski.courseName,wdeski.courseType,wdeski.totalPeriod,wdeski.classPeriod,wdeski.experiPeriod,wdeski.creditHour,wdeski.term);printf(please enter any key to nex);fflush(stdin);scanf(%c,&k);system(cls);if(wdeski.totalPeriod=0)break;3.4查询单科信息模块3.4.1设计函数:vo
10、id myfind(Classin *wdesk),参数Classin结构体指针,实现查询功能开始j100Tperiod!=0否 是课程号相同否 是输出课程,是否继续是 结束否 图3-3 myfind函数流程图3.4.2设计思路及代码:使用for循环逐个筛选,使用strcmp函数实现字符串比较 for(i=0;i=N-1;i+)if(strcmp(Number,wdeski.courseCode)=0)if(wdeski.totalPeriod=0.0)printf(nnn);break;printf(%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-5sn,Code,
11、Name,Type,tPeriod,cPeriod,ePeriod,cHour,term);printf(%-10s%-10s%-10s%-10d%-10d%-10d%-10.2f%-5dn,wdeski.courseCode,wdeski.courseName,wdeski.courseType,wdeski.totalPeriod,wdeski.classPeriod,wdeski.experiPeriod,wdeski.creditHour,wdeski.term);flag=0;break;if(flag=-1)printf(The classe is not existn);3.5增
12、加选修信息模块3.5.1设计函数:void myadd(Classin *wdesk),参数Classin结构体指针,实现添加功能。 void shunxu(Classin *wdesk),参数Classin结构体指针,实现排序功能。 void filewhite(Classin *wdesk),参数Classin结构体指针,实现数据写入文件功能。开始输入原来是否存在课程否 是添加课程 是否再输入是 退出图3-4 myadd函数流程图开始计算课程总数比较两科,前者小于后者否 是 是互换两科目比较完成否 是退出图3-5 shunxu函数流程图开始打开文件总课时为0是否i100否 是将数组写入文件
13、i+关闭文件结束图3-6 filewhite函数流程图3.5.2设计思想及代码使用for语句看是否有相同课程,利用ifelse若没有,再利用数组增加课程信息;若有则显示“此课程存在”信息。在使用for循环和strcmp函数根据课程编号对课程进行排序。之后利用文件将课程读入,在文件中使用“w”将之前所有的课程信息覆盖,避免重复。(增加课程信息中的)for(i=0;i=N-1;i+) if(strcmp(nub,wdeski.courseCode)=0) printf(The courseCode is exist!n); printf(Enter other key to continue(en
14、ter * to the menu).nn); fflush(stdin); scanf(%c,&m); break; /*存在所输课程信息*/ if(wdeski.totalPeriod=0) strcpy(wdeski.courseCode,nub); printf(Please enter the courseName:); scanf(%s,wdeski.courseName); printf(Please enter the courseType:); scanf(%s,wdeski.courseType); printf(Plese enter the totalPeriod:);
15、 scanf(%d,&wdeski.totalPeriod); printf(Plese enter the classPeriod:); scanf(%d,&wdeski.classPeriod); printf(Plese enter the experiPeriod:); scanf(%d,&wdeski.experiPeriod); printf(Plese enter the creditHour:); scanf(%f,&wdeski.creditHour); printf(Plese enter the term:); scanf(%d,&wdeski.term); printf
16、(nAdd successful!nPlease enter a new class number(enter * to the menu).n); fflush(stdin); scanf(%c,&m); printf(nn); filewhite(wdesk); break; /*增加课程信息*/(排序中的)while(wdeskk+.totalPeriod!=0);/*计算有多少课程门课程的信息*/for(i=1;ik-1;i+) for(j=0;j=k-2;j+) if(strcmp(wdeskj.courseCode,wdeskj+1.courseCode)0) if(wdeskj+
17、1.totalPeriod=0) break;/*排列到尾是时结束*/ temp=wdeskj+1; wdeskj+1=wdeskj; wdeskj=temp; /*交换*/ (将课程信息写入文件中的)do if(wstudentini.stuNo=0)break; fprintf(sfptr,%dt,wstudentini.stuNo); if(wstudentini.courseCode=0) fprintf(sfptr,n); break; fprintf(sfptr,%st,wstudentini.courseCode); i+;while(i50);3.6删除选修信息模块3.6.1设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 论文 学生 选修 系统

链接地址:https://www.31ppt.com/p-4225233.html