小型书店管理软件开发报告.docx_第1页
小型书店管理软件开发报告.docx_第2页
小型书店管理软件开发报告.docx_第3页
小型书店管理软件开发报告.docx_第4页
小型书店管理软件开发报告.docx_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

07. 24软件开发报告目 录1 需求分析2 总体分析3 详细设计4 用户手册 5 调试代码及测试 小型书店图书管理系统一、需求分析现在小型书店越来越多,要怎样才能开发合理的软件来满足图书管理的要求呢?通过面向对象程序设计给图书管理人员和读者借、还书带来便利。使用c+编写了图书管理系统。二总体设计本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括number、name、author、fenlei、zhuangtai等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作。整个程序实现数组操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。三、详细设计:1设计思路:整个系统构思的过程中,涉及了较多C+知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,实现了程序的模块化、结构化。在主函数中调用各种子函数,操作界面简单,易操作。 2,设计模式:(1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、添加、删除、修改、借书、还书等功能。(2).现在把相关的信息放到一个数组里,并作为book类的私有数据;然后再通过book类的的函数来调用这些数据,有数组以用于后面其他函数的操作。 (3)、menu()菜单函数,操作完成后按提示信息进行文件的保存操作。(4)、print();这个函数为数据的输出函数,运行该函数后,可输出整个的所有信息。、(5)、writebook();这个函数为写入数据到数组里的函数,然后再把储存数据的数组储存到book.txt文件里,以便下次的操作 (6) 、readbook();这个函数为输出函数,使用时将会自动调用保存在book.txt里的数据,把数组的储存数据,再一个个的输出。这样就为以后每次输出数据节省了不少时间。 (7)、find ();这个函数为查询图书信息函数,这里我设置了两种查找方式,一种是根据编号查找,另一种就是同时用两个strcmp来对比,也就是同时比较读者输入的信息和所储存书籍的信息,这样的操作大大增加了所读取信息的准确性。 (8)、add();modify();cout();del();这四个函数为功能函数,add();添加一本图书信息、modify();修改图书信息、del();删除一本图书信息、cout();统计所储存的图书信息。9)、get();back();这两个函数是借书还书的函数,get();借书back();还书。在借还后系统会修改图书的在库信息。这里主要是图书的状态改变,也就是是y,就是表示这本书的信息已经在书店里,n则表示未归还。之后并会出提示信息让用户返回菜单保存信息。3实现注释:这个实用的小型图书管理程序程序以数组操作完成,并实现文件信息的录入和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。实现了图书管理的基本功能,包括了图书的录入、存储、查询、添加、删除、修改、借书、还书等功能。查询时可按书名、编号、作者等方式查询,找到后输出这本书的所有信息。在添加图书信息后,还增加了输出整个文件里的信息,方便用户检查信息。可查询图书的在库状态,方便用户进行借书、还书操作。在借书还书成功后图书的在库状态改变,并有提示信息让用户保存信息。系统中主要的数据结构就是图书的信息,包含编号、书名、作者、种类、在库状态等,在处理过程中各项可以作为一本图书的不同属性来进行处理。4结构体系设计:这是我设计的总体流程图:现在这个是类中定义的book中各函数的模块图书借还系统主界面流程图:图书查询系统流程图如下:管理系统的流程图:5设计过程中的想法与程序中的不足:这次的短期实习作为学期末的一项课程,主要靠编出来的一个系统来检查我们所掌握的关于c+基本理论知识及实际解决问题的能力通过这次c+课程设计,很大程度上锻炼了我们写程序的动手能力和自主思考能力。利用所学知识,开发小型实用的应用系统,掌握运用c+编写调试应用系统程序,对于我们独立开发应用系统并进行数据处理的综合能力是一个很大的提高。总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与不足。比如,没有对界面进行操作,只是实现了简单的功能,程序写的有点繁琐,不是那么井然有序,条理清晰,程序注释也不是很完善,对信息处理功能还有些不足之处,提示信息不明确,对于数据的错误输入处理不是很完善等等。这个系统主要是我自己编写的,同时也得到了老师和同学的一些帮助。我在做系统的过程中也遇到了很多问题,有的是知识不足,有的是考虑不够周全,。事实证明,只靠自己的知识面还是很窄,独立处理问题能力不是很强,以后还要加强对c+的学习。 我认为对于C+编写的程序来说,使用方法大致都是一样的,所以如果要改进的话,就是要改进一些算法,尽量把界面编写清楚,提示信息全面,方便易用。四、用户手册:下面,我大致介绍一下我的系统的主要功能和注意事项:当运行此程序时,首先进入系统主界面,然后可以选择,主界面主要是图书管理,借还和查询里面的菜单。,然后显示功能菜单按数字键选择所需服务。功能菜单中,1添加书籍信息,2删除图书信息,3进入图书查询系统,4修改图书信息,5统计所有图书信息,6,7借还书系统,8,显示所有书籍信息9,退出并结束此程序。 当出现请选择(19)运行程序时,需要输入选项前的数字,输完之后按回车(下同)。首次运行系统需要先选择1添加书籍信息,然后再选择其他操作。当选择25时会进入图书管理系统,在这里可以选择添加、修改信息等操作,需要注意的是每次执行完添加、修改等操作后需要手动选择保存图书信息的操作,不然磁盘文件信息不会改变(下同)。返回上级菜单进入图书查询系统、图书借还系统的操作和管理系统的差不多,用户可自己尝试使用,所有信息最后均以磁盘文件方式保存,而且格式固定,在输入和输出均按这种格式,用户在使用时必须要按这种格式输入,否则会出现文件信息错误。五调试代码及测试(上机截图)系统的主界面(选择数字1-8进入,9退出系统)这是我的主函数,在这里显示的是主菜单这里每一个函数执行完之后都会询问一次,是否返回首页为了尽量减少无用代码,已经把原来的很多华丽的包装给去除了添加图书信息,这个函数我利用了文件方面的知识,打开文件,把已经储存信息的数组传进到文件中,为了以后更好的读取出数据,同时我还利用了当输入错误时该 怎么处理后面的过程,我默认是退出添加下面显示所添加的信息下面显示统计的图书信息这个统计的函数,我是利用一个静态成员n,它储存在类里,这样,每次写入一个数据,它就会自动 的增加1,当然,最后到了要删除信息的时候 也是要用到n 的!修改信息和修改后的信息这个我主要是设置了两个修改方式,第一个是为了快点查找,而第二种查找方式,是一种稳定性高,安全性好的在这里,我是用了一个strcmp来对比你输入的和储存信息的差异。如果找到了,就返回那个储存了该信息的数组,不过开始用链表的时候,它不能返回,老是说内存不能被read,没有办法,只能改成数组了这个函数是为了图书管理员设计的,因为有一些书籍的丢失,导致他们要把一些书籍的信息给删除,而现在这个就能达到要求下面演示删除信息成功后输出信息下面演示借还书系统这个函数主要是改变状态来表示信息在这方面这个是一个很实用的过程,只要调出储存信息的那个数组,这样,把这个数组 的数据重写,然后再储存到数组两次信息输出后的对比现在c书的状态已经由可借转成了已借出。现在我们继续演示还书的操作:再来看看我们的显示出的信息下面是我的源程序#include#include#include fstream file;class book / book(书)类 private: static int n; /静态成员 char number15; /书的编号 char name30; / 书的名字 char author20; /书的作者 char fenlei15; /书的种类 char zhuangtai5; /书的状态 public: book(); /构造函数 book(char a,char b,char c,char d,char e); /构造函数 void setbook(); /设置输入函数 void outcom(); /输出函数 friend class arry; /友元类 char * getnumber() return number; ;class arry /arry类 private: book *a; /子成员 int len; /长度public: arry(int s)len=s;a=new booklen;book:book(); /构造函数 arry() delete a; /析构函数 void add(); /添加函数 void del(); /删除函数 void find(); /查找函数 void modify(); /修改函数 void Count(); /统计函数 void get(); /借书函数 void back(); /还书函数 void print(); /显示函数 int menu(); /菜单函数 void writebook(); void readbook();void arry:writebook()file.open(book.txt,ios:out);for(int i=0;ilen;i+)file.write(char*)&ai,sizeof(book);file.close();int book:n=0;book:book() /构造函数 strcpy(number,-);strcpy(name,-); strcpy(author,-);strcpy(fenlei,-); strcpy(zhuangtai,-);book:book(char a,char b,char c,char d,char e) /构造函数 strcpy(number,a);strcpy(name,b); strcpy(author,c);strcpy(fenlei,d); strcpy(zhuangtai,e); n+;void book:setbook() /设置输入函数 cout请输入编号:number; cout请输入书名:name; cout请输入作者:author; cout请输入分类:fenlei; cout请输入状态:zhuangtai; n+; writebook();void book:outcom() /输出函数 if(strlen(number)!=0)coutnumbersetw(10)namesetw(10)authorsetw(10)fenleisetw(10)setw(10)zhuangtaiendl;void arry:add() /添加函数 if(book:n!=0) for(int i=book:n-1;ilen;i+)ai+1.book:setbook(); coutc; if(c=y|c=Y) continue; else if(c=n|c=N) cout退出添加!endl; return; else cout选择错误,默认退出添加!endl; return; else for(int i=0;ilen;i+) ai.book:setbook(); coutc; if(c=y|c=Y) continue; else if(c=n|c=N) cout退出添加!endl; return; else cout选择错误,默认退出添加!endl; return; writebook(); void arry:del() /删除函数 cout请选择删除方式endl; cout1.按编号删除endl; cout2.按书名删除endl; coutk; if (k=1) char n15; coutn; for( i=0;ibook:n;i+) if(!strcmp(ai.number,n) j=i; cout将要删除的信息:endl; cout编号setw(10)书名setw(10)作者setw(10)分类setw(10) 状态endl; aj.book:outcom(); coutc; if(c=y|c=Y) for( i=j;ibook:n-1;i+) ai=ai+1; cout已删除该信息:endl; book:n-;return; else if(c=n|c=N) cout取消删除 !endl; return; else cout选择错误,默认退出!endl;return; cout你要删除的内容不存在!endl;return; if (k=2) char m40; coutm; for( i=0;ibook:n;i+) if(!strcmp(,m) j=i; cout将要删除的信息:endl; cout编号setw(10)书名setw(10)作者setw(10)分类setw(10) setw(10)状态endl; aj.book:outcom(); coutc; if(c=y|c=Y) for( i=j;ibook:n-1;i+) ai=ai+1; cout已删除该信息endl; book:n-;return; else if(c=n|c=N) cout取消删除 !endl; return; else cout选择错误,默认退出!endl;return; cout你要删除的内容不存在!endl;return; writebook(); void arry:find() /查找函数 cout请选择查找方式endl; cout1.按编号查找endl; cout2.按书名查找加作者查找endl; coutk; if(k=1) char n15; coutn; for(i=0;ibook:n;i+) if(!strcmp(ai.number,n) j=i; cout你要查找的书信息:endl; cout编号setw(10)书名setw(10)作者setw(10)分类setw(10) setw(10)状态endl; aj.book:outcom(); return; else cout馆内未藏此书!endl;break; else if(k=2) char n40;char m20;coutnm; for(i=0;ibook:n;i+) if(!strcmp(,n)&!strcmp(ai.author,m) j=i; cout你要查找的书信息:endl; cout编号setw(10)书名setw(10)作者setw(10)分类setw(10) setw(10)状态endl; aj.book:outcom(); return; else cout馆内未藏此书!endl;return; void arry:modify() /修改函数 cout请选择修改的方式endl; cout1.按编号修改方式endl; cout2.按书名修改方式endl; coutk; if(k=1) coutA; else if(k=2) coutb; else cout输入错误,默认退出修改!endl; return; for(i=0;ibook:n;i+) if(!strcmp(ai.number,A)|!strcmp(,b)|!strcmp(ai.author,c)|!strcmp(ai.fenlei,d)|!strcmp(ai.zhuangtai,e) j=i; cout你将要修改的信息:endl; cout编号setw(10)书名setw(10)作者setw(10)分类setw(10) setw(10)状态endl; aj.book:outcom(); cout确定是否真的要修改?确定(y)/取消(n):c; if(c=y) aj.book:setbook(); book:n-; return; else if(c=n) cout取消修改endl;return; else cout你要修改的内容不存在!endl; void arry:Count() /借书函数 cout馆内目前藏书:book:n册endl;void arry:get() char s40; int i; cout请输入你要借的书名s; for(i=0;ibook:n;i+) if(!strcmp(,s)&(strcmp(ai.zhuangtai ,y)=0|strcmp(ai.zhuangtai,Y)=0) cout你要借书的信息:endl; cout编号setw(10)书名setw(10)作者setw(10)分类setw(10) setw(10)状态endl; ai.book:outcom(); cout可借阅,是否借阅确定(y)/取消(n),请输入:c; if(c=y) strcpy(ai.zhuangtai,n); return; else cout取消借阅!endl;return; else if(!strcmp(,s)&(strcmp(ai.zhuangtai ,n)=0|strcmp(ai.zhuangtai,n)=0) cout此书已借出endl;return; cout馆内未藏此书!endl;void arry:back() /还书函数 char n15; int i; coutn; for(i=0;ibook:n;i+) if(!strcmp(ai.number,n)&strcmp(ai.zhuangtai ,y)!=0) cout你要还书的信息:endl; cout编号setw(10)书名setw(10)作者setw(10)分类setw(10)setw(10)状态endl; ai.book:outcom(); cout确定是否还书:确定(y)/否(n)c; if(c=y) strcpy(ai.zhuangtai,y); cout还书成功endl; return; else if(c=n) cout取消还书endl; return; else cout输入错误。默认退出!endl; return; cout馆内未藏你要退还的书或此书为借出!endl;void arry:print() /显示函数 cout编号setw(10)书名setw(10)作者setw(10)分类setw(10) setw(10)状态endl; for(int i=0;ibook:n;i+) ai.book:outcom();int arry:menu() /菜单函数 int i; cout *欢迎进入图书管理系统!*endl;cout * 1.添加图书 *endl; coutendl;cout * 2.删除图书 *endl; coutendl;cout * 3.查找图书 *endl; coutendl; cout * 4.修改图书 *endl; coutendl; cout * 5.统计书籍 *endl; coutendl; cout * 6.借书 *endl; coutendl; cout * 7.还书 *endl;coutendl; cout * 8.显示 *endl; coutendl; cout * 9.退出并结束此程序*endl;coutendl;cout请选择(19)运行程序endl;couti; if(i9) cout输入错误,请重试,并选择(19)!:endl; else break; return i;void arry: readbook() file.open( book.txt, ios:in); /*打开文件*/ file.read(char*)&a0, sizeof(a0); /*将文件内容读到第一个书数组*/ if (strlen(a0.getnumber() != 0) /*判断第一个对象的内容是否为空,如为空,则文件为空*/ coutendl; cout 书籍库信息为空,请建立书籍信息。 endl; cout= 100) cout 书籍库已满! endl; break; cout 初始化书籍库成功! endl; file.close(); void main() /主函数 char c=y;arry a(100);a.readbook(); while(c=y|c=Y) switch(a.menu() case 1: a.add();break; case 2: a.del();break; case 3: a.find();break; case 4: a.modify();break; case 5: a.Count();a.print();break; case 6: a.ge

温馨提示

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

评论

0/150

提交评论