您好,欢迎访问三七文档
课程设计课程设计名称:图书管理系统专业班级:国计一班学生姓名:张原野学号:201038940110-指导教师:徐振强课程设计时间:2011/12/16计算机应用技术专业课程设计任务书学生姓名张原野专业班级国计一班学号201038940110题目图书管理系统课题性质其它课题来源自拟课题指导教师徐振强同组姓名无主要内容以链式结构的有序表建立图书管理系统。以文件形式存储各图书的信息,会员的信息。图书链式结构的有序表的结点结构的数据域包括图书的名称,图书的数量,图书的ISBN号,图书的价格,入库时间,被借的书量等;会员链式结构的有序表的结点结构的数据域包括会员的姓名,性别,年龄,入会时间,所借的图书等。程序的操作包括图书的入库,图书的删除,以图书名查询图书资料,以ISBN询查询图书资料,以入库时间范围查询,会员入会,删除会员,查询会员资料,会员借书,会员还书,查询会员是否有超期的图书。所有数据从文件中读取建立链表。对链表进行添加、删除等操作,操作结果再以文件存放。注意:不是对文件进行直接的操作。任务要求1.研究链表的相关算法并实现2.分析算法的运行效率3.具有良好的运行界面4.算法具有良好的健壮性5.按要求撰写课程设计报告和设计总结。参考文献1.《C程序设计(第二版)》,谭浩强,北京,清华大学出版社,1999.2.《数据结构(C语言版)》,严蔚敏,吴伟民,北京,清华大学出版社,19973.《数据结构题集(C语言版)》,严蔚敏,吴伟民,米宁,北京,清华大学出版社,2006审查意见指导教师签字:教研室主任签字:年月日说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页1.需求分析本系统根据常规的图书馆的基本功能分为管理员区和读者区,管理员有权限修改添加和删除。添加和删除都采用链式结构的原理去执行文件。在读者区读者可以按编号或书名轻松找到所需书的信息,这里也采用的是链式结构原理执行。与此同时,本系统操作界面很是简单清晰,一目了然,给读者以舒服的感官效果。同时该系统中用到结构体,数组等专业编程用法。2.概况设计从管理员角度去管理图书,在读者角度去查找,阅读图书。结构如下:———————————————————————————————读者信息———学号、班级、学院管理员————添加图书———图书详情————是否借阅删除图书———所删图书的全部信息———————————————————————————————查阅全部图书————图书详情读者————选择图书借阅————读者登记借书———————————————————————————————3.运行环境Vc6和c++4.开发工具和编程语言Vc6;c语言5.详细设计classLibrarian//图书管理员类{public:Librarian();Librarian(intn,intj,charna[20],intw);intgetnumber();intgetjobage();char*getname();intgetwages();voidresetjobage(intj);voidresetwages(intw);voidresetname(charna[20]);private:intnumber;intjobage;charname[20];intwages;};Librarian::Librarian()//其函数的实现{number=0;charb[20]=noone;jobage=0;strcpy(name,b);}Librarian::Librarian(intn,intj,charna[20],intw){number=n;jobage=j;strcpy(name,na);wages=w;}intLibrarian::getjobage(){returnjobage;}char*Librarian::getname(){returnname;}intLibrarian::getnumber(){returnnumber;}intLibrarian::getwages(){returnwages;}voidLibrarian::resetjobage(intj){jobage=j;}voidLibrarian::resetname(charna[20]){strcpy(name,na);}voidLibrarian::resetwages(intw){wages=w;}classreader//读者类{private:intnumber;intage;charname[20];charborrowbook[20];public:reader();reader(intc,inta,charb[20],chare[20]);intgetnumber();intgetage();char*getname();char*getborrowbook();voidreworkborrowbook(chara[20]);};reader::reader()//其函数的实现{chara[20]=没有人;charc[20]=没有借书;number=0;age=0;}reader::reader(inta,intc,chard[20],chare[20]){number=a;age=c;strcpy(name,d);strcpy(borrowbook,e);}intreader::getnumber(){returnnumber;}intreader::getage(){returnage;}char*reader::getname(){returnname;}char*reader::getborrowbook(){returnborrowbook;}voidreader::reworkborrowbook(chara[20]){strcpy(borrowbook,a);}structbook//图书的结构体{intnum;charname[20];charwriter[20];};voidoutbookinf()//输出所有图书信息{inti;ifstreaminfile(allbook.txt,ios::in);charline[50];cout书名'\t'书号'\t'作者endl;for(i=1;i=10;i++){infile.getline(line,50,'\n');coutlineendl;}infile.close();}voidserchLaninf()//图书管理员信息函数{intn,i;ifstreamfile(serchLaninf.txt);if(file){filen;file.close();}else{cout没有图书管信息理员;exit(0);}ifstreamis(controlloer.txt,ios_base::binary);if(is){Librarian*A=newLibrarian[n];for(i=0;in;i++){is.read((char*)&A[i],sizeof(A[i]));}for(i=0;in;i++){cout编号'\t'工龄'\t'名字'\t'工资endl;coutA[i].getnumber()\tA[i].getjobage()\tA[i].getname()\tA[i].getwages()endl;}}else{couttxt文件打开出错'endl;}is.close();}voidlibary()//图书馆的总信息{system(cls);system(color2e);coutendl;coutendl;coutendl;cout本校图书馆由本部图书馆及莲花街图书馆组成,图书馆总面积达了****平方米;cout(本馆现在有***类书籍***万册,****类书籍****万册,****类书籍****万册****类书籍****万册),;cout图书馆现有工作人员***名;cout图书馆现有的现代化设备价值超过****万元………………endl;}voidstorelibrarian()//存入新的管理员的信息{intage,n,num,wage;charname[20];ifstreamfile(serchLaninf.txt);if(file){filen;file.close();}else{n=0;}cout已有的图书管理员个数:;coutnendl;cout请输入新图书管理员的编号和工龄,名字和工资:;cinnumagenamewage;LibrarianA(num,age,name,wage);cout编号工龄名字工资endl;coutA.getnumber()A.getjobage()A.getname()A.getwages()endl;ofstreamoutfile(controlloer.txt,ios_base::app);outfile.write((char*)&A,sizeof(A));outfile.close();n++;ofstreamtfile(serchLaninf.txt);tfilen;tfile.close();cout保存成功!;}voidreLaninf()//修改图书管理员{inti,n,h,jobage,wage,j;charname[20];ifstreamfile(serchLaninf.txt);if(file){filen;file.close();}else{cout没有图书管信息理员;exit(0);}cout已有的图书管理员个数:;coutnendl;Librarian*A=newLibrarian[n];ifstreamis(controlloer.txt,ios_base::binary);if(is){for(i=0;in;i++){is.read((char*)&A[i],sizeof(A[i]));}for(i=0;in;i++){cout编号工龄名字工资endl;coutA[i].getnumber()A[i].getjobage()A[i].getname()A[i].getwages()endl;}}else{cout打开文件出错endl;}is.close();cout请选择你要修改的管理员编号:;cinh;cout输入新的工龄,名字,工资:;cinjobagenamewage;A[h-1].resetjobage(jobage);A[h-1].resetname(name);A[h-1].resetwages(wage);cout该管理员修改后的名字是:A[h-1].getname()工龄是:A[h-1].getjobage()工资是:A[h-1].getwages()endl;ofstreamtfile(controlloer.txt,ios_base::binary);for(j=0;jn;j++){tfile.write((char*)&A[j],sizeof(A[j]));}tfile.close();}voidaadbook()//新增图书{intnum;charname[12];charwriter[10];intn;a:ofstreamfout(allbook.txt,ios::app);cout请录入图书信息:endl;cout书名'\t'书号'\t'作者endl;cinname;foutname'\t';cinnum;foutnum'\t';cinwrit
本文标题:图书管理C语言
链接地址:https://www.777doc.com/doc-3967288 .html