程序设计报告课程设计-图书馆管理系统.doc_第1页
程序设计报告课程设计-图书馆管理系统.doc_第2页
程序设计报告课程设计-图书馆管理系统.doc_第3页
程序设计报告课程设计-图书馆管理系统.doc_第4页
程序设计报告课程设计-图书馆管理系统.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

南京邮电大学程序设计报告( 2014/2015 学年 第二学期)题 目: 图书馆管理系统 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 金仙力 指 导 单 位 计算机软件教学中心 日 期 评 分 细 则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简 短 评 语态度认真,功能基本实现,达到课程设计要求。教师签名: 年 月 日评分等级中等备注评分等级有五种:优秀、良好、中等、及格、不及格一、 课题内容和要求(1)管理员入口添加、修改、删除和查询图书信息功能;图书借还功能。(2)借阅者入口查询图书信息功能、图书借还功能。(3)数据存储功能可以使用文件的块读写操作完成,也可以使用SQLite数据库(要学习如何用C/C+连接SQLite数据库),推荐使用后者。二、需求分析1. 编写目的 对于有一定规模的图书馆来说,存书数量大,存书的标识信息更大,而且图书馆也需要对读者及其管理员的信息作记录,以及读者借阅,归还图书的情况,这些汇总起来信息量非常大,如果采用手工管理,效率低,易出错,统计工作量大。鉴于这种情况,一个操作方便,简单实用的图书信息管理系统的开发就成为必要。 2. 项目实施背景 出于我们的学术水平的限制,我们不可能完成功能全面,实用性强的系统程序,在短期内就更不用说了,所以我们的编程定位是实现一些最基础的的功能。主要是实现对图书馆中各种信息的管理,使得图书信息存储及时,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书馆管理的效率,也是图书馆正规化管理的重要途径,故设计此系统。 二、概要设计欢迎进入图书管理系统 学生入口管理员入口修改图书删除图书增加图书还书借书申请新卡删除图书添加图书卡号统计修改图书图书统计借书统计图2-1该图是我们对整个程序系统的流程简介,分两个大的部分管理员入口和学生入口,每个部分下有各自不相同的具体功能。公共模块(很多函数都有调用)truct student /学生信息int carnum; char lendbook10; student1000;struct book/书籍结构 int booknum; char bookname20; float bookprice;char bookcreat20; int turefalse; book1000;struct car /卡号 int carnum; char sex5;char studentname20; int studentclass; car1000;主函数 开 始 显 示 一 系 列 功 能 选 项 输入n,判断n是否是0-X? 调 用 与 n 相 应 的 模 块NY /*主函数部分*/void main() char i;do system(cls); printf(tt 下雨的时候我总想起你nn);printf(ttn);printf(n)(“ n);printf(“ n);printf( 超级无敌高冷炫酷威力加强版图书管理系统 n);printf( n);printf( n);printf( n);printf(tn);printf(t n);printf(ttn);printf(ttn);printf( 请选择需要的服务:n); printf( 1:进入管理员入口n); printf( 2:进入学生入口 n); printf( 0:退出系统 n);printf(请输入数字03:n); fflush(stdin);/清除输入数据缓存i=getchar(); switch(i) case 1:guangliyuan();break;case 2:xuesheng();break; case 0: break;default:printf(少年,你输错了。);getchar();break; while( i!=0);void guangliyuan() char ch1;system(cls); system(color 3f); printf(tt欢迎进入管理员系统n); printf( 1:增加图书 n); printf( 2:删除图书 n); printf( 3:修改图书 n); printf( 4:图书统计 n);printf( 5:卡号管理 n); printf( 0:返回 n); printf(请输入05:n); fflush(stdin);/清除输入数据缓存 ch1=getchar(); switch(ch1) case 1:addbook();break; case 2:delbook();break; case 3:changebook();break; case 4:bookcount();getchar();break; case 5:thecar();getchar();break; case 0:break; default:printf(无此操作!n);getchar();break; 卡号管理模块(添加卡号、删除卡号、卡号统计)void thecar()int ch1;doprintf( 1:删除卡号 n); printf( 2:卡号统计 n);printf( 3:卡号添加 n);printf( 0:返回 n); printf(请输入03:n);fflush(stdin);/清除输入数据缓存ch1 = getchar();switch(ch1) case 1:delcar() ;break;case 2:carcount() ;break;case 3:addcar() ;break; case 0:break;default:printf(无此操作!n);getchar();break; while(ch1 != 0);/删除卡号.int delcar() FILE *fp,*fp2; int i; int carnum; char choice; fp=fopen(g:car.txt,r); fp2=fopen(bookl.txt,w); printf(要删除的卡号(不存在则不作改动):n); scanf(%d,&carnum); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) if(cari.carnum!=carnum) fwrite(&cari,sizeof(struct car),1,fp2); fclose(fp); fclose(fp2); printf(确认删除?(Y/N)!n); scanf(%s,&choice); if(choice=y|choice=Y) fp=fopen(g:car.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp2)!=0;i+) fwrite(&cari,sizeof(struct car),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(操作超成功!n按任意键返回.n); getchar(); return 0; else printf(操作已取消!n按任意键返回.n); getchar(); return 0; /卡号统计.void carcount() FILE *fp; int i,n=0; fp=fopen(g:car.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) printf(第%d张卡 n,i+1); printf( 卡号 性别 姓名 班级 n); printf(ttn); printf( %d %6s %10s %3d nn,cari.carnum,cari.sex,cari.studentname,cari.studentclass); n=n+1; fclose(fp); printf(目前共有%d个学生。n,n); printf(按任意键返回.n); getchar(); 书籍管理模块(添加书籍、删除书籍、修改书籍、图书统计)/添加书籍.void addbook() FILE *fp; int i=0; char choice=y; fp=fopen(g:book.txt,a+); while(choice=y|choice=Y) printf(书号:n); scanf(%d,&booki.booknum); printf(书名:n); scanf(%s,booki.bookname); printf(作者:n); scanf(%s,booki.bookcreat); printf(单价:n); scanf(%f,&booki.bookprice); printf(请你设定书的状态(1在架/0不在):n); scanf(%d,&booki.turefalse); fwrite(&booki,sizeof(struct book),1,fp); printf(是否要输入下本书(y/n)n); scanf(%s,&choice); fclose(fp); /删除书籍.int delbook() int i;FILE *fp,*fp2; char bookname10,choice; fp=fopen(g:book.txt,r); fp2=fopen(bookl.txt,w); printf(书名:n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookname,booki.bookname)!=0)fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); printf(确认删除(y/n)?n); scanf(%s,&choice); if(choice=y|choice=Y) fp=fopen(g:book.txt,w);fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(按任意键返回.n); getchar(); return 0; else printf(按任意键返回.n); getchar(); return 0;/修改图书的信息.void changebook() FILE *fp,*fp2; char bookname10,choice,choice1; int i; fp=fopen(g:book.txt,r); fp2=fopen(bookl.txt,w); printf(书名:n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(booki.bookname,bookname)=0) printf(你所要修改的书的资料如下,请选择你要修改的内容:n); printf(书号t书名t作者t n); printf(%-8d%-8s%-8sn,booki.booknum,booki.bookname,booki.bookcreat); printf(1: 修改书号:n); printf(2: 修改书名:n); printf(3: 修改作者:n); printf(4: 修改单价:n);printf(请输入14:n); fflush(stdin);/清除输入数据缓存choice=getchar(); switch(choice) case 1: printf(新的书号:n); scanf(%d,&booki.booknum); fwrite(&booki,sizeof(struct book),1,fp2); break; case 2: printf(新的书名:n); scanf(%s,booki.bookname); fwrite(&booki,sizeof(struct book),1,fp2); break; case 3: printf(新的作者:n); scanf(%s,booki.bookcreat); fwrite(&booki,sizeof(struct book),1,fp2); break; case 4:printf(呵呵哒,其实并不可以改单价,吼吼吼.);break; default:printf(没有这样的操作!);break; printf(修改成功n);printf(是否继续修改,y/n?);fflush(stdin);/清除输入数据缓存choice1=getchar();if( choice1 = y| choice1 = Y)continue;elsebreak; fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); fp=fopen(g:book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); printf(按任意键返回.n); getchar(); /书籍统计.void bookcount() FILE *fp; int i,n=0; fp=fopen(g:book.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(booki.booknum!=0&strlen(booki.bookname)!=0&strlen(booki.bookcreat)!=0) printf(第%d本书n序号 书名 作者 单价 状态 n,i+1); printf(ttn);printf( %d %10s ,booki.booknum,booki.bookname); printf(%15s %4.2f %d(1在/0不在)n,booki.bookcreat,booki.bookprice,booki.turefalse);n=n+1; fclose(fp); printf(目前共有%d本书.n,n); printf(按任意键返回.n); getchar();学生模块(申请卡号、借书查询、借书、还书)/学生管理部分.void xuesheng()char ch1;dosystem(cls); printf(tt欢迎进入学生管理系统n); printf( 1: 申请新卡 n); printf( 2: 借书 n); printf( 3: 还书 n); printf( 4: 借书查询 n); printf( 0: 返回 n); printf(请输入04:n);fflush(stdin);/清除输入数据缓存ch1 =getchar(); switch(ch1) case 1:addcar();break; case 2:lendbook() ;break; case 3:huanbook() ;break; case 4:chabook();break; case 0:break; default:printf(无此操作!n);getchar();break; while( ch1 != 0);/添加卡号.void addcar() FILE *fp; int i=0; fp=fopen(g:car.txt,a+); printf(卡号:n); scanf(%d,&cari.carnum); printf(性别:n);scanf(%s,cari.sex);printf(姓名:n); scanf(%s,cari.studentname); printf(班级:n); scanf(%d,&cari.studentclass); fwrite(&cari,sizeof(struct car),1,fp); fclose(fp); printf(输入完毕,任意键返回.n); getchar(); /查询书籍的页面.查 询 系 统按书名查找按作者查找退 出输 入不存在已出借无人借chabook() system(cls); char ch5; do printf(tt 欢迎进入图书查询系统nn); printf( 1: 按书名查找 n); printf( 2: 按作者查找 n); printf( 0: 返回 n); printf(请输入02:n); fflush(stdin);/避免其他的操作ch5=getchar(); switch(ch5) case 1:findbook();getchar();break; case 2:findbook1();getchar();break; case 0: break; default: printf(无此操作!n);getchar();break; while(ch5!=0);return 0; /根据书名查找书籍.findbook() printf(少年你可以使用这个页面用书名查找书籍。);FILE *fp; char bookname10; int i; fp=fopen(g:book.txt,r); printf(请输入你要查找的书名:n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookname,booki.bookname)=0) if(booki.turefalse=1) printf( 书号 书名 作者 n);printf( %d %s %s n,booki.booknum,booki.bookname,booki.bookcreat);printf(此书现在无人借阅n按任意键返回n); else printf(这本书已经有人借出n);fclose(fp);return 0; fclose(fp); return 0; printf(没有你要查询的书籍!n); fclose(fp); return 0; /根据作者查询书籍.findbook1() FILE *fp; char bookcreat10; int i; fp=fopen(g:book.txt,r); printf(请输入你要查找的作者名:n); scanf(%s,bookcreat); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookcreat,booki.bookcreat)=0) if(booki.turefalse=1) printf( 书号 书名 作者 n); printf( %d %s %s n,booki.booknum,booki.bookname,booki.bookcreat); printf(此书现在无人借阅n按任意键返回n); else printf(这本书已经有人借出!n);fclose(fp);return 0; fclose(fp); return 0; printf(没有你要查询的书籍n); fclose(fp); return 0; 借 阅 图书输 入 卡 号卡号存在输入书名已出借不存在借阅成功返 回卡号不存在/借书系统.lendbook() system(cls); FILE *fp,*fp2; int i,n; int carnum; printf(tt欢迎进入借书系统nn);printf(请输入借书人的:n卡号:n); scanf(%d,&carnum); fp=fopen(g:car.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) if(cari.carnum=carnum) n=i; fclose(fp); printf(书名:n); scanf(%s,studentn.lendbook); fp=fopen(g:book.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(booki.bookname,studentn.lendbook)=0) if(booki.turefalse=0) printf(对不起,此书有人借出,请借其他书n);fclose(fp);getchar();return 0; else fclose(fp); fp=fopen(record.txt,a+); studentn.carnum=carnum; fwrite(&studentn,sizeof(struct student),1,fp); fclose(fp); fp=fopen(g:book.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(booki.bookname,studentn.lendbook)=0) booki.turefalse=0; fwrite(&booki,sizeof(struct book),1,fp2); continue; fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); fp=fopen(g:book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); fopen(bookl.txt,w); fclose(fp2); printf(借书完毕,按任意键返回.n); getchar(); return 0; printf(不存在这样的书,任意键返回.n); fclose(fp); getchar(); return 0; printf(你的卡号不存在,请申请新卡,按任意键返回.n); fclose(fp); getchar(); return 0;存在不存在出错提示不存在存在删除记录输 入 卡 号输入要还书名/.huanbook() /还书系统 FILE *fp,*fp2; int i,n; int carnum; char lendbook10; printf(tt(_)欢迎进入还书界面(_);printf(n请你输入你的n卡号:n); scanf(%d,&carnum); fp=fopen(g:car.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) if(cari.carnum=carnum) n=i; fclose(fp); printf(请输入你要还的书的名字:n); scanf(%s,lendbook); fp=fopen(record.txt,r); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) if(strcmp(studenti.lendbook,lendbook)=0) fclose(fp); fp=fopen(record.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) if(strcmp(studenti.lendbook,lendbook)=0) continue; fwrite(&studenti,sizeof(struct student),1,fp2); fclose(fp); fclose(fp2); fp=fopen(record.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&studenti,sizeof(struct student),1,fp2)!=0;i+) fwrite(&studenti,sizeof(struct student),1,fp); fclose(fp); fclose(fp2); fopen(bookl.txt,w); fclose(fp2); fp=fopen(g:book.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(i=n) booki.turefalse=1; fwrite(&booki,sizeof(struct book),1,fp2); continue; fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); fp=fopen(g:book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); fopen(bookl.txt,w); fclose(fp2); printf(还书完毕,按任意键返回.n); getchar(); return 1; printf(你没有借这样的书,任意键返回.n); fclose(fp); getchar(); return 0; printf(没这样的卡,和管理员联系,按任意键返回.n); fclose(fp); getchar(); return 0;四、详细设计 (源程序)#include #include #include #include #define STACK_INIT_SIZE 10 #define OK 1 #define TRUE 1 #define ERROR 0/管理员部分void guangliyuan ();void xuesheng ();void addbook();/添加图书函数int delbook();/删除图书函数void changebook(); /修改图书函数int chabook(); /查询图书统计函数void bookcount();/图书统计void thecar();/卡号 int delcar(); /删除卡号函数void carcount(); /卡号统计函数/学生自主部分void addcar(); /申请卡号函数int lendbook(); /借书函数int huanbook() ;/还书函数/*/int findbook1();/根据作者查书int findbook();/根据书名查书/*/添加卡号struct student /学生信息int carnum; char lendbook10; student1000;struct book/书籍结构 int b

温馨提示

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

评论

0/150

提交评论