教学计划编制程序课题实验报告.docx_第1页
教学计划编制程序课题实验报告.docx_第2页
教学计划编制程序课题实验报告.docx_第3页
教学计划编制程序课题实验报告.docx_第4页
教学计划编制程序课题实验报告.docx_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

目录1课题需求描述31.1课题题目31.2需求分析32总体功能与数据结构设计42.1总体功能设计42.2数据结构设计53算法设计和程序设计53.1算法设计63.2程序设计63.3流程图214调试与测试225设计总结221 课题需求描述1.1课题题目图书借阅管理系统是一个学校不可缺少的部分,它的内容对于学校的管理者和读者来说都至关重要,直接关系到图书的借用率,所以开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。 编写程序系统主要实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加会员、查询会员、删除会员、借书信息、到期书催还等智能化管理过程。图书管理者只需略懂电脑知识就可以简易的操作该图书借阅管理系统。1.2需求分析1.2.1系统需求分析 图书借阅管理系统主要两大功能:(1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书);(2)会员管理(增加会员、查询会员、删除会员、借书信息);要完成这个题目,主要是建立解决图书和会员的信息的存储,解决的方法是建立两个带头结点的单链表,分别用于存储图书和会员。解决了这个问题后就是何建立这两个链表的联系了,解决的方法是在图书结点中设一个借书人编号,在会员结点中设一个数组用于存会员借的书。解决了这两个问题,剩下的工作就简单了。只需按链表的操作就可以了。 功能要求 在图书借阅管理程序中须实现以下功能: (1)图书修改功能:能对图书借阅系统存储的信息进行修改。提供两种修改方式,如按照图书编号修改、按照书名修改。图书编号是图书记录的自然顺序编号。(2)图书删除功能:能对图书借阅系统的图书信息进行删除。删除时以记录为单位,能一次删除一条记录。 (3)借书功能:能对借出的图书作记录信息,能一次借出一本图书。(4)还书功能:能将被借出的图书信息还原,能一次借出一本图书。(5)保存功能:能将记录保存在任何自定义的文件中,如保存在:c:books、c:lenders。 (6)通信录管理结束后,能够正常退出图书借阅管理程序。 技术要求(1)每个借阅者记录至少包括如下信息:姓名、学号、姓别等。每本图书记录至少包括如下信息:编号、书名、作者、价格等。(2)图书、借阅者信息以磁盘文件的形式存储,存储位置、文件名、文件格式由设计者确定。 (3)对于图书借阅系统功能中数据输入、显示、查询、修改、删除、保存等功能,要求编写功能独立的函数或主控函数予以实现,其所属的各项功能尽量由独立的函数实现。 (4)以菜单方式实现功能选择控制。 (5)本图书借阅管理程序能够实现100条记录的管理。 1.2.2方案分析 此题是设计一个图书借阅管理系统,根据需要应包含图书管理和会员管理。其中对图书和会员的增加、查询和删除都是基本操作。在图书管理中对图书的借阅和归还是重点,这两个操作也是整个系统关键。在会员管理中增加了会员借书信息的查询和对到期书的催还信息。实现这些操作的关键在于建立的两个带头结点的单链,分别用于存储图书和会员的基本信息。在这两个链表之间还应建立起相互的联系,便于查询的操作的实现。另外,在美观方面,需要设计一个操作界面供用户选择使用。2 总体功能与数据结构设计2.1 总体功能设计1.能够存储一定量的图书信息,并方便有效的进行相应的书籍操作和管理,这主要有:(1)、图书信息的录入、删除及修改。(2)、图书信息的多关键子检索查询。(3)、图书出借、返回及超时惩罚等。2.能对一定数量的读者、管理员进行相应的信息存储与管理,包括: (1)、读者信息的登陆,删除及修改。(2)、管理员信息的增加,删除及修改。(3)、读者资料的统计与查询等。3能够提供一定安全机制,提供数据信息授权访问,防止随意删改、查询。(1)、安全性要求系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。(2)、完整性要求系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。对查询、统计的结果能够列表显示。核心算法:Floyd算法(弗洛伊德算法-每一对顶点之间的最短路径)输入数据:单位个数,各单位名称,距离,频度输出数据:路径长度,最佳单位地址名称2.2 数据结构设计 对查询、统计的结果能够列表显示。核心算法:Floyd算法(弗洛伊德算法-每一对顶点之间的最短路径)输入数据:单位个数,各单位名称,距离,频度输出数据:路径长度,最佳单位地址名称采用模块化的算法实现。3 算法设计和程序设计第一步,让所有路径加上中间顶点1,取Aij与Ai1+A1j中较小的值作Aij的新值,完成后得到A(1),如此进行下去,当第k步完成后,A(k)ij表示从i到就且路径上的中间顶点的路径的序号小于或等于k的最短路径长度。当第n-1步完成后,得到A(n-1),A(n-1)即所求结果。A(n-1)ij表示从i到j且路径上的中点顶点的序号小于或等于n-1的最短路径长度,即A(n-1)ij表示从i到j的最短路径长度。3.1算法设计如果超市是要选在某个单位,那么先用floyd算法得出各顶点间的最短距离/最小权值。假设顶点个数有n个,那么就得到n*n的一张表格,arcs(i,j)表示i单位到j单位的最短距离/最小权值 , 这张表格中和最小的那一行(假设为第t行),那么超市选在t单位处就是最优解3.2程序设计#include 3.2.1 图书信息类 Book 声明class Bookpublic:Book(); / 默认构造函数Book(long _bno, char *_name, bool _status, long _bin, long _bout = 0, long _btotal = 0);/ 带参数的构造函数Book(const Book &book); / 拷贝构造函数Book(); / 析构函数Book& operator=(const Book &book); / 赋值运算符重载函数void borrow(long _bno); / 图书借阅void giveBack(long _bno); / 图书归还long getBin() const; / 获取馆藏图书量long getBout() const; / 获取在外图书量long getBtotal() const; / 获取借阅总量boolsearchBno(long _bno) const; / 比较图书编号boolsearchName(char *_name) const; / 比较图书名void printInfo() const; / 打印图书信息friend std:istream& operator(std:istream& is, Book &book); / 提取运算符重载函数friend std:ostream& operator(std:ostream&os, const Book &book); / 插入运算符重载函数private:long bno; / 图书编号char *name; / 图书名bool status; / 在馆状态long bin; / 馆藏书量long bout; / 在外图书量long btotal; / 借阅总量;constint N = 100; / 常量定义3.2.2管理图书信息类 Management 声明class Managementpublic:Management(); / 默认构造函数Management(const Book _books, int n); / 带参数的构造函数void input(const char *file); / 录入图书信息void deleteBook(long bno); / 删除图书信息void deleteBook(char *name); / 删除图书信息void insertBook(long bno, char *name, bool status, long bin, long bout, long btotal); / 增加图书信息void insertBook(const Book &book); / 增加图书信息void searchBook(long bno) const; / 查询图书信息void searchBook(char *name) const; / 查询图书信息void borrowBook(long bno, long bnum); / 图书借阅void borrowBook(char *name, long bnum); / 图书借阅void returnBook(long bno, long bnum); / 图书归还void returnBook(char *name, long bnum); / 图书归还void sort() const; / 按借阅量对图书排序void statistics() const; / 统计在馆状态void save(const char *name) const; / 图书信息保存private:int count; / 图书种类Book booksN; / 图书信息数组;3.2.3图书管理系统的设计与实现#include #include Book.husing namespace std;int main()Management manage; / 图书信息管理类对象char fileName100; / 存放文件名的字符数组long bno; / 图书编号char name30; / 图书名bool status; / 在馆状态long bin; / 馆藏图书量long bout; / 在外图书量long btotal; / 借阅总量int option; / 系统功能菜单选项while(true)/ 输出系统功能提示菜单coutendl; cout 图书管理系统endl;cout=endl;cout1. 录入图书信息endl;cout2. 删除图书信息endl;cout3. 增加图书信息endl;cout4. 查询图书信息endl;cout5. 图书借阅endl;cout6. 图书归还endl;cout7. 图书借阅量排序endl;cout8. 统计在馆状态endl;cout9. 图书信息保存endl;cout0. 退出系统endl;cout=endl;coutoption; / 输入功能菜单选项switch(option)case 1: / 录入图书信息coutfileName;manage.input(fileName);break;case 2: / 删除图书信息coutbno;manage.deleteBook(bno);break;case 3: / 增加图书信息cout请输入图书编号、图书名、在馆状态(0/1)、馆藏图书量、在外图书量、借阅总量: bnonamestatusbinboutbtotal;manage.insertBook(bno, name, status, bin, bout, btotal);break;case 4: / 查询图书信息coutbno;manage.searchBook(bno);break;case 5: / 图书借阅coutbnobout;manage.borrowBook(bno, bout);break;case 6: / 图书归还coutbnobin;manage.returnBook(bno, bin);break;case 7: / 图书借阅量排序manage.sort();break;case 8: / 统计在馆状态manage.statistics();break;case 9: / 图书信息保存coutfileName;manage.save(fileName);break;case 0:exit(0);default:cout输入选项不正确!请重新输入!endl;return 0;#include Book.h#include #include using namespace std;3.2.4Book 类成员函数实现部分/ 默认构造函数Book:Book()bno = 0;name = NULL;status = false;bin = 0;bout = 0;btotal = 0;/ 带参数的构造函数Book:Book(long _bno, char *_name, bool _status, long _bin, long _bout, long _btotal)bno = _bno;status = _status;bin = _bin;bout = _bout;btotal = _btotal;name = new charstrlen(_name)+1; / 开辟堆空间strcpy(name, _name); / 字符串拷贝/ 拷贝构造函数Book:Book(const Book &book)bno = book.bno;status = book.status;bin = book.bin;bout = book.bout;btotal = book.btotal;name = new charstrlen()+1; / 开辟堆空间strcpy(name, ); / 字符串拷贝/ 析构函数Book:Book()if(name!=NULL)delete name; / 释放堆空间/ 赋值运算符重载函数Book& Book:operator=(const Book &book)if(name!=NULL) / 释放原有堆空间delete name;bno = book.bno;status = book.status;bin = book.bin;bout = book.bout;btotal = book.btotal;name = new charstrlen()+1; / 重新开辟堆空间strcpy(name, ); return *this;/ 图书借阅void Book:borrow(long _bno)bin -= _bno;bout += _bno;btotal += _bno;if(bin=0)status = false;/ 图书归还void Book:giveBack(long _bno)bin += _bno;bout -= _bno;if(status=false)status = true;/ 获取馆藏图书量long Book:getBin() constreturn bin;/ 获取在外图书量long Book:getBout() constreturn bout;/ 获取借阅总量long Book:getBtotal() constreturnbtotal;/ 比较图书编号bool Book:searchBno(long _bno) constreturnbno=_bno;/ 比较图书名bool Book:searchName(char *_name) constreturnstrcmp(name, _name)=0;/ 打印图书信息void Book:printInfo() constcoutbno name (status?在馆:不在馆) bin bout btotal(istream& is, Book &book)char name30;isbook.bnonamebook.statusbook.binbook.boutbook.btotal;if(!=NULL)delete ; = new charstrlen(name)+1;strcpy(, name);return is;/ 插入运算符重载函数ostream& operator(ostream&os, const Book &book)osbook.bno book.status book.bin book.bout book.btotalendl;returnos;3.2.5Management 类成员函数实现部分/ 默认构造函数Management:Management()count = 0;/ 带参数的构造函数Management:Management(const Book _books, int n)count = n;for(int i=0; icount;for(int i=0; ibook;booksi = book;ifile.close();cout图书信息录入成功!endl;elseifile.close();cout图书信息录入失败!endl;/ 删除图书信息void Management:deleteBook(long bno)int entry = -1;for(int i=0; icount; +i)if(booksi.searchBno(bno)entry = i;break;if(entry!=-1)for(int i=entry+1; icount; +i)booksi-1 = booksi;-count;cout图书信息删除成功!endl;elsecout未查找到相关图书信息!endl;void Management:deleteBook(char *name)int entry = -1;for(int i=0; icount; +i)if(booksi.searchName(name)entry = i;break;if(entry!=-1)for(int i=entry+1; icount; +i)booksi-1 = booksi;-count;cout图书信息删除成功!endl;elsecout未查找到相关图书信息!endl;/ 增加图书信息void Management:insertBook(long bno, char *name, bool status, long bin, long bout, long btotal)Book book(bno, name, status, bin, bout, btotal);bookscount+ = book;cout增加图书信息成功!endl;void Management:insertBook(const Book &book)bookscount+ = book;cout增加图书信息成功!endl;/ 查询图书信息void Management:searchBook(long bno) constint entry = -1;for(int i=0; icount; +i)if(booksi.searchBno(bno)entry = i;break;if(entry!=-1)booksentry.printInfo();elsecout未查找到相关图书信息!endl;void Management:searchBook(char *name) constint entry = -1;for(int i=0; icount; +i)if(booksi.searchName(name)entry = i;break;if(entry!=-1)booksentry.printInfo();elsecout未查找到相关图书信息!endl;/ 图书借阅void Management:borrowBook(long bno, long bnum)int entry = -1;for(int i=0; i0)if(bnum=booksentry.getBin()booksentry.borrow(bnum);cout借书成功!endl;elsecout在馆图书量不足,无法借阅!endl;elsecout图书借阅量不正确!endl;elsecout未查找到相关图书信息!endl;void Management:borrowBook(char *name, long bnum)int entry = -1;for(int i=0; i0)if(bnum=booksentry.getBin()booksentry.borrow(bnum);cout借书成功!endl;elsecout在馆图书量不足,无法借阅!endl;elsecout图书借阅量不正确!endl;elsecout未查找到相关图书信息!endl;/ 图书归还void Management:returnBook(long bno, long bnum)int entry = -1;for(int i=0; i0)if(bnum=booksentry.getBout()booksentry.giveBack(bnum);cout还书成功!endl;elsecout还书量超过借阅量,还书失败endl;elsecout还书量不正确!endl;elsecout未查找到相关图书信息!endl;void Management:returnBook(char *name, long bnum)int entry = -1;for(int i=0; i0)if(bnum=booksentry.getBout()booksentry.giveBack(bnum);cout还书成功!endl;elsecout还书量超过借阅量,还书失败endl;elsecout还书量不正确!endl;elsecout未查找到相关图书信息!endl;/ 按借阅量对图书排序void Management:sort() constlong *bnum = new longcount;int *index = new intcount;for(int i=0; icount; +i)bnumi = booksi.getBtotal();indexi = i;/ 冒泡排序,降序排列for(int k=1; kcount; +k)for(int i=0; icount-k; +i)if(bnumibnumi+1)longtmp = bnumi;bnumi = bnumi+1;bnumi+1 = tmp;intitmp = indexi;indexi = indexi+1;indexi+1 = itmp;for(int i=0; icount; +i)booksindexi.printInfo();delete bnum;delete index;/ 统计在馆状态void Management:statistics() constfor(int i=0; icount; +i)if(booksi.getBin()=0)booksi.printInfo();/ 图书信息保存void Management:save(const char *name) constofstreamofile(name);if(!ofi

温馨提示

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

评论

0/150

提交评论