2022年程序设计报告图书管理系统 .pdf
《2022年程序设计报告图书管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年程序设计报告图书管理系统 .pdf(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、题目:图书管理系统一、课题内容基于角色管理的简易图书管理系统实现功能:1. 角色管理。设有图书管理员和普通用户两类角色,他们设有不同的权限,各类用户进入系统时需先登录。2. 图书管理员角色, 图书管理员可对图书信息的录入、删除、及修改、统计;3. 普通用户角色,普通用户可借阅图书、归还图书。提高要求:使用文本文件存储各类信息,界面友好,有出错处理。实现语言: C语言或 C+ 语言二、课题要求1. 熟练运用 C或 C+ 课程所学习的理论和概念。 2.熟练运用循环结构、分支结构、顺序结构。 3.熟练掌握函数的定义和调用方法。 4.熟悉对于文件的打开、关闭和文件的读写。 5.熟练掌握对于 C中结构体
2、或 C+ 中类的操作。 6. 按照分析、 设计、编码、调试和测试的软件开发过程独立完成管理系统设计。三、需求分析1. 该程序可实现对于普通用户( 即学生 ) 和管理员两种角色对于图书管理系统的操作。 2.普通用户 ( 即学生) 登陆后可对图书进行查询、借阅、归还。 3.管理员登陆后可对图书进行增加、删除、修改、统计,以及对图书馆中职名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 33 页 - - - - - - - - - 员和学生的信息统计,方便对学生补办借书卡以及人员
3、统计的管理。 4.该程序中的查询图书功能有按书名和作者两类查找方式,以满足不同用户的需要。四、概要设计采用模块化的程序设计方法, 即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。1. 模块功能说明:(1).图书查询:可以通过对书名或作者两类方式的查找,查找到所要查找的书籍。(2).图书借阅:进入该模块时需要普通用户登录,即学生输入自己的卡号,输入正确可进入借阅模块,输入错误则进行返回。(3).管理员系统:进入管理员模式,进入该模块时需要管理员登陆,即输入管理员个人密码,进入后可以对图书进行增加、删除、修改、统计,以及对图书馆内职工和学生的信息管理。(4).图书归还:进
4、入该模块时需要普通用户登陆,即学生输入自己的卡号,输入正确可进入还书模块,输入错误则进行返回。(5).退出系统:选择该选项,自动退出图书管理系统。2.描述算法的流程图:(1) 主流程:图书管理系统,进入后有查询图书、借阅图书、归还图书等功能,还可以进入管理员模式,或者退出系统。其中,借阅图书和归还图书是针对普通用户(学生)设立的,进入时需要登录,即输入学生的借书卡卡号。在管理员模式下,只有指定的管理员允许进入,进入前需先登录,即输入管理员密码,进入后可对图书进行增、删、查、改,同时可以实现对管理员和学生的信息管理。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
5、 - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 33 页 - - - - - - - - - 图 1.主流程(2) 各主要模块流程:普通用户模式下的还书功能:步骤: a.输入学生卡号;b.系统通过文件读取卡号记录;c.判断卡号是否存在,卡号存在则跳转d,否则跳转到f;d.输入归还书籍;e.选择是否继续归还,是则跳转d,否则跳转 f;f.结束,进行返回。查询图书退出系统按书名查找按作者查找增加图书删除图书修改图书书籍统计学生信息管理管理员信息管理返回主菜单图书管理系统借阅图书(用户进入)归还图书(用户进入)管理员系统(管理员进入)名师资料总结 - -
6、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 33 页 - - - - - - - - - 图 2. 普通用户模式下的还书功能普通用户模式下的借书功能:步骤: a.输入卡号;b.系统通过文件读取卡号记录;c.判断卡号是否存在,卡号存在则跳转d,否则跳转 h d.输入借阅书籍;e.判断该书是否借出,借出则跳转f,否则跳转 g; f.提示借书失败;g.提示借书成功;h.结束,进行返回。Y 开始输入卡号读取卡 号记录-卡号存在输入归还书籍是否继续归还Y 结束N N 名师资料总结 - - -精品资料
7、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 33 页 - - - - - - - - - 图 3. 普通用户模式下的借书功能管理员模式下的录入书籍功能:步骤: a.输入录入书籍的相关信息;b.标记该书是否借出;c.选择是否录入下一本 ,若选择是,跳转到a,若选择否,跳转到d;d.结束,进行返回。Y 开始输入卡号读取卡 号记录-卡号存在输入借阅书籍该书是否借出Y N 借书失败借书成功结束N 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
8、 名师精心整理 - - - - - - - 第 5 页,共 33 页 - - - - - - - - - 图 4. 管理员模式下的录入书籍功能管理员模式下的删除书籍功能:步骤: a. 输入要删除的书籍; b. 选择是否真的要删除该书籍,若选择是,则跳转c, 否则跳转 d; c.删除书籍; d.结束,进行返回。图 5. 管理员模式下的删除书籍功能Y N 输 入 所 录 入 书 的相关信息标记是否借出录入下一本开始结束开始输 入 要 删除的书籍是否真的要删删除结束Y N 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
9、- - - - - - - 第 6 页,共 33 页 - - - - - - - - - 管理员模式下的修改书籍功能:步骤: a.输入所要修改的书名;b.系统显示该书信息;c.输入所要修改的内容;d.选择修改序号、修改书名、修改作者,进行相应修改;e.结束,进行返回。图 6. 管理员模式下的修改书籍功能管理员模式下的书籍统计功能:步骤: a. 系统自动对书籍编号和数量赋初值; b.判断是否读入到文件尾部,若读到尾部则跳转到f ,否则跳转到 c; c.输出图书信息;开始输入所要修改的书名自 动 显 示该书信息输入所要修改的内容修改序号修改书名修改作者结束名师资料总结 - - -精品资料欢迎下载
10、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 33 页 - - - - - - - - - d. 书籍数量和编号系统自动进行加一操作; e. 判断是否读入到文件尾部,若读到尾部则跳转到f ,若否则跳转到 c; f.输出书籍的本数; g. 结束,进行返回。:图 7. 管理员模式下的书籍统计功能管理员模式下的借书卡管理功能:步骤: a. 选择申请新卡、删除卡号、借书统计、卡号统计,进行相应操作; b.结束,进行返回。N 开始i=0 n=0 fread(&booki,sizeof(struct book),1,fp)
11、!=0 输出图书信息n=n+1 i+ 输出共有n 本书结束Y 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 33 页 - - - - - - - - - 图 8. 管理员模式下的借书卡管理功能五、源程序代码#include #include #include #include #define STACK_INIT_SIZE 10 struct student /*定义学生类型,用于存放借出的书籍*/ int carnum; /* 学生借书卡卡号*/ char lendb
12、ook10; /* 借书书名 */ student1000; struct employ /* 定义管理员类型*/ int employnum; /* 管理员序号 */ char employname15; /* 管理员姓名 */ int employage; /* 管理员年龄 */ char employsex2; /*管理员性别 */ char employleve10; /* 管理员学历 */ long int employtage; /* 管理员工资 */ employ50; struct book /* 定义书的类型 */ int booknum; /*书的序号 */ char bo
13、okname10; /* 书名 */ char bookcreat10; /*书的作者 */ 开始申请新卡删除卡号借书统计卡号统计结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 33 页 - - - - - - - - - int turefalse; /* 用于借书和还书模块判断一本书是否借出的条件*/ book1000; struct car /* 借书卡的数据类型*/ int carnum; /* 卡号 */ char studentname10; /* 学生姓
14、名 */ int studentclass; /*学生班级 */ car100; huanbook() /* 还书函数 */ FILE *fp,*fp2; /* 定义两个文件指针, fp2 用于修改数据时设立临时文件用,防止数据遭破坏*/ int i,n; int carnum; char lendbook10; printf( 请你输入你的卡号n); scanf(%d,&carnum); fp=fopen(car.txt,r); /* 读取卡号记录 */ for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) /*for循环判断卡号是否存在 *
15、/ 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.tx
16、t,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) if(strcmp(studenti.lendbook,lendbook)=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 33 页 - - - - - - - - - continue; /*删除还掉的书的借书记录*/ fwrite(&studenti,sizeof(struct st
17、udent),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); f
18、p=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); f
19、p=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); /*将临时文件写回*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 33 页 - - - - - - - - - fclose(fp); fclose(fp2); fopen(bookl.
20、txt,w); /*清临时文件 */ fclose(fp2); printf( 还书完毕,按任意键返回n); getch(); system(cls); return 1; printf(你没有借该书!任意键返回n); /*出错提示 */ fclose(fp); getch(); system(cls); return 0; printf( 无此卡号 ! 按任意键返回 n); /*出错提示 */ fclose(fp); getch(); system(cls); findbook() /* 查询书籍函数 2*/ FILE *fp; char bookname10; int ture,i; fp
21、=fopen(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) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 33 页 - - - - - - - - - printf( 这本书的详细资
22、料是:%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() /*查询书籍函数 1*/ FILE *fp; char bookcreat10; int ture,i; fp=fopen(book.txt,r); printf( 请输入你要查找的作者
23、名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); fclose(fp); return 0; 名师资料总结 - - -精品资料欢迎
24、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 33 页 - - - - - - - - - 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+) prin
25、tf( 卡号: %d 借出的书籍: %s n,studenti.carnum,studenti.lendbook); n=n+1; fclose(fp); printf( 目前共有 %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-2n); scanf(%s,&ch5); switch(ch5) case 1:system(cls);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年程序设计报告图书管理系统 2022 程序设计 报告 图书 管理 系统
限制150内