图书借阅系统VC++论文_第1页
图书借阅系统VC++论文_第2页
图书借阅系统VC++论文_第3页
图书借阅系统VC++论文_第4页
图书借阅系统VC++论文_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录摘要11 引言11.1 问题的提出11.2任务与分析1课题任务1任务分析12需求分析22.1功能需求22.2数据需求22.3性能需求23.概要设计24.详细设计24.1 Qt/Embedded的安装24.2 Qtopia 的安装34.3编写源代码的思路34.4流程图45 核心代码56.测试分析96.1文件打开测试96.2总体测试97 附录10总结15致谢16参考文献17摘 要随着计算机性能的日益增强,用途的日益广泛,面向对象方法为现代解决一些复杂的问题提供了很大的帮助,面对对象程序设计可以更直接描述客观世界存在的事物以及事物之间的相互关系,它所强调的基本原则是直接面对客观事物本身进行抽象

2、并在此基础上进行软件开发,将人类的思维方式和表达方式应用在软件开发中。C+是人类思维的一个重大突破,是程序设计语言发展的一个历史性飞跃。C+语言一方面全面兼容C,另一方面是支持面向对象的方法。学习C+程序设计语言,可以让我们对程序设计语言的理解和运用深刻化、时代化。课程设计是我们从理论走向实践的桥梁,是锻炼我们运用理论知识能力的良机。随着计算机的普及,社会信息量的与日俱增,周围信息储存的主要媒介之一图书,其数量规模比以前任何时候都大,无能个人还是图书管理部门都需要使用有效而又方面的方式来管理图书管的书籍。现代人的时间观越来越强,生活也越来越忙,由于相互之间信息交流的量也越来越大。在学校对于学生

3、借阅图书的基本信息的管理,如何使其更加方便快捷也成了人们追求的目标,并且急需这样的软件来完成更多的功能。关键词:图书借阅信息管理 C+程序设计 软件开发1 引 言 1.1 问题的提出在C+中,类是面向对象程序设计方法的核心,利用它可以实现对数据的封装、隐蔽,通过类的继承和派生,能够实现对问题的深入抽象描述,为解复杂的实际问题提供了更为简洁明了的思维方式与开发工具。在面向过程的结构化程序设计中,程序的模块是由函数构成的。函数是逻辑上相关的语句与数据的封装,用于完成特定的功能,类是逻辑上相关的函数与数据的封装,它是对所要处理的问题的抽象描述。因此,后者的集成程度更高,也就更适合用于大型复杂程序的开

4、发。理论知识的学习,是循序渐进的,在将书本知识运用到实践的过程中,则需要把每一步的基础知识都综合起来解决问题,课程设计是一个理论与实践相融合的平台,在学校中对于图书馆学生借阅图书管理是一类常见的需求问题,好的管理系统,可以让信息组织得清晰明了,可以节约学生和工作人员大量的时间来查询书籍和相关的质料,可以避免遗忘,混乱等麻烦。图书馆借阅系统通常具有查询,修改,删除,等基本功能。在这次的课程设计中,我的课题是图书借阅系统,与一般的借阅管理系统类似,我需要解决的问题主要有:首先,设计总体思路;其次,如何实现这些功能;最后,如何对这些功能的实现进行优化,给用户提供较好的操作环境与界面。1.2任务与分析

5、 课题任务建立一个图书借阅系统,对图书、读者和借书情况进行处理。各对象有以下信息需要处理:1. 每本书有书号、书名和作者姓名;2. 读者有借书证号、读者姓名、最大借阅量;3. 能提供若干本书由读者进行选择,打印出读者的借书情况4. 图书和读者信息应保存在相应的文件中便于查询和借阅。任务分析(1)定义一个book类对图书的相关信息进行封装,由manage()函数为用户提供友好的界面方便用户的选择,creat()函数实现对图书的新建,rework()函数对图书的修改,delet()函数对图书的删除等功能;(2)定义一个user类对借阅者的相关信息进行封装,由manage()函数为用户提供友好的界面

