《C语言-图书管理系统(共27页).doc》由会员分享,可在线阅读,更多相关《C语言-图书管理系统(共27页).doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 图书借阅管理系统1. 课程设计的目的 我这次做的系统是图书借阅管理系统,主要目的是利用本系统来管理图书的借阅问题,以实现图书借阅的快捷化、规范化、自动化来提高工作效率。系统以实用性,通用、开放和安全的原则。使用数据库开发软件开发制作,实现了图书借阅信息的管理,借阅图书的信息自动化添加,借阅者的个人基本信息,借阅的基本信息,对各种图书的分类管理以及各种新书的添加等一些繁琐事项。更好的管理好图书的借阅问题。大大的减少了人工的工作量,比以往很大程度上提高了工作人员的工作效率。使之成为图书馆的一个平台,成为真正的现代化科技。为了充分利用学院现有的计算机硬件资源,做好图书借阅
2、管理工作,提高办事效率,实现全面的、相对集中的办公自动化,开发本系统就成了当务之急,其目的主要为了彻底改变这种繁杂的管理模式,实现全面的、相对集中的、智能化的信息综合管理,为图书馆的管理工作带来方便。我想借本次课程设计之际,开发一个适用于通用大规模图书馆的管理系统,采用现学习的C+6.0开发工具开发出来的基于Windows系列的图书借阅管理系统。该系统面向所有的在校学生,实现对学生个人的借书、学生的基本信息情况等的计算机管理。系统支持工作人员对学生图书借阅信息、图书馆新书的添加、旧书的信息修改、删除等操作,确保了数据库的安全性快捷性和一致性。2设计方案论证2.1主界面设计思路本次设计这个系统利
3、用于图书馆的图书借阅管理,该系统相比以往人工的记录方式减少了很多不比要得麻烦,大大的提高了图书馆工作人员的工作效率。这次系统的开发制作主要包括以下几个方面。书籍统计可以查询图书的名称、作者、序号等信息,以及是否借出去了。书籍管理可以把新书添加到系统当中,修改书籍的详细资料等。注册会员功能,借阅书籍的学生必须注册会员才可以借书,通过注册会员来添加该学生的基本信息。通过系统来办理借书手续以记录该学生的借书信息。学生借书模块能够查询借阅学生的信息和该学生的借书的信息。还书模块功能,学生把书籍归还后系统会清楚该学生的借书记录。员工管理系统,把员工的信息录入系统可以快速的查阅员工的信息,是管理更方便快捷
4、。图书借阅管理系统功能概况,如图1所示图书借阅管理系统退出还书系统借阅图书查阅图书管理系统 书籍管理删除书籍修改资料添加书籍书籍统计 图1 主界面框架图2.2图书管理模块设计思路 图书管理模块包括书籍统计、查询图书馆里书籍的基本信息,图书资料修改,添加新书和修改旧书的资料,删除图书,图书馆不想保存的书可以通过系统删除书籍来删除系统里面以前保留书的记录。3.设计结果与分析3.1 创建工程框架 创建工程:从“开始”菜单中选择“程序”| Microsoft Visual Studio 6.0 | Microsoft Visual C+6.0,显示Visual C+ 6.0开发环境主窗口。单击“文件”
5、菜单中的“新建”命令,显示新建对话框。在“工程”选项卡中,选择Win32 Console Application(Win32控制台应用程序)。在位置文本框中指定一个路径d:clab,在工程名称文本框中为工程输入一个名字“lab1_1”,单击确定按钮。在弹出的Win32 Console Application对话框中,选择“一个空工程”,单击“完成”按钮。如图2所示图2新建工程最后在“新建工程信息”对话框中,单击“确定”按钮,完成项目的建立。图3创建空工程 图4创建源程序编程运行后就可以使用了,可以查阅图书,比如书籍的序号、书名、以及作者等。借阅图书模块查询学生的借书信息等。管理系统模块包括员工
6、的管理和书籍的管理。还书模块,学生还书后系统就会清楚借书记录。最后模块是退出功能使用后可以退出系统。按照如图5所示进行相关操作。图5系统操作界面3.2图书管理模块设计3.2.1书籍统计书籍统计的程序,通过该程序的正确运行可以查阅图书、借阅图书、管理图书以及还书的相关操作。选择3管理图书然后会显示下一界面再选择4就可以进行书籍统计了,结果如图6所示。图6书籍统计 书籍统计函数bookcount() FILE *fp; int i,n=0; fp=fopen(book.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(
7、booki.booknum!=0&strlen(booki.bookname)!=0&strlen(booki.bookcreat)!=0) printf(第%d本书n,i+1,booki.booknum,booki.bookname,booki.bookcreat,booki.turefalse); n=n+1; fclose(fp); printf(目前共有%d本书n,n); printf(按任意键n);3.2.2删除图书 删除图书的程序,程序运行后可以选择相关选项,选择删除图书来进行图书删除,删除图书之前会显示警告是否真的要删除该图书,以便操作者误删图书。运行结果如图7所示。图7删除图书
8、 删除图书成功如图8所示图8删除成功 删除图书函数delbook() FILE *fp,*fp2; int i; char bookname10,choice; fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); printf(请输入你要删除的书名n); printf(如果你输入的书名存在,系统自动删除该信息!如果不存在,系统不做任何改动n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookname,booki.booknam
9、e)!=0) fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); printf(是否真的要删除该书籍?删除后该书籍的所有信息将无法恢复Y/Nn); scanf(%s,&choice); if(choice=y|choice=Y) fp=fopen(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); fc
10、lose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(按任意键返回n); getch(); return; else printf(按任意键返回n); getch(); return; 3.2.3修改图书资料修改图书资料程序,运行后可以根据预期结果来进行相关操作,修改图书资料包括修改图书序号、书名、和作者。运行结果如图9所示。 图9 图书资料修改 图书资料修改成功后统计结果如图10所示图 10 图书资料修改成功 修改图书资料函数changebook() FILE *fp,*fp2; char bookname10,
11、choice; int i; fp=fopen(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(序号:%d 书名:%s 作者:%s n,booki.booknum,booki.bookname,booki.bookcre
12、at); printf(1:修改书的序号n); printf(2:修改书名n); printf(3:修改作者n); printf(请输入1-3:); scanf(%s,&choice); 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,fp
13、2); break; case 3: printf(请输入新的作者n); scanf(%s,booki.bookcreat); fwrite(&booki,sizeof(struct book),1,fp2); break; defaut:printf(没有这样的操作);break; continue; fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct
14、 book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(按任意键返回n); getchar(); return; 4.设计体会有了这次的课程设计,让我在课堂上学到的理论知识有了更进一步的深入,把理论运用到实际当中不是一件简单的事情,虽然我稍微感觉到难做了一些,程序也有些欠缺的地方,但是这次设计不仅让我学到了很多知识,而且还锻炼了自己的实际操作能力。获益匪浅。这次的努力没有白费。编程中难免有些问题我还是解决不了的,但
15、是幸运的事如今互联网很发达让我在其中找到了知识并且也学到了很多有用的知识。发展如此之快的现代化社会,我们也应该加快我们的步伐跟着社会走,去学习很多我们还不掌握的知识,把它们转化成自己的东西,学会运用学到的知识,以实现科学的价值所在。在做课程设计之前我们应该充分的考虑好实际中会遇到的种种麻烦,以及预期结果,做好课设的各种准备,比如可以先写好要编写的程序,考虑要用什么函数才能实现预期的结果,整体的结构模块,做编程一定要细心仔细,而且也要有足够的耐心。这次的课程设计真是学到不少东西,让我理解了知识的重要性,多学理论知识,勤动手操作,利用我们周围有效的学习资源。是自己做一个更完善的人。5参考文献1 王
16、敬华, 林萍,陈静. C语言程序设计教程M. 北京: 清华大学出版社, 2005.102 谭浩强. C程序设计语言M. 北京: 机械工业出版社, 2003.4:205-2563李邦几 胡金桂 王敬华 . 最新C语言实用教程M. 北京: 化学工业出版社, 1996.34 李军民. 新编C语言程序设计教程(第二版)M. 西安: 西安电子科技大学出版社, 2005.08:6893 1481715谭浩强. C程序设计. 北京:清华大学出版社,2010.6附录:部分源程序#include #include #include #include #include #include #include #inc
17、lude #include #define STACK_INIT_SIZE 10 #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0struct student /*定义学生类型,用于存放借出的书籍*/ int carnum; char lendbook10; student1000;struct employ /*定义职工类型*/ int employnum; char employname15; int employage; char employsex2; char employleve10; long int empl
18、oytage; employ50;struct book /*定义书的类型*/ int booknum; char bookname10; char bookcreat10; int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/ book1000;struct car /*借书卡的数据类型*/ int carnum; char studentname10; int studentclass; car100;huanbook() /*还书函数*/ FILE *fp,*fp2; /*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/ int i,n
19、; int carnum; char lendbook10; printf(请你输入你的卡号n);fp=fopen(car.txt,r); /*读取卡号记录*/ for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) /*for循环判断卡号是否存在*/ if(cari.carnum=carnum) /*卡号存在,进入下一循环*/ n=i; fclose(fp); printf(请输入你要还的书的名字n); scanf(%s,lendbook); fp=fopen(record.txt,r); for(i=0;fread(&studenti,siz
20、eof(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; /*删除还掉的书的借书记录*/
21、 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
22、,w); /*清临时文件的记录*/ fclose(fp2); fp=fopen(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,f
23、p2); fclose(fp); fclose(fp2); fp=fopen(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); getch(); return 1; printf(
24、你没有借这样的书,任意键返回n); /*出错提示*/ fclose(fp); getch(); return 0; printf(系统没这样的卡,和管理员联系,按任意键返回n); /*出错提示*/ fclose(fp); getch(); findbook() FILE *fp; char bookname10; int ture,i; fp=fopen(book.txt,r); printf(请输入你要查找的书名n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(boo
25、kname,booki.bookname)=0) if(booki.turefalse=1) printf(这本书的详细资料是:%d %s %s 此书现在无人借阅n按任意键返回n,booki.booknum,booki.bookname,booki.bookcreat); else printf(这本书已经有人借出n);fclose(fp);return 0; fclose(fp); return FALSE; printf(没有你要查询的书籍n); fclose(fp); return FALSE; findbook1() FILE *fp; char bookcreat10; int tu
26、re,i; fp=fopen(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(这本书的详细资料是:%d %s %s 此书现在无人借阅n按任意键返回n,booki.booknum,booki.bookname,booki.bookcreat); else printf(这本书已经有人借出n)
27、;fclose(fp);return 0; fclose(fp); return FALSE; printf(没有你要查询的书籍n); fclose(fp); return FALSE; lendcount() FILE *fp; int i,n=0; fp=fopen(record.txt,r); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) printf(卡号:%d 借出的书籍:%s n,studenti.carnum,studenti.lendbook); n=n+1; fclose(fp); printf(目前共
28、有%d本书借出n,n); printf(按任意键n); getch();return n; chabook() char ch5; do printf(-欢迎进入图书查询系统!-n); printf( 1:n); printf( 2:n); printf( 0:n); printf(请输入0-2,其他输入非法!n); scanf(%s,&ch5); switch(ch5) case 1:findbook();getch();break; case 2:findbook1();getch();break; case 0:break; default:printf(无此操作n);getch();b
29、reak; while(ch5!=0);return FALSE; lendbook() FILE *fp,*fp2; int i,n; int carnum; printf(请你输入你的卡号n); scanf(%d,&carnum); fp=fopen(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(book.tx
30、t,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);getch();return; else fclose(fp); fp=fopen(record.txt,a+); studentn.carnum=carnum; fwrite(&studentn,sizeof(struct student),1,fp); fclos
31、e(fp); fp=fopen(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
32、(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); getch(); return; printf(不存在这样的书,任意键返回n); fclose(fp); getch(); return; printf(你的卡号不存在,请
33、申请新卡,按任意键返回n); fclose(fp); getch(); carcount() FILE *fp; int i,n=0; fp=fopen(car.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) printf(第%d张卡n,i+1,cari.carnum,cari.studentname,cari.studentclass); n=n+1; fclose(fp); printf(目前共有%d本书n,n); printf(按任意键n); getch(); delcar() FILE *fp,*fp2; int
34、i; int carnum; char choice; fp=fopen(car.txt,r); fp2=fopen(bookl.txt,w); printf(请输入你要删除的卡号n); 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);
35、printf(是否真的要删除该卡?删除后该书籍的所有信息将无法恢复Y/Nn); scanf(%s,&choice); if(choice=y|choice=Y) fp=fopen(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); get
36、ch(); return; else printf(按任意键返回n); getch(); return; addcar() FILE *fp; int i=0; fp=fopen(car.txt,a+); printf(请你输入卡号n); scanf(%d,&cari.carnum); printf(请你输入学生姓名n); scanf(%s,cari.studentname); printf(请你输入班级n); scanf(%d,&cari.studentclass); fwrite(&cari,sizeof(struct car),1,fp); fclose(fp); printf(输入完毕
37、,任意键返回n); getchar(); return; getch(); return TRUE; else printf(按任意键返回n); getch(); return FALSE; fclose(fp); addbook()FILE *fp;int i=0;char choice=y;fp=fopen(book.txt,a+);while(choice=y|choice=Y) printf(请你输入第%d本书的序号n,i+1); scanf(%d,&booki.booknum); printf(请你输入书名n); scanf(%s,booki.bookname); printf(请你输入书的作者n); getch(); return; else printf(按任意键返回n); getch(); return; getchar(); return; main() char ch1,ch2,ch3,ch4,ch5; do printf(tt请你选择操作类型:n); printf( 1:n); printf( 2:n); printf( 3:n)
限制150内