《2022年图书馆管理系统程序设计报告借鉴 .pdf》由会员分享,可在线阅读,更多相关《2022年图书馆管理系统程序设计报告借鉴 .pdf(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、- 程序设计报告( 2011 / 2012 学年 第 二 学期)题目:图书管理系统专业光信息科学与技术组长姓名季勤芹组长学号 B10030310 成 员 姓名学号孟彩霞 B10030309 曹洋 B10030311 指导教师朱旻如指导单位 计算机学院软件教学中心日期 2011-3-8 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 22 页 - - - - - - - - - - 图书管理系统实验报告一、分析及结构设计软件应当实现图书资料管理:以文件形式存储,预先从键盘录
2、入,包括ISBN 编号,编码,书名,作者,价格,状态(在库、借出)。借书证管理:借书证编号、借阅者姓名、借阅者分类(学生和图书馆职工)、办理时间、有效期、联系方式等,借阅规则包括借阅的本数、节约时间、罚款的计算方式等。学生借阅管理、学生还书管理和查询系统。所以,图书管理系统主要包括:图书资料管理系统、借书证管理系统、学生借阅管理系统、学生还书管理系统以及查询系统。其中,图书资料管理系统包括:图书删除系统、新书登记系统。借书证管理系统包括:借书证删除系统、新借书证登记系统。查询系统包括:按作者查找和按书名查找系统。二、开发设计程序主要结构如下:以文件形式输入新书图书资料管理更改图书信息删除无用的
3、图书信息申请新的借书证借书证管理删除借书证借阅管理图书管理系统图书馆职工管理还书管理按书名查找查书系统按作者查找借书规则名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 22 页 - - - - - - - - - - 主要的数据结构有学生的student 和员工的 employ 结构,还有图书book、日期Date 和借书证 car 的结构。主函数采用 switch 进行函数之间的调用和转换,用字符1、2、3、4 等来进行选择。三、源代码#include #include
4、 #include #include #include struct student int carnum; char lendbook10; student1000; struct employ int employnum; char employname15; int employage; char employsex2; char employleve10; long int employtage; employ50; struct book int booknum; int bookprice; char bookname10; char bookcreat10; int turefa
5、lse; book1000; struct Date int yr,mo,da; ; struct car int carnum; int mobile; char name10; char type10; char last10; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 22 页 - - - - - - - - - - struct Date dt; car100; int returnbook() FILE *fp,*fp2; int i,n; int car
6、num; char lendbook10; 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,lendbook); fp=fopen(record.txt,r); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i
7、+) 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(rec
8、ord.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); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 22 页 - - - - - - - - - - fclose(fp2); fopen(bookl.txt,w);
9、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,fp2); fclose(fp); fclose(fp2); fp=fopen(book.txt,w); fp2=fopen(bookl.txt
10、,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( 你没有借这样的书,任意键返回n); fclose(fp); getch(); return 0; printf( 系统没这样的卡,和管理员联系,按任意键返回 n); fclose(
11、fp); getch(); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 22 页 - - - - - - - - - - int findbook1() FILE *fp; char bookname10; int i; fp=fopen(book.txt,r); printf( 请输入你要查找的书名 n); scanf(%s,bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;
12、i+) if(strcmp(bookname,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 0; printf( 没有你要查询的书籍 n); fclose(fp); return 0; int findbook2() FILE *fp; char
13、bookcreat10; int 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
14、printf( 这本书已经有人借出 n);fclose(fp);return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 22 页 - - - - - - - - - - fclose(fp); return 0; printf( 没有你要查询的书籍 n); fclose(fp); return 0; int lendcount() FILE *fp; int i,n=0; fp=fopen(record.txt,r); for(i=0;fread(&stude
15、nti,sizeof(struct student),1,fp)!=0;i+) printf( 卡号: %d 借出的书籍: %s n,studenti.carnum,studenti.lendbook); n=n+1; fclose(fp); printf( 目前共有 %d 本书借出 n,n); printf( 按任意键 n); getch(); return n; int chabook() char ch5; do printf(- 欢迎进入图书查询系统! -n); printf( 1 :n); printf( 2 :n); printf( 0 :n); printf( 请输入 0-2,其
16、他输入非法! n); scanf(%s,&ch5); switch(ch5) case 1:findbook1();getch();break; case 2:findbook2();getch();break; case 0:break; default:printf( 无此操作 n);getch();break; while(ch5!=0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 22 页 - - - - - - - - - - return 0; int
17、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.txt,r); for(i=0;fread(&booki,size
18、of(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=fo
19、pen(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); 名师资料总结 - - -精品资料欢迎下载 - - - - - -
20、- - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 22 页 - - - - - - - - - - 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( 借
21、书完毕,按任意键返回 n); getch(); return 0; printf( 不存在这样的书,任意键返回n); fclose(fp); getch(); return 0; printf( 你的卡号不存在,请申请新卡,按任意键返回 n); fclose(fp); getch(); return 0; int 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.na
22、me,cari.mobile ); n=n+1; fclose(fp); printf( 目前共有 %d 张卡n,n); printf( 按任意键 n); getch(); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 22 页 - - - - - - - - - - int delcar() FILE *fp,*fp2; int i; int carnum; char choice; fp=fopen(car.txt,r); fp2=fopen(b
23、ookl.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); printf( 是否真的要删除该卡?删除后该卡号的所有信息将无法恢复Y/N n); scanf(%s,&ch
24、oice); 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); getch(); return 0; else printf( 按任意键返回 n); getch(); r
25、eturn 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 22 页 - - - - - - - - - - int addcar() FILE *fp; int i=0; fp=fopen(car.txt,a+); printf( 请输入编号 :n); scanf(%d,&cari.carnum); printf( 请输入您的姓名 :n); scanf(%s,cari.name); printf( 请输入您的手机号 :n); scanf(%d,&cari.mob
26、ile); printf( 请输入您的身份类型 (student/teacher):n); scanf(%s,&cari.type); printf( 请输入办理日期 :); scanf(%d%d%d,&cari.dt.yr,&cari.dt.mo,&cari.dt.da); printf( 请输入有效期 :); scanf(%s,cari.last); fwrite(&cari,sizeof(struct car),1,fp); fclose(fp); printf( 输入完毕,任意键返回 n); getch(); return 0; int changemploy() FILE *fp,*
27、fp2; char employname10,choice; int i; fp=fopen(employ.txt,r); fp2=fopen(bookl.txt,w); printf( 请你输入要修改的职工的名字n); scanf(%s,employname); for(i=0;fread(&employi,sizeof(struct employ),1,fp)!=0;i+) if(strcmp(employi.employname,employname)=0) printf( 你所要修改的职工的资料如下,请选择你要修改的内容n); printf(n,employi.employnum,em
28、ployi.employname,employi.employage,employi.employsex,employi.employleve,employi.employtage); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 22 页 - - - - - - - - - - printf(2:修改职工名 n); printf(3:修改职工年龄 n); printf(4:修改职工工资 n); printf(5:修改职工学历 n); printf( 请输入 1-5:
29、); scanf(%s,&choice); switch(choice) case 1: printf( 请输入新的职工号 n); scanf(%d,&employi.employnum); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 2: printf( 请输入新的职工姓名 n); scanf(%s,employi.employname); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 3: printf( 请输入新的年龄 n); scanf(%d,&
30、employi.employage); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 4: printf( 请输入新的职工工资 n); scanf(%d,&employi.employtage); fwrite(&employi,sizeof(struct employ),1,fp2); break; case 5: printf( 请输入新的职工学历 n); scanf(%s,employi.employleve); fwrite(&employi,sizeof(struct employ),1,fp2); default
31、:printf( 没有这样的操作 );break; continue; fwrite(&employi,sizeof(struct employ),1,fp2); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 22 页 - - - - - - - - - - fclose(fp); fclose(fp2); fp=fopen(employ.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&employi,sizeof(str
32、uct employ),1,fp2)!=0;i+) fwrite(&employi,sizeof(struct employ),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf( 按任意键返回 n); getch(); return 0; int delemploy() FILE *fp,*fp2; int i; char employname10,choice; fp=fopen(employ.txt,r); fp2=fopen(bookl.txt,w); printf( 请输入你要删除的职
33、工名 n); printf( 如果你输入的职工存在, 系统自动删除该信息! 如果不存在,系统不做任何改动 n); scanf(%s,employname); for(i=0;fread(&employi,sizeof(struct employ),1,fp)!=0;i+) if(strcmp(employname,employi.employname)!=0) fwrite(&employi,sizeof(struct employ),1,fp2); fclose(fp); fclose(fp2); printf( 是否真的要删除该职工信息?删除后的所有信息将无法恢复Y/N n); scanf
34、(%s,&choice); if(choice=y|choice=Y) fp=fopen(employ.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&employi,sizeof(struct employ),1,fp2)!=0;i+) fwrite(&employi,sizeof(struct employ),1,fp); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 22 页 - - - - - - - - - -
35、fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf( 按任意键返回 n); getch(); return 1; else printf( 按任意键返回 n); getch(); return 0; int employcount() FILE *fp; int i,n=0; fp=fopen(employ.txt,r); for(i=0;fread(&employi,sizeof(struct employ),1,fp)!=0;i+) printf( 第%d 职工的信息如下: nn,n+1,employi.
36、employnum,employi.employname,employi.employage,employi.employsex,employi.employleve,employi.employtage); n+; fclose(fp); printf( 目前共有 %d 个职工 n,n); printf( 按任意键返回 n); return 0; int addemploy() FILE *fp; char choice=y; int i=1; fp=fopen(employ.txt,a+); while(choice=y|choice=Y) 名师资料总结 - - -精品资料欢迎下载 - -
37、 - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 22 页 - - - - - - - - - - printf( 请你输入职工号码 n); scanf(%d,&employi.employnum); printf( 请你输入职工名 n); scanf(%s,employi.employname); printf( 请输入职工年龄 n); scanf(%d,&employi.employage); printf( 请你输入性别 n); scanf(%s,employi.employsex); printf( 请你输入职
38、工的学历水平 n); scanf(%s,employi.employleve); printf( 请输入职工的工资 n); scanf(%d,&employi.employtage); fwrite(&employi,sizeof(struct employ),1,fp); printf( 是否要输入下个职工信息?n); scanf(%s,&choice); printf( 按任意键返回 n); fclose(fp); return 0; int addbook() FILE *fp; int i=0; char choice=y; fp=fopen(book.txt,a+); while(c
39、hoice=y|choice=Y) printf( 请你输入第 %d 本书的 ISBM 编号: n,i+1); scanf(%d,&booki.booknum); printf( 请你输入书名: n); scanf(%s,booki.bookname); printf( 请你输入书的作者: n); scanf(%s,booki.bookcreat); printf( 请输入书的价格: n); scanf(%d,&booki.bookprice); printf( 请设为 1 或 0,1 代表书还没人借, 0 表示书已经借出,设其他值,程序运行时无法得出正常结果 n); printf( 请你设定
40、书的状态 “ n); scanf(%d,&booki.turefalse); fwrite(&booki,sizeof(struct book),1,fp); printf( 是否要输入下本书 (Yes/No)n); scanf(%s,&choice); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 22 页 - - - - - - - - - - fclose(fp); return 0; int bookcount() FILE *fp; int i,n=0; f
41、p=fopen(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,i+1,booki.booknum,booki.bookname,booki.bookcreat,booki.turefalse); n=n+1; fclose(fp); printf( 目前共有 %d 本书n,n); printf( 按任意键 n); return 0;
42、int 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.bookname)!=0) fwrite(&
43、booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); printf( 是否真的要删除该书籍?删除后该书籍的所有信息将无法恢复Y/Nn); scanf(%s,&choice); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 22 页 - - - - - - - - - - if(choice=y|choice=Y) fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r);
44、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); getch(); return 0; else printf( 按任意键返回 n); getch(); return 0; int changebook() FILE *fp,*fp2; char bookname10,choice; int i
45、; 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.bookcreat); print
46、f(1:修改书的序号 n); printf(2:修改书名 n); printf(3:修改作者 n); printf( 请输入 1-3:); scanf(%s,&choice); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 22 页 - - - - - - - - - - switch(choice) case 1: printf( 请输入新的序号 n); scanf(%d,&booki.booknum); fwrite(&booki,sizeof(struct bo
47、ok),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; default:printf( 没有这样的操作 );break; continue; fwrite(&booki,sizeof(struct boo
48、k),1,fp2); 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(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf( 按任意键返回 n); getch(); return 0; guize() 名师资料总结 - - -精品资料欢迎下载 - - -
49、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 22 页 - - - - - - - - - - printf( 图书馆借阅书籍规则如下:n); printf(1 :学生借书不得超过十本、教师借书不得超过15 本n); printf(2 :每本书借阅时间不得超过一个月n); printf(3 :每本书在规定时间内未归还的每天罚款1 块钱n); printf(4 :若在借阅时间内破坏图书的或丢失的,按原书的两倍赔偿n); printf(tt*谢谢阅读 *n); return 0; int main() char ch1,c
50、h2,ch3,ch4,ch5; do system(color 5E);printf(nnn); printf( , .,.,. n); printf( o,.,. n); printf( 田田田 ,.,. n); printf( nnn); printf(t*n); printf(n); printf(tt 欢迎来到图书管理系统 ttttn ); printf(n); printf(t*); printf(tt ttttt .-. n); printf( tt _._ . n ); printf( tt .-(#)(#)-/# n); printf( tt . /# n); printf(t