6、方便用户的选择,creat()函数实现对借阅者信息的新建,rework()函数对图书的修改,delet()函数对图书的删除等功能;(3)再定义一个record 类对借阅者的相关借阅信息的记录和一个派生类mulclass 由函数manage()实现友好界面,borrow()函数实现借阅者借阅图书的有关信息是否能借阅,back()函数实现借阅者归还书的相关信息,book_query()函数实现相关图书资料的查询,user_query()函数实现借阅者历史的查询;(4)定义主函数,使用switch语句根据用户的输入信息与所要实现的相关功能的函数匹配来实现用户的目的。2系统分析 人类对问题的认识由一个

7、逐步深入的过程,面向对象的程序设计方法就比较适合人来认识问题的客观规律。对具体问题进行分析、抽象,将其中的一些属性和行为抽象成相应的数据和函数,封装到类中,用这个类在计算机中描述显示世界中的问题。这里将完成一个图书借阅系统程序的设计,把借阅者和图书的信息分别封装在类中。系统中是运用C+的主要特点对各个不同功能要求设计一个函数来实现,而这些函数由设计为相应不同类的共有成员,而数据则设计为是由成员,用户通过清晰的界面进入完成想要实现的功能。先理清思路然后画出大概的流程图,设计一个比较清楚的程序,改程序主要是分别完成对图书和借阅者的新建、修改、删除相关信息的查询。而图书和读者信息应保存在相应的文件中

8、。 2.1功能需求 设计一个图书类book,包括图书的新建、修改、删除和借阅者类user包括借阅者的新建、修改、删除,mulclass类则实现图书的借阅和归还,查询图书和借阅这借阅的历史,其中设计一个record 类对实现对借阅者的相关借阅信息的记录,其中在mulclass类内嵌子对象abook、arecord和asuer。用I/O流对象引用作参数的成员函数实现文件存取,便于查询、修改和删除。完成借阅者对图书借阅的查询,浏览所有图书信息,查询自己借阅图书的信息,管理者修改借阅者和图书的信息 ,删除信息等并关闭系统功能。各子函数要求实现如下功能:1. 新建图书的信息在文件中2. 对图书信息的修改

9、3. 对图书馆现不存在的图书删除4新建借阅者的有关信息在文件中5. 对借阅者信息的修改6. 对不存在的借阅者删除7. 对要借图书的信息查询8. 对归还图书的操作9. 对图书管里图书信息的查询10. 对借阅者历史信息的查询。总体要求1. 该系统要求利用面向对象的程序设计过程即使用C+的编程思想来完成基本的设计。2. 要求突出函数的特征,以多个函数实现每一个子功能。3. 画出功能模版图,采用简单的界面设计。4. 有清晰的程序流程图和数据结构的详细定义。本人所做的模块(1) book类各成员有:如图2.1book类String name;String no;book();book();void ma

10、nage();void creat();void rework();void delete(); 图2.1 (2) user类各成员有:如图2.2 user类String name;String no;user();user();void manage();void creat();void rework();void delete(); 图2.2(3) record类的成员有:如图2.3record类record()record()user ausebook abookstring borrowTimestring backTimestring backTime 图2.3(4) 派生mulc

11、lass类的成员有:如图2.4mulclass类book abook;record arecorduser auser;mulclass();mulclass();void manage();void borrow();void back();void query-inter();void book-query();void user-query();book get-abook();user get-auser(); 3设计思路 构建一主函数通过mulclass object对象把其他类的公有成员联系起来,用switch( ) 函数建立菜单然后进入不同菜单中根据用户通过数字键的选择完成对所需

12、不同功能对应函数的调用。根据题目要求详细设计了如下4个类,且各个类中各函数实现的作用如下: 1. book类主要是实现对管理、新建、修改、删除成员函数和图书名和其编号的封装 其中公有成员函数: manage( ):实现用户进入的友好界面功能;creat( ): 实现管理者对图书的新建功能;rework( ): 实现对图书信息的修改功能;delet( ): 实现对图书信息的删除功能。其中私有数据成员为图书的名字和编号。2. user类主要是实现对管理、新建、修改、删除成员函数和借阅者姓名和其编号的封装。其中公有成员函数: manage( ):实现用户进入的友好界面功能;creat( ): 实现管

