-1-高校课程表设计一、课程设计的的题目:高校课程表设计二、功能说明:学生课表建立系统是学生日常生活中必不可少的实用型小工具,它对于学生平时的学习生活有着相当重要的帮助作用。便于操作、显示精确、短小实用就是它的明显特点。本次课程设计目的:通过一个课程表建立系统,使学生的学业及其他事物的时间安排更加合理,从而达到提高日常工作、学习效率。使学生掌握一门高级程序设计语言,了解面向对象程序设计的基本概念与方法,进而学会利用C++语言学会解决一般应用问题,并为后续的专业课程奠定程序设计基础。系统的基本模块:根据系统功能的要求,课程表建立系统可以分为课程信息的输入,课程表的处理及建立等模块。通过分析可以知道该软件主要有以下功能模块:学生课程名称显示总学周时间显示教师显示地点显示星期显示一天中具体时间显示其中本次课程设计实现的档案模块又分为如下子模块:登陆界面:主要是增加系统的人性化,使用户舒心信息录入:主要是将课程相关信息录入信息处理显示项目:对学生课程信息进行处理、列表、显示。系统结构图1如下:-2-图1系统结构图三、类的.设计:各类的具体说明及描述kecheng类的设计为了实现管理系统的各功能首先定义了一个kecheng类,用来定义各种数据成员,声明这些功能函数。比如:说明为什么要这样设计系统用户进入课程信息输入名称教师教室总周数星期第几堂信息处理信息显示-3-setvalue(),showke()等,同时声明一些私有成员。classkecheng{public:voidsetvalue();voidshowke();stringming[16];stringjiao[16];stringdi[16];intqi[16];intjie[16];intxing[16];inttang[16];};关键功能的实现(1)信息的输入setvalue()函数用来输入相关信息,包括课程名称、教师名称、教室地点、课程起始周、课程结束周、上课的星期、上课的具体时间。输入一次信息之后可选择是否继续添加新的课程。此函数代码如下:1.基本信息输入voidkecheng::setvalue(){for(inti=0;i16;i++){cout*请输入课程名称(请简写不要超过6个字)endl;cinming[i];cout*请输入课程教师endl;cinjiao[i];-4-cout*请输入教室endl;cindi[i];cout*请输入课程的起始周endl;cinqi[i];2.如果输入错误,系统会自检,提示错误cout*请输入课程的结束周endl;cinjie[i];if(jie[i]20){cout输入错误!请重新输入endl;cinjie[i];}3.程序会对一课程多节课的现象进行处理cout*请输入课程一周有几天有endl;ints;cins;{for(intu=0;us;u++){ming[i+u]=ming[i];jiao[i+u]=jiao[i];di[i+u]=di[i];qi[i+u]=qi[i];jie[i+u]=jie[i];cout*请输入第u+1次课是星期几endl;cinxing[i+u];if(xing[i+u]7)-5-{cout输入错误!请重新输入endl;cinxing[i+u];}cout*请输入课程是第几堂endl;cintang[i+u];if(tang[i+u]5){cout输入错误!请重新输入endl;cintang[i+u];}}}i=i+s;4.输完一门课程之后,系统会自动提示是否进行下一课程的输入cout*请问是否继续下一个课程?(Y/N)endl;charnum;cinnum;if(num=='Y'||num=='y')continue;elsebreak;}}(2)信息的处理与输出showke()函数,此部分用来实现课程相关信息的排序,包括表格的建立与信息的对应输出,此函数用来显示课程表的界面,用了一些“——”号建立表格,在程序重的最后,通过for来实现整个程序的循环,并且使用了switch选择分支结构,使功能更容易实现。-6-1.基本课表表头的输出此函数代码如下:voidkecheng::showke(){cout////////////////////////////////endl;cout//课程表//endl;cout////////////////////////////////endl;cout_____________________________________________________________________________________________________endl;cout|一|二|三|四|五|六|日|endl;cout_____________________________________________________________________________________________________endl;2.对一天时间(1~10节)的格式输出此函数代码如下:for(inti=1;i6;i++){intl;switch(i){case1:cout一(1-2)|;break;case2:cout二(3-4)|;break;case3:cout三(5-6)|;break;case4:cout四(7-8)|;break;-7-case5:cout五(9-10)|;break;}3.循环输出课程信息,这里采用双循环,用于控制表格位置的对号输出及信息的循环输出此函数代码如下:for(intj=1;j8;j++){l=0;for(intn=0;n16;n++){if(tang[n]==i&&xing[n]==j){coutsetw(12)ming[n]|;l=1;}}if(l==0){cout|;}}coutendl;cout|;cout_____________________________________________________________________________________________________endl;}}-8-软件测试与调试进入本程序如图2所示图2登陆界面系统会提示输入相关信息,课程是星期几、第几堂是必须输入的,输入一次信息之后可选择是否继续添加新的课程如图3所示。图3显示输入界面如果选择不继续系统就会显示结果如图4所示-9-图4显示输出界面程序在执行时经常会出现一些违反设计期望的异常情况(如数值过大),一些大型的应用系统的开发人员提出,可以在允许的范围内由应用程序自身来处理一般性的程序运行错误。C++语言异常处理由三个部分构成。异常检测的触发、异常检测的捕获和异常检测的处理。在这里我通过添加检测函数来确保程序的正常运行代码如下:if(xing[i+u]7){cout输入错误!请重新输入endl;cinxing[i+u];}-10-结束语经过1周多的设计和开发,学生课程表建立基本开发完毕。其功能基本符合用户需求,能够完成信息完整输入以及各类报表的打印。对于数据的一致性的问题也通过程序进行了有效的解决。但是由于课程设计时间较短,所以该系统还有许多不足之处:比如系统维护功能,还不能让用户进行数据备份和恢复;用户界面不够美观;这些都有待进一步改善。附录:要注释源程序清单#includeiostream#includestring#includeiomanipusingnamespacestd;classkecheng//模块一{public://公有数据voidsetvalue();//输入函数voidshowke();//处理、输出函数stringming[16];//课程名stringjiao[16];//教师名stringdi[16];//教室地点intqi[16];//课程起始周intjie[16];//课程结束周intxing[16];//星期inttang[16];//第几堂};-11-voidkecheng::setvalue()//模块二{for(inti=0;i16;i++)//for循环控制输入{cout*请输入课程名称(请简写不要超过6个字)endl;cinming[i];cout*请输入课程教师endl;cinjiao[i];cout*请输入教室endl;cindi[i];cout*请输入课程的起始周endl;cinqi[i];if(qi[i]20){cout输入错误!请重新输入endl;//错误判断cinqi[i];//重新输入}cout*请输入课程的结束周endl;cinjie[i];if(jie[i]20)//错误判断{cout输入错误!请重新输入endl;cinjie[i];//重新输入}cout*请输入课程一周有几天有endl;//一门课一周几节的处理ints;cins;//输入节数{for(intu=0;us;u++)//for循环控制多节输入{-12-ming[i+u]=ming[i];jiao[i+u]=jiao[i];di[i+u]=di[i];qi[i+u]=qi[i];jie[i+u]=jie[i];cout*请输入第u+1次课是星期几endl;cinxing[i+u];if(xing[i+u]7){cout输入错误!请重新输入endl;cinxing[i+u];}cout*请输入课程是第几堂endl;cintang[i+u];if(tang[i+u]5){cout输入错误!请重新输入endl;cintang[i+u];}}}i=i+s;cout*请问是否继续下一个课程?(Y/N)endl;//是否继续输入charnum;cinnum;if(num=='Y'||num=='y')continue;//继续下一个elsebreak;//结束输入}}-13-voidkecheng::showke()//模块三{cout////////////////////////////////endl;//课表的页眉cout//课程表//endl;cout////////////////////////////////endl;cout_____________________________________________________________________________________________________endl;cout|一|二|三|四|五|六|日|endl;cout_____________________________________________________________________________________________________endl;for(inti=1;i6;i++){intl;//用l来检测此项是否有内容输出switch(i)//课表的一天节数输出{case1:cout一(1-2)|;break;case2:cout二(3-4)|;break;case3:cout三(5-6)|;break;case4:cout四(7-8)|;break;case5:cout五(9-10)|;break;}for(intj=1;j8;j++){l=0;for(intn=0;n16;n++)-14-{if(tang[n]==i&&xing[n]=