图书信息管理系统.doc_第1页
图书信息管理系统.doc_第2页
图书信息管理系统.doc_第3页
图书信息管理系统.doc_第4页
图书信息管理系统.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

淮北师范大学程序设计课程设计图书信息管理系统学 院 计算机科学与技术 专 业 计算机科学与技术(非师范) 学 号 20111202029 学 生 姓 名 娄小闯 指导教师姓名 施汉琴 2012年9月 19 日231、 设计目的与内容课程设计目的:C语言课程设计是计算机各专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,立分析和解决实际问题的机会。独进一步巩固和复习 C 程序设计的基础知识。培养学生结构化程序、模块化程序设计的方法和能力。提高学生调试程序的技巧和软件设计的能力。提高学生分析问题、解决问题以及综合利用 C 语言进行程序设计的能力。了解软件的编制过程二、算法的基本思想。课程设计内容:1.确定能记录图书和读者信息的数据结构,图书至少要有书号、书名、作者名、出版社、分类号、可借数等信息,读者至少有读者号、读者名、可借图书数、借书日期、还书日期等信息。设计一个简单的图书信息管理系统。2.程序应具有以下基本功能: 添加:添加记录时,建立图书数据库文件及按书号的索引文件和多重表文件,包括书名、作者、出版社等索引文件,方便后续以书号、书名、作者及出版社的查询。 查询:采用二分查找对书号索引文件查找书号记录;采用简单查找分别对书名索引文件、作者索引文件和出版社索引文件查找。借书:输入读者号、书号、借阅日期进行借书处理。还书:输入读者号、书号、还书日期进行还书处理。系统结构:图书信息管理系统读者信息管理借还书管理图书信息管理借还查询还书借书删除读者修改读者增加读者查询读者删除图书修改图书增加图书查询图书数据结构的定义:struct readerint readernum; /读者编号char readername20; /读者姓名char memo50; /读者备注;三、主要功能模块流程图读者查询输入要查询读者号是否存在输出信息是否继续查找结束是否否是四、系统测试程序运行实例如下:1运行界面(菜单):2选择2,运行界面如下:(1).选择4,运行界面如下:五、结论通过最近两周的课程设计,我对C语言有了一定的回顾和复习,终于体会到C语言的实际用武之地,但是这还远远不够。本程序能够实现小型图书信息管理(包括图书增加、读者信息增加等功能),但难免存在不足之处,如:A,编写执行输出“查找读者编号不存在!”时,只能查找第1次录入的读者信息,我在源程序中用注释标出。(由于存在此漏洞,本人已注释掉此输出操作);B,删除读者信息时只能按录入的读者信息从后往前删除,如此的话就不能从中间删除读者数据。C,图书修改以及读者修改功能尚未完善,不能使用。可以改进的功能,有:A,菜单界面的美化,给使用者以温馨的视觉感受;B,图书查找,增加书名、作者以及出版社查找,让使用者更加方便图书的查找;等。六、源程序及系统文件使用说明/借书卡号即是读者编号,即为借阅号。/删除信息操作时,注意,直接按Enter键即可删除。/删除读者信息时只能按录入的读者信息从后往前删除。#include #include #include #include #include struct book /*定义书的类型*/ int booknum; /书号char bookname20; /书名char bookauthor20; /作者char press50; /出版社float price; /书价int count; /剩余本数; struct reader/读者类型int readernum; /读者编号char readername20; /读者姓名char memo50; /读者备注;struct borrowreturn/借还书类型intreadernum;/读者编号char readername20; /读者姓名int booknum; /书号char bookname20; /书名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; /fseek(fp,i*sizeof(struct book),0);fread(&book1,(long)sizeof(struct book),1,fp); if(book1.booknum=num & 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);fread(&book1,(long)sizeof(struct book),1,fp); 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)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+;fseek(fp,(long)sizeof(struct book),1); /文件从当前位置后移sizeof(struct book)个长度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)fread(&book1,(long)sizeof(struct book),1,fp1); fwrite(&book1,(long)sizeof(struct book),1,fp);fclose(fp);fclose(fp1);getche();/暂停一下,否则返回菜单太快!fflush(stdin);/*结束图书:增加查询修改删除*/*读者:增加查询修改删除*void readeradd()/读者增加 FILE *fp; struct reader reader1;int i=0; char choice=y; fp=fopen(reader.dat,wb+); while(choice=y|choice=Y) while(1)printf(请你输入第%d读者号(0):,i+1); scanf(%d,&reader1.readernum); fflush(stdin);if(reader1.readernum0)break;printf(请你输入读者姓名:); scanf(%s,reader1.readername); fflush(stdin);printf(请你输入读者的备注:); scanf(%s,reader1.memo); fflush(stdin);fwrite(&reader1,(long)sizeof(struct reader),1,fp); fflush(stdin);printf(是否要输入下一位读者信息(y/n)?:); scanf(%c,&choice);fflush(stdin);if(choice=y|choice=Y)i+; fclose(fp); void readersearch()/读者查询 FILE *fp; struct reader reader1;int num;char choice=y; fp=fopen(reader.dat,rb); while(choice=y|choice=Y) while(1)printf(请你输入查询的读者编号(0):); scanf(%d,&num);fflush(stdin);if(num0)break; while(!feof(fp) fread(&reader1,(long)sizeof(struct reader),1,fp); if(reader1.readernum=num)printf(你查找的读者的信息为:n); printf(读者编号:); printf(%dn,reader1.readernum); printf(读者姓名:); printf(%sn,reader1.readername); printf(读者备注:); printf(%sn,reader1.memo); break;printf(是否要继续查找吗(y/n):); scanf(%c,&choice);fflush(stdin);if(choice=y|choice=Y)rewind(fp);/i=0; fclose(fp); void readerupdate()/读者修改FILE *fp; struct reader reader1;int num;int i=0;char choice=y; fp=fopen(reader.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(&reader1,(long)sizeof(struct reader),1,fp); if(reader1.readernum=num & i=0)printf(你要修改的读者信息为:n); printf(读者编号:); printf(%dn,reader1.readernum); printf(姓名:); printf(%sn,reader1.readername); printf(备注:); printf(%sn,reader1.memo); i+;printf(你要修改的读者信息为:n); printf(请你输入新的读者编号(0):); scanf(%d,&reader1.readernum); fflush(stdin);printf(请你输入新的读者姓名:); scanf(%s,reader1.readername); fflush(stdin);printf(请你输入新的读者备注:); scanf(%s,reader1.memo); fflush(stdin);fseek(fp,-(long)sizeof(struct reader),1);fwrite(&reader1,(long)sizeof(struct reader),1,fp);fseek(fp,(long)sizeof(struct reader),1);fflush(stdin);printf(是否要继续修改读者信息吗(y/n):); scanf(%c,&choice);fflush(stdin);if(choice=y|choice=Y)rewind(fp); fclose(fp); void readerdelete()/读者删除FILE *fp,*fp1; struct reader reader1;int num;int i=0;fp=fopen(reader.dat,rb); fp1=fopen(readerbak.dat,wb); while(1)printf(请你输入删除的读者编号(0):); scanf(%d,&num);fflush(stdin);if(num0)break;while(!feof(fp)i=0;fread(&reader1,(long)sizeof(struct reader),1,fp); if(reader1.readernum=num & i=0)printf(你要删除的读者信息为:n); printf(读者编号:); printf(%dn,reader1.readernum); printf(借书卡人姓名:); printf(%sn,reader1.readername); printf(借书卡备注:);printf(%sn,reader1.memo); i+;fseek(fp,(long)sizeof(struct reader),1); /把文件指针后移sizeof(struct reader)个长度break;elsefwrite(&reader1,(long)sizeof(struct reader),1,fp1);fclose(fp);fclose(fp1);fp=fopen(reader.dat,wb); fp1=fopen(readerbak.dat,rb);for(i=0;fread(&reader1,sizeof(struct reader),1,fp1)!=0;i+) /fread(&reader1,(long)sizeof(struct reader),1,fp1); fwrite(&reader1,(long)sizeof(struct reader),1,fp);fclose(fp);fclose(fp1);getche();/暂停一下,否则返回菜单太快!fflush(stdin);/*结束读者操作:增加查询修改删除*/*借还书*void bookborrow()/借书FILE *fp,*fp1,*fp2; struct reader reader1;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(reader.dat,rb); fp1=fopen(book.dat,rb+); fp2=fopen(borrowreturn1.dat,a+);/*查询借书卡号*while(choice=y|choice=Y) printf(请你输入借阅者的借书卡号(0):); scanf(%d,&num);fflush(stdin); while(!feof(fp) fread(&reader1,(long)sizeof(struct reader),1,fp); if(reader1.readernum=num)printf(你查找的读者的信息为(0):n); printf(读者编号:); printf(%dn,reader1.readernum); printf(读者姓名:); printf(%sn,reader1.readername); printf(借书卡备注:); printf(%sn,reader1.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(!(reader1.readernum!=0 & book1.booknum!=0 & book1.count!=0)exit(0);/reader1.readernum写入的读者编号, book1.booknum写入的借书书号book1.count-;/修改所借书的剩余本数fseek(fp1,-(long)sizeof(struct book),1);/定位文件内部指针到修改的信息位置fwrite(&book1,(long)sizeof(struct book),1,fp1);/修改所借书的剩余本数borrowreturn1.readernum=reader1.readernum ;strcpy(borrowreturn1.readername,reader1.readername) ;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 reader reader1;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(reader.dat,rb); fp1=fopen(book.dat,rb+); fp2=fopen(borrowreturn1.dat,ab+);/*查询还书卡号*while(choice=y|choice=Y) printf(请你输入还书者的读者编号(0):); scanf(%d,&num);fflush(stdin); while(!feof(fp) fread(&reader1,(long)sizeof(struct reader),1,fp); if(reader1.readernum=num)printf(你查找的还书者的读者信息为:n); printf(读者编号:); printf(%dn,reader1.readernum); printf(读者姓名:); printf(%sn,reader1.readername); printf(读者备注:); printf(%sn,reader1.memo); break;if(num=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(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)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(!(reader1.readernum!=0 & book1.booknum!=0)exit(0);/card1.readernum写入的还书人的读者编号/book1.booknum写入的借书书号book1.count+;/修改所还书的剩余本数fseek(fp1,-(long)sizeof(struct book),1);/定位文件内部指针到修改的信息位置fwrite(&book1,(long)sizeof(struct book),1,fp1);/修改所还书的剩余本数borrowreturn1.readernum=reader1.readernum ;strcpy(borrowreturn1.readername,reader1.readername) ;borrowreturn1.booknum=book1.booknum ;strcpy(borrowreturn1.bookname,book1.bookname) ;strcpy(borrowret

温馨提示

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

评论

0/150

提交评论