13、理者对借阅者新成员的新建功能;rework( ): 实现对借阅者信息的修改功能;delet( ): 实现对借阅者信息的删除功能。其中私有数据成员为借阅者的姓名和编号。3. record类主要是实现对一些借阅者信息的封装保护。 内嵌借阅者对象,图书对象。将借阅的时间,应还时间,是否超时定义为私有数据成员。4 mulclass类是将接图书,还图书,图书信息的查询,借阅者借阅历史的查询和以上设计的各个类的对象封装在一起。其中各公有函数成员的作用: manage( ):实现为用户提供界面的功能; borrow( ): 实现借图书信息查询的功能; back( ): 实现还图书的功能: query_int

14、er( ):实现用户查阅信息提供的界面的功能; book_query( ): 实现图书信息的查阅; user_query(): 实现借阅者借阅历史的查询。4.总体设计 主函数 图书借阅归还用户信息管理图书信息管理 信息查询 退出系统返回借阅历史图书查询 返回 还书借书删除修改新建 删除 修改新建5.回查询- 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9

15、 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9

16、 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 - 9 -5.5555 55555详细设计与实现5.1 主函数的阐述函数原型:int main()设计思路:通过switch()建立菜单,每个数字对应一个大的功能函数,声明一个mulclass 的对象object,通过对象名访问类中所需的函数,用户就可以进入系统根据自己想要实现的要求选择不同的数字键对不同功能函数的调用。核心代码:char inter_face()cout << endl << endl;cout << "t=" << e

17、ndl << "t+ +" << endl << "t+ 图 书 借 阅 系 统 +" << endl << "t+ +" << endl << "t+ 1. 图书信息管理 +" << endl << "t+ +" << endl << "t+ 2. 用户信息管理 +" << endl << "t+ +"

18、; << endl << "t+ 3. 图书借阅/归还 +" << endl << "t+ +" << endl << "t+ 4. 信息查询 +" << endl << "t+ +" << endl << "t+ 5. 退出系统 +" << endl << "t+ +" << endl << "t=

19、" << endl << endl;cout << "ttt"return getchar();int main()mulclass object;while (1)switch (inter_face()case '1': object.get_abook().manage();break;case '2':object.get_asuer().manage();break;case '3':object.manage();break;case '4':objec

20、t.query_inter();break;case '5':cout << endl << "tt谢谢使用!" << endl << endl << "tt"exit(0);break;default:break;return 0;运行结果:如图5.1所示 图 5.15.2图书信息管理模块的具体阐述 函数原型:void book:manage()设计思路:通过switch()建立菜单,管理员可以根据上面的提示选择想要实现的功能,每个数字对应一个实现功能不同的函数。可以根据选择不

21、同的数字键来实现图书的新建、修改、删除功能。核心代码:void book:manage()while (1)cout << endl;cout << "t" << endl << "t " << endl << "t 图书信息管理 " << endl << "t " << endl << "t 1. 新建 " << endl << "t &qu

22、ot; << endl << "t 2. 修改 " << endl << "t " << endl << "t 3. 删除 " << endl << "t " << endl << "t 4. 返回 " << endl << "t " << endl << "t" << endl

