




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.一、可行性研究报告 1.项目由来随着科学技术的不断提高,计算机科学日渐成熟, 作为计算机应用的一部分,使用计算机对图书信息进行管理,具有手工管理所无法比拟的优点。本系统主要实现对图书馆信息的管理。其内容主要可分为两大块:图书信息的服务系统和图书的综合管理系统。图书的使用对象是借阅者,例如学生,教师;管理者是图书馆的管理员。因此根据这些信息,本系统的主要功能就是:实现图书馆图书信息的管理和维护,如用户信息管理,图书馆规则维护,新书入库,整理图书,修改图书信息和进行查询等;以及服务系统的图书信息查询,图书的借出和归还等功能图书信息管理系统能够为用户提供充足的信息和快捷的查询手段。这些优点能够极大地提高图书信息管理的效率,也是图书管理的科学化、数字化、正规化管理,与世界接轨的重要条件。用计算机制作的图书信息管理系统还可以通过功能强大的Internet网络及时的向读者发布图书的最新动态,所以,开发这样一套管理软件成为很有必要的事情。现在,这类相关的管理系统已广泛的应用在各行各业,成为各行业提高相关管理效率的重要手段。图书信息管理系统也在日益广泛地应用于各图书馆的管理中,大大提高了图书管理的相关管理效率。 2可选方案(1)借书:输入读者借书证号。系统首先检查借书证是否有效,若有效,于第一次借书的读者,在借书证上建立档案。否则,查阅借书文件,检查该读者所借图书是否超过20本,若已达20,拒借,未达20本,办理借书(检查库存,修改库存目录并将读者借书情况录入借书文件。) (2)还书:从借书文件中读出与读者有关的记录,查阅所借日期,如超期(1个月)作罚款处理。 (3)查询:通过借书文件,库存目录文件查询读者情况、图书借阅及库存情况,打印统计表。 3可行性本次可行性分析是按照软件工程的规范步骤进行的,即按复查项目目标和规模,研究目前正使用的系统,导出新系统的高层逻辑模型,重新定义问题这一循环反复的过程进行。然后提出系统的实现方案,推荐最佳方案,对所推荐的方案进行经济、技术、用户操作和法律的可行性分析,最后给出系统是否值得开发的结论。(1)技术条件方面的可行性 本系统比较简单,现有知识已较为完善,利用现有知识完全可以实现系统开发目标,预计可以在规定期限内完成开发任务。(2) 经济可行性 本系统开发较简单,一次性支出的钱不多,后期维护也不复杂,估计维护费用也不高。该系统实用性很高,投放到市场中可以赚到钱。总体来说,收益大于支出。(3)法律方面的可行性虽然老师给了我们程序的框架,但我已经进行了大量的修改,所以,在法律方面是可行的。 成本/效益分析结果:效益成本; 技术可行:现有技术可完成开发任务; 操作可行:系统能被现有的工作人员快速掌握并使用; 法律可行:所使用工具和技术及数据信息不违反法律。使用本系统的人员均有一定计算机应用基础,系统维护员由计算机的专业人员担任,所有人员都要经过本系统的使用培训。经过简单培训人员就会熟练使用本软件。4.结论:1.需要推迟到某些条件(例如资金、人力、设备等)落实之后才能开始进行;2.需要对开发目标进行某些修改之后才能开始进行;3.本方案通过实际研究表明可行二需求规格说明书1目标 本系统通过强大的计算机技术给图书管理人员和读者借、还书带来便利。本系统除了图书馆内管理的一般功能还外,还包括网上在线查询图书信息、查询本人的借阅情况和续借等功能。目标还包括: 减少人力与管理费用; 提高信息准确度; 改进管理和服务;2.功能需求各模块功能描述: 图书信息管理模块可以对图书进行增加、删除、修改、浏览、查询各项操作;借书卡管理模块可以对借书卡进行增加、删除、修改、查询各项操作;借还书管理模块可以进行借书、还书、借还书查询等操作。IPO图:读者信息表借还书图书信息表图书信息注销表借阅信息表图书类别表3. 数据需求 本程序使用的数据结构比较常见,没有用到什么特殊的数据字典。采用文件处理数据,数据保存到文件中,文件可以作为数据字典进行公共操作。三总体设计说明书 软件结构图图书信息管理系统图书信息管理借书卡管理借还书管理增加图书删除图书浏览所有图书修改图书信息查询图书信息增加借书卡删除借书卡修改卡信息查询卡信息借书还书借还书查询4 详细设计说明书各模块程序流程图和算法:(1)登入界面 1.选择1进入图书馆信息管理模块 2.选择2进入借书卡管理模块 3.选择3进入图书借还管理模块 4.退出系统 登入界面退出系统借还书管理借书卡管理图书信息管理(2)图书信息管理 1.选择1进入增加图书操作 将图书的书号、书名、作者、出版社 、书价、剩余本数各基本信息放入一个结构体中,然后将这些信息存入到文件中。 2.选择2进入删除图书操作 打开存入图书信息的文件,按照书号进行删除。 3.选择3进入修改图书操作 打开存入图书信息的文件,可以对图书的书号、书名、作者、出版社 、书价、剩余本数各基本信息进行修改。 4.选择4进入浏览图书操作 输入所要查找图书的书号进行图书的查找 5.退出该模块。选择将要进行的项目 增加图书 删除图书 修改图书 浏览图书 查询图书 结束开始3)借书卡管理 1.选择1进入增加借书卡操作 将借书卡的卡号、借书卡人姓名、学号或工号、备注各信息放入结构体中,然后将这些信息存入到文件中。2.选择2进入删除借书卡操作 打开存入图书信息的文件,按照卡号进行删除。 3.选择3进入修改借书卡操作 打开存入图书信息的文件,对借书卡的卡号、借书卡人姓名、学号或工号、备注各信息进行修改。 4.选择4进入查询借书卡操作 打开存入图书信息的文件 ,按照卡号查找借书卡相关信息。 5.退出该模块。开始选择将要进行的操作 增加借书卡 删除借书卡 修改借书卡 查询借书卡 结束开始 选择进行操作 借书 还书 借还书查询 结束(4)借书还书管理 1.选择1进入借书操作 将借还书的借书卡号、借书卡人姓名、书号、书名、作者、借还状态、借还日期、管理员 号个信息放入一个结构体中,然后将所有信息存入到文件中。 2.选择2进入还书操作 打开文件,对借书的信息进行修改。3.选择3进入借还书查询 打开文件,对借还书信息进行查询。4. 退出该模块。五程序源代码#include#include#include#include#include#includeint clrscr() HANDLE hndl=GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFO csbi ; GetConsoleScreenBufferInfo(hndl,&csbi); DWORD written ; DWORD N=csbi.dwSize.X*csbi.dwCursorPosition.Y+ csbi.dwCursorPosition.X+1 ; COORD curhome= 0,0 ; FillConsoleOutputCharacter(hndl, ,N,curhome,&written); csbi.srWindow.Bottom-=csbi.srWindow.Top ; csbi.srWindow.Top=0 ; SetConsoleWindowInfo(hndl,TRUE,&csbi.srWindow); SetConsoleCursorPosition(hndl,curhome); return 0 ;struct book /定义书的类型 int booknum; /书号 char bookname20; /书名 char bookauthor20; /作者 char press50; /出版社 float price; /书价 int count; /剩余本数;struct card /定义借书卡的类型 int cardnum; /借书卡号 char cardname20; /借书卡人姓名 char studentorempid20; /学号或工号 char memo50; /备注;struct borrowreturn /定义借还书信息的类型 int cardnum; /借书卡号 char cardname20; /借书卡人姓名 int booknum; /书号 char bookname10 ; /书名 char bookauthor10 ; /作者 char borr; /借或还(1表示借,0表示还) char date11; /借还日期 int adminnum; /管理员号 ;/*图书:增加查询修改删除*void bookadd( ) /图书增加FILE *fp;struct book book1;int i=0;char choice=y;fp=fopen(book.dat, ab+);while(choice=y|choice=Y)while(1)printf(请你输入第%d本书的书号(0):,i+1);scanf(%d,&book1.booknum);fflush(stdin);if(book1.booknum0)break;printf(请你输入书名:);scanf(%s,book1.bookname);fflush(stdin);printf(请你输入书的作者:);scanf(%s,&book1.bookauthor);fflush(stdin);printf(请你输入书的出版社:);scanf(%s,&book1.press);fflush(stdin);printf(请你输入书的价格:);scanf(%f,&book1.price);fflush(stdin);printf(请你输入书的剩余本数:);scanf(%d,&book1.count);fflush(stdin);fwrite(&book1,(long)sizeof(struct book),1,fp);fflush(stdin);printf(是否要输入下本书(y/n)?:);scanf(%c,&choice);fflush(stdin);if(choice=y|choice=Y)i+; fclose(fp);void booksearch() /图书查询FILE*fp;struct book book1;int num;char choice=y;fp=fopen( book.dat,rb);while(choice=y|choice=Y)while(1)printf(请你输入查询的书号(0):);scanf(%d,&num);fflush(stdin);if(num0)break;while(!feof(fp)fread(&book1,(long)sizeof(struct book),1,fp);if(book1.booknum=num)printf(你查找的书的信息为:n);printf(书号:);printf(%dn, book1.booknum);printf(书名:);printf(%sn,book1.bookname);printf(作者:);printf(%sn,book1.bookauthor);printf(出版社:);printf(%sn,book1.press);printf(价格:);printf(%5.1fn, book1.price);printf(剩余本数:);printf(%dn,book1.count);break; /查询显示一次后跳出循环 printf(是否要继续查找(y/n):); scanf(%c,&choice); fflush(stdin); if(choice=y|choice=Y) rewind(fp); /i=0; fclose(fp);void bookupdate() /图书修改FILE*fp;struct book book1;int num;int i=0;char choice=y;fp=fopen(book.dat,rb+);while(choice=y|choice=Y)while(1)printf(请你输入修改的书号(0):);scanf(%d,&num);fflush(stdin);if (num0)break;while(!feof(fp)i=0;fread(&book1,(long)sizeof(struct book),1,fp);if(book1.booknum=num&i=0) /i=0的条件是使如下信息显示一次printf(你修改的书的信息为:n);printf(书号:);printf(%dn, book1.booknum);printf(书名:);printf(%sn,book1.bookname);printf(作者:);printf(%sn,book1.bookauthor);printf(出版社:);printf(%sn,book1.press);printf(价格:);printf(%5.1fn,book1.price);printf(剩余本数:);printf(%dn,book1.count);i+;printf(你要修改的书的信息为:n);printf(请你输入新的书号:);fflush(stdin);scanf(%d,&book1.booknum);fflush(stdin);printf(请你输入新的书名:);scanf(%s,book1.bookname);fflush(stdin);printf(请你输入新的作者:);scanf(%s,book1.bookauthor);fflush(stdin);printf(请你输入新的出版社:);scanf(%s,book1.press);fflush(stdin);printf(请你输入新的价格:);scanf(%f,&book1.price);fflush(stdin);printf(请你输入新剩余本数:);scanf(%d,&book1.count);fflush(stdin);fseek(fp, -(long)sizeof(struct book),1);fwrite(&book1,(long)sizeof(struct book),1,fp);fseek(fp,(long)sizeof(struct book),1);fflush(stdin);printf(是否要继续修改(y/n):);scanf(%c,&choice);fflush(stdin);if(choice=y|choice=Y)rewind(fp);i=0;fclose(fp);void bookdelete()/图书删除FILE *fp,*fp1;struct book book1;int num;int i=0;fp=fopen(book.dat,rb);fp1=fopen(bookbak.dat,wb);while(1)printf(请你输入删除的书号(0):);scanf(%d,&num);fflush(stdin);if(num0)break;while(!feof(fp)/*i=0;*/fread(&book1,(long)sizeof(struct book),1,fp);if(book1.booknum=num&i=0)/i =0的条件是使如下信息显示一次printf(你要删除的书的信息为:n);printf(书号:);printf(%dn,book1.booknum);printf(书名:);printf(%sn,book1.bookname);printf(作者:);printf(%sn,book1.bookauthor);printf(出版社:);printf(%sn,book1.press);printf(价格:);printf(%5.1fn,book1.price);printf(剩余本数:);printf(%dn,book1.count);/*i+;*/break;elsefwrite( &book1,(long)sizeof(struct book),1,fp1);fclose(fp);fclose(fp1);fp=fopen(book.dat,wb);fp1=fopen(bookbak.dat,rb);while(!feof(fp1)if(fread(&book1,(long)sizeof(struct book),1,fp1)=1)fwrite(&book1,(long)sizeof(struct book),1,fp);fclose(fp);fclose(fp1);getche();/暂停一下,否则返回菜单太快fflush(stdin);/*结束图书操作:增加查询修改删除*/*借书卡:增加查询修改删除*void cardadd()/借书卡增加FILE *fp;struct card card1;int i=0;char choice=y;fp=fopen(card.dat,wb+);while(choice=y|choice=Y)while(1)printf(请你输入第%d张借书卡号(0):,i+1);scanf(%d,&card1.cardnum);fflush(stdin);if(card1.cardnum 0)break;printf(请你输入借书卡人姓名:);scanf(%s,card1.cardname);fflush(stdin);printf(请你输入借书卡人学号或工号:);scanf(%s,card1.studentorempid);fflush(stdin);printf(请你输入借书卡的备注:);scanf(%s,card1.memo);fflush(stdin);fwrite(&card1,(long)sizeof(struct card),1,fp);fflush(stdin);printf(是否要输入下一张借书卡信息(y/n)?:);scanf(%c,&choice);fflush(stdin);if(choice=y|choice=Y)i+;fclose(fp);void cardsearch()/借书卡查询FILE *fp;struct card card1;int num;char choice=y;fp=fopen(card.dat,rb);while(choice=y|choice=Y)while(1)printf(请你输入查询的借书卡号(0):);scanf(%d,&num);fflush(stdin);if(num 0)break;while(!feof(fp)fread(&card1,(long)sizeof(struct card),1,fp);if(card1.cardnum=num)printf(你查找的借书卡的信息为:n);printf(借书卡号:);printf(%dn,card1.cardnum);printf(借书卡人姓名:);printf(%sn,card1.cardname);printf(借书卡学号或工号:);printf(%sn,card1.studentorempid);printf(借书卡备注:);printf(%sn,card1.memo);break;printf(是否要继续查找(y/n):);scanf(%c,&choice);fflush(stdin);if(choice=y|choice=Y)rewind(fp);fclose(fp);void cardupdate()/借书卡修改FILE *fp;struct card card1;int num;int i;char choice=y;fp=fopen(card.dat,rb+);while(choice=y|choice=Y)while(1)printf(请你输入修改的借书卡号(0):);scanf(%d,&num);if(num0) break;fflush(stdin);while(!feof(fp)i=0;fread(&card1,(long)sizeof(struct card),1,fp);if(card1.cardnum=num&i=0)/i=0的条件是使如下信息显示一次printf(你要修改的借书卡信息为:n);printf(卡号:);printf(%dn,card1.cardnum);printf(姓名:);printf(%sn,card1.cardname);printf(学号或工号:);printf(%sn,card1.studentorempid);printf(备注:);printf(%sn,card1.memo);i+;printf(你要修改的借书卡信息为:n);printf(请你输入新的借书卡号(0):);scanf(%d,&card1.cardnum);fflush(stdin);printf(请你输入新的借书卡人姓名:);scanf(%s,card1.cardname);fflush(stdin);printf(请你输入新的借书卡人学号或工号:);scanf(%s,card1.studentorempid);fflush(stdin);printf(请你输入新的借书卡备注:);scanf(%s,card1.memo);fflush(stdin);fseek(fp,-(long)sizeof(struct card),1);fwrite(&card1,(long)sizeof(struct card),1,fp);fseek(fp,(long)sizeof(struct card),1);fflush(stdin);printf(是否要继续修改借书卡信息(y/n):);scanf(%c,&choice);fflush(stdin);if(choice=y|choice=Y)rewind(fp);fclose(fp);void carddelete()/借书卡删除FILE *fp,*fp1;struct card card1;int num;int i=0;fp=fopen(card.dat,rb);fp1=fopen(cardbak.dat,wb);while(1)printf(请你输入删除的借书卡号(0):);scanf(%d,&num);if(num0) break;fflush(stdin);while(!feof(fp)/*i=0;*/fread(&card1,(long)sizeof(struct card),1,fp);if(card1.cardnum=num&i=0)printf(你要删除的借书卡信息为:n);printf(借书卡号:);printf(%dn,card1.cardnum);printf(借书卡人姓名:);printf(%sn,card1.cardname);printf(借书卡人学号或工号:);printf(%sn,card1.studentorempid);printf(借书卡备注:);printf(%sn,card1.memo);/*i+;*/ break;elsefwrite(&card1,(long)sizeof(struct card),1,fp1);fclose(fp);fclose(fp1);fp=fopen(card.dat,wb);fp1=fopen(cardbak.dat,rb);while(!feof(fp1)fread(&card1,(long)sizeof(struct card),1,fp1);fwrite(&card1,(long)sizeof(struct card),1,fp);fclose(fp);fclose(fp1);getche();/暂停一下,否则返回菜单太快!fflush(stdin);/*结束借书卡操作:增加查询修改删除*/*借还书*void bookborrow()/借书FILE *fp,*fp1,*fp2;struct card card1;struct book book1;struct borrowreturn borrowreturn1;int num=0,num1=0;int i=0;char choice=y,choice1=n,choice2=n;/*choice表示是否继续查找借书卡号,choice1是否放弃查询借书卡或书号,choice2表示是否真的借书*/fp=fopen(card.dat,rb);fp1=fopen(book.dat,rb+);fp2=fopen(borrowreturn.dat,a+);/*查询借书卡号*while(choice=y|choice=Y)printf(请你输入借阅者的借书卡号(0):);scanf(%d,&num);fflush(stdin);while(!feof(fp)fread(&card1,(long)sizeof(struct card),1,fp);if(card1.cardnum=num)printf(你查找的借书卡的信息为(0):n);printf(借书卡号:);printf(%dn,card1.cardnum);printf(借书卡人姓名:);printf(%sn,card1.cardname);printf(借书卡学号或工号:);printf(%sn,card1.studentorempid);printf(借书卡备注:);printf(%sn,card1.memo);break;if(num=0)printf(没有找到你找的借卡号(0)!);printf(放弃借书吗(y/n):);scanf(%c,&choice1);fflush(stdin);if(choice1=y|choice1=Y)exit(0);printf(是否要继续查找吗(y/n):);scanf(%c,&choice);fflush(stdin);if(choice=y|choice=Y)rewind(fp);/i=0;fclose(fp);/*查询借阅书号*choice=y;while(choice=y|choice=Y)printf(请你输入借阅的书号(0):);scanf(%d,&num1);fflush(stdin);while(!feof(fp1)fread(&book1,(long)sizeof(struct book),1,fp1);if(book1.booknum=num1)printf(你要借阅的书的信息为:n);printf(书号:);printf(%dn,book1.booknum);printf(书名:);printf(%sn,book1.bookname);printf(作者:);printf(%sn,book1.bookauthor);printf(出版社:);printf(%sn,book1.press);printf(价格:);printf(%5.1fn,book1.price);printf(剩余本数:);printf(%dn,book1.count);break;if(num1=0|book1.count=0)printf(没有找到你找的书号或此书已借阅完! );printf(放弃借书吗(y/n):);scanf(%c,&choice1);fflush(stdin);if(choice1=y|choice1=Y)exit(0);printf(是否要继续查找(y/n):);scanf(%c,&choice);fflush(stdin);if(choice=y|choice=Y)rewind(fp1);/i=0;/*保存借阅信息*printf(真的借书吗(y/n):);scanf(%c,&choice2);fflush(stdin);if(!(choice2=y|choice2=Y)exit(0);elseif(!(card1.cardnum!=0&book1.booknum!=0&book1.count!=0)exit(0);/card1.cardnum写入的借书卡号,book1.booknum写入的借书书号book1.count-; /修改所借书的剩余本数fseek(fp1,-(long)sizeof(struct book),1); /定位文件内部指针到修改的信息位置fwrite(&book1,(long)sizeof(struct book),1,fp1);/修改所借书的剩余本数borrowreturn1.cardnum=card1.cardnum;strcpy(borrowreturn1.cardname,card1.cardname);borrowreturn1.booknum=book1.booknum;strcpy(borrowreturn1.bookname,book1.bookname);strcpy(borrowreturn1.bookauthor,book1.bookauthor);borrowreturn1.borr=1;printf(请输入管理员号:);scanf(%d,&borrowreturn1.adminnum);fflush(stdin);printf(请输入借书日期(格式要求:2009 -02 -06):);scanf(%s,&borrowreturn1.date);fflush(stdin);fwrite(&borrowreturn1,(long)sizeof(struct borrowreturn),1,fp2);fclose(fp1);fclose(fp2);void bookreturn() /还书 FILE *fp,*fp1,*fp2;struct card card1;struct book book1;struct borr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车美容店跨界合作与联名活动协议范本
- 个人创业投资连带责任担保合同
- 2025至2030中国流变改性剂市场运营规划及前景趋势洞察报告
- 上学的出血病人护理要点
- 口服靶向药物皮疹的护理
- 2025至2030中国鼓式融化机行业产业运行态势及投资规划深度研究报告
- 认识东西南北教学课件
- 颅内积气护理查房
- 夫妻离异后子女抚养权人寿保险保障服务协议
- 二手房买卖合同签订中的合同签订与房屋质量保证
- 2022年新高考I卷读后续写David's run公开课课件-高三英语一轮复习
- 蓄水模块专项监理实施细则
- 创业小白实操手册 第2版 课件 6 做原型小验证-课件标准版
- 《全面质量管理》习题集(含答案)
- 数学游戏(单元复习课件)人教版一年级数学上册
- 北师大版小学数学四年级上册第3单元 乘法《卫星运行时间》教学课件
- 新学期幼儿园小班新生家长会课件
- DL∕T 2559-2022 灯泡贯流式水轮机状态检修评估技术导则
- 热固复合聚苯乙烯防火保温板应用技术规程(征求意见稿)
- 法院书记员考试试题
- 计算机系统原理13015习题答案
评论
0/150
提交评论