《教材管理系统 - 报告.doc》由会员分享,可在线阅读,更多相关《教材管理系统 - 报告.doc(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、合肥学院计算机科学与技术系 课程设计任务书20102011学年第二学期课程C+课程设计课程设计名称教材管理系统学生姓名丁鹏勇学号专业班级10计科系网络工程(2)班指导教师何立新、陈艳平 20 11 年 6月一、 课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+程序设计语言的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际
2、业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。二、 课程设计名称及内容课程设计名称:教材管理系统设计内容:编写一个简单的教材管理程序,帮助管理教材信息。要求具有教材信息管理的功能。其中包括教材信息的录入、删除、查询和修改等功能。还应包括对课程
3、信息管理的功能。其中包括对课程信息的录入、删除、修改和查询等功能。三、 任务和要求运用面向对象的程序设计方法,要求选择动态数组类模板或链表类模板,任务中要运用I/O流对象对文件进行读写操作。本题程序应提供的基本管理功能有:1) 添加:即增加一条信息到教材信息中,或增加一条信息到课程信息中;2) 显示:即在屏幕上显示所有教材或课程信息;3) 存储:即将教材信息和课程信息分别保存在文件中;4) 装入:即将文件中的信息读入程序;5) 查询:可根据教材名称或编号查找相关信息,若找到,显示在屏幕上;也可根据课程编号或名称查找相关信息并显示; 6) 修改:可修改教材信息,或对课程信息进行修改。7) 程序应
4、输入不少于5个课程信息。并录入不少于5个教材信息。四、 设计方案提示l 创建教材信息类,每条教材信息都用该类来实现,包含教材编号,教材名称,出版社,刊号,征定学期,课程编号等。用动态数组来存储教材信息。将这些类对象存储在数组元素中。通过对数组的操作来处理每个类对象。l 创建课程信息类,每条课程信息都用该类来实现,包含课程编号,课程名称,开课学期,主讲教师等。用动态数组来存储课程信息。将这些类对象存储在数组元素中。通过对数组的操作来处理每个类对象。五、 主要知识点 l 面向对象程序设计方法l 界面制作,switch的应用。l 类和对象。l 动态数组(链表)类模板。l 文件的读写。l 程序设计可在
5、Microsoft VC+6.0、Borland C+ Builder环境下进行六、 需求分析信息的飞速发展,使得大家(特别是老师)手头的资料越来越。添加、遗失、查找、修改等等,非常不方便。所以为了帮助老师管理教材信息,以及工作的高效进行。建立一个简单的教材管理系统,开发出一款比较易用且方便的软件是非常必要的。教材管理系统已实现以下主要功能:因为系统为老师设计,所以包括了课程管理的功能。教材管理部分:教材信息的录入(包括:教材的编号、教材名称、教材出版社、教材刊号、教材征订学期、课程编号等。)、教材信息的删除、教材信息的查询(通过教材名称和编号查询和删除)、以及教材信息的修改等功能。还包括对课
6、程信息管理的功能。其中包括对课程信息的录入、删除、修改和查询等功能。大致与教材管理相同。七、 算法设计由以上需求设计两个类,一个是teaching_meterial类,另一个是course类。分别来定义教材及课程的属性及方法。当然因为教材不止一个,为了更方便的管理,还创建了一个数组类模板。用动态数组来储存教材及课程信息。1、 程序结构(UML图)2、 主要算法思想设计teaching_meterial类及course类,运用面向对象的设计对象的设计思想,实现对类的封装及成员的保护。运用数组类方便的存储多个教材和课程的信息。通过指针灵活的进行各函数间的地址传递及调用。运用文件保存信息,分别用te
7、aching_meterial.txt保存教材的信息,用course.txt保存课程的信息。3、 属性和方法的定义类名成员类型类型类型名功能描述teachingmeterial属性stringmeteial_num教材编号stringISSN_num刊号stringthe_fixed_term征订学期stringcourse_num课程编号stringmeterial_name教材名称stringbook_concern_name出版社名称方法stringget_meterial_num()返回教材编号stringget_ISSN_num()返回刊号stringget_the_fixed_te
8、rm()返回征订学期stringget_course_num()返回教材编号stringget_meterial_name()返回教材名字stringget_book_concern_name()返回出版社名字voidset_book_concern_name(string tmp_book_concern_name)修改出版社名字voidset_meterial_num(string tmp_meterial_num)修改教材编号voidset_ISSN_num(string tmp_ISSN_num)修改刊号voidset_course_num(string tmp_course_num)
9、修改课程编号voidset_meterial_name(string tmp_meterial_name)修改教材编号voidset_the_fixed_term(string tmp_the_fixed_term)修改征订学期istreamOperator (istream & in ,teaching_meterial & p)对重载,对教材信息的录入ostreamoperator (ostream & out ,const teaching_meterial & p)对 (istream & in ,course & p)重载对课程信息的录入ostreamostream & operat
10、or (ostream & out ,const course & p)重载对课程信息的输出类名成员类型类型类型名功能描述ArrayTemplate(class T)类模板属性T *listT类型指针intsiae数组大小方法Array(int sz=50)构造函数Array(const Array &a)复制函数Array()析构函数Array&operator=(const Array&rhs)重载=T &operator (int i)重载,增加普通数组功能const T &operator (int i) const运算符针对const的重载operator T *()重载到T *类型
11、的转换constoperator const T *()到T*类型转换操作符针对const的重载constgetSize() const取数组的大小voidresize (int sz)修改数组的大小4、 实现注释本系统实现了任务中提出的各项实现要求,其中包括教材信息的录入、删除、查询和修改等功能。还包括对课程信息的录入、删除、修改和查询等功能。在完成基本的要求的基础上,还实现了以下功能:可有用户自己输入想输入的信息个数。每进入另一个功能后的清屏功能。进入下一个菜单后的返回和退出功能等。5、 详细算法设计表示:首先进入调试的执行程序首先对教材信息还是对课程信息的管理的选择。for(int i=
12、0; ; ) coutendlendla;switch (a)case 1: /进入教材管理系统case 2: /进入课程管理系统case 3: /退出break;default: /这种情况不会发生if(a=3)break;void menu:menu_1() cout endl endl endl = 教材管理系统 = endl endl endl;cout tt 1、对教材信息的管理t endl endl;cout tt 2、对课程信息的管理t endl endl;cout tt 3、退出 endl endl - endl endl;若选“1”:则进入void menu:menu_2()
13、 cout endl endl endl = 欢迎使用教材管理系统 = endl endl endl;cout t a、教材信息的录入t t b、教材信息的删除 endl endl;cout t c、教材信息的查询t t d、教材信息的修改 endl endl;cout t e、返回 endl endl - endl endl;若选“2”:则进入因两个管理系统功能类似,故选课程管理系统举例详细介绍:a、课程信息的录入:case 2: /进入课程管理系统system(cls);menu_3(); coutc;switch(c)case a:case A:/课程信息的录入cout endl t请问
14、你要输入几个课程的信息? num_2;for(i=0;inum_2;i+)cout endl t请输入第i+1个课程信息!endlt_ci;cout endl;cout endl t录入完成!endl;system(pause); /暂停break;b、课程信息的删除case b:case B:/课程信息的删除cout endlcourse_temp;for(i=0;i10;i+)if(course_temp=t_ci.get_course_number() | (course_temp=t_ci.get_course_name()coutt_ci;cout endl 已成功删除以上信息!;d
15、ot_ci=t_ci+1;i+;while(i10);system(pause);elsecoutendlt没有找到你书写的课程信息!;system(pause);break;c、课程信息的查询case c:case C:/课程信息的查询for(i=0;i10;i+)coutt_ci;system(pause);break;在课程信息查询这里有一个不好的地方就是:屏幕上一下子显现出好多信息,无法用截屏工具把它完全截下来。它也只是将txt文档中的信息直接打印在屏幕上。所以在这里就不显示了。d、课程信息的删除case d:case D:/课程信息的修改cout kecheng;for (i=0;i
16、10;i+)if (kecheng=t_ci.get_course_number() | (kecheng=t_ci.get_course_name()cout t您要修改的是: endl t_ci;menu_5();cout n;switch (n)case a:case A:/对课程编号的修改cout kecheng_num;t_ci.set_course_number(kecheng_num);cout t修改成功! endl;system(pause);break;case b:case B:/对课程名称的修改cout kecheng_name;t_ci.set_course_name
17、(kecheng_name);cout t修改成功! endl;system(pause);break;case c:case C:/对开课学期的修改cout kecheng_term;t_ci.set_school_begin_term(kecheng_term);cout t修改成功! endl;system(pause);break;case d:case D:/对主讲教师的修改cout kecheng_teacher;t_ci.set_speaker_teacther(kecheng_teacher);cout t修改成功! endl;system(pause);break;case
18、e:case E:/返回break;default:cout t输入有误!;system(pause);continue;elsecout t您的输入有误!没有找到!endl;system(pause);break;接着弹出要修改信息的页面void menu:menu_5()cout endl endl endl = 请选择你要修改的项目 = endl endl endl;cout t a、对课程编号的修改t t b、对课程名称的修改 endl endl;cout t c、对开课学期的修改t t d、对主讲教师的修改 endl endl;cout t e、返回 endl endl - endl
19、 endl;以上是部分代表性函数及其功能的实现。另外还有安全退出系统界面,以及对教材的一些编辑管理的界面等功能没有一一写明。6、 用户使用说明书1、 教材管理系统1、 教材信息的输入2、 教材信息的修改3、 教材信息的删除4、 教材信息的增加5、 教材信息的查看6、 管理完毕,安全退出2、 课程管理系统1、 课程信息的输入2、 课程个数的输入3、 课程信息的修改4、 课程信息的删除5、 课程信息的查看6、 课程信息的增加7、 安全退出7、 调试与测试1、 在测试过程中进行数据输入时,首先会提示要输入多少个信息最多只能输入十个。因为刚开始只申请了十个。如果申请多了,查询时会弹出太多空的信息。改成
20、动态申请就很好的解决了。2、 在修改、删除中都要用到遍历与修改开始用的算法如果不能找到用户不正确显示错误信息而是出现系统错误,经过改动成用算法问题得到解决。3、 在完成设计初步时只能通过信息名称来查找,在经过改动之后可以同时通过名称和编号查找。只要输入名称或编号。都能找到所需信息。使程序更加实用。4、 在测试过程中,有些信息一闪而过,经过查询得知停止操作函数 system(“pause”)。得以执行暂停操作。5、 由于步骤较多,不采取清屏操作,使操作显得较为冗杂,经过查询得知清屏操作函数system(“cls”),得以执行清屏操作。8、 小结本系统虽说实现了较全的功能但是也存在着一些不足,比如
21、利用文件的读取与写入数据不易过多,各子模块的返回功能,另外本系统没有考虑安全问题,存在着安全隐患,在本系统中存在许多细节上的不足,比如在输入信息时不能输入空格,因为我是定义的是字符型。不能跳跃修改已经在文本文档中的信息,在运行时才能安全运行等。以上问题在我用c#编的windows窗口程序中有的已经解决。在本系统中,是我加深了对面向对象思想的理解,使自己更好的掌握了c+编程语言及vc6.0开发工具的使用技巧,并提高了自己对数组类的深刻认识及对编程本身的深刻认识,提高了自己用所学知识解决实际问题的能力八、 参考资料1 郑莉 等编著C+语言程序设计(第三版)北京:清华大学出版社2 郑莉 等编著C+语
22、言程序设计(第三版)学生用书北京: 清华大学出版社3 刘振安 等编著C+程序设计课程设计 机械工业出版社4 吴乃陵 等编著C+程序设计北京:高等教育出版社5 李春葆 等编著C+程序设计学习与上机实验指导 北京:清华大学出版社6 范辉 等编著Visual C+6.0程序设计简明教程 高等教育出版社【7 李龙澍C+程序设计实训教程北京:清华大学出版社 8 洪国胜 等编著 C+ Builder程序设计轻松上手北京:清华大学出版社9 宁正元数据结构(c语言) 南京:东南大学出版社。2000年6月第1版10 严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版。11 胡学钢等数据结
23、构算法设计指导北京:清华大学出版社,1999年 第1版。12 刘大有数据结构(面向21世纪课程教材) 北京:高等教育出版社。2001年6月第1版。13 明日科技 编著Visual C+程序开发范例宝典北京:人民邮电出版社14 游洪跃等编著C+面向对象程序设计实验和课程设计教程北京:清华大学出版社.2009.2附录:/菜单头文件#include #include #ifndef menu#define menuvoid menu_1();void menu_2();void menu_3();void menu_4();void menu_5();#endif menu/菜单的实现#includ
24、e menu.h#include #include using namespace std;void menu:menu_1() cout endl endl endl = 教材管理系统 = endl endl endl;cout tt 1、对教材信息的管理t endl endl;cout tt 2、对课程信息的管理t endl endl;cout tt 3、退出 endl endl - endl endl;void menu:menu_2() cout endl endl endl = 欢迎使用教材管理系统 = endl endl endl;cout t a、教材信息的录入t t b、教材信
25、息的删除 endl endl;cout t c、教材信息的查询t t d、教材信息的修改 endl endl;cout t e、返回 endl endl - endl endl;void menu:menu_3() cout endl endl endl = 欢迎使用课程管理系统 = endl endl endl;cout t a、课程信息的录入t t b、课程信息的删除 endl endl;cout t c、课程信息的查询t t d、课程信息的修改 endl endl;cout t e、返回 endl endl - endl endl;void menu:menu_4()cout endl endl endl = 请选择你要修改的项目 = endl endl endl;cout t a、对教材编号的修改t t b、对教材刊号的修改 endl endl;cout t c、对征订学期的修改t t d、对课程编号的修改 endl endl;cout t e、对教材名称的修改t t f、对出版社名称的修改endl endl;cout t g、返回 endl endl - endl endl;void menu:menu_5()cout endl endl endl = 请选择你要修改的项目 =
限制150内