图书馆管理系统文档(含源代码)免费
图书馆管理系统源代码
以我给的标题写原创文档,最低1200字,要求以Markdown文本格式输出,不要带图片和AI、人工智能、Markdown、GPT等关键词,标题为:图书馆管理系统源代码# 图书馆管理系统源代码## 一、引言图书馆作为一个重要的知识资源和学术场所,对于学生和研究人员具有重要意义。
为了更好地管理图书馆资源和提供服务,图书馆管理系统应运而生。
本文将介绍图书馆管理系统的源代码设计和实现。
## 二、系统功能需求### 1. 登录功能- 提供管理员和用户登录功能- 管理员可进行图书管理、借阅管理等操作- 用户可查询图书信息、借阅情况等### 2. 图书管理- 添加新书籍信息- 修改或删除现有书籍信息- 查询图书信息,包括书名、作者、出版社等### 3. 借阅管理- 用户借阅图书- 用户归还图书- 管理员监管借阅情况### 4. 查询功能- 用户可以根据条件查询图书信息- 管理员可以查询借阅情况、用户信息等## 三、系统设计### 1. 数据库设计- 数据库包括图书信息表、用户信息表、借阅记录表等- 表之间建立关联,保证数据一致性和完整性### 2. 源代码结构```- books- README.md- book.js- bookRouter.js- users- README.md- user.js- userRouter.js- borrows- README.md- borrow.js- borrowRouter.js- index.js```### 3. 源代码逻辑- 使用Node.js构建后端服务- 使用Express框架处理路由和请求- 使用MongoDB作为数据库存储## 四、系统实现### 1. 登录功能```javascript// 用户登录router.post('/login', (req, res) => {// 处理登录逻辑});// 管理员登录router.post('/admin/login', (req, res) => { // 处理管理员登录逻辑});```### 2. 图书管理```javascript// 添加新书籍router.post('/addBook', (req, res) => {// 处理添加书籍逻辑});// 修改书籍信息router.put('/updateBook/:id', (req, res) => {// 处理修改书籍信息逻辑});// 删除书籍router.delete('/deleteBook/:id', (req, res) => {// 处理删除书籍逻辑});```### 3. 借阅管理```javascript// 用户借阅图书router.post('/borrowBook', (req, res) => {// 处理借阅图书逻辑});// 用户归还图书router.put('/returnBook/:id', (req, res) => {// 处理归还图书逻辑});```## 五、总结通过本文介绍,读者可以了解图书馆管理系统源代码的设计和实现逻辑。
图书馆管理系统完整代码
out.println("<h3>"+login+"</h3>"); %> </div></body> </html>
logon.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 "/TR/html4/loose.dtd"> <html> <script language="JavaScript">
{ alert("请输入有效电话!"); return false;
} } var em,index; em=myform.email.value; index=myform.email.value.indexOf('@'); if(index<=0||index>=em.length-1) {
alert("请输入合法的电子邮件地址!"); return false; } } </script> <head> <title>用户注册</title> </head> <body><div align="center"><h2> 用户注册 </h2> <%!String sex=null; %> <form action="dealLogon.jsp" method="post" onSubmit="return check()" name="myform"> <table height="100%" border="1" align="center" width="90%"> <tbody><tr> <td align="right">用户名:<br></td> <td align="left"><input type="text" name="username"></td></tr> <tr> <td align="right">真实姓名:<br></td> <td align="left"><input type="text" name="truename"></td></tr> <tr> <td align="right">密码:</td> <td align="left"><input type="password" name="password"></td></tr> <tr> <td align="right">确认密码:</td> <td align="left"><input type="password" name="confirmPassword"></td></tr> <tr> <td align="right">年龄: </td> <td align="left"><input type="text" name="age"></td></tr> <tr> <td align="right">性别:</td> <td align="left"><input type="radio" name="sex" value="男" <%if(sex.equals("男")) out.println("checked");%>> <img src="Images/boy.gif" width="24" height="24">男
(完整word版)图书管理系统源代码
图书管理系统源代码(一)程序代码1。
主窗口界面import java.awt。
*;import java.awt。
event.*;import javax。
swing.*;import javax.swing.border.TitledBorder;import java.awt。
Font;import javax.swing。
JMenu;public class MainWindow extends JFrame implements ActionListener { private static final long serialVersionUID = 1L;static String loginName;static String loginNo;JLabel mlabel;JPanel jp=new JPanel();//建立菜单栏JMenu a=new JMenu();JMenu b=new JMenu();JMenu c=new JMenu();//建立系统管理菜单组JMenuItem aa=new JMenuItem();JMenuItem ab=new JMenuItem();JMenuItem ac=new JMenuItem();//建立读者管理菜单组JMenuItem bb=new JMenuItem();//建立书籍管理菜单组JMenuItem ca=new JMenuItem();JMenuItem cb=new JMenuItem();JMenuItem cc=new JMenuItem();JMenuItem cd=new JMenuItem();public MainWindow(){super(”图书管理系统");addWindowListener(new WindowAdapter(){System.exit(0);}});Container d=getContentPane();this。
图书馆管理系统源码
图书馆管理系统源码软件大小:543KB 软件类别:国产软件| 其它类别软件语言:简体中文运行环境:/MSSQL软件评级:更新时间:2009-8-25 14:47:11软件授权:开源软件插件情况:相关链接:Home Page演示地址:Demo Url(1)用户登录图书馆管理系统后,进入图书馆主界面,在此界面中,可看到图书借阅排行榜,通过排行榜可以看出借阅图书的名称、图书类型、借阅次数等相关信息。
(2)单击“系统设置”/“图书馆信息”命令,对图书馆信息进行设置操作。
(3)单击“系统设置”/“管理员设置”命令,对管理员信息进行添加、权限设置、查询及删除操作。
(4)单击“系统设置”/“书架设置”命令,对书架信息进行添加、修改及删除操作。
(5)单击“读者管理”/“读者类型管理”命令,对读者类型信息进行添加、修改及删除操作。
(6)单击“读者管理”/“读者档案管理”命令,对读者信息进行添加、修改及删除操作。
(7)单击“图书管理”/“图书类型管理”命令,对图书类型信息进行添加、修改及删除操作。
(8)单击“图书管理”/“图书档案管理”命令,对图书信息进行添加、修改及删除操作。
(9)单击“图书借还”/“图书借阅”命令,对图书借阅信息添加操作。
(10)单击“图书借还”/“图书续借”命令,对图书续借信息进行添加操作。
(11)单击“图书借还”/“图书归还”命令,对图书归还信息进行添加操作。
(12)单击“系统查询”/“图书档案查询”命令,对图书档案信息进行查询操作。
(13)单击“系统查询”/“图书借阅查询”命令,对借阅的图书信息进行查询操作。
(14)单击“更改口令”按钮,对当前的用户密码进行修改操作。
(15)单击“退出系统”按钮,退出当前操作系统。
管理员用户名和密码都是:51aspx普通用户用户名和密码是:stu图书馆管理系统源代码(软件开发项目)资源大小:1.15MB资源类型:发布人:hshhack发布日期:2009-03-15 14:46Tag:JA V A资源分:1下载人数:717 votes评论收藏举报上传【正式版】Flash Builder4 下载参与调查微软酷炫鼠标大奖等你拿!巧用Media SDK检查系统硬件加速消费3D立体时代的来临这会不会是IPAD的替代品?看手机改变生活!软件说明:图书馆管理系统使用说明书主要功能图书馆管理系统由读者管理、图书管理、借阅、归还、续借、系统查询、排行榜、系统设置等管理模块组成,其规划功能模块如下:q 读者管理读者管理主要实现读者类型管理、读者档案管理等功能。
图书馆管理系统C语言_附完整源码
if (m == 5) { bnode* temp; head = NULL; sum = ReadSum(); head=ReadFile(sum); SelectSort(sum, head); //OutToFileArray(temp, sum); system("pause"); system("cls"); menu(); cin >> m; } if (m == 6) { bnode* temp; head = NULL; sum = ReadSum(); head=ReadFile(sum); BubbleSortName(sum, head); //OutToFileArray(temp, sum); system("pause"); system("cls"); menu(); cin >> m; } if (m == 7) { bnode* temp; head = NULL; sum = ReadSum(); head=ReadFile(sum); SelectSortWord(sum, head); //OutToFileArray(temp, sum); system("pause"); system("cls"); menu(); cin >> m; }
图书馆管理系统
#include< iostream > #include< string > #include< fstream > using namespace std; typedef struct node { char name[20]; char writter[30]; char publish[30]; int date; int word; double price; int number; struct node* next; }bnode; bnode* head = NULL; int sum = 1; void WriteSum(int mysum); int ReadSum(); void menu(); //对书库的操作 void InputInfo(); void SearchBook(bnode* myhead); void ChangeBook(bnode* myhead); int DeleteBook(bnode* myhead); //文件操作 void OutputToFile(); void OutToFileArray(bnode *temp, int mysum); bnode* ReadFile(int mysum); 在屏幕上 //排序 bnode* SelectSort(int mysum, bnode* myhead); bnode* SelectSortWord(int mysum, bnode* myhead); bnode* SelectSortDate(int mysum, bnode* myhead); bnode* BubbleSortName(int mysum, bnode* myhead);
图书管理系统毕业设计源代码
图书管理系统毕业设计源代码1. 简介图书管理系统是一个用于管理图书馆藏书及借阅情况的软件系统。
本文档将详细介绍图书管理系统的毕业设计源代码。
2. 源代码结构图书管理系统的源代码采用模块化的设计,分为以下几个模块: - 用户管理模块:负责管理员和读者的管理,包括用户注册、登录、修改密码等功能。
- 图书管理模块:负责图书的录入、删除、查找等功能。
- 借阅管理模块:负责借阅记录的管理,包括借书、还书、查看借阅历史等功能。
- 统计分析模块:负责统计图书馆的借阅情况、读者喜好等信息。
- 权限管理模块:负责管理不同角色的权限,例如管理员有更高的权限。
3. 技术选型•后端开发语言:采用Java语言进行开发,利用Java的面向对象和多线程的特性来实现系统的各个功能模块。
•前端开发:采用HTML、CSS和JavaScript进行前端开发,使用Bootstrap框架来实现页面的美化和响应式布局。
•数据库:采用MySQL关系数据库管理系统,存储图书馆的图书信息、用户信息及借阅记录等数据。
4. 代码实现细节4.1 用户管理模块用户管理模块的主要功能包括用户注册、登录、修改密码等。
- 用户注册:用户可以填写注册表单,并将信息提交到服务器进行注册。
服务器会将用户的信息存储到数据库中,并为用户分配一个唯一的ID。
- 用户登录:用户在登录页面输入用户名和密码,服务器会校验用户的登录信息,并根据用户的角色跳转到相应的首页。
- 修改密码:用户可以在个人信息页面修改密码,需要输入原密码和新密码。
4.2 图书管理模块图书管理模块的主要功能包括图书的录入、删除、查找等。
- 图书录入:管理员可以在后台管理页面输入图书的信息,包括书名、作者、出版社、ISBN等,并提交保存到数据库中。
- 图书删除:管理员可以根据图书的ID或其他关键字进行图书的删除操作,同时删除数据库中的对应记录。
- 图书查找:管理员和读者可以根据图书的关键字进行查找,系统会显示匹配的图书列表。
图书馆信息管理系统(含附源代码)02
西安郵電學院软件设计课程设计报告题目:图书馆信息管理系统系部名称:电信系专业名称:电子科学与技术班级:科技0701学号:05072002学生姓名:XXX指导教师:黄茹时间:2008年6月9日至2008年6月20日一、设计目的通过本课程设计,强化上机动手能力,使我们在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
为后续各门计算机课程的学习打下坚实基础。
为毕业设计和以后工作打下必要基础。
二、课程设计内容本设计是一个能够实现基本功能(借阅图书登记等)的图书馆管理系统,由于所学知识有限,自然不能与真正的现代图书馆管理系统相比,但也是尽所之能了。
三、需求分析对所开发系统功能、性能的描述,想要实现的目标。
系统功能: 1.现有图书按时间和类型查询2.新书按时间和类型查询3.借阅管理(普通用户查看自己的借书历史记录,管理员可实现借书、还书登记等)4.图书管理(管理员可添加新书、删除丢失图书信息,将图书加入丢失图书)5.统计图书信息6.系统维护(新建用户、密码修改、更换用户)等六大功能。
性能的描述:本系统总体分普通用户和管理员用户,其中管理员可实现添加新书、用户,登记借书、还书、统计等全部功能,普通用户只能实现图书查询、修改自身密码、查看自身借阅历史情况。
在查询方面分时间和类型两种(由于时间、技术等方面限制,将时间功能由原来的int型结构体改为char型,因此也没用到《C算法》中的各种较为高级的排列,实为遗憾,这也导致程序无法自己算出还书日期),界面比较简单,操纵容易。
想实现目标:本程序的基础结构图借鉴于《Visual Basic设计信息管理系统实例》中的例子,以现代图书馆管理系统为蓝本,结合本校图书馆的规定,可惜的是目标虽远大,技术不过关,导致与原计划有较大偏差,将好些复杂的地方简单化,减少了计划中的好些功能。
图书馆管理系统文档(含源代码)免费
程序设计综合训练<图书馆管理系统>设计报告院系:材料科学与工程学院专业班级:材料成型一班*名:***学号: ***********指导老师:肖老师一、程序功能简介图书排序功能1)按图书编号排序可以按图书编号的大小排序,显示到屏幕上。
(从小到大)2)按图书出版时间排序可以按图书出版时间的前后排序,显示到屏幕上。
(从近到远)3)按图书价格排序可以按图书价格的贵宜排序,显示到屏幕上。
(从便宜到贵)4)按图书书名排序可以按图书书名字符的大小排序,显示到屏幕上。
(从小到大)5)按图书作者名排序可以按图书作者名字符的大小排序,显示到屏幕上。
(从小到大)二、本人完成的主要工作图书排序功能(排序比较简单只要做出来一个,其他都和它雷同。
)三、设计方案1.设计分析;1)序功能简介:s2)各个功能流程图1、按图书编号排序2、按图书出版时间排序3、按图书价格排序4、按图书书名排序5、按图书作者名排序2. 操作方法简介; 1)主面板输入密码9进入系统。
输入排序的功能序号5是 输入y/n 进,输入n 的话返回到主菜单Y/n是(y)显示排序否(n )按Enter2)主菜单按4进入排序功能。
2)排序功能目录3)选择功能(比如3)按价格的大小排序3.实验结果(包括输入数据和输出结果)四、设计体会在期末课程设计中,我们所选择的是设计一个图书管理系统,这对我们来说是一次尝试与创新的过程,也可以说是一个挑战的过程,毕竟以前没有作过,缺少经验。
现在利用自己学到的知识设计并制作一个图书管理系统,这本身就是一个知识转化为生产力的过程,所以大家都很兴奋,不同程度的投入了很高的热情与努力。
在具体的设计与实施中,我们看到并感受到了一个管理系统从无到有的过程,对具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。
在设计中我们基本能按照规范的方法和步骤进行,首先对现有的系统进行调查,并查阅有关资料,最后确定设计方案,然后设计并制作,实施过程中我们深刻的认识到认真执行管理系统软件标准的重要性,我们由于对管理系统软件相关的标准和规范不太了解,缺少行为操作准则,所以在设计中手法比较生硬,主与次也没能很好把握住,这些方面通过这次我们都要加强了解。
图书馆管理系统程序设计代码
1.1程序设计代码登录模块if""||"")("请输入用户名和密码","提示");else{if == true){string strcon = "Data Source=SIMON-VAIO;Initial Catalog=lkl2;Integrated Security=True;"; alue = ; alue = ; alue = ; alue = ; alue = ;["@bname"].Value = ;["@bauthor"].Value = ;["@bpublic"].Value = ;["@bclasses"].Value = ;["@benshu"].Value = ;();();("添加成功!");删除图书代码SqlConnection sqlcon = new SqlConnection("Data Source=SIMON-VAIO;InitialCatalog=lkl2;Integrated Security=True");();string str = "delete from book where bnum=@bnum";SqlCommand cmd = new SqlCommand(str, sqlcon);"@bnum", , 20);["@bnum"].Value = ();();("删除成功!")查询图书代码SqlConnection con = new SqlConnection();alue = ;SqlDataAdapter da = new SqlDataAdapter(cmd);DataTable dt = new DataTable("图书记录表");"BorrowRecord", "借阅记录表");[0].("bnum", "图书号");[0].("bname", "图书名");[0].("bauthor", "作者");[0].("bpublic", "出版社");[0].("bclasses", "类别");[0].("benshu", "本数");(dt);= dt;();图书更新代码SqlConnection con1 = new SqlConnection("Data Source=SIMON-VAIO;Initial Catalog=lkl2;Integrated Security=True;");();SqlCommand cmd1 = new SqlCommand("update book setbname=@bname,bauthor=@bauthor,bpublic=@bpublic,bclasses=@bclasses,benshu=@benshu wherebnum=@bnum;", con1);"@bnum", , 20);"@bname", , 20);"@bauthor", , 20);"@bpublic", , 20);"@bclasses", , 20);"@benshu", , 20);["@bnum"].Value = ;["@bname"].Value = ;["@bauthor"].Value = ;["@bpublic"].Value = ;["@bclasses"].Value = ;["@benshu"].Value = ;();();("更新成功!");添加用户代码SqlConnection sqlcon = new SqlConnection("Data Source=SIMON-VAIO;InitialCatalog=lkl2;Integrated Security=True;");string str = "insert into values(@usernum,@username,@userpassword,@usertype)"; ();SqlCommand cmd = new SqlCommand(str, sqlcon);"@usernum", , 20);"@username", , 20);"@userpassword", , 20);"@usertype", , 20);["@usernum"].Value =;["@username"].Value = ;["@userpassword"].Value = ;();();("用户添加成功!"删除用户代码SqlConnection sqlcon = new SqlConnection("Data Source=SIMON-VAIO;InitialCatalog=lkl2;Integrated Security=True");();string str = "delete from reader where usernum=@usernum";SqlCommand cmd = new SqlCommand(str, sqlcon);"@usernum", , 20);["@usernum"].Value = ();();("删除成功!");修改密码代码SqlConnection con1 = new SqlConnection("Data Source=SIMON-VAIO;InitialCatalog=lkl2;Integrated Security=True;");();SqlCommand cmd1 = new SqlCommand("update reader set userpassword=@userpassword where usernum=@usernum;", con1);"@usernum", , 20);"@userpassword", , 20);["@usernum"].Value = ;["@userpassword"].Value = ;();();("修改成功请从新登陆!");完善读者信息代码SqlConnection sqlcon = new SqlConnection("Data Source=SIMON-VAIO;InitialCatalog=lkl2;Integrated Security=True;");string str = "insert intovalues(@usernum,@username,@usersex,@usergrade,@telephone)";();SqlCommand cmd = new SqlCommand(str, sqlcon);"@usernum", , 20);"@username", , 20);"@usersex", , 20);"@usergrade", , 20);"@telephone", , 20);["@usernum"].Value = ;["@username"].Value = ;["@usersex"].Value = ;["@usergrade"].Value = ;();();("添加信息成功!");检索用户信息代码if == ""){("请输入学生学号!");}else{string strcon = "Data Source=SIMON-VAIO;Initial Catalog=lkl2;Integrated Security=True";SqlConnection sqlCon = new SqlConnection(strcon);();string sql = "select * from readerifo where usernum=@usernum ";SqlCommand cmd = new SqlCommand(sql, sqlCon);"@usernum", , 20);["@usernum"].Value = ;oString().Trim();= dr["username"].ToString().Trim();= dr["usersex"].ToString().Trim();= dr["usergrade"].ToString().Trim();= dr["telephone"].ToString().Trim();("欢迎光临本图书馆来借书!");}();借阅图书代码SqlConnection sqlcon = new SqlConnection("Data Source=SIMON-VAIO;InitialCatalog=lkl2;Integrated Security=True;");string str = "insert intovalues(@bnum,@bname,@bauthor,@bpublic,@bclasses,@benshu,@btime,@usernum,@username,@usersex,@ usergrade,@telephone)";();SqlCommand cmd = new SqlCommand(str, sqlcon);"@bnum", , 20);"@bname", , 20);"@bauthor", , 20);"@bpublic", , 20);"@bclasses", , 20);"@benshu", ;"@usernum", , 20);"@username", , 20);"@usersex", , 20);"@usergrade", , 20);"@telephone", , 20);["@bnum"].Value = ;["@bname"].Value = ;["@bauthor"].Value = ;["@bpublic"].Value = ;["@bclasses"].Value = ;["@benshu"].Value = "1";["@btime"].Value = ["@usernum"].Value = ;["@username"].Value = ;["@usersex"].Value = ;["@usergrade"].Value = ;SqlParameter("@borrowtime", );["@telephone"].Value = ;();();SqlConnection con1 = new SqlConnection("Data Source=SIMON-VAIO;InitialCatalog=lkl2;Integrated Security=True;");();SqlCommand cmd1 = new SqlCommand("update book set benshu=benshu-1 where bnum=@bnum", con1);"@bnum", , 20);["@bnum"].Value = ;();();("借阅成功!");归还图书代码SqlConnection sqlcon = new SqlConnection("Data Source=SIMON-VAIO;InitialCatalog=lkl2;Integrated Security=True;");string str = "insert intovalues(@bnum,@bname,@bauthor,@bpublic,@bclasses,@benshu,@rtime,@usernum,@username,@usersex,@ usergrade,@telephone)";();SqlCommand cmd = new SqlCommand(str, sqlcon);"@bnum", , 20);"@bname", , 20);"@bauthor", , 20);"@bpublic", , 20);"@bclasses", , 20);"@rtime", ;"@usernum", , 20);"@username", , 20);"@usersex", , 20);"@usergrade", , 20);"@telephone", , 20);["@bnum"].Value = ;["@bname"].Value = ;["@bauthor"].Value = ;["@bpublic"].Value = ;["@bclasses"].Value = ;["@benshu"].Value = ;["@rtime"].Value = ["@usernum"].Value =;["@username"].Value = ;["@usersex"].Value = ;["@usergrade"].Value = ;SqlParameter("@returntime", );["@telephone"].Value = ;();();SqlConnection con1 = new SqlConnection("Data Source=SIMON-VAIO;InitialCatalog=lkl2;Integrated Security=True;");();SqlCommand cmd1 = new SqlCommand("update book set benshu=benshu+1 where bnum=@bnum", con1);"@bnum", , 20);["@bnum"].Value = ;();();("还书成功!");查询借阅归还图书信息代码if == ""){("读者信息不能为空!", "提示信息", , ;}else{SqlConnection con = new SqlConnection();alue = ;SqlDataAdapter da = new SqlDataAdapter(cmd);DataTable dt = new DataTable("借阅记录表");"BorrowRecord", "借阅记录表");[0].("usernum", "借阅证号"); [0].("username", "姓名");[0].("usersex", "性别");[0].("usergrade", "班级");[0].("bname", "图书名");[0].("bauthor", "作者");[0].("bnum", "图书号");[0].("bpublic", "出版社");[0].("bclasses", "类别");[0].("benshu", "本数");[0].("btime", "借书时间");[0].("rtime", "还书时间");[0].("telephone", "电话号码");[0].("statu", "状态");(dt);= dt;();。
图书馆信息管理系统(含附源代码)02
图书馆信息管理系统(含附源代码)02图书馆信息管理系统(含附源代码)一、引言在数字化时代,图书馆信息管理系统的建设和应用已成为各大图书馆的重要任务。
这样的系统不仅可以提高图书馆的管理效率,还能方便用户查询图书信息、借阅归还图书等。
本文旨在介绍一种图书馆信息管理系统的设计和实现,并附上相应的源代码,以供开发者参考和借鉴。
二、系统需求分析在设计图书馆信息管理系统之前,我们首先需要对系统的需求进行全面的分析。
根据对图书馆业务的了解,我们确定系统需要包括以下功能:1. 图书信息管理:包括图书的增删改查、图书分类管理等;2. 读者信息管理:包括读者的注册、登录、信息修改等;3. 图书借阅管理:包括借阅操作、归还操作、借阅记录查询等;4. 图书馆管理员管理:包括管理员账号的创建、权限管理等;5. 数据统计与分析:包括借阅次数统计、图书流通情况分析等。
三、系统设计与实现基于以上需求,我们采用了Java语言进行系统的设计与实现。
下面是系统的代码结构和实现逻辑的简要说明:1. 数据库设计为了存储图书和读者的信息,我们设计了一个名为library的数据库,其中包括以下几个关键表:- book(图书表):存储图书的基本信息,包括图书编号、书名、作者、出版日期等;- reader(读者表):存储读者的基本信息,包括读者编号、姓名、性别、电话号码等;- borrow(借阅表):存储图书的借阅信息,包括借阅编号、图书编号、读者编号、借阅日期等。
2. 系统代码结构系统的代码结构采用了经典的三层架构,即表示层、业务逻辑层和数据访问层。
- 表示层:包括图形界面的设计与实现,通过Java Swing库来创建用户界面;- 业务逻辑层:包括系统的业务逻辑处理,如图书的增删改查、读者的登录注册等;- 数据访问层:负责与数据库进行数据的交互,如查询图书信息、更新借阅记录等。
3. 主要功能实现在系统的设计与实现中,我们重点实现了以下几个主要功能:(1) 图书信息管理通过系统的图形界面,管理员可以添加新图书、删除图书、修改图书信息等操作。
图书馆管理系统+++源程序、代码
《图书管理系统》系统设计报告一、引言1.摘要:中学图书馆管理系统目的:方便图书馆对书籍借阅的管理主要功能:—学生基本信息查询—书籍借阅管理—书籍管理2.背景:第十小组承担开发任务3.工作条件与限制:windows操作平台,Visual Basic6.0和SQL Sserver2000等软件为开发工具,利用上课时间和课外时间做成。
由于现在图书管理系统已经比叫完善,所以我们暂时没有能做出比以前有先进技术的管理系统。
4.参考和引用资料:《数据库系统概论》,VB应用5.专门术语定义:二、系统总体技术方案1.计算机系统配置:windows平台,VB/SqlServer2000,WINNT SERVER操作系统, SQL server2000关系数据库管理系统,VB操作软件,局域网。
2.模块设计:主要分为三个模块:即学生基本信息模块,书籍借阅模块,书籍管理模块代码设计:读者信息查询Public connStr As ADODB.ConnectionPrivate Sub Command1_Click()End SubPrivate Sub cmdAdd_Click()If Trim(List1.Text) <> "" ThenList2.AddItem (List1.Text)End IfEnd SubPrivate Sub cmdMove_Click()If Trim(List2.Text) <> "" ThenList2.RemoveItem (List2.ListIndex)End IfEnd SubPrivate Sub cmdSearch_Click()Dim cmdstr As StringIf List2.ListCount = 0 ThenMsgBox "请选择输出列!", vbOKOnly, "提示"Exit SubEnd Ifcmdstr = "select "For i = 0 To List2.ListCount - 1If Trim(List2.List(i)) = "图书证号" Thencmdstr = cmdstr + "READER_DATA." + Trim(List2.List(i)) + ","ElseIf Trim(List2.List(i)) = "书号" Thencmdstr = cmdstr + "MARC_DATA." + Trim(List2.List(i)) + ","Elsecmdstr = cmdstr + Trim(List2.List(i)) + ","End IfEnd IfNextcmdstr = Left(cmdstr, Len(cmdstr) - 1)If Opbook.Value = True Thencmdstr = cmdstr + " from MARC_DATA where "End IfIf Opreader.Value = True Thencmdstr = cmdstr + " from READER_DATA where "End IfIf Oplend.Value = True Thencmdstr = cmdstr + " from MARC_DATA,READER_DATA,LEND_DATA " & " where MARC_DATA.书号=LEND_DATA. 书号 and " & " READER_DATA.图书证号=LEND_DATA.图书证号 and " End IfIf Trim(comKey.Text) = "" ThenMsgBox "请选择查询关键字!", vbOKOnly, "提示"Exit SubEnd IfIf Trim(txtKey.Text) = "" ThenMsgBox "请设置查询关键字的值!", vbOKOnly, "提示"Exit SubEnd IfIf ComType.Text = "精确匹配" Thencmdstr = cmdstr + Trim(comKey.Text) + "='" + Trim(txtKey.Text) + "'"Elsecmdstr = cmdstr + Trim(comKey.Text) + " like '" + Trim(txtKey.Text) + "%'" End IfAdodc1.RecordSource = cmdstrAdodc1.RefreshDataGrid1.RefreshEnd SubPrivate Sub Form_Load()Set connStr = New ADODB.ConnectionconnStr.Open "driver={SQL Server}; Server=SYSLAB000;UID=jj138;PWD=;database=计教(1)班38号"Adodc1.ConnectionString = connStrComType.AddItem ("精确匹配")ComType.AddItem ("前方一致匹配")End SubPrivate Sub Label3_Click()End SubPrivate Sub List2_Click()End SubPrivate Sub Opbook_Click()Dim rs As ADODB.RecordsetSet rs = New ADODB.Recordsetrs.Open "MARC_DATA", connStr, adOpenKeyset, adLockReadOnly, adCmdTable comKey.ClearList1.ClearFor i = 0 To rs.Fields.Count - 1comKey.AddItem (rs.Fields(i).Name)List1.AddItem (rs.Fields(i).Name)Nextrs.CloseList2.CleartxtKey.Text = ""End SubPrivate Sub Oplend_Click()comKey.ClearList1.ClearcomKey.AddItem ("图书证号")comKey.AddItem ("姓名")comKey.AddItem ("书号")comKey.AddItem ("书名")comKey.AddItem ("出版社")comKey.AddItem ("借出日期")comKey.AddItem ("还书日期")List1.AddItem ("图书证号")List1.AddItem ("姓名")List1.AddItem ("书号")List1.AddItem ("书名")List1.AddItem ("出版社")List1.AddItem ("借出日期")List1.AddItem ("还书日期")List2.CleartxtKey.Text = ""End SubPrivate Sub Opreader_Click()Dim rs As ADODB.RecordsetSet rs = New ADODB.Recordsetrs.Open "READER_DATA", connStr, adOpenKeyset, adLockReadOnly, adCmdTable comKey.ClearList1.ClearFor i = 0 To rs.Fields.Count - 1comKey.AddItem (rs.Fields(i).Name)List1.AddItem (rs.Fields(i).Name)Nextrs.CloseList2.CleartxtKey.Text = ""End Sub借还书处理Private Sub cmdLend_Click()Dim rs As ADODB.RecordsetSet rs = New ADODB.RecordsetIf Trim(txtBid.Text) = "" Or Trim(txtRid_1.Text) = "" ThenMsgBox "请输入图书证号和书号!", vbOKOnly, "提示信息"Elsers.Open "LEND_DATA", connStr, adOpenKeyset, adLockOptimistic, adCmdTable rs.AddNewrs("书号") = txtBid.Textrs("借出日期") = Daters("图书证号") = txtRid.Textrs.UpdateAdodc1.RefreshEnd IfEnd SubPrivate Sub cmdReturn_Click()Dim rs As ADODB.RecordsetSet rs = New ADODB.RecordsetIf Trim(txtBid.Text) = "" Or Trim(txtRid_1.Text) = "" ThenMsgBox "请输入图书证号和书号!", vbOKOnly, "提示信息"Elsecmdstr = "update LEND_DATA set 还书日期='" _& Date & "' where 书号='" & Trim(txtBid.Text) & "'"rs.Open cmdstr, connStr, adOpenKeyset, adLockOptimistic, adCmdTextAdodc1.RefreshEnd IfEnd SubPrivate Sub cmds_Click()Dim rs As ADODB.RecordsetSet rs = New ADODB.Recordsetcmdstr = "select * from READER_DATA WHERE 图书证号 ='" & Trim(txtRid_1.Text) & "'" rs.Open cmdstr, connStr, adOpenForwardOnly, adLockReadOnly, adCmdTextIf Not rs.EOF ThentxtRid.Text = rs("图书证号")txtName.Text = rs("姓名")If Not IsNull(rs("性别")) ThentxtXb.Text = rs("性别")End IfIf Not IsNull(rs("系名")) ThentxtXm.Text = rs("系名")End IfElseMsgBox "未找到该读者信息!", vbOKOnly, "提示信息"End Ifcmdstr = "select 借出日期,还书日期,LEND_DATA.书号,书名,作者,出版社" & " from LEND_DATA,MARC_DATA " & "where LEND_DATA.书号=MARC_DATA.书号 and " & " 还书日期 is null and 图书证号='" & Trim(txtRid_1.Text) & "'"Adodc1.RecordSource = cmdstrAdodc1.RefreshEnd SubPrivate Sub cmdSearch_Click()cmdstr = "select 借出日期,还书日期,LEND_DATA.书号,书名,作者,出版社" & "from LEND_DATA,MARC_DATA " & "where LEND_DATA.书号=MARC_DATA.书号 and 图书证号='" & Trim(txtRid_1.Text) & "'"Adodc1.RecordSource = cmdstrAdodc1.RefreshEnd SubPrivate Sub DataGrid1_Click()If Not Adodc1.Recordset.BOF And Not Adodc1.Recordset.BOF ThentxtBid.Text = Adodc1.Recordset("书号")End IfEnd SubPrivate Sub Form_Load()Set connStr = New ADODB.ConnectionconnStr.Open "driver={SQL Server}; Server=SYSLAB000;UID=jj138;PWD=;database=计教(1)班38号"Adodc1.ConnectionString = connStrEnd Sub图书馆详细信息Private Sub txt_refresh()If Not Adodc1.Recordset.EOF And Not Adodc1.Recordset.BOF ThentxtBid.Text = Adodc1.Recordset("书号")txtBname.Text = Adodc1.Recordset("书名")txtWrite.Text = Adodc1.Recordset("作者")txtPublisher.Text = Adodc1.Recordset("出版社")txtYear.Text = Adodc1.Recordset("出版时间")txtGb.Text = Adodc1.Recordset("国别代码")txtDate.Text = Adodc1.Recordset("进馆时间")txtCallno.Text = Adodc1.Recordset("分类号")End IfEnd SubPrivate Sub cmdDele_Click()Dim deletxt As Stringdeletxt = "是否删除图书《" & Adodc1.Recordset("书名") & "》的记录?"If Not Adodc1.Recordset.EOF And Not Adodc1.Recordset.BOF ThenIf MsgBox(deletxt, vbOKCancel, "提示信息") = vbOK ThenAdodc1.Recordset.DeleteAdodc1.RefreshEnd IfEnd IfEnd SubPrivate Sub cmdNew_Click()If cmdNew.Caption = "新增" Thentxt_enable (2)cmdNew.Caption = "保存"txtBid.Text = ""txtBname.Text = ""txtWrite.Text = ""txtPublisher.Text = ""txtYear.Text = ""txtGb.Text = ""txtDate.Text = ""txtCallno.Text = ""ElseAdodc1.Recordset.AddNewAdodc1.Recordset("书号") = Trim(txtBid.Text)Adodc1.Recordset("书名") = Trim(txtBname.Text) Adodc1.Recordset("作者") = Trim(txtWrite.Text) Adodc1.Recordset("出版社") = Trim(txtPublisher.Text) Adodc1.Recordset("出版时间") = Trim(txtYear.Text) Adodc1.Recordset("国别代码") = Trim(txtGb.Text)4Adodc1.Recordset("进馆时间") = Trim(txtDate.Text) Adodc1.Recordset("分类号") = Trim(txtCallno.Text) Adodc1.Recordset.UpdateBatchAdodc1.Refreshtxt_enable (1)cmdNew.Caption = "新增"Adodc1.Recordset.MoveFirsttxt_refreshEnd IfPrivate Sub cmdNext_Click()If Not Adodc1.Recordset.EOF ThenAdodc1.Recordset.MoveNexttxt_refreshEnd IfEnd SubPrivate Sub cmdPre_Click()If Not Adodc1.Recordset.BOF ThenAdodc1.Recordset.MovePrevioustxt_refresh 2End IfEnd SubPrivate Sub cmdUpdate_Click()If cmdUpdate.Caption = "修改" Thentxt_enable (2)cmdUpdate.Caption = "保存"ElseAdodc1.Recordset("书号") = Trim(txtBid.Text)Adodc1.Recordset("书名") = Trim(txtBname.Text) Adodc1.Recordset("作者") = Trim(txtWrite.Text) Adodc1.Recordset("出版社") = Trim(txtPublisher.Text) Adodc1.Recordset("出版时间") = Trim(txtYear.Text) Adodc1.Recordset("国别代码") = Trim(txtGb.Text) Adodc1.Recordset("进馆时间") = Trim(txtDate.Text) Adodc1.Recordset("分类号") = Trim(txtCallno.Text) Adodc1.Recordset.UpdateBatchAdodc1.Refreshtxt_enable (1)cmdUpdate.Caption = "修改"End IfEnd SubPrivate Sub Form_Load()txt_refreshEnd SubPrivate Sub Text1_Change()End SubPrivate Sub Text8_Change()End SubPrivate Sub txtBname_Change()End Sub。
图书馆管理系统代码
图书馆管理系统代码#include#define DEBUG 0//宏定义决定测试代码是否编译0为不编译⾮0则编译const char book_path[20] = "books.txt";const char reader_path[20] = "readers.txt";//⽂件读写声明void read_from_files_to_vector();void write_all_to_files();#if DEBUGvoid scan_readers() {for(reader &s:readers) {wcout << s;}}#endifint main(){//完成操作后需要在控制台按5中退出才会保存到⽂件wcin.imbue(china);wcout.imbue(china);read_from_files_to_vector();#if DEBUGcout <<"size of readers = "<< readers.size() << endl;cout <<"size of books = "<< books.size() << endl;scan_book();scan_readers();#endifstring password = "123456"; //密码已改cout <<"------------欢迎使⽤中南⼤学⽹络在线图书系统------------"< //这⾥可以添加你们⼩组的名单或⼀些装饰的字符cout <<"--------------------请选择登录⽅式--------------------"<< endl; cout <<" 1 管理员登陆2读者登陆"<< endl;int a;cin >> a;cleanScreen();if (a == 1){string str;for (int j = 0; j <= 4; j++){cout <<"请输⼊管理密码,你有"<< (4-j) <<"次机会"<< endl; cin >> str;if (password == str){break;}else cout <<"密码错误!请重新输⼊"<< endl;if (j == 4)return 0;}cleanScreen();cout <<"-------------欢迎来到图书管理系统-------------"<< endl; cout <<"成功登陆!你有以下操作可供选择"<< endl;cout << endl;//操作循环cout <<" 1 浏览图书信息"<< endl;cout <<" 2 图书信息修改"<< endl;cout <<" 3 图书信息添加"<< endl;cout <<" 4 图书信息删除"<< endl;cout <<" 5 保存信息并退出系统"<< endl;cout <<"--------------请选择操作选项编号--------------"<< endl; int b;cin >> b;cleanScreen();while (b != 5) {switch (b){case 1:scan_book(); break;case 2:modify_book(); break;case 3:add_book(); break;case 4:delete_book(); break;default:cout <<"输⼊错误,请重新输⼊"; break;}cout << endl;cout <<"---------------请进⾏下⼀次操作---------------"<< endl; cout <<" 1 浏览图书信息"<< endl;cout <<" 2 图书信息修改"<< endl;cout <<" 3 图书信息添加"<< endl;cout <<" 4 图书信息删除"<< endl;cout <<" 5 退出系统"<< endl;cout <<"--------------请选择操作选项编号--------------"<< endl; cin >> b;cleanScreen();}write_all_to_files();return 0;}else if (a == 2){int readerIndex = 0; //记录读者下标//输⼊学号登陆cout <<"--------------请输⼊学号--------------"<< endl;wchar_t studentnumber[20];for (int m = 0; m <= 9; m++){cout <<"请输⼊学号,你有"<< (9-m) <<"次机会"<< endl; wcin >> studentnumber;int t;for (t = 0; t < readers.size(); t++){if (wcscmp(studentnumber, readers[t].cardnum) == 0){readerIndex = t;break;}}//判断跳出循环原因if (t < readers.size())break;else{cout <<"登录账号不存在,请重新输⼊学号"<< endl;continue;}if (m == 9)return 0;}cleanScreen();cout <<"------------欢迎来到读者⾃助系统------------"<< endl;wcout << L"欢迎你,"<< readers[readerIndex].name << L"!你有以下操作可供选择"<< endl; cout << endl;//操作循环cout <<" 1 图书浏览"<< endl;cout <<" 2 图书查询"<< endl;cout <<" 3 图书借阅"<< endl;cout <<" 4 图书返还"<< endl;cout <<" 5 退出系统"<< endl;cout <<"---------------请选择操作选项--------------"<< endl;int c;cin >> c;cleanScreen();while (c != 5){switch (c){case 1:scan_book(); break;case 2:search_book(); break;case 3:borrow_book(readerIndex); break;case 4:return_book(readerIndex); break;default:cout <<"输⼊错误!请重新输⼊"<< endl; break;}cout << endl;cout <<"--------------请进⾏下⼀次操作--------------"<< endl;cout <<" 1 图书浏览"<< endl;cout <<" 2 图书查询"<< endl;cout <<" 3 图书借阅"<< endl;cout <<" 4 图书返还"<< endl;cout <<" 5 退出系统"<< endl;cout <<"---------------请选择操作选项---------------"<< endl;cin >> c;cleanScreen();}write_all_to_files();return 0;}return 0;}//main 函数结束//写⼊/读取⽂件void write_all_to_files(){wofstream outfile;outfile.imbue(locale("chs"));//写⼊书本⽂件outfile.open(book_path);outfile << books.size() << '\n';for (int i = 0; i < books.size(); i++){outfile << books[i];}outfile.close();outfile.clear();//写⼊读者⽂件,由于程序中没有针对读者的删改(备⽤,将0改为1后即可编译这段代码) #if 0 outfile.open(path::reader_path);outfile << readers.size() << '\n';for (int i = 0; i < readers.size(); i++){outfile << readers[i];}outfile.close();#endifreturn;}void read_from_files_to_vector(){wifstream infile;infile.imbue(locale("chs"));//⽤于设置读写中⽂book bb;reader rr;//在程序⽬录下没有相应⽂件时创建空⽂件(备⽤,将0改为1后即可编译这段代码) #if 0 wofstream creat_if_no;creat_if_no.imbue(locale("chs"));creat_if_no.open(book_path,ios::_Noreplace);creat_if_no.close();creat_if_no.clear();creat_if_no.open(reader_path, ios::_Noreplace);creat_if_no.close();creat_if_no.clear();#endif//读取书本数据infile.open(book_path);int size = 0;infile >> size;while (!infile.eof() && size != 0){infile >> bb;books.push_back(bb);size--;}infile.close();infile.clear();//读取读者数据infile.open(reader_path);infile >> size;while (!infile.eof() && size != 0){infile >> rr;readers.push_back(rr);size--;}infile.close();return;}#include "classes.h"locale china("chs");//use china character/*void printout_book(book &b){cout << b.id << '\n'<< b.title << '\n'<< b.firstauthor << '\n'<< b.publisher <<'\n'<< b.birthday << '\n'<< b.location << '\n'<< b.price << '\n'<< b.number << endl;}*///这个函数我⽤重载运算符<< 的函数代替了//对应全局变量的定义vector books;vector readers;//book重载操作符函数定义wistream& operator >> (wistream& in, book &b) { cout <<"请输⼊书号"<< endl;cout <<"请输⼊书名"<< endl;in >> b.title;cout <<"请输⼊作者名"<< endl;in >> b.firstauthor;cout <<"请输⼊出版社"<< endl;in >> b.publisher;cout <<"请输⼊印刷⽇期(年⽉)"<< endl;in >> b.birthday;cout <<"请输⼊所属类别"<< endl;in >> b.location;cout <<"请输⼊价格"<< endl;in >> b.price;cout <<"请输⼊数量"<< endl;in >> b.number;return in;}wostream& operator<<(wostream& out, book &b){out << b.id << ' '<< b.title << ' '<< b.firstauthor << ' '<< b.publisher << ' '<< b.birthday.year << ' '<< b.birthday.month << ' '<< b.location << ' '<< b.price << ' '<< b.number << endl;return out;}wifstream& operator >> (wifstream& in, book &b){in >> b.id >> b.title >> b.firstauthor>> b.publisher >> b.birthday.year >> b.birthday.month >> b.location >> b.price >> b.number;{out << b.id << ' '<< b.title << ' '<< b.firstauthor << ' '<< b.publisher << ' '<< b.birthday << ' '<< b.location << ' '<< b.price << ' '<< b.number << '\n';return out;}//reader重载操作符函数定义wistream& operator >> (wistream& in, reader &r){//由于没有对reader的操作,这个函数尚未被使⽤cout <<"请输⼊读者姓名"<< endl;in >> /doc/3dc30ba0fbb069dc5022aaea998fcc22bdd14356.html ; cout <<"请输⼊性别(男为0,⼥为1)"<< endl;cout <<"请输⼊卡号"<< endl;in >> r.cardnum;cout <<"请输⼊学位(学⼠为0,硕⼠为1,博⼠为2)"<< endl;in >> r.e;r.already = 0; //已借书本数默认为0return in;}wostream& operator<<(wostream& out, reader &r){out << r.cardnum << ' ';out << /doc/3dc30ba0fbb069dc5022aaea998fcc22bdd14356.html << ' '; out << r.s << ' ';out << r.e << ' ';out << r.already << endl;{in >> r.cardnum >> /doc/3dc30ba0fbb069dc5022aaea998fcc22bdd14356.html >> r.s >> r.e >> r.already;return in;}wofstream& operator<<(wofstream& out, reader &r){out << r.cardnum << ' '<< /doc/3dc30ba0fbb069dc5022aaea998fcc22bdd14356.html << ' '<< r.s << ' '<< r.e << ' '<< r.already << '\n';return out;}//main函数中调⽤定义void scan_book() //建⽴浏览函数{for (int i = 0; i < books.size(); i++){wcout << books[i];}}void search_book() //建⽴搜索函数{cout <<"************你有以下查询⽅式可供选择************"<< endl; cout <<" 1 按书名查询"<< endl;cout <<" 2 按编号查询"<< endl;cout <<" 3 按作者查询"<< endl;cout <<"************请选择查询⽅式************"<< endl;cin >> g;switch (g){case 1:{wchar_t name[20];cout <<"************请输⼊书名************"<< endl; wcin >> name;for (int r = 0; r < books.size(); r++){if (wcscmp(books[r].title, name) == 0){wcout << books[r];return;}}cout <<"查⽆此书"<< endl;return;break;}case 2:{int str;cout <<"************请输⼊图书编号************"<< endl; cin >> str;for (int l = 0; l < books.size(); l++){if (books[l].id == str){wcout << books[l];return;}}cout <<"查⽆此书"<< endl;return;break;}case 3:wchar_t auth[10];cout <<"************请输⼊图书作者************"<< endl;wcin >> auth;for (int p = 0; p < books.size(); p++){if (wcscmp(books[p].firstauthor, auth) == 0){wcout << books[p];return;}}cout <<"查⽆此书"<< endl;return;break;}default:{cout <<"查⽆此书"<< endl;return;}}}//实现逻辑有问题,⽆法建⽴书-借书⼈的对应关系void borrow_book(int t) //建⽴借书函数{if (readers[t].already >= 5){cout <<"抱歉,你的借书数已满,不可再借"<< endl;return;}int log;cout <<"************请输⼊要借出图书的登陆号************"<< endl; wcin >> log;for (int i = 0; i < books.size(); ++i){if (log == books[i].id){if (books[i].number > 0){int y;cout <<"确认借出书籍吗?确认请输⼊1 取消请输⼊0"<< endl;cin >> y;if (y == 1){cout <<"借阅成功!";--(books[i].number);++(readers[t].already);return;}else return;}else{cout <<"图书已借完"<< endl;return;}}}cout <<"图书不存在!"<< endl;return;}void return_book(int t) //建⽴还书函数{int log;cout <<"************请输⼊要归还的图书的登陆号************"<< endl; wcin >> log;for (int i = 0; i < books.size(); i++){if (log == books[i].id){cout <<"图书归还成功"<< endl;++books[i].number;--readers[t].already;return;}}cout <<"图书不存在于本图书馆⽆需归还!"<< endl;return;}void modify_book() //建⽴修改函数{int log;cout <<"************请输⼊要修改的图书编号************"<< endl; wcin >> log;for (int i = 0; i < books.size(); i++){if (log == books[i].id){cout <<"需修改图书信息如下"<< endl;wcout << books[i];cout <<"************请输⼊修改后的信息************"<< endl; wcin >> books[i];return;}}cout <<"图书不存在⽆法修改"<< endl;return;}void delete_book(){int log;cout <<"************请输⼊要删除的图书编号************"<< endl; cin >> log;//迭代器实现删除指定图书vector::iterator itor2;for (vector::iterator iter = books.begin(); iter != books.end(); ){if (log == iter->id){cout <<"将删除的图书信息如下"<< endl;wcout << *iter;int sure = 0;cout <<"确定删除?(1确定,0取消)"<< endl;cin >> sure;if (sure == 0)return;//开始在内存中删除itor2 = iter;books.erase(itor2);cout <<"编号为"<< log <<"的图书已删除"<< endl; return;}elseiter++;}cout <<"图书不存在⽆法删除"<< endl;return;}void add_book(){book new_book;cout <<"************请输⼊新图书信息************"<< endl; wcin >> new_book;books.push_back(new_book);return;}。
C语言图书管理系统源代码
#include<stdio。
h〉#include<stdlib.h〉#include〈string。
h〉struct tushu{ /*图书结构体*/ char num[10]; /*编号*/char name[20];/*书名*/char writer[20];/*作者*/char press[20];/*出版社*/char kind[20];/*类别*/double time; /*时间*/double price;/*价格*/struct tushu *next;};struct stu /*学生结构体*/ {int snum;/*学号*/char mima[10]; /*密码*/struct stu *next;};FILE *fp; /*图书文件*/FILE *fp1; /*管理员信息文件*/ FILE *fp2; /*学生信息文件*/void menu();/*管理员主菜单(管理员进入对图书及学生信息进行管理操作)*/void xmenu();/*学生主菜单(学生进入可对图书,密码进行操作)*/void gfind(); /*管理员查询(管理员可按一定的方式查询图书)*/void xfind();/*学生查询(学生可按一定的方式查询图书)*/ void secret();/*管理员权限(管理员登陆所用,输入错误次数过多自动退出)*/void sort();/*排序(管理员可按一定的方式对图书进行排序,排序完之后可选择文件进行保存)*/void fprint(struct tushu *head);/*保存(可追加的保存,如添加可用)*/void fprint_(struct tushu *head);/*保存(可覆盖保存如修改,删除,排序后用)*/void hfprint(struct tushu *head); /*还书保存(还书成功后自动保存到文件)*/void jfprint_(struct tushu *head);/*借书保存(借书成功之后自动从图书馆删除)*/struct tushu * Input(); /*图书添加(可进行图书的添加)*/struct tushu *create(); /*从文件创建链表(从文件中读出信息,建立单链表)*/void gBrowse(struct tushu *head);/*管理员浏览(对图书进行遍历)*/void xBrowse(struct tushu *head);/*学生浏览(学生对图书进行遍历)*/void count(struct tushu *head); /*统计数量(管理员可对图书进行统计)*/void Findofname(struct tushu *head); /*按书名查找*/ void Findofwriter(struct tushu *head); /*按作者查找*/void Findofkind(struct tushu *head); /*按类别查找*/void xFindofname(struct tushu *head);/*学生按书名查找*/void xFindofwriter(struct tushu *head);/*学生按作者查找*/ void xFindofkind(struct tushu *head); /*学生按类别查找*/ void Sort_time(struct tushu * head); /*按时间排序(管理员按时间对图书进行排序,排序完之后可选择文件进行保存)*/ void Sort_price(struct tushu *head); /*按价格排序*/void Sort_num(struct tushu * head);/*按编号排序*/ void Delete(struct tushu * head,char m[15]);/*按编号删除(管理员可按编号删除图书)*/void Revise(struct tushu *head);/*修改(管理员可对图书进行修改,并选择是否保存)*/void borrow(struct tushu *head); /*借书*/void huanshu(); /*还书(学生借完书之后进行还书,若没有图书则不能借)*/void gxinxi(); /*管理员信息(有管理员的账号及密码,可进行修改)*/void xmima(struct stu *head1);/*学生密码修改(学生可对自己的密码进行修改)*/struct stu *xcreate();/*从文件创建学生信息(从文件读出学生信息,建立学生链表)*/void xsecret(struct stu *head1);/*学生权限(学生登陆所用)*/void menu() /*管理员主菜单(管理员进入对图书及学生信息进行管理操作)*/{int choice,n=0;struct tushu *head;struct stu *head1,*p;char m[15];there:printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); printf(" ┃┃socat 图书管理系统printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf(" ┃●[0]退出系统┃\n");printf(” ┃┃\n”);prin tf(” ┃●[1]帮助┃\n");printf(” ┃┃\n”);printf(” ┃●[2]浏览图书┃\n");printf(” ┃┃\n");printf(” ┃●[3]统计图书数目┃\n”);printf(" ┃┃\n”);printf(” ┃●[4]查询┃\n”);printf(” ┃printf(” ┃●[5]添加┃\n");printf(” ┃┃\n”);printf(” ┃●[6]排序┃\n");printf(” ┃┃\n");printf(" ┃●[7]修改┃\n”);printf(” ┃┃\n");printf(" ┃●[8]删除┃\n”);printf(" ┃┃\n”);printf(" ┃●[9]修改账号及密码┃\n");printf(” ┃┃\n”);printf(” ┃●[10]学生信息printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");printf(” 请选择:”);fflush(stdin);head=create();scanf("%d”,&choice);if(choice==1){//help();printf(”没有内容!\n”);system("pause”);system(”cls”);menu();}else if(choice==2){system(”cls");if(head==NULL){printf(”没有图书,请先添加图书!\n”);system("pause");system("cls");menu();}gBrowse(head);}else if(choice==3){system(”cls");count(head);}else if(choice==4){system("cls");if(head==NULL){printf(”没有图书,请先添加图书!\n”);system("pause”);system(”cls”);menu();}gfind();}else if(choice==5){Input();}else if(choice==6){system("cls");if(head==NULL){printf(”没有图书,请先添加图书!\n”); system("pause”);system(”cls”);menu();}sort(head);}else if(choice==7){system("cls”);if(head==NULL){printf(”没有图书,请先添加图书!\n”);system("pause");system("cls”);menu();}Revise(head);}else if(choice==8){if(head==NULL){printf("没有图书,请先添加图书!\n");system(”pause");system(”cls");menu();}printf(" 请输入想要删除的图书编号:”);scanf(”%s",m);Delete(head,m);}else if(choice==9){gxinxi();else if(choice==10){system(”cls”);head1=xcreate();if(head1==NULL){printf("没有学生信息,请到xuesheng_list.txt添加!\n”); sys tem(”pause”);system(”cls”);menu();}for(p=head1;p!=NULL;p=p—>next){printf(”学生学号密码\n”);printf("%d %s\n",p->snum,p—>mima);}system(”pause”);system("cls”);menu();}else if(choice==0)system(”cls");printf(”\n\n\n\n”);printf(” ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n”);exit(0);}else{system("cls");printf(”\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ");system("pause”);system(”cls”);n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出!━━━━━━━━\n\n\n”);printf(" ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n");system(”pause");exit(0);}goto there;}}void xmenu()/*学生主菜单(学生进入可对图书,密码进行操作)*/{struct tushu *head;struct stu *head1;int choice,n=0;there:printf(”┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");printf(” ┃┃socat 图书借阅系统┃┃\n");printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf(” ┃●[0]退出系统┃\n”);printf(” ┃printf(” ┃●[1]帮助┃\n”);printf(” ┃┃\n”);printf(” ┃●[2]浏览图书┃\n");printf(” ┃┃\n”);printf(" ┃●[3]查询┃\n”);printf(” ┃┃\n”);printf(” ┃●[4]借书┃\n");printf(” ┃┃\n”);printf(" ┃●[5]还书┃\n");printf(" ┃┃\n”);printf(” ┃●[6]修改密码printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”); printf(" 请选择:");fflush(stdin);head=create();scanf("%d”,&choice);if(choice==1){//xhelp();printf(”没有内容!\n");system(”pa use");system(”cls”);xmenu();}else if(choice==2){system("cls");if(head==NULL){printf(”没有图书!\n");system("pause”);xmenu();}xBrowse(head);}else if(choice==3){if(head==NULL){printf(”没有图书!\n”);system(”pause”);system(”cls”);xmenu();}xfind();}else if(choice==4){if(head==NULL){printf(”没有图书!\n");system(”pause”);xmenu();}borrow(head);}else if(choice==5){huanshu(head);}else if(choice==6){system("cls”);head1=xcreate();if(head1==NULL){printf(”学生信息被清空!!\n”);system("pause");system("cls”);xmenu();}xmima(head1); ;}else if(choice==0){system("cls");printf(”\n\n\n\n”);printf(” ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n");exit(0);}else{system("cls”);printf("\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system(”pause”);system(”cls”);n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出!━━━━━━━━\n\n\n”);printf(” ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n”);system("pause”);exit(0);}goto there;}}void gfind()/*管理员查询(管理员可按一定的方式查询图书)*/{int choice,n=0;struct tushu *head;there:system(”cls”);printf(” ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n”);printf(” ┃┃socat 图书借阅系统┃┃\n”);printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");printf(" ┃●[0]返回┃\n");printf(" ┃┃\n”);printf(" ┃●[1]按书名查找┃\n”);printf(" ┃┃\n”);printf(" ┃●[2]按作者查找┃\n”);printf(” ┃┃\n”);printf(" ┃●[3]按类别查找┃\n”);printf(" ┃┃\n”);printf(" ┃● ┃\n”);printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”);printf(" 请选择:”);fflush(stdin);head=create();scanf(”%d”,&choice);if(choice==1){system(”cls");Findofname(head); }else if(choice==2){system(”cls”); Findofwriter(head); }else if(choice==3){system(”cls");Findofkind(head); }else if(choice==0){system(”cls”);menu();}else{system(”cls”);printf(”\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system("pause");system(”cls");n++;if(n==3){printf(" \n\n\n ━━━━━━━━你错误次数太多,自动退出! ━━━━━━━━\n\n\n”);printf(" ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n”);system(”pause”);exit(0);}goto there;}}void xfind()/*学生查询(学生可按一定的方式查询图书)*/ {struct tushu *head;int choice,n=0;there:system("cls”);printf(” ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n”);printf(” ┃┃socat 图书借阅系统┃┃\n”);printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");printf(” ┃●[0]返回┃\n”);printf(” ┃┃\n");printf(" ┃●[1]按书名查找┃\n”);printf(” ┃┃\n”);printf(" ┃●[2]按作者查找┃\n”);printf(" ┃┃\n");printf(” ┃●[3]按类别查找┃\n");printf(” ┃┃\n”);printf(" ┃● ┃\n");printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf(” 请选择:");fflush(stdin);head=create();scanf(”%d",&choice);if(choice==1){system(”cls”);xFindofname(head);}else if(choice==2){system(”cls”);xFindofwriter(head);}else if(choice==3){system("cls");xFindofkind(head);}else if(choice==0){system(”cls");xmenu();}else{system("cls");printf("\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system(”pause”);system(”cls");n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出!━━━━━━━━\n\n\n”);printf(” ━━━━━━━━感谢使用图书借阅系统━━━━━━━━\n\n\n”);system("pause”);exit(0);}goto there;}}void sort(){struct tushu *head;int choice,n=0;there:system("cls”);printf(” ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");printf(” ┃┃socat 图书借阅系统┃┃\n");printf(" ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n”);printf(" ┃●[0]返回┃\n”);printf(” ┃┃\n");printf(” ┃●[1]按时间排序┃\n”);printf(” ┃┃\n”);printf(” ┃●[2]按价格排序┃\n");printf(" ┃┃\n”);printf(” ┃●[3]按编号排序┃\n”);printf(" ┃┃\n”);printf(” ┃●┃\n”);printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”);printf(" 请选择:”);fflush(stdin);head=create();scanf("%d",&choice);if(choice==1){system("cls”); Sort_time(head);}else if(choice==2){sys tem(”cls");Sort_price(head);}else if(choice==3){system(”cls”);Sort_num(head); }else if(choice==0){system("cls”); menu();}else{system(”cls");printf("\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system(”pause”);system(”cls”);n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出! ━━━━━━━━\n\n\n”);printf(” ━━━━━━━━感谢使用图书借阅系统━━━━━━━━\n\n\n”);system("pause”);exit(0);}goto there;}}struct tushu *Input(){struct tushu *p1,*p2,*head,*ptr;char num;int x,i=0;system("cls”);p1=(struct tushu *)malloc(sizeof(struct tushu));head=p1;p1-〉price=—1;while(i!=1){printf(”请输入编号,以’#’结束\n”);scanf("%s",p1—>num);if(strcmp(p1-〉num,”#")==0)i=1;while(i!=1){printf(”请依次输入书名作者出版社类别出版时间价格\n”); scanf(”%s%s%s%s%lf%lf”,p1—>name,p1—>writer,p1—〉press,p1-〉kind,&p1-〉time,&p1—〉price);p2=p1;p1=(struct tushu *)malloc(sizeof(struct tushu));p2—〉next=p1;break;}}if(p1-〉price!=-1)p2—〉next=NULL;elsehead=NULL;system("cls”);printf("\n\n\n\t\t\t图书信息输入结束!\n\n\n”);system(”pause”);system(”cls”);printf(”\n\n\n\t\t\t是否保存图书信息?(1。
图书馆管理系统源代码电子教案
图书馆管理系统源代码电子教案一、引言图书馆作为重要的文化机构,承载着传播知识和文化的使命。
为了更好地管理图书馆资源和提供用户服务,许多图书馆采用了现代化的图书馆管理系统。
本文将介绍一种图书馆管理系统的源代码电子教案。
二、系统简介图书馆管理系统是指利用计算机技术和信息管理理念进行图书馆资源管理和服务的系统。
通过电子化手段,实现图书馆藏书的分类、编目、订购、借阅、归还等功能。
该系统可以提高图书馆工作效率,方便读者借阅图书,同时也是图书馆管理者进行资源分析和决策的重要工具。
三、系统功能1. 图书馆资源管理功能该系统提供了图书馆资源的管理功能,包括图书馆藏书的入库、分类、编目等操作。
管理者可以通过这一功能对图书馆资源进行统一管理,方便图书馆资源的查找和借阅。
2. 读者管理功能系统中的读者管理功能可以方便地对读者信息进行管理,包括读者注册、信息录入、借阅记录等。
读者可以通过该系统查询自己的借阅记录,并进行续借等操作。
3. 借书还书功能借书还书是图书馆的核心服务之一,系统提供了借书还书的功能。
读者可以通过该系统自助借书和还书,减少了人工操作的繁琐,提高了借阅效率。
4. 电子资源管理功能随着数字化时代的到来,图书馆不仅仅是纸质图书资源的管理,还需要管理电子资源。
该系统提供了电子资源管理的功能,可以方便地进行电子资源的采购、存储和管理。
5. 统计分析功能该系统还提供了统计分析功能,可以对图书借阅情况、图书馆资源使用等进行统计和分析。
这些数据可以帮助图书馆管理者进行决策,优化资源配置和服务。
四、系统开发技术该图书馆管理系统使用了多种开发技术和工具,包括:1. 后端开发语言:Java2. 前端开发语言:HTML、CSS、JavaScript3. 数据库:MySQL4. 框架:Spring、Hibernate5. 开发工具:Eclipse、IntelliJ IDEA6. 版本控制:Git五、系统界面设计图书馆管理系统的界面设计应该符合用户友好的原则,简洁明了且操作简单。
图书馆管理系统代码
#include <iostream.h>//头文件#include <string.h>int readerid=0;//读者号int bookid=0;//书号class CBook //图书馆存书类{private:int totalnum;//public:char bookname[20];//int currentnum;//CBook(char *na="nobook",int num=0)//{strcpy(bookname,na);totalnum=num;currentnum=num;}void displayname()//显示书名{cout<<"书名:"<<bookname;cout<<" 可借数量:"<<currentnum<<endl;}};class CReader//借阅人类{private:char name[20];//int id;//int books; //public:char bookname[5][20];//int borrowed;//已借数//book,可借数;books,总可借数CReader(char *nam="noname",int book=5):borrowed(5-book),books(book),id(readerid+1) { //strcpy(name,nam);for(int i=0;i<5;i++)strcpy(bookname[i],"nobook");}void displayname(){cout<<"名字:"<<name<<",借书证号:"<<id<<"号"<<endl;}void display()//{char *bookname1;cout<<"您的名字为:"<<name<<endl;cout<<"您的借书证号为:"<<id<<"号"<<endl;cout<<"您的借阅情况:"<<endl;if (borrowed>0)for(int i=0;i<borrowed;i++){bookname1=bookname[i];cout<<"已借书籍:"<<bookname1<<endl;};cout<<"已借:"<<borrowed<<"本书";cout<<" 可借:"<<books-borrowed<<"本书"<<endl;}};CBook *libbook[5];//本馆最多存5种书(可调)CReader *libperson[5];//本馆最多注册5人(可调)CReader accout();CBook newbook();void hello();//int borrow();//int back();//int bookinformation();//int readerinformation();//void main()//{ char option[100];hello();//while(1){cout<<"------------------------系统首页-----------------------"<<endl<<endl;cout<<" 0、入库新书1、开户2、借书3、还书4、库存查询5、用户查询6、退出"<<endl;cout<<"-----------------------------------------------------------------"<<endl<<endl;cout<<" 请选序号后回车:"<<endl<<endl;cin>>option;switch (option[0]){case '0'://if (bookid>4){cout<<"书库已满!通知管理员"<<endl;break;}libbook[bookid]=new CBook;*libbook[bookid]=newbook();bookid++;break;case '1': //if (readerid>4){cout<<"用户已满!通知管理员"<<endl;break;}libperson[readerid]=new CReader;*libperson[readerid]=accout();readerid++;break;case '2'://borrow();break;case '3'://back();break;case '4'://bookinformation();break;case '5'://readerinformation();break;case '6'://cout<<"谢谢使用!"<<endl;return;default://cout<<"输入错误,请重新选择序号!"<<endl;break;};};}void hello()//{cout<<" **************************************"<<endl;cout<<" ** **"<<endl;cout<<" ** 欢迎进入图书馆管理系统**"<<endl;cout<<" ** **"<<endl;cout<<" **************************************"<<endl<<endl;cout<<" Copyright@EEI,UJS"<<endl;cout<<" 测试版:2012-10-16"<<endl<<endl<<endl<<endl; }CReader accout()//开户{char xinming[20];cout<<"请输入姓名:"<<endl;cin>>xinming;CReader someone(xinming);cout<<"欢迎您"<<xinming<<" 同学!"<<endl;someone.display();return someone;};CBook newbook()//进新书{ char abookname[20];//int abooknum;//cout<<"输入新书名:";cin>>abookname;cout<<"输入新书数量:";cin>>abooknum;//CBook ABook(abookname,abooknum);//ABook.displayname();//cout<<" --新书入库成功!--"<<endl<<endl;return ABook;}int borrow()//借书{int ReaderInd;//cout<<"请输入借书证号:"<<endl;cin>>ReaderInd;//if(ReaderInd>5||ReaderInd<1) {cout<<"用户不存在,请重新输入!"<<endl;return 1;}//ReaderInd--;//cout<<"用户信息:"<<endl;/*指针数组的调用格式*/(*libperson[ReaderInd]).display();//cout<<"本馆可借的书有:"<<endl;for (int BookInd=0;BookInd<bookid;BookInd++)(*libbook[BookInd]).displayname();if ((*libperson[ReaderInd]).borrowed==5)//超出5本{cout<<"您的借书限额已到,借阅不成功"<<endl;return 1;}char borrowbookname[20];//输入书名cout<<"您要借的书是:"<<endl;cin>>borrowbookname;int i=0,j=0,k=0;for (i=0;i<bookid;i++)//找到该书(不可重名){if (strcmp(borrowbookname,(*libbook[i]).bookname)==0){j=i;k=1;break;}}if ((*libbook[j]).currentnum==0)//无书可借{cout<<"书均已借出,借阅不成功"<<endl;return 1;}if (k==0)//此书不存在{cout<<"找不到此书,借阅不成功"<<endl;return 1;//借书成功,数量减一(*libbook[j]).currentnum--;cout<<"借阅一本已成功"<<endl;// (*libbook[j]).displayname();bookinformation();////*读者信息处理*/int borrowed1=(*libperson[ReaderInd]).borrowed;//borrowed1已借书strcpy((*libperson[ReaderInd]).bookname[borrowed1],borrowbookname);++(*libperson[ReaderInd]).borrowed;return 0;};int back() //还书{int ReaderInd;cout<<"请输入借书证号:"<<endl;cin>>ReaderInd;if(ReaderInd>5||ReaderInd<1) {cout<<"用户不存在,请重新输入!"<<endl;return 1;}//if((*libperson[ReaderInd-1]).borrowed==0) {cout<<"用户还未借书,请重新输入!"<<endl;return 1;}ReaderInd--;cout<<"用户信息:"<<endl; //显示用户信息(*libperson[ReaderInd]).display();cout<<"本馆可借的书有:"<<endl;for (int BookInd=0;BookInd<bookid;BookInd++)(*libbook[BookInd]).displayname();char backbookname[20]; //输入书名cout<<"您要还的书是:"<<endl;cin>>backbookname;int i=0,n=0,flag=0,j=0,k=0,t=0,fg=0;for (i=0;i<bookid;i++) //书库里找到该书if (strcmp(backbookname,(*libbook[i]).bookname)==0) { flag=1;break; }if(flag==1)for (n=0;n<(*libperson[ReaderInd]).borrowed;n++)//判断有没有借这本书if (strcmp((*libperson[ReaderInd]).bookname[n],backbookname)==0){k=1;fg=n;j=i;break;}if (k==0){cout<<"没有借阅此书,重新输入,谢谢"<<endl;return 1;}if (k==1){(*libbook[j]).currentnum++;//cout<<"您已成功归还一本"<<endl;for( t=fg;t<(*libperson[ReaderInd]).borrowed-1;t++)strcpy((*libperson[ReaderInd]).bookname[t],(*libperson[ReaderInd]).bookname[t+1]);//(*libbook[j]).displayname();//bookinformation();///--(*libperson[ReaderInd]).borrowed;//}return 1;}int bookinformation() //书库信息{cout<<"本馆可借的书有:"<<endl;for(int i=0;i<bookid;i++)(*libbook[i]).displayname();//return 1;}int readerinformation() //读者信息{ int ReaderInd;cout<<"本馆共有"<<readerid<<"位读者:"<<endl;cout<<"请输入您要查询读者的借书证号码<1-5>:"<<endl;cin>>ReaderInd;if(ReaderInd>5||ReaderInd<1) {cout<<"用户不存在,请重新输入!"<<endl;return 1;}cout<<"用户信息:"<<endl;if(ReaderInd>readerid){cout<<"输入有误,无此读者,请重新输入!"<<endl;readerinformation();//}(*libperson[ReaderInd-1]).display(); //return 1;}。
图书馆管理系统设计(附带源代码)
毕业设计_图书管理系统一、数据库设计数据库设CREATE DATABASE TSGLGOUSE TSGLGOCREATE TABLE Bmanage(bId varchar(10) PRIMARY KEY,bName v archar(50), --添加图书--图书编号--书名bNumber varchar(10), --书数目)GObSore varchar(50) --分类CREATE TABLE Madmin(mNamevarchar(10)PRIMARY KEY, mPwd v archar(25),mAge varchar(8),mSex varchar(4),mNumber varchar(15),mrole varchar(8))GO--图书员管理--图书管理员姓名--图书管理员密码--图书管理员年龄--图书管理员性别--图书管理员--图书管理员角色CREATE TABLE Reader(rSno varchar(10) PRIMARY KEY,rName varchar(10),rPwd varchar(25),rAge varchar(8),rSex varchar(4),rState varchar(8),rNumber varchar(15),rEmail varchar(25),--读者信息表reader--读者号--姓名--密码--年龄--性别--状态----电子rAdress varChar(50), --地址) GO rGrade varChar(15),rClass varchar(15),rRole varchar(8)--年级--班级--角色CREATE TABLE Rrecord (rSno varchar(10) PRIMARY KEY,rName varChar(10),bId varchar(10),bName v arChar(50),bTime varchar(10),bBackTime varchar(10))GOCREATE TABLE SysSet(rRole varchar(8)PRIMARY KEY,rState varchar(8),Fine float(25),rDay varchar(8)--读者编号学号--读者姓名--图书编号--图书名称--借书时间--还书时间--读者角色--读者可借书数--过期罚款设置--可借书天数)二、界面截图及说明1) 登录窗口(实现管理员和馆长的登陆)2) 管理员窗口3) 馆长窗口4) 关于窗口5) 新增图书窗口6) 新增管理员、查找及修改窗口8) 图书的查找及修改窗口9) 借阅窗口10)系统设置窗口三、主要代码主要代1) 登录窗口(实现管理员和馆长的登陆)登陆检查:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using prjTSGL.ClassLib.DBAccess;namespace prjTSGL.ClassLib.Logic{class clsLoginCheck{public static DataTable CheckLogin(string UserId, string PWD){{string SQLstmt = "select mName,mPwd,mRole from Madmin where mName= '" + UserId + "'and mPwd= '" + PWD + "'";DataTable dt = clsGlobalVar.GetDataTable(SQLstmt);return dt;}}}}登陆:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using prjTSGL.ClassLib.Logic;namespace prjTSGL.TSGL_UI{public partial class frmLogin : Form{public frmLogin(){InitializeComponent();}private void btnLogin_Click(object sender, EventArgs e){string strUserID = loginid.Text.Trim();string strPWD = loginpwd.Text.Trim();string type = "";try{DataTable dt = clsLoginCheck.CheckLogin(strUserID, strPWD);if (dt.Rows.Count == 0){MessageBox.Show("登陆失败,请重新输入!");loginpwd.Focus();return;}else{type = dt.Rows[0]["mRole"].ToString().Trim();if (cboLT.Text.Trim()=="馆长" ){if (type == "馆长"){this.Hide();frmManager objManager = new frmManager();objManager.Show();}else{MessageBox.Show("您没有权限!");loginpwd.Focus();return;}}else{if (type =="管理员"){this.Hide();frmAdmin objAdmin = new frmAdmin();objAdmin.Show();}else{MessageBox.Show("您没有权限!");loginpwd.Focus();return;}}}}catch (Exception ex){throw ex;}}private void btnExit_Click(object sender, EventArgs e){this.Close();}}}2) 管理员窗口using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace prjTSGL.TSGL_UI{public partial class frmAdmin : Form{public frmAdmin(){InitializeComponent();}private void ShowForm(Form frmToShow){this.Cursor = Cursors.WaitCursor;foreach (Form frmChild in this.MdiChildren){if (frmChild.GetType() == frmToShow.GetType()){frmToShow.Dispose();frmChild.Activate();this.Cursor = Cursors.Default;return;}}frmToShow.MdiParent = this;frmToShow.Show();this.Cursor = Cursors.Default;}private void读者信息修改ToolStripMenuItem_Click(object sender, EventArgs e){ShowForm(new frmUpdateReader());}private void新增图书ToolStripMenuItem_Click(object sender, EventArgs e){ShowForm(new frmAddNewBook());}private void图书的查找和修改ToolStripMenuItem_Click(object sender, EventArgs e) {ShowForm(new frmUpdateBook());}private void流通管理ToolStripMenuItem_Click(object sender, EventArgs e){ShowForm(new frmBorrow());}private void帮助ToolStripMenuItem_Click(object sender, EventArgs e){ShowForm(new frmAbout());}private void退出ToolStripMenuItem_Click(object sender, EventArgs e){Application.Exit();}}}3) 馆长窗口using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace prjTSGL.TSGL_UI{public partial class frmManager : Form{public frmManager(){InitializeComponent();}private void ShowForm(Form frmToShow){this.Cursor = Cursors.WaitCursor;foreach (Form frmChild in this.MdiChildren){if (frmChild.GetType() == frmToShow.GetType()){frmToShow.Dispose();frmChild.Activate();this.Cursor = Cursors.Default;return;}}frmToShow.MdiParent = this;frmToShow.Show();this.Cursor = Cursors.Default;}private void frmManager_FormClosed(object sender, FormClosedEventArgs e){Application.Exit();}private void管理员信息管理ToolStripMenuItem_Click_1(object sender, EventArgs e) {ShowForm(new frmSelectAdmin());}private void系统设置ToolStripMenuItem_Click_1(object sender, EventArgs e) {ShowForm(new frmSys());}private void关于ToolStripMenuItem_Click(object sender, EventArgs e){ShowForm(new frmAbout());}private void退出ToolStripMenuItem_Click_1(object sender, EventArgs e){Application.Exit();}}}4) 关于窗口using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace prjTSGL.TSGL_UI{public partial class frmAbout : Form{public frmAbout(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){this.Close();}}}5) 新增图书窗口using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using prjTSGL.ClassLib.DBAccess;namespace prjTSGL.TSGL_UI{public partial class frmAddNewBook : Form{public frmAddNewBook(){InitializeComponent();}private bool ValidatInput(){if (textBox1.Text == ""){MessageBox.Show("请输入图书编号!", "输入提示", MessageBoxButtons.OK, rmation);textBox1.Focus();return false;}if (textBox2.Text == ""){MessageBox.Show("请输入图书名称!", "输入提示", MessageBoxButtons.OK, rmation);textBox2.Focus();return false;}if (textBox3.Text == ""){MessageBox.Show("请输入图书数目!", "输入提示", MessageBoxButtons.OK,rmation);textBox3.Focus();return false;}if (comboBox1.Text == ""){MessageBox.Show("请选择图书类别!", "输入提示", MessageBoxButtons.OK, rmation);textBox3.Focus();return false;}return true;}private void btnOK_Click_1(object sender, EventArgs e){if (ValidatInput()){//string id = textBox1.Text;//string name = textBox2.Text;//string Number = textBox3.Text;//string sore = comboBox1.Text;string sql = "SELECT *FROM Bmanage WHERE bId='" + textBox1.Text.Trim() + " '";DataTable dt = clsGlobalVar.GetDataTable(sql);if (dt.Rows.Count == 0){string SQL = "insert into Bmanage(bId,bName,bNumber,bSore)values('" + textBox1.Text.Trim() + " ','" + textBox2.Text.Trim() + " ','" + textBox3.Text.Trim() + " ','"+ comboBox1.Text.Trim() + " ')";try{bool result = clsGlobalVar.ExecSQL(SQL);if (result){MessageBox.Show("添加成功!", "操作提示", MessageBoxButtons.OK, rmation);textBox1.Text = "";textBox2.Text = "";textBox3.Text = "";comboBox1.Text = "";textBox1.Focus();}else{MessageBox.Show("添加失败!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);}}catch (Exception ex){MessageBox.Show("操作数据库出错!", "操作演示", MessageBoxButtons.OK, MessageBoxIcon.Error);Console.WriteLine(ex.Message);}}else{MessageBox.Show("图书编号已存在!", "操作提示", MessageBoxButtons.OK, rmation);textBox1.Focus();}}}private void btnCancel_Click(object sender, EventArgs e){this.Close();}}}6) 新增管理员、查找及修改窗口using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using prjTSGL.ClassLib.DBAccess;namespace prjTSGL.TSGL_UI{public partial class frmSelectAdmin : Form{public frmSelectAdmin(){InitializeComponent();}string name = "";string SQL = "";string PWD = "";string Age = "";string Sex = "";string Tel = "";string Role = "";private void SelectAdmin(){string strfilter = "";string SQL = "select mName AS 用户名,mPwd AS 密码,mAge AS 年龄,mSex AS 性别,mNumber AS ,mRole AS 角色from Madmin ";if (txtName.Text == "")strfilter = "";elsestrfilter = "where mName='" + txtName.Text.Trim() + "'";try{DataTable dt = clsGlobalVar.GetDataTable(SQL + strfilter);int intIndex = 0;if (dt.Rows.Count == 0){MessageBox.Show("抱歉,没有您要找的用户!", "结果提示", MessageBoxButtons.OK, rmation);txtName.Text = "";txtPWD.Text = "";txtAge.Text = "";cboSex.Text = "";txtTel.Text = "";cboRole.Text = "";}else{{LV.Columns.Clear();LV.Items.Clear();LV.Columns.Add("序号", 100, HorizontalAlignment.Center);for (int intJ = 0; intJ < dt.Columns.Count; intJ++){LV.Columns.Add(dt.Columns[intJ].ColumnName, 200, HorizontalAlignment.Center);}for (int intI = 0; intI < dt.Rows.Count; intI++){intIndex = intI + 1;LV.Items.Add(intIndex.ToString());LV.Items[intI].SubItems.Add(dt.Rows[intI]["用户名"].ToString().Trim());LV.Items[intI].SubItems.Add(dt.Rows[intI]["密码"].ToString().Trim());LV.Items[intI].SubItems.Add(dt.Rows[intI]["年龄"].ToString().Trim());LV.Items[intI].SubItems.Add(dt.Rows[intI]["性别"].ToString().Trim());LV.Items[intI].SubItems.Add(dt.Rows[intI][""].ToString().Trim());LV.Items[intI].SubItems.Add(dt.Rows[intI]["角色"].ToString().Trim());}}}}//连接数据库,将数据读取出放入MadminDatacatch (Exception ex){MessageBox.Show("查询数据库出错!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);Console.WriteLine(ex.Message);}}private void btnSearch_Click(object sender, EventArgs e){SelectAdmin();//调用函数}//实现修改功能private void btnUpdata_Click(object sender, EventArgs e){if (txtName.Text == "" || cboRole.Text==""){MessageBox.Show("请选择要修改的用户!");}else{SQL = "UPDATE Madmin SET mName='" + txtName.Text.Trim() + "',mPwd='" +txtPWD.Text.Trim() + "',mAge='" + txtAge.Text.Trim() + "',mSex='" + cboSex.Text.Trim() +"',mNumber='" + txtTel.Text.Trim() + "',mRole='" + cboRole.Text.Trim() + "' where mName='" + name+ "'AND mPwd='" + PWD + "'AND mAge='" + Age + "'AND mSex='" + Sex + "'AND mNumber='" + Tel + "'AND mRole='" + Role + "'";try{bool result = clsGlobalVar.ExecSQL(SQL);if (result){//txtName.Text = "";txtPWD.Text = "";txtAge.Text = "";cboSex.Text = "";txtTel.Text = "";cboRole.Text = "";MessageBox.Show("修改已成功");SelectAdmin();}else{MessageBox.Show("更新失败!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);}}catch (Exception ex){MessageBox.Show("操作数据库出错!", "操作演示", MessageBoxButtons.OK, MessageBoxIcon.Error);Console.WriteLine(ex.Message);}}}private void btnExit_Click(object sender, EventArgs e){this.Close();}private void LV_SelectedIndexChanged_1(object sender, EventArgs e){txtName.Text = LV.FocusedItem.SubItems[1].Text.Trim();txtPWD.Text = LV.FocusedItem.SubItems[2].Text.Trim();txtAge.Text = LV.FocusedItem.SubItems[3].Text.Trim();cboSex.Text = LV.FocusedItem.SubItems[4].Text.Trim();txtTel.Text = LV.FocusedItem.SubItems[5].Text.Trim();cboRole.Text = LV.FocusedItem.SubItems[6].Text.Trim();name = LV.FocusedItem.SubItems[1].Text.Trim();PWD = LV.FocusedItem.SubItems[2].Text.Trim();Age = LV.FocusedItem.SubItems[3].Text.Trim();Sex = LV.FocusedItem.SubItems[4].Text.Trim();Tel = LV.FocusedItem.SubItems[5].Text.Trim();Role = LV.FocusedItem.SubItems[6].Text.Trim();}private void frmSelectAdmin_Load(object sender, EventArgs e){this.btnSearch_Click(sender, e);}private void btnAdd_Click(object sender, EventArgs e){if (txtName.Text == "" || txtPWD.Text == "" || txtAge.Text == "" ||cboSex.Text == "" || txtTel.Text=="" ||cboRole.Text == ""){MessageBox.Show("请至少输入用户名,密码和角色!");}else{SQL = "SELECT mName,mPwd,mAge ,mSex,mNumber,mRole from Madmin WHERE mName='" + txtName.Text.Trim() + "' ";DataTable dt = clsGlobalVar.GetDataTable(SQL);if (dt.Rows.Count == 0){SQL = "INSERT INTO Madmin VALUES ('" + txtName.Text.Trim() + "','" +txtPWD.Text.Trim() + "','" + txtAge.Text.Trim() + "','" + cboSex.Text.Trim() + "','" +txtTel.Text.Trim() + "','" + cboRole.Text.Trim() + "')";if (clsGlobalVar.ExecSQL(SQL) == true){//txtName.Text = "";txtPWD.Text = "";txtAge.Text = "";cboSex.Text = "";txtTel.Text = "";cboRole.Text = "";MessageBox.Show("成功添加新管理员!");SelectAdmin();}else{Exception ex = new Exception();MessageBox.Show(ex.Message.ToString());}}else{MessageBox.Show("用户名已存在,请选择其他用户名!", "结果提示", MessageBoxButtons.OK, rmation);txtName.Text = "";}}}private void btnDelete_Click(object sender, EventArgs e){if (txtName.Text == "" || cboRole.Text == ""){MessageBox.Show("请选择要删除的管理员用户!");}else{DialogResult dr = MessageBox.Show("此操作不可撤销,确定要删除此用户信息吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);if (dr == DialogResult.Yes){SQL = "DELETE FROM Madmin WHERE mName='" + name + "'AND mPwd='" + PWD + "'AND mAge='" + Age + "'AND mSex='" + Sex + "'AND mNumber='" + Tel + "'AND mRole='" + Role + "'";if (clsGlobalVar.ExecSQL(SQL) == true){MessageBox.Show("成功删除此管理信息!");SelectAdmin();}else{Exception ex = new Exception();MessageBox.Show(ex.Message.ToString());}}}}private void btnReset_Click(object sender, EventArgs e){txtName.Text = "";txtPWD.Text = "";txtAge.Text = "";cboSex.Text = "";txtTel.Text = "";cboRole.Text = "";}}}7) 新增读者、查找及修改窗口using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using prjTSGL.ClassLib.DBAccess;namespace prjTSGL.TSGL_UI{public partial class frmUpdateReader : Form{public frmUpdateReader(){InitializeComponent();}string Sno = "";string Pwd = "";string Age = "";string name = "";string Sex = "";string State = "";string Adress = "";string Number = "";string Email = "";string Grade = "";string Class = "";string Role = "";//查找学生读者private void SelectStudent(){string strfilter = "";string SQL = "select rSno AS 读者编号,rName AS 读者姓名,rPwd AS 密码,rAge AS 年龄,rSex AS 性别,rState AS 借书状态,rAdress AS 地址,rNumber AS ,rEmail AS ,rGrade AS 年级,rClass AS 班级,rRole AS 角色from Reader ";if (txtReaderName.Text == "")strfilter = "";elsestrfilter = "where rName='" + txtReaderName.Text.Trim() + "'";try{DataTable dt = clsGlobalVar.GetDataTable(SQL + strfilter);int intIndex = 0;if (dt.Rows.Count==0){MessageBox.Show("抱歉,没有您要找的读者信息!", "结果提示", MessageBoxButtons.OK, rmation);}else{LV.Columns.Clear();LV.Items.Clear();LV.Columns.Add("序号", 100, HorizontalAlignment.Center);for (int intJ = 0; intJ < dt.Columns.Count; intJ++){LV.Columns.Add(dt.Columns[intJ].ColumnName, 200, HorizontalAlignment.Center);}for (int intI = 0; intI < dt.Rows.Count; intI++){intIndex = intI + 1;LV.Items.Add(intIndex.ToString());for (int j=1; j < dt.Columns.Count; j++){LV.Items[intI].SubItems.Add(dt.Rows[intI][j].ToString());}//LV.Items[intI].SubItems.Add(dt.Rows[intI]["读者编号"].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI]["读者姓名"].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI]["密码"].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI]["年龄"].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI]["性别"].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI]["借书状态"].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI]["地址"].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI][""].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI][""].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI]["年级"].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI]["班级"].ToString());//LV.Items[intI].SubItems.Add(dt.Rows[intI]["角色"].ToString());}}}catch (Exception ex){MessageBox.Show("查询数据库出错!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);Console.WriteLine(ex.Message);}}//实现查找功能private void btnSearch_Click(object sender, EventArgs e){SelectStudent();}//实现修改功能private void btnUpdata_Click(object sender, EventArgs e){if (textBox2.Text == ""){MessageBox.Show("请选择要修改的用户!");}else//string sql = "SELECT * from Reader WHERE rSno='" + textBox2.Text.Trim() + "' ";//DataTable dt = clsGlobalVar.GetDataTable(sql);//if (dt.Rows.Count == 0)//{{string SQL = "UPDATE Reader SET rSno='" + textBox2.Text.Trim() + "',rPwd='" + textBox3.Text.Trim() + "',rAge='" + textBox1.Text.Trim() + "',rName='" + txtReaderName.Text.Trim() + "',rSex='" + cboSex.Text.Trim() + "',rState='" + textBox4.Text.Trim() + "',rAdress='" + textBox5.Text.Trim() + "',rNumber='" + textBox6.Text.Trim() + "',rEmail='" + textBox7.Text.Trim() + "',rGrade='" + textBox8.Text.Trim() + "',rClass='" + textBox9.Text.Trim()+ "' ,rRole='" + cboRole.Text.Trim() + "'";string strfilter = "where rSno='" + Sno + "'";try{bool result = clsGlobalVar.ExecSQL(SQL + strfilter);if (result){textBox2.Text = "";textBox3.Text = "";textBox1.Text = "";cboSex.Text = "";textBox4.Text = "";textBox5.Text = "";textBox6.Text = "";textBox7.Text = "";textBox8.Text = "";textBox9.Text = "";cboRole.Text = "";MessageBox.Show("修改已成功");SelectStudent();}else{MessageBox.Show("读者信息不存在!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);}}catch (Exception ex){MessageBox.Show("操作数据库出错!", "操作演示", MessageBoxButtons.OK, MessageBoxIcon.Error);Console.WriteLine(ex.Message);}}//}//else//{// MessageBox.Show("用户名已存在,请选择其他用户名!", "结果提示", MessageBoxButtons.OK, rmation);// textBox2.Text = "";//}}private void btnExit_Click(object sender, EventArgs e){this.Close();}private void LV_SelectedIndexChanged(object sender, EventArgs e) {textBox2.Text = LV.FocusedItem.SubItems[1].Text.Trim();txtReaderName.Text = LV.FocusedItem.SubItems[2].Text.Trim();textBox3.Text = LV.FocusedItem.SubItems[3].Text.Trim();textBox1.Text = LV.FocusedItem.SubItems[4].Text.Trim();cboSex.Text = LV.FocusedItem.SubItems[5].Text.Trim();textBox4.Text = LV.FocusedItem.SubItems[6].Text.Trim();textBox5.Text = LV.FocusedItem.SubItems[7].Text.Trim();textBox6.Text = LV.FocusedItem.SubItems[8].Text.Trim();textBox7.Text = LV.FocusedItem.SubItems[9].Text.Trim();textBox8.Text = LV.FocusedItem.SubItems[10].Text.Trim();textBox9.Text = LV.FocusedItem.SubItems[11].Text.Trim();cboRole.Text = LV.FocusedItem.SubItems[12].Text.Trim();Sno = LV.FocusedItem.SubItems[1].Text.Trim();name = LV.FocusedItem.SubItems[2].Text.Trim();Pwd = LV.FocusedItem.SubItems[3].Text.Trim();Age = LV.FocusedItem.SubItems[4].Text.Trim();Sex = LV.FocusedItem.SubItems[5].Text.Trim();State = LV.FocusedItem.SubItems[6].Text.Trim();Adress = LV.FocusedItem.SubItems[7].Text.Trim();Number = LV.FocusedItem.SubItems[8].Text.Trim();Email = LV.FocusedItem.SubItems[9].Text.Trim();Grade = LV.FocusedItem.SubItems[10].Text.Trim();Class= LV.FocusedItem.SubItems[11].Text.Trim();Role = LV.FocusedItem.SubItems[12].Text.Trim();}private void btnReset_Click(object sender, EventArgs e){textBox2.Text = "";textBox3.Text = "";txtReaderName.Text = "";textBox1.Text = "";cboSex.Text = "";textBox4.Text = "";textBox5.Text = "";textBox6.Text = "";textBox7.Text = "";textBox8.Text = "";textBox9.Text = "";cboRole.Text = "";}private void btnAdd_Click(object sender, EventArgs e){string SQL="";if (textBox2.Text == "" || textBox3.Text == "" || txtReaderName.Text == "" || textBox4.Text == "" || textBox5.Text == ""){MessageBox.Show("请至少输入读者姓名,用户名,密码,借书状态和角色!");}else{string sql = "SELECT * from Reader WHERE rSno='" + textBox2.Text.Trim() + "' ";DataTable dt = clsGlobalVar.GetDataTable(sql);if (dt.Rows.Count == 0){if(cboRole.Text.Trim()=="教师")SQL = "INSERT INTO Reader(rSno,rPwd,rName,rAge,rSex,rState,rAdress,rNumber,rEmail,rGrade,rClass,rRole)VALUES ('" + textBox2.Text.Trim() + "','" + textBox3.Text.Trim() + "','" + txtReaderName.Text.Trim() + "','"+ textBox1.Text.Trim() + "','" + cboSex.Text.Trim() + "','" + textBox4.Text.Trim() + "','" + textBox5.Text.Trim() + "','" + textBox6.Text.Trim() + "','" + textBox7.Text.Trim() + "','" + "NULL"+ "','" + "NULL" + "','" + cboRole.Text.Trim() + "')";elseSQL = "INSERT INTO Reader(rSno,rPwd,rName,rAge,rSex,rState,rAdress,rNumber,rEmail,rGrade,rClass,rRole)VALUES ('" + textBox2.Text.Trim() + "','" + textBox3.Text.Trim() + "','" + txtReaderName.Text.Trim() + "','"+ textBox1.Text.Trim() + "','" + cboSex.Text.Trim() + "','" + textBox4.Text.Trim() + "','" + textBox5.Text.Trim() + "','" + textBox6.Text.Trim() + "','" + textBox7.Text.Trim() + "','" + textBox8.Text.Trim() + "','" + textBox9.Text.Trim() + "','" + cboRole.Text.Trim() + "')";if (clsGlobalVar.ExecSQL(SQL) == true){textBox2.Text = "";textBox3.Text = "";textBox1.Text = "";cboSex.Text = "";textBox4.Text = "";textBox5.Text = "";textBox6.Text = "";textBox7.Text = "";textBox8.Text = "";textBox9.Text = "";cboRole.Text = "";MessageBox.Show("成功添加此用户!");SelectStudent();}else{Exception ex = new Exception();MessageBox.Show(ex.Message.ToString());}}else{MessageBox.Show("用户名已存在,请选择其他用户名!", "结果提示", MessageBoxButtons.OK, rmation);textBox2.Text = "";}}}private void btnDel_Click(object sender, EventArgs e){if (textBox2.Text == ""){MessageBox.Show("请选择要删除的用户!");}else{DialogResult dt= MessageBox.Show("此操作不可撤销,确定要删除此用户信息吗?", " 提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);if (dt == DialogResult.Yes){string SQL = "DELETE FROM Reader where rSno='" + Sno + "'";if (clsGlobalVar.ExecSQL(SQL) == true){textBox2.Text = "";textBox3.Text = "";textBox1.Text = "";cboSex.Text = "";textBox4.Text = "";textBox5.Text = "";textBox6.Text = "";textBox7.Text = "";textBox8.Text = "";textBox9.Text = "";cboRole.Text = "";MessageBox.Show("删除此用户成功!");SelectStudent();}else{Exception ex = new Exception();MessageBox.Show(ex.Message.ToString());}}}}private void frmUpdateReader_Load(object sender, EventArgs e){SelectStudent();}}}8) 图书的查找及修改窗口using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using prjTSGL.ClassLib.DBAccess;namespace prjTSGL.TSGL_UI{。
图书馆书籍管理系统说明书(附代码)
大型数据库应用课程设计课程设计说明书图书馆书籍管理系统起止日期:2014 年12 月 1 日至2014 年12 月7 日学生姓名肖魁班级计算机1102班学号11408100214成绩指导教师(签字)计算机与通信学院2012年12月7 日图书馆书籍管理系统一、课题的介绍和课题的任务图书馆书籍管理系统主要对图书馆中书籍进行管理,包括对书籍的添加,删除,修改,各种方式的查询等操作,用于管理员对图书馆书籍库的管理;采用Oracle作为数据库,应用了Java,Jsp,JavaScript,SQL等编程语言以及 Struts2,JDBC等等技术,另外系统采用B/S结构,MVC的设计模式进行设计,在数据库方面,多处应用了存储过程和触发器;二、课程设计的要求1、书籍的添加:通过触发器和索引,使图书的编号按照自动增长的方式进行添加,其他字段还有:书籍名称,作者,出版社,页数,藏书地址等;并且通过定义触发器,使每增加一条图书信息,在图书状态表中给其增加对应的图书状态信息;2、书籍的删除:通过存储过程来实现,如果该书的状态为已借出,就不能删除书籍,并发出提示信息;书籍的删除,通过定义before触发器,假如该书籍能够删除,就在其删除之前,删掉该书籍的状态信息;3、书籍的修改:修改除了书籍主键外的其他信息;4、书籍的查询:可根据图书的索引号进行精确查询,可以根据图书的书名,作者,出版社,藏书地址等进行模糊查询,基于系统的需求,还提供系统中以所有字段作为关键字的模糊查询;5、用户身份验证,管理员通过用户登录,输入验证信息,若经过系统验证后,若正确,则进入图书管理主页,若出现错误,则跳到登录界面,并返回相应的友好的错误提示信息;三、系统的分析和系统中数据库的分析(ER图等)1、系统设计1.1.系统概要设计-流程图系统总体设计如图1.1所示实现用户的登录,管理员登录后对图书进行书籍的添加,书籍各种方式的查询,书籍的修改,书籍的删除;1.2.系统的详细设计1.2.1.用户的登录图书管理员通过输入管理员和密码进行验证,若验证正确,则进入系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计综合训练<图书馆管理系统>设计报告院系:材料科学与工程学院专业班级:材料成型一班*名:***学号: ***********指导老师:肖老师一、程序功能简介图书排序功能1)按图书编号排序可以按图书编号的大小排序,显示到屏幕上。
(从小到大)2)按图书出版时间排序可以按图书出版时间的前后排序,显示到屏幕上。
(从近到远)3)按图书价格排序可以按图书价格的贵宜排序,显示到屏幕上。
(从便宜到贵)4)按图书书名排序可以按图书书名字符的大小排序,显示到屏幕上。
(从小到大)5)按图书作者名排序可以按图书作者名字符的大小排序,显示到屏幕上。
(从小到大)二、本人完成的主要工作图书排序功能(排序比较简单只要做出来一个,其他都和它雷同。
)三、设计方案1.设计分析;1)序功能简介:s2)各个功能流程图1、按图书编号排序2、按图书出版时间排序3、按图书价格排序4、按图书书名排序5、按图书作者名排序2. 操作方法简介; 1)主面板输入密码9进入系统。
输入排序的功能序号5是 输入y/n 进,输入n 的话返回到主菜单Y/n是(y)显示排序否(n )按Enter2)主菜单按4进入排序功能。
2)排序功能目录3)选择功能(比如3)按价格的大小排序3.实验结果(包括输入数据和输出结果)四、设计体会在期末课程设计中,我们所选择的是设计一个图书管理系统,这对我们来说是一次尝试与创新的过程,也可以说是一个挑战的过程,毕竟以前没有作过,缺少经验。
现在利用自己学到的知识设计并制作一个图书管理系统,这本身就是一个知识转化为生产力的过程,所以大家都很兴奋,不同程度的投入了很高的热情与努力。
在具体的设计与实施中,我们看到并感受到了一个管理系统从无到有的过程,对具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。
在设计中我们基本能按照规范的方法和步骤进行,首先对现有的系统进行调查,并查阅有关资料,最后确定设计方案,然后设计并制作,实施过程中我们深刻的认识到认真执行管理系统软件标准的重要性,我们由于对管理系统软件相关的标准和规范不太了解,缺少行为操作准则,所以在设计中手法比较生硬,主与次也没能很好把握住,这些方面通过这次我们都要加强了解。
在这次课程设计中,我们被分配以小组为单位去完成图书管理系统的设计与制作,所以小组内的分工和相互协调很重要,大家可以在分工中扬长避短,个及所长,这样可以很好的提高大家的积极性,和合作意识,并有效的缩短开发时间。
在其中我掌握了结构体的应用、链表的建立文件的操作、还有一个小的地方就是case'n'的应用。
五、参考资料C/c++语言程序设计教程——从模块化到面向对象六、附录1.程序中主要变量、自定义函数的功能说明void paixu(struct book *head); //对图书进行排序void num_paixu(struct book *head); //按图书编号排序void time_paixu(struct book *head); //按图书出版时间排序void price_paixu(struct book *head); //按图书价格排序void bname_paixu(struct book *head); //按图书名排序void wname_paixu(struct book *head); //按作者名排序While()循环提供可连续的选择操作Switch()分支选择进行的操作。
system("cls"); 清空输入缓冲区,通常是为了确保不影响后面的数据读取。
输入0即可返回或停止输入。
主要数据int num; 编号;char bname[50]; 书名;char wname[20]; 作者名;char press[50]; 出版社;char sort[50]; 图书类别;int time; 出版时间;float price; 图书价格;2.源程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>struct book{int num;char bname[50];char wname[20];char press[50];char sort[50];int time;float price;struct book *next;};struct book *creatbook(); //创建链表struct book *addbook(struct book *head); //添加图书int yanzheng(struct book *head,int m); //验证新添加的图书编码是否已存在void deletebook(struct book *head); //删除图书void fprint(struct book *head); //将链表写入文件struct book *load(); //从文件中读取信息并建成链表void print_book(struct book *head); //将链表信息输出void chaxun(struct book *head); //查询图书信息void num_chaxun(struct book *head); //按图书编号查询图书void wname_chaxun(struct book *head); //按作者名查询图书void sort_chaxun(struct book *head); //按类别查询图书void time_chaxun(struct book *head); //按出版时间查询图书void bname_chaxun(struct book *head); //按图书名查询图书void xiugai(struct book *head); //修改图书信息void paixu(struct book *head); //对图书进行排序void num_paixu(struct book *head); //按图书编号排序void time_paixu(struct book *head); //按图书出版时间排序void price_paixu(struct book *head); //按图书价格排序void bname_paixu(struct book *head); //按图书名排序void wname_paixu(struct book *head); //按作者名排序int main(){int choice,n,x,y=1,c,c1=1234;char a,d,b[10],b1[10]="yjk";struct book *head=NULL;while(y){system("cls");printf("\n\n\n\n\n\n\n");printf(" ********** 欢迎光临**********\n\n");printf(" ********************** 图书信息管理系统************************\n\n\n");printf("\n\n");printf(" ============1-用户登录===========\n");printf(" ============0-退出系统===========\n");printf(" 请输入您的选择:");scanf("%d",&n);printf("\n");getchar();switch(n){case 0:y=0;break;case 1:printf(" 请输入您的用户名:");gets(b);printf("\n");printf(" 请输入您的密码:");scanf("%d",&c);printf("\n");if(c>=0&&c<=8){printf(" 验证失败,请重新输入!\n");scanf("%c",&d);getchar();system("cls");}else{printf(" 验证通过!请按Enter键进入!\n");scanf("%c",&d);getchar();x=1;while(x){system("cls");printf(" ------------------\n");printf(" *图书信息管理系统*\n");printf(" ------------------\n\n");printf("**********************************************\n\n");printf("**********************************************\n\n");printf(" || 1-添加图书2-删除图书||\n\n");printf(" || 3-图书列表4-图书排序||\n\n");printf(" || 5-查询图书6-修改图书||\n\n");printf(" || 7-录入数据0-退出系统||\n\n");printf("**********************************************\n\n");printf("**********************************************\n\n");printf("请输入所选择的序号:");scanf("%d",&choice);getchar();system("cls");switch(choice){case 0:x=0;break;case 1:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{head=addbook(head);printf("添加成功!\n");printf("是否将新信息保存到文件?(y/n)\n");scanf("%c",&a);getchar();switch(a){case 'n':break;case 'y':fprint(head);printf("保存成功!\n");getchar();break;}break;}case 2:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{deletebook(head);getchar();break;}break;case 3:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{print_book(head);getchar();break;}case 4:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{paixu(head);getchar();}break;case 5:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{chaxun(head);getchar();}break;case 6:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{xiugai(head);getchar();break;}break;case 7:printf("注意:输入图书编码为0时结束!\n");head=creatbook();printf("是否将输入的信息保存到文件以覆盖文件中已存在的信息?(y/n)\n");getchar();scanf("%c",&a);getchar();switch(a){case 'n':break;case 'y':fprint(head);printf("保存成功!\n");getchar();break;}break;default:printf("您的输入有误,请重新输入!\n");getchar();break;}}}break;default:printf(" 您的输入有误! 请重新输入!\n");getchar();break;}}}//录入数据并形成链表struct book *creatbook(){struct book *head,*tail,*p;int num,time,n;char bname[50],wname[20],press[50],sort[50];float price;int size=sizeof(struct book);head=tail=NULL;printf("请输入图书编号:");scanf("%d",&num);printf("请输入图书名:");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();while(1){p=(struct book *)malloc(size);p->num=num;strcpy(p->bname,bname);strcpy(p->wname,wname);strcpy(p->press,press);strcpy(p->sort,sort);p->time=time;p->price=price;p->next=NULL;if(head==NULL)head=p;elsetail->next=p;tail=p;do{printf("请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);if(n==0)break;elseprintf("您输入的编号已存在,请重新输入!\n");}while(1);if(num==0)break;else{printf("请输入图书名:");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();}}return head;}//插入结点,并且插入后仍按一定顺序struct book *addbook(struct book *head){struct book *ptr,*p1,*p2,*p;char bname[50],wname[20],press[50],sort[50];int size=sizeof(struct book);int num,time,n=1;float price;do{printf("请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);if(n==0)break;elseprintf("您输入的编号已存在,请重新输入!\n"); }while(1);printf("请输入图书名:");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();p=(struct book *)malloc(size);p->num=num;strcpy(p->bname,bname);strcpy(p->wname,wname);strcpy(p->press,press);strcpy(p->sort,sort);p->time=time;p->price=price;p2=head;ptr=p;while((ptr->num>p2->num)&&(p2->next!=NULL)){ p1=p2;p2=p2->next;}if(ptr->num<=p2->num){if(head==p2)head=ptr;else{p1->next=ptr;p->next=p2;}}else{p2->next=ptr;p->next=NULL;}return head;}//验证添加的图书编号是否已存在int yanzheng(struct book *head,int m){struct book *p;p=head;while(p!=NULL){if(p->num==m)break;p=p->next;}if(p==NULL)return 0;elsereturn 1;}//将新链表写入文件中void fprint(struct book *head){FILE *fp;char ch='1';struct book *p1;if((fp=fopen("f1.txt","w"))==NULL){printf("File open error!\n");exit(0);}fputc(ch,fp);for(p1=head;p1;p1=p1->next){fprintf(fp,"%d %s %s %s %s %d %f\n",p1->num,p1->bname,p1->wname,p1->press,p1->sort,p1->time,p1->price);}fclose(fp);}//从文件中读取图书信息struct book *load(){FILE *fp;char ch;struct book *head,*tail,*p1;head=tail=NULL;if((fp=fopen("f1.txt","r"))==NULL){printf("File open error!\n");exit(0);}ch=fgetc(fp);if(ch=='1'){while(!feof(fp)){p1=(struct book *)malloc(sizeof(struct book));fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1->time,&p 1->price);if(head==NULL)head=p1;elsetail->next=p1;tail=p1;}tail->next=NULL;fclose(fp);return head;}elsereturn NULL;}//将整个链表的信息输出void print_book(struct book *head){struct book *ptr;if(head==NULL){printf("\n没有信息!\n");return;}printf(" 图书信息列表如下\n");printf("==========================================================\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");for(ptr=head;ptr;ptr=ptr->next)printf(" %d %s %s %s %s %d %.2f\ n",ptr->num,ptr->bname,ptr->wname,ptr->press,ptr->sort,ptr->time,ptr->price);printf("==========================================================\n");}//删除图书信息void deletebook(struct book *head){int a;char b,ch='1';struct book *p1,*p2;FILE *fp;printf("请输入要删除的图书编号:");scanf("%d",&a);p1=head;if(p1->num==a&&p1->next==NULL){ //对于文件中只有一组数据printf("是否清空文件!(y/n)\n");getchar();scanf("%c",&b);getchar();switch(b){case 'n':break;case 'y':if((fp=fopen("f1.txt","w"))==NULL){printf("File open error!\n");exit(0);}fclose(fp);printf("文件已清空!\n");}}else{while(p1->num!=a&&p1->next!=NULL){p2=p1;p1=p1->next;}if(p1->next==NULL){if(p1->num==a){p2->next=NULL;printf("是否确定从文件中彻底删除该图书?(y/n)\n");getchar();scanf("%c",&b);switch(b){case 'n':break;case 'y':fprint(head);printf("删除成功!\n");getchar();break;}}else{printf("没有找到要删除的数据!\n");getchar();}}else if(p1==head){head=p1->next;printf("是否确定从文件中彻底删除该图书?(y/n)\n");getchar();scanf("%c",&b);switch(b){case 'n':break;case 'y':fprint(head);printf("删除成功!\n");getchar();break;}}else{p2->next=p1->next;printf("是否确定从文件中彻底删除该图书?(y/n)\n");getchar();scanf("%c",&b);switch(b){case 'n':break;case 'y':fprint(head);printf("删除成功!\n");getchar();break;}}}}//图书查询void chaxun(struct book *head){int a;printf("==========================================================\n");printf(" ** 1-按图书编号查询2-按图书名查询**\n");printf(" ** 3-按图书类别查询4-按作者名查询**\n");printf(" ** 5-按出版时间查询0-退出查询**\n");printf("==========================================================\n");printf("请输入所选择的编号:");scanf("%d",&a);getchar();switch(a){case 0:break;case 1:num_chaxun(head);break;case 2:bname_chaxun(head);break;case 3:sort_chaxun(head);break;case 4:wname_chaxun(head);break;case 5:time_chaxun(head);break;default:printf("您的输入有误!\n");break;}}//按编号查询图书信息void num_chaxun(struct book *head){int a;struct book *p;printf("请选择您要查询的图书编号:");scanf("%d",&a);getchar();p=head;while(p!=NULL){if(p->num==a)break;p=p->next;}if(p==NULL){printf("没有找到该编号的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("=========================================================================\n") ;printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);printf("=========================================================================\n") ;}}//按图书名查询图书信息void bname_chaxun(struct book *head){char a[50];int flag=0;struct book *p;printf("请选择您要查询的图书名:");gets(a);p=head;while(p!=NULL){if(strcmp(p->bname,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("=========================================================================\n") ;printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");while(p!=NULL){if(strcmp(p->bname,a)==0){printf("** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);}p=p->next;}printf("=========================================================================\n") ;}}//按作者名查询图书信息void wname_chaxun(struct book *head){char a[50];int flag=0;struct book *p;printf("请选择您要查询的图书作者名:");gets(a);p=head;while(p!=NULL){if(strcmp(p->wname,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("=========================================================================\n") ;printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");while(p!=NULL){if(strcmp(p->wname,a)==0){printf("** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("=========================================================================\n") ;}}//按图书类别查询图书信息void sort_chaxun(struct book *head){char a[50];int flag=0;struct book *p;printf("请选择您要查询的图书类别:");gets(a);p=head;while(p!=NULL){if(strcmp(p->sort,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("=========================================================================\n") ;printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");while(p!=NULL){if(strcmp(p->sort,a)==0){printf("** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("=========================================================================\n") ;}}//按图书出版时间查询图书信息void time_chaxun(struct book *head){int a,flag=0;struct book *p;printf("请选择您要查询的图书出版时间:");scanf("%d",&a);getchar();p=head;while(p!=NULL){if(p->time==a){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("=========================================================================\n") ;printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");while(p!=NULL){if(p->time==a){printf("** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("=========================================================================\n") ;}}//修改图书信息void xiugai(struct book *head){int a,b;char c;struct book *p;printf("请输入要修改的图书编号:");scanf("%d",&a);p=head;while(p!=NULL){if(p->num==a)break;p=p->next;}if(p==NULL){printf("没有找到该编号的图书!\n");getchar();}else{printf("============================================================\n");printf(" ** 1-编号2-图书名3-作者名**\n");printf(" ** 4-出版社5-类别6-出版时间**\n");printf(" ** 7-价格8-修改全部0-放弃修改**\n");printf("============================================================\n");printf("请选择你要修改的信息编号:");scanf("%d",&b);getchar();switch(b){case 1:printf("请输入新编号:");scanf("%d",&p->num);printf("修改成功!\n");getchar();break;case 2:printf("请输入新图书名:");gets(p->bname);printf("修改成功!\n");break;case 3:printf("请输入新作者名:");gets(p->wname);printf("修改成功!\n");break;case 4:printf("请输入新出版社:");gets(p->press);printf("修改成功!\n");break;case 5:printf("请输入新类别:");gets(p->sort);printf("修改成功!\n");break;case 6:printf("请输入新出版时间:");scanf("%d",&p->time);printf("修改成功!\n");getchar();break;case 7:printf("请输入新价格:");scanf("%f",&p->price);printf("修改成功!\n");getchar();break;case 8:printf("请输入新图书编号:");scanf("%d",&p->num);printf("请输入新图书名:");scanf("%s",p->bname);getchar();printf("请输入新作者名:");scanf("%s",p->wname);getchar();printf("请输入新出版社:");scanf("%s",p->press);getchar();printf("请输入新类别:");scanf("%s",p->sort);getchar();printf("请输入新出版时间:");scanf("%d",&p->time);getchar();printf("请输入新价格:");scanf("%f",&p->price);getchar();printf("修改成功!\n");getchar();break;case 0:break;default :printf("您的输入有误!\n");break;}printf("是否将修改后的信息保存到文件中?(y/n)\n");scanf("%c",&c);getchar();switch(c){case 'n':break;case 'y':fprint(head);printf("保存成功!\n");getchar();break;}}}//图书排序void paixu(struct book *head){int a;//定义一个整型变量(用于排序功能选择)printf("================================================================\n");printf(" ** 1-按图书编号排序2-按出版时间排序**\n");printf(" ** 3-按图书价格排序4-按图书名排序**\n");printf(" ** 5-按作者名排序0-取消排序操作**\n");printf("================================================================\n");printf("请输入您选择的编号:");scanf("%d",&a); //输入所选功能的序号getchar();//吃掉回车switch(a)//根据以上所选数据选择功能{case 0:break;//退出系统case 1:num_paixu(head);break;case 2:time_paixu(head);break;case 3:price_paixu(head);break;case 4:bname_paixu(head);break;case 5:wname_paixu(head);break;//调用各个函数以及返回指针headdefault:printf("您的输入有误!\n");break;}}//按图书编号排序void num_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;//定义一个结构体指针数组用于存入图书信息(上线为1000);定义结构体指针p、temp与p1,指针p指向头,p1指针往下移动,temp为交换式的中间变量int i,k,index,n=0;//定义整型变量i与index为数组的下标,初始化n为0(n的作用是记录所录入信息的个数)char b;//定义一个字符用于输入y/n,判断是否保存p1=head;for(p=head;p;p=p->next)n++;//指针循环往下移,记录录入信息的个数for(i=0;i<n;i++){a[i]=p1;//将图书信息保存在数组里面p1=p1->next;//指针往下移}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->num<a[index]->num)index=i;//下面的数组下标由i代替}temp=a[index];a[index]=a[k];a[k]=temp;}//运用选择排序进行编号排序printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);//输入y/ngetchar();//吃掉回车switch(b){case 'n':break;case 'y':printf("================================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("================================================================\n");break;//循环输出default:printf("您的输入有误!\n");break;}}//按出版时间排序void time_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->time<a[index]->time)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的输入有误!\n");break;}}//按图书价格排序void price_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->price<a[index]->price)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的输入有误!\n");break;}}//按图书名排序void bname_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(strcmp(a[index]->bname,a[i]->bname)>0)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的输入有误!\n");break;}}//按作者名排序void wname_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(strcmp(a[index]->wname,a[i]->wname)>0)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的输入有误!\n");break;}}。