《课程设计论文学生选修系统论文》由会员分享,可在线阅读,更多相关《课程设计论文学生选修系统论文(44页珍藏版)》请在金锄头文库上搜索。
1、河北大学2010级本科生课程设计.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
4、the class information!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
5、2:myfind(desk);break;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设计函数:
6、int inset(),无参数,实现登录功能。登陆页面进入退出输入学号,密码错误 正确 图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:
7、 );scanf(%d,&bi);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+
8、10 是 i+ 否结束图3-2 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(
9、%-10s%-10s%-10s%-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查询单科
10、信息模块3.4.1设计函数:void 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
11、%-10s%-5sn,Code,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增加选修信息模块3.5.1设计函数:void myadd(Classin *wdesk),参数Classin结构体指针,实现添加功能。 void shunxu(Classin *wdesk),参数Classin结构体指针,实现排序功能。 void filewhite(Classin *wdesk),参数Classin结构体指针,实现数据写入文件功能。开始输入原来是否存在课程否 是添加课程