基于C++的课程表建立系统的实现
学生姓名:朱银满 指导老师:罗奕
摘 要 随着现代化计算机技术的发展,计算机的应用已经无处不再。无论是在工厂、公司还是其它地方,特别是在校园中,这科学与学识不断更新的领地,计算机的使用已经是大势所趋。计算机使用时具有简易、方便等功能,设计一个基于C++的课程表建立系统只是一个学生生活中的基本应用。它方便同学们学习生活中的细节。本课程表使用了面向对象的方法,运用Microsoft Visual C++ 6.0实现了信息输入立即处理,建立详细标准的学习课表。
关键词 C++ ; 建立课表;
- 1 -
朱银满 《基于C++的课程表建立系统的设计与实现》 第- 2 -页 共16页
目录
1 引 言 ................................................................................................... - 3 - 2系统需求分析 ......................................................................................... - 4 -
2.1问题定义 ............................................................................... - 4 - 2、2 可行性研究 ........................................................................... - 4 - 2、3 需求分析............................................................................... - 5 - 3 总体设计 ............................................................................................. - 5 - 4 详细设计 ................................................................................................... 7 4.1 student类的设计 .......................................................................... 7 4.2数据结构的设计 .......................................................................... - 7 - 4.3关键功能的实现 .......................................................................... - 8 - 5 软件测试与调试 ...................................................................................... 13 6 结束语 ..................................................................................................... 15 7致谢 .......................................................................................................... 15 参考文献 ................................................................................................. - 15 - 附录:....................................................................................................... - 16 -
- 2 -
朱银满 《基于C++的课程表建立系统的设计与实现》 第- 3 -页 共22页
1 引 言
学生课表建立系统是学生日常生活中必不可少的实用型小工具,它对于学生平时的学习生活有着相当重要的帮助作用。便于操作、显示精确、短小实用就是它的明显特点。
计算机已经成为我们学习和工作的得力助手:
今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:
首先,计算机可以代替人工进行许多繁杂的劳动; 其次,计算机可以节省许多资源;
第三,计算机可以大大的提高人们的工作效率等等。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机来建立学生的课表有着非常明显的优点。它便于课表的实现,直观的观察使同学的观察和读取更加简易。
本次课程设计目的:通过一个课程表建立系统,使学生的学业及其他事物的时间安排更加合理,从而达到提高日常工作、学习效率。使学生掌握一门高级程序设计语言,了解面向对象程序设计的基本概念与方法,进而学会利用C++语言学会解决一般应用问题,并为后续的专业课程奠定程序设计基础。
系统的基本模块:根据系统功能的要求,课程表建立系统可以分为课程信息的输入,课程表的处理及建立等模块。
- 3 -
朱银满 《基于C++的课程表建立系统的设计与实现》 第- 4 -页 共22页
2系统需求分析
2.1问题定义
问题定义主要是用来初步的确定设计的规模和目标,通过这一阶段应该提出关于问题性质、工程的目标和规模的书面报告。问题定义阶段是软件生命周期中最简短的阶段,此次设计花了一周的时间,问题定义报告如下: 项目:学生课程管理应用软件。
目的:让同学有效的管理课程信息,帮助同学掌握课程时间及其它状况。 背景:当前学生对上课时间及其它信息掌握不到位,存在不到、迟到或忘记课程等状况。
2、2 可行性研究
可行性研究的最终目的就是利用最小的代价在尽可能短的时间内确定问题是否能够解决。这一阶段只是确定问题是否值得去解,而不是去解决问题。要考虑能否解决主要从下面两个方面考虑:
(1)技术可行性 使用现有技术是否能够实现这个系统。
(2)经济可行性 就是该系统的经济效益能超过它的开发成本吗? (3)操作可行性
从技术方面,是通过C++来做系统的前台,来实现整系统的功能;从操作方面,基本的录入、查看等都能满足用户的需求;此次设计没有考虑经济可行性。经过这一阶段确定了该系统的粗略系统流程图(图3-1)。
可行研究阶段的目标是:使工作人员从繁琐的填表,查表工作中解放出来;提高工作质量,使供需双方都获得满意的结果;促进报表,提高工作效率。
- 4 -
朱银满 《基于C++的课程表建立系统的设计与实现》 第- 5 -页 共22页
2、3 需求分析
应该确定系统必须在Microsoft Visual C++ 6.0的环境下实现具有录入、处理、显示的学生课程表建立系统。
通过以上可以知道该软件主要有以下功能模块: 学生课程名称显示 总学周时间显示 教师显示 地点显示 星期显示
一天中具体时间显示
其中本次课程设计实现的档案模块又分为如下子模块: 登陆界面:主要是增加系统的人性化,使用户舒心 信息录入:主要是将课程相关信息录入 信息处理
显示项目:对学生课程信息进行处理、列表、显示。
3 总体设计
总体设计的目标:简单的说是回答“概括的说,系统应该如何实现?”这个问题,所以总体设计又称概要设计或初步设计。而总体设计的过程是系统设计,首先定义一个包含了学生课程信息的struct结点,其次定义一个kecheng类来实现封装。下面先说一下一些相关的概念:模块化是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能及问题的要求。采用模块化原理可以使软件结构清晰,容易设计也容易阅读和理解,也易于测试和调度,所以它有利于提高软件的可靠性和可修改性;抽象是人类认识复杂事物时最有力的思维工具;模块独立是模块化、抽象、信息隐蔽和局部化概念的直接结果。内聚和耦合是对模块独立程度的两个定性标准合衡量
- 5 -
朱银满 《基于C++的课程表建立系统的设计与实现》 第- 6 -页 共22页
不同模块间彼此间互相依赖的紧密程度;内聚衡量一个模块内部各个元素彼此间结合的紧密程度。软件的系统结构图如下图3-1所示:
系统 用户进入 课程信息输入 名称 教师 教室 总周数 星期 第几堂 信息处理 信息显示
图3-1 系统结构图
- 6 -
朱银满 《基于C++的课程表建立系统的设计与实现》 第- 7 -页 共22页
4 详细设计
4.1 kecheng类的设计
为了实现管理系统的各功能首先定义了一个kecheng类,用来定义各种数据成员,声明这些功能函数。比如:说明为什么要这样设计
setvalue(),showke()等 ,同时声明一些私有成员。 class kecheng { public: };
void setvalue(); void showke(); string ming[16]; string jiao[16]; string di[16]; int qi[16]; int jie[16]; int xing[16]; int tang[16];
4.2数据结构的设计
数据字典:
数据字典包括以下几种类型的条目:
数据流条目--数据流条目给出某个数据流和定义,它通常是列出该数据流的各组成数据元素。
该系统中的数据流条目有:
课程基本信息=课程名称+教师名称+教室地点+课程起始、结束时间+
- 7 -
朱银满 《基于C++的课程表建立系统的设计与实现》 第- 8 -页 共22页
上课的星期+上课的具体时间 逻辑结构的设计如表4-1所示:
表4-1课程基本信息结构设计 列名 Ming [ ] Jiao[ ] Di[ ] Qi[ ] Jie[ ] Xing[ ] Tang[ ]
数据类型 string string string int int int] int 可否为空 NOT NULL NULL NULL NULL NULL NOT NULL NOT NULL 说明 课程名称 教师名称 教室地点 课程起始周 课程结束周 上课的星期 上课的具体时间
4.3关键功能的实现
(1)信息的输入
setvalue()函数用来输入相关信息,包括课程名称、教师名称、教室地点、课程起始周、课程结束周、上课的星期、上课的具体时间。输入一次信息之后可选择是否继续添加新的课程。 此函数代码如下: 1.基本信息输入
void kecheng::setvalue() {
for(int i=0;i<16;i++) {
cout<<\"*请输入课程名称(请简写 不要超过6个字)\"< cout<<\"*请输入课程教师\"< cout<<\"*请输入教室\"< cout<<\"*请输入课程的起始周\"< 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 9 -页 共22页 cin>>qi[i]; 2.如果输入错误,系统会自检,提示错误 cout<<\"*请输入课程的结束周\"< } 3.程序会对一课程多节课的现象进行处理 cout<<\"*请输入课程一周有几天有\"< cout<<\"输入错误! 请重新输入\"< - 9 - 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 10 -页 共22页 } cout<<\"*请输入课程是第几堂\"< { cout<<\"输入错误! 请重新输入\"< } 4.输完一门课程之后,系统会自动提示是否进行下一课程的输入 } (2)信息的处理与输出 showke()函数,此部分用来实现课程相关信息的排序,包括表格的建立与信息的对应输出,此函数用来显示课程表的界面,用了一些“——”号建立表格, 在程序重的最后,通过for 来实现整个程序的循环,并且使用了switch选择分支结构,使功能更容易实现。 - 10 - } cout<<\"*请问是否继续下一个课程?(Y/N)\"< if(num=='Y'||num=='y') continue; else break; 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 11 -页 共22页 1.基本课表表头的输出 此函数代码如下: void kecheng::showke() { cout<<\" ////////////////////////////////\"< 表//\"< ////////////////////////////////\"< ___________________________________________\"< | 五 | 六 | 日 | \"< ___________________________________________\"< { int l; switch(i) { case 1:cout<<\"一(1-2) |\";break; case 2:cout<<\"二(3-4) |\";break; case 3:cout<<\"三(5-6) |\";break; case 4:cout<<\"四(7-8) |\";break; - 11 - 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 12 -页 共22页 case 5:cout<<\"五(9-10) |\";break; } 3.循环输出课程信息,这里采用双循环,用于控制表格位置的对号输出及信息的循环输出 此函数代码如下: for(int j=1;j<8;j++) { } cout< l=0; for(int n=0;n<16;n++) { } if(l==0) { cout<<\" |\"; } if(tang[n]==i&&xing[n]==j) { } cout< ___________________________________________\"< 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 13 -页 共22页 5 软件测试与调试 进入本程序如图4-1所示 图4-1 登陆界面 系统会提示输入相关信息,课程是星期几、第几堂是必须输入的,输入一次信息之后可选择是否继续添加新的课程如图4-2所示。 - 13 - 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 14 -页 共22页 图4-2 显示输入界面 如果选择不继续 系统就会显示结果如图4-3所示 图4-3 显示输出界面 程序在执行时经常会出现一些违反设计期望的异常情况(如数值过大),一些大型的应用系统的开发人员提出,可以在允许的范围内由应用程序自身来处理一般性的程序运行错误。C++语言异常处理由三个部分构成。异常检测的触发、异常检测的捕获和异常检测的处理。在这里我通过添加检测函数来确保程序的正常运行 代码如下: if(xing[i+u]>7) { cout<<\"输入错误! 请重新输入\"< } - 14 - 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 15 -页 共22页 6 结束语 经过1周多的设计和开发,学生课程表建立基本开发完毕。其功能基本符合用户需求,能够完成信息完整输入以及各类报表的打印。对于数据的一致性的问题也通过程序进行了有效的解决。 但是由于课程设计时间较短,所以该系统还有许多不足之处:比如 系统维护功能,还不能让用户进行数据备份和恢复;用户界面不够美观;这些都有待进一步改善。 通过一个学期的学习,我认为要学好C++语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。特别是作为高职生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。 7 致谢 在本次课程设计中,罗奕老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。在整个设计过程中给与我很大的帮助,特别是她看完我们所做的半成品之后,给了很多意见并指出其中的错误和不足之处,使我们得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮助,感谢她耐心的辅导。另外,在系统开发过程中,很多同学给我提供了无私的帮助,他们牺牲自己宝贵的时间给我传授丰富的知识经验,在此表示衷心的感谢。 参考文献 [1] 《Visual C++6.0信息管理系统开发》 - 15 - 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 16 -页 共22页 [2] 谭浩强 《C++程序设计》 北京:清华大学出版社 [3] 宜晨 《Visual C++5.0实用培训教程》北京:电子工业出版社,1998 附录: 要注释 源程序清单 #include class kecheng //模块一 { public: //公有数据 void setvalue(); //输入函数 void showke(); //处理、输出函数 string ming[16]; //课程名 string jiao[16]; //教师名 string di[16]; //教室地点 int qi[16]; //课程起始周 int jie[16]; //课程结束周 int xing[16]; //星期 int tang[16]; //第几堂 }; void kecheng::setvalue() //模块二 { - 16 - 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 17 -页 共22页 for(int i=0;i<16;i++) //for循环控制输入 { cout<<\"*请输入课程名称(请简写 不要超过6个字)\"< cout<<\"*请输入课程教师\"< cout<<\"*请输入教室\"< cout<<\"*请输入课程的起始周\"< if(qi[i]>20) { } cout<<\"*请输入课程的结束周\"< if(jie[i]>20) //错误判断 { } cout<<\"*请输入课程一周有几天有\"< for(int u=0;u - 17 - cout<<\"输入错误! 请重新输入\"< cout<<\"输入错误! 请重新输入\"< 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 18 -页 共22页 } } jiao[i+u]=jiao[i]; di[i+u]=di[i]; qi[i+u]=qi[i]; jie[i+u]=jie[i]; cout<<\"*请输入第\"<cin>>xing[i+u]; if(xing[i+u]>7) { cout<<\"输入错误! 请重新输入\"< } cout<<\"*请输入课程是第几堂\"< cout<<\"*请问是否继续下一个课程?(Y/N)\"< if(num=='Y'||num=='y') continue; //继续下一个 else break; //结束输入 { cout<<\"输入错误! 请重新输入\"< } void kecheng::showke() //模块三 - 18 - 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 19 -页 共22页 { cout<<\" ////////////////////////////////\"< 表//\"< ////////////////////////////////\"< ______________________________________________\"< | 五 | 六 | 日 | \"< __________________________________________\"< int l; //用l来检测此项是否有内容输出 switch(i) //课表的一天节数 输出 { case 1:cout<<\"一(1-2) |\";break; case 2:cout<<\"二(3-4) |\";break; case 3:cout<<\"三(5-6) |\";break; case 4:cout<<\"四(7-8) |\";break; case 5:cout<<\"五(9-10) |\";break; } for(int j=1;j<8;j++) { l=0; for(int n=0;n<16;n++) - 19 - 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 20 -页 共22页 { if(tang[n]==i&&xing[n]==j) { cout< } if(l==0) { cout<<\" |\"; } } cout< for(int n=0;n<16;n++) { if(tang[n]==i&&xing[n]==j) { cout< } if(l==0) { cout<<\" | \"; } //若没有则输出空格 //教师输出 //若没有则输出空格 - 20 - 朱银满 《基于C++的课程表建立系统的设计与实现》 第- 21 -页 共22页 } cout< cout< for(int n=0;n<16;n++) { if(tang[n]==i&&xing[n]==j) { cout<<\" (\"< l=0; for(int n=0;n<16;n++) { } if(l==0) { cout<<\" | \"; //若没有则输出空格 } if(tang[n]==i&&xing[n]==j) { } cout< 周 \"; //总周数输出 } cout< cout< cout<<\"|\"; l=1; cout<<\"___________________________________________________________ __________________________________________\"< int main() //模块四 { cout<<\"***************欢迎使用课程表建立系统 } ^-^***************\"< *************** 请 输 入 相 关 课 程 信 息 ***************\"< - 22 - ke.setvalue(); //若没有则输出空格用 ke.showke(); return 0; 因篇幅问题不能全部显示,请点此查看更多更全内容cout<<\"*请输入第\"<cin>>xing[i+u]; if(xing[i+u]>7) {ming[i+u]=ming[i];