-程序设计报告(2012/2013学年第一学期)题目:图书管理系统评分细则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神-课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简短评语教师签名:年月日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格图书管理系统一、课题内容和要求【问题描述】该系统要求建立一个简单的图书管理系统,并具有排序、查找、计算、插入、计算、显示等功能。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思想的应用。【功能要求】(1)图书数据结构:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。(2)需要实现的功能-1)用户根据口令进入系统2)图书信息用文件保存,程序运行时从文件读入数据,程序结束前将数据保存在文件中;3)管理员能实现图书信息录入4)读者能实现图书信息的浏览5)排序功能:(至少一种排序方式,例如出版时间排序)6)按书名查询和按作者名查询7)图书信息的删除与修改8)学生可自动增加新功能模块(视情况可另外加分)(3)界面友好,输入信息符合逻辑如登录号不为负数,日期输入符合一定的格式等。【程序设计的具体说明】数据结构和函数自行定义,要求清晰明确。二、需求分析图书管理系统面向两类人,一类是普通读者,另一类是管理员;(1)读者:首先读者要通过卡号和密码的验证才能进入系统;1、图书的查找:读者可以通过图书的书号、书名、作者名或者出版社查找图书信息,当查找成功时输出图书的信息,包括书号,书名,作者名,出版社,出版时间以及此书是否在架,当查找失败时返回查找失败信息。2、图书的借阅:当读者查找到想要借阅的图书后,输入图书书号进行借书,返回借阅成功的信息。输入无效的书号或者借阅已经借出去的图书则不能借阅成功。3、图书的归还:输入要归还的书的书号进行还书,返回归还成功的信息。输入无效的书号或者归还还未被借出的图书则归还不成功。4、查询自己的借书信息:可以查看自己借了那些书,输出这些书的编号。(2)管理员:管理员要先通过密码验证才能进入系统;1、图书的借阅:管理员可以通过输入读者的卡号和图书的编号帮读者借书,只有当这两个信息都正确时才能借阅成功,否则输出借阅失败的信息。-2、图书的归还:管理员可以通过输入读者的卡号和图书的编号帮读者还书,只有当这两个信息都正确时才能归还成功,否则输出归还失败的信息。3、图书的维护:包括图书的新增、删除、查找、显示、以及全删;○1、图书的新增:首先给图书编号,在给图书编号之前先判断是否有图书为该编号,如果有则编号不成功重新输入编号,如果没有则编号成功,继续添加图书的其他信息,包括书名、作者、出版社、出版时间、价格等信息。○2、图书的删除:输入图书的编号,删除该编号图书的所有信息,并提示删除成功信息,若输入无效的编号则提示删除不成功。○3、图书的查找:输入要查找图书的编号,输出该编号图书的所有信息,若输入无效的编号则提示查找失败。○4、图书的显示:按照出版时间的先后顺序输出图书馆所有书籍的信息。○5、图书的全删:删除图书馆所有书籍的所有信息。4、读者的维护:包括读者的新增、更改、删除、查找、显示、以及全删;○1、读者的新增:先给读者编号,如果该编号已经有人,则提示错误,否则继续输入读者的其他信息,包括读者的名字和初始密码输出添加成功提示。○2、读者的更改:输入读者的编号,更改读者的名字,若输入的编号无效则更该失败。○3、读者的删除:输入要删除读者的编号,判断该编号是否有人,有则删除该读者的所有信息,没有则提示删除失败。○4、读者的查找:输入要查找的读者编号,编号正确则输出读者的信息,否则查找失败。○5、读者的显示:显示图书馆里所有读者的信息。○6、读者的删除:删除图书馆里所有读者的信息。三、概要设计开始-12主菜单输入输入用户名输入密码Y进入系统界面进入系统N继续Y退出N选择操作读者登录管理员登陆-读者登录模块图图书信息管理模块流程图图书信息查找流程图-借阅信息查询模块流程图输出该借书证借阅的图书书号输出“该证不存在”开始输入借书证号借书证号是否存在?结束-图书归还模块流程图归还失败开始输入图书书号输入借书证号图书书号是否存在借书证号是否存在归还成功结束-图书借阅模块流程图四、源程序代码#includeiostream#includeiomanip#includewindows.h#includeconio.h#includestringusingnamespacestd;借阅失败开始输入借阅图书书号判断书号是否已存在是否有库存输入借书证号借阅失败该证是否已借阅输入归还日期借阅成功借阅失败结束-constintMaxbor=10;//每位读者最多借10本书classReader//读者类{inttag;intnum;charmima[6];charname[10];intborbook[Maxbor];public:Reader();intgetnum();intgettag();char*getname();char*getmima();voidsetname(charna[]);voiddelreader();voidaddreader(intn,char*na,char*mi);voidborrowbook(intbookid);intretbook(intbookid);voiddisp();};Reader::reader(){}char*Reader::getname(){returnname;}intReader::gettag(){returntag;}//获取删除标记intReader::getnum(){returnnum;}//获取读者编号char*Reader::getmima(){returnmima;}//获取读者的密码voidReader::setname(charna[])//设置姓名{strcpy(name,na);}voidReader::delreader(){tag=1;}//删除读者voidReader::addreader(intn,char*na,char*mi)//增加读者{tag=0;num=n;strcpy(name,na);strcpy(mima,mi);for(inti=0;iMaxbor;i++)borbook[i]=0;}voidReader::borrowbook(intbookid)//借书操作{for(inti=0;iMaxbor;i++){if(borbook[i]==0)-{borbook[i]=bookid;return;}}}intReader::retbook(intbookid)//还书操作{for(inti=0;iMaxbor;i++){if(borbook[i]==bookid){borbook[i]=0;return1;}}return0;}voidReader::disp()//输出读者信息{coutendl;coutsetw(12)num借书编号:[;for(inti=0;iMaxbor;i++)if(borbook[i]!=0)coutborbook[i];;cout]endl;}classBook//图书类{inttag;intnum;charname[10];charwriter[10];charconcem[30];charTime[10];floatprice;intonshelf;public:Book();char*getname();intgetnum();intgetonshelf();char*getwriter();char*gettime();char*getconcem();-floatgetprice();intgettag();voidgetTime(chartime[]);voidsetname(charna[]);voiddelbook();voidaddbook(intn,char*na,char*wri,char*con,char*tm,floatpr);//增加图书intborrowbook();//借书操作voidretbook();//还书操作voiddisp();//输出图书};Book::Book(){}char*Book::getname(){returnname;}//获取姓名intBook::getonshelf(){returnonshelf;}intBook::getnum(){returnnum;}//获取图书编号char*Book::getwriter(){returnwriter;}//获取书籍作者char*Book::getconcem(){returnconcem;}//获取书籍出版社char*Book::gettime(){returnTime;}floatBook::getprice(){returnprice;}//获取书籍价格intBook::gettag(){returntag;}//获取删除标记voidBook::setname(charna[])//设置书名{strcpy(name,na);}voidBook::getTime(chartime[]){strcpy(Time,time);}voidBook::delbook(){tag=1;}//删除图书voidBook::addbook(intn,char*na,char*wri,char*con,char*tm,floatpr)//增加图书{tag=0;num=n;strcpy(name,na);strcpy(writer,wri);strcpy(concem,con);strcpy(Time,tm);price=pr;onshelf=1;}intBook::borrowbook()//借书操作{if(onshelf==1){onshelf=0;return1;}-return0;}voidBook::retbook()//还书操作{onshelf=1;}voidBook::disp()//输出图书{coutsetw(6)numsetw(12)namesetw(15)concemsetw(10)writersetw(12)Timesetw(6)(onshelf==1?在架:已借)endl;}classBDatabase//图书库类{inttop;Bookbook[Maxb];public:BDatabase();voidclear();intaddbook(intn,char*na,char*wri,char*con,char*tm,floatpr);Book*query(intbookid);intBDatabase::qname(char*nm);Book*BDatabase::Qname(char*nm);intqzuozhe(char*wr);Book*Qzuozhe(char*wr);intqchuban(char*cb);Book*Qchuban(char*cb);voidbookdata();~BDatabase();voiddisp();};BDatabase::BDatabase()//构造函数,将book.txt读到book[]中{Bookb;top=-1;fstreamfile(d:\\book.txt,ios::in);while(1){file.read((char*)&b,sizeof(b));if(!file)break;top++;book[top]=b;}-file.close();}voidBDatabase::clear()//全删{top=-1;}intBDatabase::addbook(intn,char*na,char*wri,char*con,char*tm,floatpr