23、 << endl;cout << "ttt"switch (getchar()case '1':creat();break;case '2':rework();break;case '3':delet();break;case '4':return;break;default:break;运行结果:如图5.2 图5.25.2.1图书信息管理中的新建模块的阐述:函数原型:void book:creat()设计思路:先打开一个名为bookfile文件一写的方式将图书新的信息写入文件中并保存。

24、核心代码:void book:creat()cout << endl << "根据提示输入新的图书信息" << endl << endl; cout << "图书名字 : "cin >> name;cout << endl << " 编号 : "cin >> no;ofstream bookfile;bookfile.open("total.txt", ios:out);/打开文件并输写bookfile &l

25、t;< setiosflags(ios:left) << setw(20) << name << " "<< no << endl;bookfile.close();cout << endl << endl << "新图书信息已经保存!" << endl << endl;运行结果:如图5.3 图 5.35.2.2图书信息管理中的修改模块函数原型:void book:rewok设计思路:先输入想要修改的图书编号,打开bookfile

26、所指向名为total的文件,将里面的信息读出来,然后再打开一个名为temp的文件将修改的信息存在里面。在设计思路过程中主要是根据输入的信息与已经存在文件里的信息相比较。核心代码:void book:rework()string findno;cout << endl << "修改图书信息" << endl << endl;cout << "请输入要修改的图书编号 : "cin >> findno;ifstream bookfile;bookfile.open("total.

27、txt",ios:in);if (!bookfile)cout << endl << "对不起信息库为空!" << endl << endl;return;bool flag = false; ofstream temp;temp.open("temp.txt",ios:out);while (bookfile >> name >> no)if (no = findno)flag = true;cout << endl << "你想修的图书

28、信息如下 : " << endl << endl;cout << "图书名字 : " << name << endl << endl<< " 编号 : " << no << endl << endl << endl;cout << "请在下面输入新的信息 : " << endl << endl;cout << "图书名字 : "

29、cin >> name;cout << endl << " 编号 : "cin >> no;temp << setiosflags(ios:left) << setw(20) << name << " "<< no << endl;else temp << setiosflags(ios:left) << setw(20) << name << " " <<

30、 no << endl;bookfile.close();temp.close();if (flag)ofstream bookfile1("total.txt");ifstream temp1("temp.txt");bookfile1 << temp1.rdbuf() << endl;cout << endl << "新信息已经保存!" << endl << endl;elsecout << endl << "库中

31、没有你想找的图书!" << endl << endl;运行结果:如图5.4 图5.45.2.3图书信息管理中的删除模块函数原型:void book:delete()设计思路:输入用户想要删除的图书信息,用读出的方式打开total文件,用写的方式打开temp文件记录删除的信息,完成后关闭文件。核心代码:void book:delet()string delno;cout << endl << "删除信息 " << endl << endl;cout << "输入你想删除图书

32、的编号 : "cin >> delno; ifstream bookfile;bookfile.open("total.txt",ios:in);if (!bookfile)cout << endl << "对不起信息库为空!" << endl << endl;return; bool flag = false;ofstream temp;temp.open("temp.txt",ios:out);while (bookfile >> name >

33、> no)if (no =delno)flag = true;cout << endl << "你想删除的图书信息如下 : " << endl << endl;cout << "图书名字 : " << name << endl << endl;cout << " 编号 : " << no << endl << endl; cout << "你确定要删除它吗(y/n)

34、 : "getchar();if (getchar() = 'n')cout << endl << endl << "图书信息没有删除!" << endl << endl;return;elsetemp << setiosflags(ios:left) << setw(20) << name << " "<< no << endl; cout << endl << endl

35、<< "图书信息已经成功删除!" << endl<< endl;temp.close();bookfile.close(); if (flag)ofstream bookfile1;bookfile1.open("total.txt");ifstream temp1("temp.txt"); bookfile1 << temp1.rdbuf() << endl;bookfile1.close();temp1.close();else cout << endl &l

36、t;< "库中没有这个图书的信息!" << endl << endl;运行结果:如图5.5 图 5.55.3借阅者信息管理模块的具体阐述函数原型:void user: manage()设计思路:通过switch()建立菜单,方便用户的使用,用户根据上面的提示输入不同的数字键实现不同的功能,该过程主要包括了读者信息的新建、修改、删除这三个子函数。核心代码:void user:manage()while (1)cout << endl;cout << "t" << endl <<

37、"t " << endl << "t 用户信息管理 " << endl << "t " << endl << "t 1. 新建 " << endl << "t " << endl << "t 2. 修改 " << endl << "t " << endl << "t 3. 删除 &

38、quot; << endl << "t " << endl << "t 4. 返回 " << endl << "t " << endl << "t" << endl << endl;cout << "ttt"switch (getchar()case '1':creat();break;case '2':rework();break;

39、case '3':delet();break;case '4':return;break;default:break;运行结果:如图5.6 图 5.65.3.1用户信息管理中的新建模块函数原型:void user:creat()设计思路:先输入借阅者的相关信息用写的方式打开名为userfile的文件将借阅者的相关信息记录保存下来,文成后关闭文件。核心代码:void user:creat()cout << endl << "新建用户" << endl << endl;cout << &

40、quot;请根据提示输入新的用户信息 : " << endl << endl;cout << "用户名 : "cin >> name;cout << endl << " 编号 : "cin >> no;ofstream userfile;userfile.open("total.txt", ios:out);userfile << setiosflags(ios:left) << setw(20) << n

41、ame << " "<< no << endl;userfile.close();cout << endl << "新用户信息已经保存!" << endl << endl;运行结果:如图5.7 图5.7 5.3.2用户信息管理中的修改模块函数原型:void user:rework()设计思路:输入想要修改的借阅者的编号,以读的方式打开userfile文件所指的名为total的文件将记录的借阅者的信息读出来,在以写的方式打开userfile文件所指的temp文件将修改的借阅

42、者的信息记录在里面。核心代码: void user:rework()string findno;cout << endl << "修改用户信息" << endl << endl;cout << "输入想修改的用户编号 : "cin >> findno;ifstream userfile;userfile.open("total.txt",ios:in);if (!userfile)cout << endl << "对不起,没有这个

43、用户的信息!" << endl << endl;return;bool flag = false;ofstream temp;temp.open("temp.txt",ios:out);while (userfile >> name >> no)if (no = findno)flag = true;cout << endl << "你想修改的用户信息如下 : " << endl << endl;cout << "姓名 : &q

44、uot; << name << endl << endl;cout << "编号 : " << no << endl << endl;cout << "请在下面输入新的信息 : " << endl << endl;cout << "用户名 : "cin >> name;cout << endl << " 编号 : "cin >> no;t

45、emp << setiosflags(ios:left) << setw(20) << name << " "<< no << endl;else temp << setiosflags(ios:left) << setw(20) << name << " "<< no << endl;temp.close();userfile.close();if (flag)ofstream userfile1("

46、total.txt");ifstream temp1("temp.txt");userfile1 << temp1.rdbuf() << endl;userfile1.close();temp1.close();cout << endl << "新信息已经成功保存!" << endl << endl;elsecout << endl << "对不起,没有这个用户的信息!" << endl << endl;

47、运行结果:如图5.8 图5.8用户信息管理中的删除模块函数原型:void user:delet()设计思路:输入想删除的读者信息,用读的方式打开total文件将保存的信息读出来,用写的方式打开temp文件来记录修改的借阅者的信息,然后关闭文件。核心代码:void user:delet()cout << endl << "删除用户信息" << endl << endl;string findno;cout << "请输入你想删的用户编号 : "cin >> findno;ifstrea

48、m userfile;userfile.open("total.txt",ios:in);if (!userfile)cout << endl << "对不起,用户信息库为空!" << endl << endl;return;bool flag = false;ofstream temp;temp.open("temp.txt",ios:out);while (userfile >> name >> no)if (no = findno)flag = true;c

49、out << endl << "你想删除的用户信息如下 : " << endl << endl;cout << "姓名 : " << name << endl << endl;cout << "编号 : " << no << endl << endl;cout << "你确定在删除吗(y/n) : "getchar();if (getchar() = '

50、n')temp.close();userfile.close();cout << endl << "信息没有更改!" << endl << endl;return;elsetemp << setiosflags(ios:left) << setw(20) << name << " "<< no << endl;cout << endl << endl << "该用户信息已经成功删除!

51、" << endl<< endl;temp.close();userfile.close();if (flag)ofstream userfile1;userfile1.open("total.txt");ifstream temp1("temp.txt");userfile1 << temp1.rdbuf() << endl;userfile1.close();temp1.close();elsecout << endl << endl << "对不

52、起, 没有该用户的信息 !" << endl << endl;运行结果:如图5.9 图 5.95.4图书借阅归还模块的具体阐述函数原型:void mulclass:manage()设计思路:通过switch()建立菜单,用户根据菜单上的提示选择不同的数字键来实现自己所想要实现的功能函数,此菜单主要提供了用户借书和还书的功能,方便人们的选择。核心代码:void mulclass:manage()while (1)cout << endl << endl;cout << "t图书借阅/归还" <<

53、 endl << endl;cout << "t 1. 借图书" << endl << endl<< "t 2. 还图书" << endl << endl<< "t 3. 返回" << endl << endl;cout << "tt"switch (getchar()case '1':borrow();break;case '2':back();break

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论