小型图书管理系统
小型图书馆管理系统OOA OOD

小型图书馆管理系统(OOA+OOD)组长:×××学号:00008196 贡献度:40%成员:×××学号:00008184 贡献度:30%成员:×××学号:00008183 贡献度:30%内容导读:●问题叙述●对象层●特征层●结构层●交互图●数据库设计●系统状态迁移图●类定义一.问题叙述:本系统的名称为“小型图书馆管理系统”,它具有以下功能:1.借书,还书;2.增书,删书;3.按作者名或专业领域检索图书;4.查找被某为读者借走的一批书;5.查找最近借走某书的读者;6.查找某管理员的操作记录.备注:①管理员分四类:借书管理员,还书管理员,采编管理员(增书,删书),馆长助理;②读者有最大借书量;③图书未归还前,不能对它进行借书操作.二. 对象层:考察系统的问题域和系统责任,发现三类对象:管理员,读者,图书.对象层如下:三. 特征层:四. 结构层:1.一般_特殊结构:管理员和读者具有较多的相似属性,应建立他们的一般类“人员”.2.整体_部分结构:(略).3.实例连接:读者和图书之间存在“借书”关系,不妨在图书类中设立实例连接属性“借书读者”;管理员和读者,图书之间存在一个三元关系,不妨在管理员类中设立实例连接属性“交割读者”,“经手图书”.4.消息连接: 管理员类向读者类,图书类发送消息;图书类向读者类发送消息.结构层如下:五. 交互图:1.借书管理员.借书:输入图书条码,读者编号;查询读者;若无此读者,则提示且退出;显示读者信息;显示借书情况;若读者的借书量已经达到极限,则提示且退出;若无此图书,则提示且退出;若图书已经被借出,则提示且退出;记录借书,操作日志;若无异常,则重显借书情况;若操作成功,则与读者交割图书;2.还书管理员.还书:输入图书条码;若无此图书,则提示且退出;若图书未被借出,则提示且退出;显示读者信息;显示读者借书情况;还书(修改借书情况,记录日志);若无异常,则重新显示借书情况;若操作失败,则提醒读者;3.采编管理员.增书:输入待增图书信息;若输入不合法,则提示且返回;否则进行必要的数据转换(Date,int......);增书,登记日志;上述事务若有异常,则提示且返回;标示图书条码于图书;4.采编管理员.删书:输入图书条码;若无此书,则提示且退出;若图书被借,则提示且退出;显示图书信息;若不想删除此书,则退出;删书,登记日志;若上述事务有异常,则滚回事务且退出;5.馆长助理. 查找某管理员的操作记录:输入管理员编号;如果没有该管理员,提示并退出;否则输出该管理员的信息;输出该管理员的操作记录;6.馆长助理. 查找最近借走某书的读者:输入图书条码;若无此图书,则提示且返回;否则显示图书信息;图书未被借,则提示且返回;否则显示读者信息;7.读者. 按作者名或专业领域检索图书:输入主题词和查询值;显示相关图书信息;8.读者. 查找自己借走的一批书:输入读者编号,姓名,密码;若无此读者,则提示且退出;显示借书情况;六. 数据库设计:1.E_R图:2.数据表:(1).admin_type(类型号,类型名);int,varchar(16);(2).admin(编号,姓名,类型号,住址,电话,密码);varchar(10),varchar(20),int,varchar(40),varchar(20),varchar(10);(3).reader_type(类型号,类型名,最大借书量);int,varchar(16),int;(4).reader(编号,姓名,类型号,工作单位,住址,电话,密码);varchar(10),varchar(20),int,varchar(40),varchar(40),varchar(20),varchar(10);(5).book_field(专业领域号,专业领域名);varchar(4),varchar(40);(6).book(条码,专业领域号,分类号后部,名称,作者,出版公司,出版时间,印刷公司,印刷时间,价格);varchar(16),varchar(4),varchar(16),varchar(50),varchar(20),varchar(30),smalltime,varchar(30),smalltime,smallmoney;(7).log_type(操作类型号,操作类型名);int,varchar(16);(8).log(管理员编号,图书条码,读者编号,操作类型号,操作时间);varchar(10),varchar(16),varchar(10),int,smalltime;(9).count(表序号,记录数); //增书时,方便图书条码的分配varchar(16),longint;3.关系图:(Access)七.系统状态迁移图:八. 类定义: (暂时只定义公共服务)1. Person:class Person{protected:CString* pNum;CString* pName;CString* pType;CString* pAddr;CString* pTele;CString* pPwd;protected:Person();virtual ~Person();public:CString GetNum(){return *pNum;};CString GetName(){return *pName;};CString GetType(){return *pType;};CString GetAddr(){return *pAddr;};CString GetTele(){return *pTele;};CString GetPwd(){return *pPwd;};};2.Admin:class Admin: public Person{public:Admin(CString*,CString*,CString*,CString*,CString*);Admin(CString*,CString*,CString*,CString*);Admin(CString*,Reader*,Book*);virtual ~Admin();private:Reader *pReader;Book *pBook;public:void Borrow(…);//参数待定void Return(…);void Add(…);void Del(…);void GetLog(…);};3.Reader:class Reader:public Person{private:CString* pWorkplace;public:Reader(CString*,CString*,CString*,CString*,CString*,CString*,CString*);Reader(CString*,CString*,CString*,CString*,CString*,CString*);Reader(CString*,CString*,CString*);Reader(CString*); //add delvirtual ~Reader();public:void GetBorrowing();};4.Book:class Book{private:CString* pNum;CString* pField;CString* pType;CString* pName;CString* pAuthor;CString* pPub;CString* pPubtime;CString* pPlant;CString* pPlanttime;CString* pPrice;Reader* pReader;public:Book(CString*,CString*,CString*,CString*,CString*,CString*,CString*,CString*,CString *,CString*);Book(CString*,CString*,CString*,CString*,CString*,CString*,CString*,CString*,CString *,Reader*);Book(CString*,Reader*);Book(CString*,CString*);//pField,pAuthorBook(CString*);//pNumvirtual ~Book();public:CString GetNum(){return *pNum;};CString GetField(){return *pField;};CString GetType(){return *pType;};CString GetName(){return *pName;};CString GetAuthor(){return *pAuthor;};CString GetPub(){return *pPub;};CString GetPubtime(){return *pPubtime;};CString GetPlant(){return *pPlant;};CString GetPlanttime(){return *pPlanttime;};CString GetPrice(){return *pPrice;};void GetBook(…);//Serve searchBOOL GetReader(…);};__END.。
小型图书馆图书信息管理系统软件工程实验

目录1项目开发计划书 (2)2软件需求规格说明书 (7)3设计规格说明书 (14)4 源程序清单 (20)5 测试报告 (35)6 用户手册 (39)一、项目开发计划书完成人:1.引言(Introduction)本需求的编写是为了实现读者借还书的信息化,并且利用Internet网络实现读者与图书馆之间的互动和图书馆的人性化管理,提高图书的利用率、减少相关人员的工作量,使学校的图书管理工作真正做到科学、合理的规划,系统、高效的实施。
1.1项目概述(Project Summary)本次作业设计题目:“小型图书馆图书信息管理系统”主要目的是利用数据库软件编制一个管理软件,用以实现图书、读者以及户(学生)借书、查询图书信息,向流通组预约图书、缺书登记,借书数量、期限限制。
还书时流通组根据图书是否超期、损坏等作相应处理。
采编部根据缺书登记进行采购以及将旧书淘汰、注日常工作等多项管理。
同时对整个系统的分析、设计过程给出一个完整论证。
具体包括借还图书。
总之,系统的规模较小,只涉及图书、读者、借还书的管理,相关的部门有采编部、流通部、办公室,只是完成简单规模的图书管理操作。
1.2 术语定义(Terms Glossary)图书管理系统:是一个由人、计算机等组成的能进行管理信息的收集、传递、加工、保存、维护和使用的系统。
采编部:是一个负责图书馆中外文图书资料入库前的采访、订购、验收、登记、典藏、调拨,以及书目数据的审校并上传至中央数据库等工作的部门。
需求分析:在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。
系统设计:设计数据库的结构以及设计模块的控制流程,明确软件系统"如何做"。
需求规格说明书:经可行性研究后,对要求解的问题重新进行描述,使之更能准确地反映实际业务流程,导出并评价可供选择的解法,推荐行动方针。
系统设计说明书:说明对程序系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。
简单的图书管理系统文档

图书借阅
根据借阅规则案
问题1
无法登录系统。
解决方案
检查账号和密码是否正确,确认网络连接正常 ,重新登录系统。
问题2
图书信息录入错误。
解决方案
进入图书管理模块,修改或删除错误信息,重新录 入正确的图书信息。
问题3
借阅功能无法使用。
解决方案
检查借阅规则是否设置正确,确认图书状态是否符合借 阅条件,联系管理员处理。
02
CATALOGUE
数据库设计
数据库概念设计
确定系统实体
根据图书管理系统的需求,确定 系统中的实体,如图书、读者、
管理员等。
定义实体属性
为每个实体定义必要的属性,如图 书的ISBN、书名、作者等。
建立实体关系
确定实体之间的关联关系,如读者 借阅图书、管理员管理图书等。
数据库逻辑设计
选择合适的数据模型
THANKS
感谢观看
系统在模拟环境下表现出良好 的性能,响应速度快,吞吐量 大。
易用性测试结果
系统用户界面友好,操作便捷 ,对用户的支持程度较高。
功能测试结果
系统各项功能均已实现,且运 行正常,满足用户需求。
安全性测试结果
系统的安全性措施有效,未发 现安全漏洞。
综合评估
系统在功能、性能、安全性和 易用性方面均表现良好,符合 用户需求,可以投入使用。
图书查询和检索
支持按照书名、作者、出版社等 关键词进行图书查询和检索,并 提供模糊查询和分类查询等多种 方式。
图书借阅和归还
实现图书的借阅、归还和续借功 能,并记录借阅历史和借阅状态 等信息。
用户登录和权限管理
实现用户的注册、登录和权限管 理功能,确保系统的安全性和稳 定性。
小型图书管理系统设计报告

陕西师范大学远程教育学院题目: java小型图书管理系统设计学习中心:陕西省咸阳教育科技培训学院学号:层次:高中起点专科姓名:党晨娜1.前言本系统是小型图书管理系统,专为个人设计。
本系统启动后需要登陆,然后进入主界在这个界面我们可以选择所需要的功能模块来完成所要执行的功能。
系统共有4个功能模块:图书入库、图书查询、图书删除、图书概览、修改密码。
支持一系列关于图书管理方面的简单操作,诸如查询、删除、添加、修改密码等。
2.系统流程图说明:首先是输入判断,相当于在登陆模块,要求用户输入用户名和密码;然后判断,如果判断失败退出系统,否则进入图书管理系统的主界面。
进入主界面后,用户要选择所需执行的功能,即通过鼠标点击相应项,来完成所需操作。
3.数据库设计在图书管理系统中,共设计2张表。
本系统使用Access来创建数据表。
数据库的名称为Book.mdb。
1.表book字段名称数据类型图书名文本图书号文本(主键)单价文本作者文本出版社文本入库时间文本2.表user字段名称数据类型用户名文本(主键)密码文本4.界面设计系统源码1登陆界面:程序名Login.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;class Login extends JFrame implements ActionListener { Container cp=null;JFrame f=null;JButton j1,j2;JTextField t1;JPasswordField t2;JLabel jlable1,jlable2;Color c;JPanel jp1,jp2;Login(){f=new JFrame("小型图书管理系统");j1=new JButton("确定");j2=new JButton("取消");cp=f.getContentPane();jlable1=new JLabel(" 输入用户名");jlable2=new JLabel(" 用户密码");jp1=new JPanel();jp2=new JPanel();t1=new JTextField(18);t2=new JPasswordField(18);jp1.add(jlable1);jp1.add(t1);jp1.add(jlable2);jp1.add(t2);JLabel JL=new JLabel("<html><font color=#CC00FF size='7'><i>欢迎登陆</i></font>",SwingConstants.CENTER);cp.add(JL,"North");jp2.add(j1);jp2.add(j2);cp.add(jp1,"Center");cp.add("South",jp2);jp1.setBackground(new Color(255,153,255));Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*///setSize(x,y); /*让系统窗口平铺整个显示器窗口*/f.setSize(300,300);int xcenter=(x-300)/2;int ycenter=(y-300)/2;f.setLocation(xcenter,ycenter);/*显示在窗口中央*/f.setVisible(true);//-----------------------------------------------------j1.addActionListener(this);//注册事件监听器j2.addActionListener(this);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}public void confirm()//验证用户和密码是否存在{try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件Connection con=DriverManager.getConnection(url);Statement sql=con.createStatement();String uname=t1.getText().trim();String Mima=t2.getText().trim();String queryMima="select * from user where 用户名='"+uname+"' and 密码='"+Mima+"'";ResultSet rs=sql.executeQuery(queryMima);if(rs.next()){new Book(uname);f.hide();con.close();}else{JOptionPane.showMessageDialog(null,"该用户不存在","提示!",JOptionPane.YES_NO_OPTION);}t1.setText("");t2.setText("");} catch(SQLException g){System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if(cmd.equals("确定")){confirm();}else if(cmd.equals("取消")){f.dispose();}}public static void main(String []arg){Login a=new Login();}}2图书概览:程序名BookBrower.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;class BookBrower implements ActionListener{JFrame f;Container cp;JPanel jpS,jpanelWest;JButton jbt1,jbt2;//按钮,查询、取消、修改JLabel label,L; //标签//定义文本框JTable table;//用来接收数据库中返回的信息Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"}; Object ar[][] =new Object[80][6];String sno;String count="xx";BookBrower(){f=new JFrame();cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框jpS=new JPanel();jpanelWest=new JPanel();//------------------------------------------------jbt1=new JButton("确定");jbt2=new JButton("返回");//------------------------------------------------label=new JLabel("<html><font color=#CC00FF size='4'>图书概览</font>",SwingConstants.CENTER);label.setForeground(Color.blue);L=new JLabel("书库现在共有图书"+count+"本");//------------------------------------------------table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名JScrollPane scrollpane = new JScrollPane(table);//------------------------------------------------//布局,添加控件jpS.add(jbt1);jpS.add(jbt2);JPanel jpanel=new JPanel();jpanel.add(label);JPanel pp4=new JPanel();JPanel jpE=new JPanel();cp.add(jpanel,"North");JPanel jp=new JPanel();//jp.add(scrollpane);JPanel p=new JPanel();//用来放两个表p.setLayout(new BorderLayout());p.add(L,"North");p.add(scrollpane);cp.add(pp4,"West");cp.add(p,"Center");cp.add(jpS,"South");cp.add(jpE,"East");//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*/f.setSize(400,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f.setLocation(xcenter,ycenter);/*显示在窗口中央*/f.setVisible(true);//-------------------------------------------------jbt1.addActionListener(this);//注册监听器jbt2.addActionListener(this);/* f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});*/}//------------------------------------------------int i=0;public void showRecord(){while(i>=0){ar[i][0]="";ar[i][1]="";ar[i][2]="";ar[i][3]="";ar[i][4]="";ar[i][5]="";i--;}i=0;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件Connection con=DriverManager.getConnection(url);String s="select * from book ";Statement sql=con.createStatement();ResultSet rs=sql.executeQuery(s);while(rs.next()){String bname=rs.getString(1);String bno=rs.getString(2);String price=rs.getString(3);String writer=rs.getString(4);String publish=rs.getString(5);String indate=rs.getString(6);ar[i][0]=bname;ar[i][1]=bno;ar[i][2]=price;ar[i][3]=writer;ar[i][4]=publish;ar[i][5]=indate;i++;}count=""+i+"";L.setText("书库现在共有图书"+count+"本");f.repaint();con.close();}catch(SQLException g){System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if(cmd.equals("确定")){f.hide();}if(cmd.equals("返回"))f.hide();}public static void main(String []arg){BookBrower a=new BookBrower();a.showRecord();}}3图书查询:程序名QueryBook.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;class QueryBook implements ActionListener{JFrame f3;Container cp;JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;JButton jbt1,jbt2;//按钮,确定、取消JLabel label; //标签:请输入图书号JTextField tf,tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框JLabel label1,label2,label3,label4;QueryBook(){f3=new JFrame();cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jpanelWest=new JPanel();jp=new JPanel();//------------------------------------------------jbt1=new JButton("确定");jbt2=new JButton("取消");//------------------------------------------------label=new JLabel("<html><font color=#CC00FF size='4'>请输入图书号:</font>",SwingConstants.CENTER);label.setForeground(Color.blue);tf=new JTextField(20);//------------------------------------------------tf1=new JTextField(20);tf2=new JTextField(20);tf3=new JTextField(20);tf4=new JTextField(20);tf5=new JTextField(20);tf6=new JTextField(20);//------------------------------------------------//布局,添加控件JPanel jpanel=new JPanel();jpanel.add(label);jpanel.add(tf);JPanel pp4=new JPanel();JPanel jpane4=new JPanel();cp.add(jpanel,"North");JPanel pp2=new JPanel(new GridLayout(6,1));JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(6,1));pp4.add(new JLabel("图书名",SwingConstants.CENTER));pp2.add(tf1);pp4.add(new JLabel("图书号",SwingConstants.CENTER));pp2.add(tf2);pp4.add(new JLabel("单价",SwingConstants.CENTER));pp2.add(tf3);pp4.add(new JLabel("作者",SwingConstants.CENTER));pp2.add(tf4);pp4.add(new JLabel("出版社",SwingConstants.CENTER));pp2.add(tf5);pp4.add(new JLabel("入库时间",SwingConstants.CENTER));pp2.add(tf6);pp3.add(jbt1);pp3.add(jbt2);cp.add(pp4,"West");cp.add(pp2,"Center");cp.add(pp3,"South");cp.add(jpane4,"East");//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*/ f3.setSize(350,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f3.setLocation(xcenter,ycenter);/*显示在窗口中央*/f3.setVisible(true);//-------------------------------------------------jbt1.addActionListener(this);//注册监听器jbt2.addActionListener(this);/*f3.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});*/}//------------------------------------------------public void showRecord(){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件Connection con=DriverManager.getConnection(url);Statement sql;String ql=tf.getText().trim();String s="select * from book where 图书号 ='"+ql +"'";sql=con.createStatement();ResultSet rs=sql.executeQuery(s);if(rs.next()){String bname=rs.getString(1);String bno=rs.getString(2);String price=rs.getString(3);String writer=rs.getString(4);String publish=rs.getString(5);String indate=rs.getString(6);tf1.setText(bname);tf2.setText(bno);tf3.setText(price);tf4.setText(writer);tf5.setText(publish);tf6.setText(indate);}else{JOptionPane.showMessageDialog(null,"您输入的图书号不存在,请重新输入","输入错误", JOptionPane.YES_NO_OPTION);}con.close();}catch(SQLException g){System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}tf1.setEditable(false);tf2.setEditable(false);tf3.setEditable(false);tf4.setEditable(false);tf5.setEditable(false);tf6.setEditable(false);}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if(cmd.equals("确定")){showRecord();tf.setText("");}else if(cmd.equals("取消"))f3.hide();}public static void main(String []arg){QueryBook a=new QueryBook();}}4图书删除:程序名RemoveBook.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;class RemoveBook implements ActionListener{JFrame f;Container cp;JPanel jpS,jpanelWest;JButton jbt1,jbt2,jbt3;//按钮,查询、取消、修改JLabel label,L; //标签:请输入学号JTextField tf; //定义文本框JTable table;//用来接收数据库中返回的信息Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"}; Object ar[][] =new Object[80][6];String sno;String count="xx";RemoveBook(){f=new JFrame();cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框jpS=new JPanel();jpanelWest=new JPanel();//------------------------------------------------jbt1=new JButton("查询");jbt2=new JButton("取消");jbt3=new JButton("删除");//------------------------------------------------label=new JLabel("<html><font color=#CC00FF size='4'>请输入要删除的图书名:</font>",SwingConstants.CENTER);label.setForeground(Color.blue);L=new JLabel("该种图书共有"+count+"本");//------------------------------------------------table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名JScrollPane scrollpane = new JScrollPane(table);//------------------------------------------------tf=new JTextField(18);//------------------------------------------------//------------------------------------------------//布局,添加控件jpS.add(jbt1);jpS.add(jbt2);jpS.add(jbt3);JPanel jpanel=new JPanel();jpanel.add(label);jpanel.add(tf);JPanel pp4=new JPanel();JPanel jpE=new JPanel();cp.add(jpanel,"North");JPanel jp=new JPanel();//jp.add(scrollpane);JPanel p=new JPanel();//用来放两个表p.setLayout(new BorderLayout());p.add(L,"North");p.add(scrollpane);cp.add(pp4,"West");cp.add(p,"Center");cp.add(jpS,"South");cp.add(jpE,"East");//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*/f.setSize(400,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f.setLocation(xcenter,ycenter);/*显示在窗口中央*/f.setVisible(true);//-------------------------------------------------jbt1.addActionListener(this);//注册监听器jbt2.addActionListener(this);jbt3.addActionListener(this);/*f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});*/}//------------------------------------------------int i=0;public void showRecord(String ql){while(i>=0){ar[i][0]="";ar[i][1]="";ar[i][2]="";ar[i][3]="";ar[i][4]="";ar[i][5]="";i--;}i=0;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件Connection con=DriverManager.getConnection(url);Statement sql;String s="select * from book where 图书名 ='"+ql +"'";sql=con.createStatement();ResultSet rs=sql.executeQuery(s);while(rs.next()){String bname=rs.getString(1);String bno=rs.getString(2);String price=rs.getString(3);String writer=rs.getString(4);String publish=rs.getString(5);String indate=rs.getString(6);ar[i][0]=bname;ar[i][1]=bno;ar[i][2]=price;ar[i][3]=writer;ar[i][4]=publish;ar[i][5]=indate;i++;}count=""+i+"";L.setText("该种图书共有"+count+"本");f.repaint();con.close();System.out.println(ar[0][1]);}catch(SQLException g){System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}}public void deleteRecord(int index){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件Connection con=DriverManager.getConnection(url);Statement sql;String ql=(String)(ar[index][1]);String s="delete * from book where 图书号 ='"+ql +"'";sql=con.createStatement();int del=sql.executeUpdate(s);if(del==1){JOptionPane.showMessageDialog(null,"删除成功!","信息", JOptionPane.YES_NO_OPTION);}con.close();f.repaint();}catch(SQLException g){System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}}public void actionPerformed(ActionEvent e){String remember="";String ql="";String cmd=e.getActionCommand();if(cmd.equals("查询")){ql=tf.getText().trim();remember=ql;showRecord(ql);}if(cmd.equals("删除")){int index=table.getSelectedRow();if( index==-1)JOptionPane.showMessageDialog(null,"请选定要删除的表格行","输入错误", JOptionPane.YES_NO_OPTION);else{deleteRecord(index);//showRecord(remember);}}if(cmd.equals("取消"))f.hide();}public static void main(String []arg){RemoveBook a=new RemoveBook();}}5图书入库:程序名BookIn.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;import javax.swing.text.JTextComponent;//extends JFrameclass BookIn implements ActionListener{JFrame f3;Container cp;JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;JButton jbt1,jbt2;//按钮:确定、取消、JLabel label; //标签JTextField tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框JLabel label1,label2,label3,label4;String sno;BookIn(){f3=new JFrame();cp=f3.getContentPane(); // 初始化面板、按钮、标签、文本框jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jpanelWest=new JPanel();jp=new JPanel();//------------------------------------------------jbt1=new JButton("确定");jbt2=new JButton("取消");//------------------------------------------------label=new JLabel("<html><font color=#CC00FF size='4'>图书入库</font>",SwingConstants.CENTER);label.setForeground(Color.blue);//------------------------------------------------tf1=new JTextField(20);tf2=new JTextField(20);tf3=new JTextField(20);tf4=new JTextField(20);tf5=new JTextField(20);tf6=new JTextField(20);//------------------------------------------------//布局,添加控件jp1.add(jbt1);jp1.add(jbt2);sno=tf4.getText();jp1.add(new JLabel("您好"+sno+"欢迎登陆学生信息系统"));JPanel jpanel=new JPanel();jpanel.add(label);JPanel pp4=new JPanel();JPanel jpane4=new JPanel();cp.add(jpanel,"North");JPanel pp2=new JPanel(new GridLayout(6,1));JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(6,1));pp4.add(new JLabel("图书名",SwingConstants.CENTER));pp2.add(tf1);pp4.add(new JLabel("图书号",SwingConstants.CENTER));pp2.add(tf2);pp4.add(new JLabel("单价",SwingConstants.CENTER));pp2.add(tf3);pp4.add(new JLabel("作者",SwingConstants.CENTER));pp2.add(tf4);pp4.add(new JLabel("出版社",SwingConstants.CENTER));pp2.add(tf5);pp4.add(new JLabel("入库时间",SwingConstants.CENTER));pp2.add(tf6);pp3.add(jbt1);pp3.add(jbt2);cp.add(pp4,"West");cp.add(pp2,"Center");cp.add(pp3,"South");cp.add(jpane4,"East");//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*/ f3.setSize(350,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f3.setLocation(xcenter,ycenter);/*显示在窗口中央*/f3.setVisible(true);//-------------------------------------------------jbt1.addActionListener(this);//注册监听器jbt2.addActionListener(this);/*f3.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});*/}//------------------------------------------------public void insertRecord(){if(tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals("") ||tf4.getText().equals("")||tf5.getText().equals("")||tf6.getText().equals("")) {JOptionPane.showMessageDialog(f3,"请填写图书资料");return;}try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}try{String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件Connection con=DriverManager.getConnection(url);Statement sql;String s="insert into book values('"+tf1.getText()+"','"+tf2.getText()+"','"+tf3.getText()+"','"+tf4.getText()+"','"+tf5.getText()+"','"+tf6.getText()+" ');";//查询输入的图书号是否在数据库中存在String query="select * from book where 图书号='"+tf2.getText()+"'";sql=con.createStatement();ResultSet rs=sql.executeQuery(query);//返回查询结果集boolean moreRecords=rs.next();//判断结果集是否有数据if(moreRecords){JOptionPane.showMessageDialog(f3,"图书号已经被使用,请重新输入");con.close();tf2.setText("");return;}int insert=sql.executeUpdate(s);if(insert==1){JOptionPane.showMessageDialog(null,"图书信息录入成功!");tf1.setText("");tf2.setText("");tf3.setText("");tf4.setText("");tf5.setText("");tf6.setText("");}}catch(SQLException g){System.out.println("E Code"+g.getErrorCode());System.out.println("E M"+g.getMessage());}}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if(cmd.equals("确定")){insertRecord();}else if(cmd.equals("取消"))f3.hide();}public static void main(String []arg){BookIn a=new BookIn();}}6主界面:程序名Book.java/*本类为用户界面*/import .*;import java.sql.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import javax.swing.*;import javax.swing.border.*;import java.util.*;class Book extends JFrame implements ActionListener{JButton QueryScore=new JButton("图书查询");JButton QueryXuefen=new JButton("图书入库");JButton jiangfa=new JButton("图书删除");JButton xuanke=new JButton("图书概览");JButton gaiMima=new JButton("修改密码");JMenuBar mb = new JMenuBar();//菜单栏JPanel jp=new JPanel();//用来填放子模块Container cp=getContentPane();String username;Book(){}Book(String username){ername=username;mb.add(QueryScore);mb.add(QueryXuefen);mb.add(jiangfa);mb.add(xuanke);mb.add(gaiMima);cp.add(mb,"North");// 设置边框jp.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.blue, 2),null,TitledBorder.CENTER, TitledBorder.TOP));jp.setLayout(new BorderLayout());JLabel label1 = new JLabel(new ImageIcon("4.jpg"));jp.add(label1);/* JLabel JL=new JLabel("<html><font color=#CC00FF size='7'><i>欢迎登陆</i></font>",SwingConstants.CENTER);jp.add(JL,"North");*/JLabel label2 = new JLabel(new ImageIcon("2.jpg"));//jp.add(label2,"South");JScrollPane scrollpane=new JScrollPane(jp);cp.add(scrollpane);setTitle("欢迎登陆");Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width; /*取得显示器窗口的宽度*/int y=screen.height; /*取得显示器窗口的高度*/ //setSize(x,y); /*让系统窗口平铺整个显示器窗口*/setSize(600,600);int xcenter=(x-600)/2;int ycenter=(y-600)/2;setLocation(xcenter,ycenter);/*显示在窗口中央*/setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//注册临听器QueryScore.addActionListener(this);QueryXuefen.addActionListener(this);jiangfa.addActionListener(this);xuanke.addActionListener(this);gaiMima.addActionListener(this);}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if (cmd.equals("图书查询")){new QueryBook();}if (cmd.equals("图书入库")){new BookIn();}if (cmd.equals("图书删除")){new RemoveBook();}if (cmd.equals("图书概览")){new BookBrower().showRecord();}if (cmd.equals("修改密码")){new UpdateMima(username);}}public static void main(String[]args){new Book("");}}7.密码修改:程序名UpdateMima.javaimport .*;import java.sql.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import javax.swing.*;class UpdateMima extends JFrame implements ActionListener {JFrame f;Container cp;JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;JButton jbt1,jbt2;//按钮,确定、取消JLabel label; //标签:修改密码JTextField name;JPasswordField tf1,tf2,tf3; //定义文本框JLabel label1,label2,label3,label4;String sno;UpdateMima(){}UpdateMima(String username){sno=username;f=new JFrame();cp=f.getContentPane(); // 初始化jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jpanelWest=new JPanel();jp=new JPanel();//------------------------------------------------jbt1=new JButton("确定");jbt2=new JButton("取消");//------------------------------------------------label=new JLabel("<html><font color=#CC00FF size='4'>修改密码</font>",SwingConstants.CENTER);label.setForeground(Color.blue);label.setFont(new Font("BOLD",Font.BOLD,15));name=new JTextField(20);//name.setEditable(false);//------------------------------------------------tf1=new JPasswordField(20);tf2=new JPasswordField(20);tf3=new JPasswordField(20);//------------------------------------------------//布局,添加控件jp1.add(jbt1);jp1.add(jbt2);jp1.add(new JLabel("您好"+"xx"+"欢迎登陆学生信息系统"));JPanel jpanel=new JPanel();jpanel.add(label);JPanel pp4=new JPanel();JPanel jpane4=new JPanel();cp.add(jpanel,"North");JPanel pp2=new JPanel(new GridLayout(6,1));JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(6,1));pp4.add(new JLabel("用户名: ",SwingConstants.RIGHT));pp2.add(name);pp4.add(new JLabel("原密码: ",SwingConstants.RIGHT));pp2.add(tf1);pp4.add(new JLabel(" 新密码: ",SwingConstants.RIGHT));。
简易图书管理系统

简易图书管理系统1、引言1.1 目的1.2 范围1.3 定义、缩略词和缩写1.4 参考资料2、系统概述2.1 系统背景2.2 系统目标2.3 用户类别2.4 假设和约束3、功能需求3.1 用户登录3.1.1 用户名和密码验证3.1.2 忘记密码功能3.2 图书查询3.2.1 按书名查询3.2.2 按作者查询3.2.3 按分类查询3.3 图书借阅3.3.1 借书记录3.3.2 图书剩余数量更新 3.4 图书归还3.4.1 归还图书记录3.4.2 图书剩余数量更新 3.5 图书添加3.5.1 输入书籍信息3.5.2 图书信息存储3.6 图书删除3.6.1 选择要删除的书籍 3.6.2 删除图书信息3.7 用户管理3.7.1 添加用户3.7.2 删除用户3.7.3 修改用户权限 3.8系统管理3.8.1 数据备份3.8.2 系统设置4、非功能需求4.1 性能要求4.2 可用性要求4.3 安全要求4.4 可扩展性要求5、界面设计5.1 登录界面5.2 主界面5.3 图书查询界面5.4 图书借阅界面5.5 图书归还界面5.6 图书添加界面5.7 图书删除界面 5.8用户管理界面5.9系统管理界面6、数据库设计6.1 用户表设计6.2 图书表设计6.3 借阅记录表设计7、系统测试计划7.1 功能测试7.2 性能测试7.3 安全测试8、风险管理8.1 风险识别8.2 风险评估8.3 风险应对策略附件:1、数据库设计文件2、源代码文件3、用户手册法律名词及注释:- 用户登录:用户通过输入用户名和密码登录系统。
- 图书查询:用户可以根据书名、作者或分类等信息进行图书查询。
- 图书借阅:用户根据图书的可借阅状态进行借阅操作。
- 图书归还:用户将已借阅的图书归还到图书馆。
- 图书添加:管理员向系统中添加新的图书。
- 图书删除:管理员从系统中删除不需要的图书。
- 用户管理:管理员可以对用户进行添加、删除和权限修改等操作。
小型图书管理系统――借阅管理子系统

小型图书管理系统――借阅管理子系统摘要人类社会进入21世纪以来,随着计算机科学的高速发展,以及数据库技术的日渐成熟,计算机软件与数据库技术的结合为各行各业的信息管理提供了新的解决方案,计算机的应用已成为当今信息管理的潮流。
本文要研究的是小型图书馆管理系统的具体实现方案。
当然,前人对图书馆管理的研究已经相当成熟,相比之下,本文所研究的方案虽然功能较少,但基本上能够满足小型图书馆管理的需求。
本文中所做的主要工作如下:➢介绍了图书管理系统的背景;➢阐述整个图书管理系统的结构及工作流程;➢分析并解决实现中的若干技术问题;➢分析了系统实现中的难点和重点;➢ADO技术是本文重点之一,详细介绍;➢定义了图书借阅模块应具有的功能;➢设计实现正常借书、续借图书、归还图书、异常处理等四个子模块;➢对产品进行测试,开发完成整个系统软件;关键字图书管理软件ADO 功能AbstractAt the beginning of 21th century ,with the rapid development of computer science, and the gradual maturation of database technology.The combination of computer software and database technology provides a new resolving method for information management.The use of computer has become a trend of today's information management.In this work,we study a idiographic realization method for library management system.Undoubtedly,the former study of library management has been so excellent ,compare with those,althought our method has many localization,it can basically satisfy the requirement of small library management system.The main work of this paper are :➢Introduces the background of the library management system;➢Investigates the system structure and work flow;➢Resolves some of the technology problems when accomplishing the system;➢Analyses the keystones and difficulties to accomplish the system;➢The technology of ADO is one of the keystones of this work,it will be introduced in detail;➢Defines the functions that the module of lending book and returning book should include;➢Designs and accomplishing the four basal functions;.➢Tests the product and Finishes the whole system;Key Words library management softwore ADO function1.引言 (6)2. 面临的困难 (8)3. 技术基础 (9)3.1 Visual C++技术综述 (9)3.1.1 Visual C++ 6.0简介 (9)3.1.2 Visual C++数据库编程 (10)3.2 SQL Server 2021 数据库技术 (11)3.3 利用ADO访问数据库 (14)4. 图书借阅管理模块的实现 (16)4.1 软件需求分析 (16)4.2 功能设计 (17)4.3 数据定义 (20)4.4 各功能模块的实现 (22)4.4.1 正常借阅图书 (22)4.4.2 续借图书 (24)4.4.3 归还图书 (25)4.4.4 读者遗失图书 (27)5. 软件测试 (30)6. 结束语 (31)致谢 (31)参考文献 (31)1.引言图书馆,是社会知识、社会信息保存与传递的重要机构之一。
C语言课程设计-小型书店管理系统

C语言课程设计-小型书店管理系统简介本文档旨在设计一个小型书店管理系统,使用C语言实现。
该系统将提供以下功能:1. 登录:管理员和员工可以使用自己的账号和密码登录系统。
2. 书籍管理:管理员可以添加、编辑和删除书籍信息。
3. 销售管理:员工可以记录每一笔销售,包括售出的书籍、销售时间和销售数量。
4. 会员管理:系统可以管理会员信息,包括会员的姓名、手机号码和积分等。
5. 库存管理:系统可以记录书籍的库存信息,包括书籍的数量和位置。
功能说明登录- 系统启动时,提示用户输入账号和密码。
- 系统验证账号和密码是否正确,允许管理员和员工登录。
- 登录成功后,进入主菜单。
书籍管理- 管理员在主菜单选择书籍管理,可以进行以下操作:- 添加书籍:输入书籍的名称、作者、出版社和价格等信息,保存到系统中。
- 编辑书籍:选择要编辑的书籍,并修改相关信息。
- 删除书籍:选择要删除的书籍,并从系统中删除。
- 查看书籍列表:显示系统中所有的书籍信息。
销售管理- 员工在主菜单选择销售管理,可以进行以下操作:- 记录销售:选择要销售的书籍,并输入销售的数量。
- 系统更新库存信息,并生成销售记录,包括销售时间、图书名称和数量等。
- 销售记录可以用于后续的统计和分析。
会员管理- 管理员在主菜单选择会员管理,可以进行以下操作:- 添加会员:输入会员的姓名、手机号码和积分等信息,保存到系统中。
- 编辑会员信息:选择要编辑的会员,并修改相关信息。
- 删除会员:选择要删除的会员,并从系统中删除。
- 查看会员列表:显示系统中所有的会员信息。
库存管理- 系统会记录每本书籍的库存数量和位置。
- 当员工记录销售时,系统会自动更新库存信息。
- 员工可以在主菜单选择库存管理,查看当前库存情况。
技术实现本系统将使用C语言进行开发,主要使用以下技术:1. 数据结构:使用结构体来表示书籍、会员和销售记录等信息。
2. 文件操作:使用文件保存和读取数据,以实现数据的持久化。
小型书店管理系统

小型书店管理系统第一点:小型书店管理系统的需求分析小型书店作为城市文化的重要组成部分,承担着传播知识、传承文化的重要使命。
然而,在数字化、网络化的今天,小型书店面临着严峻的挑战。
为了提高小型书店的管理效率,降低运营成本,提升顾客体验,开发一套小型书店管理系统显得尤为重要。
小型书店管理系统的需求分析主要从以下几个方面展开:1.图书信息管理:系统应能对书店内的图书进行分类、标签化管理,便于查询、统计图书信息。
2.库存管理:系统应能实时更新图书库存,提供库存预警功能,以便书店及时补货。
3.销售管理:系统应能记录销售数据,分析销售趋势,为书店制定营销策略提供数据支持。
4.会员管理:系统应能对会员信息进行管理,提供积分、优惠等功能,提升顾客忠诚度。
5.财务管理:系统应能对书店的收支进行管理,提供利润分析等功能,帮助书店主人合理规划经营。
6.数据报表:系统应能生成各类数据报表,方便书店主人了解书店运营状况,为决策提供依据。
7.移动应用:系统应能支持移动设备访问,方便书店主人随时随地管理书店。
8.安全性:系统应具备较强的安全性,保护书店的经营数据不受侵害。
通过对小型书店管理系统的需求分析,可以为后续系统设计提供明确的方向。
第二点:小型书店管理系统的功能设计在需求分析的基础上,我们对小型书店管理系统进行功能设计。
系统应具备以下几个核心功能:1.图书信息管理:实现对图书的分类、标签化管理,支持图书信息的添加、修改、删除操作。
2.库存管理:实时更新图书库存,提供库存预警功能,支持图书入库、出库操作。
3.销售管理:记录销售数据,分析销售趋势,提供销售排行榜、销售报表等功能。
4.会员管理:管理会员信息,提供积分、优惠等功能,支持会员注册、登录、消费记录查询等操作。
5.财务管理:对书店的收支进行管理,提供利润分析等功能,支持收入、支出、利润等数据的统计和报表生成。
6.数据报表:生成各类数据报表,包括图书销售报表、会员消费报表、库存报表等,方便书店主人了解书店运营状况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程名称:数据库、软件工程课程设计报告题目:图书信息管理系统学院:信息工程与自动化学院专业:计算机科学与技术年级:学生姓名:指导教师:日期: 2015年 8月24日教务处制昆明理工大学课程设计任务书信息工程与自动化学院计算机科学与技术专业级学生姓名(学号):课程设计的任务:课程设计是实践教学的一种重要手段,是培养和训练学生动手能力的重要方法。
数据库、软件工程课程设计的目的是;以《软件工程》课程介绍的软件开发思想为指导,以《数据库原理与设计》课程中介绍的设计技术为手段,学习应用一种软件开发工具具体分析、设计、实现一个简单但完整的数据库应用系统。
课程设计题目及具体内容:利用数据库软件工程相关知识设计一个小型图书管理系统。
设计指导教师:(签字)2015年08月24日摘要随着计算机系统功能的大众化发展趋势,为充分利用计算机资源提高图书馆管理工作效率,减轻图书管理员的工作负担,实现管理工作的信息化、高效化,做好图书管理系统就成为各图书馆改善工作的需求。
图书管理系统融合了图书管理的先进经验,是特别针对中小型图书馆的管理需求而设计的管理软件,是中小型图书馆科学化、信息化建设的有力工具。
适用于各类企事业、机关、学校和科研院所的图书馆或图书室的管理。
本次实验是基于myeclipse下做的一个小型的图书管理系统。
目录目录 (4)1. 选题意义 (5)2. 需求分析 (5)2.1建立需求模型(用例图): (5)2.2建立静态模型(类图) (10)2.3建立动态模型(顺序图和状态机图) (10)2.3.1建立顺序图如下图所示: (10)2.3.2建立状态机图如下图所示: (10)3.系统设计 (11)3.1数据库设计 (11)3.1.1数据库E-R图 (11)3.1.2 读者信息实体 (11)3.1.3管理员信息实体 (11)3.1.4 图书信息实体 (12)3.1.5 实体联系图 (12)3.2系统功能模块图 (12)3.3详细设计 (13)3.3.1 读者信息模块数据表 (13)3.3.2 管理员信息模块数据表 (13)3.3.3 图书信息模块数据表 (14)3.3.4 图书流通信息模块数据表 (14)3.3.5 系统流程图 (14)4.系统实现 (16)4.1系统实现截图 (16)5.总结与体会 (16)6.参考文献 (17)1.选题意义现代社会各学校、机关、单位图书馆的不断增多,现有的管理模式已不能适应未来的需求,为了提高图书馆工作效率,防止人力资源的浪费,对图书有统一的分类,便于检查和清点工作,对读者有相关的资料,防止不必要的经济流失,利用电脑进行图书馆管理已成为未来的趋势。
以前,有很多的图书管理都是手工的,尚未使用计算机进行管理。
根据调查得知,人们对图书管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书信息和借出书情况(如书籍信息、会员信息、借出的书的数量等)的统计和核实等往往采用人工计算的方式。
数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏规范的系统管理手段。
因此开发一个小型的图书管理系统,具有十分重大的价值和现实意义。
2.需求分析通过一些大型图书馆的实际考察、分析,并结合图书馆的要求以及实际的市场调查,要求本系统实现以下功能:要求实现基础信息的管理平台,包括读者信息、图书信息和图书借还信息。
要求对所有读者的档案管理、类型管理,对读者的档案进行增加、删除、修改、查找等。
对图书能够进行查找,对图书按照图书编号,或者图书名等查找,也可以进行模糊查找。
能管理图书借还、罚款等信息。
2.1建立需求模型(用例图):借阅人用例图:图书系统管理员用例图:图书管理员用例图:2.1.2 用例描述1)用例名称:登录用例描述:根据用户输入的用户名和密码判断用户的身份,赋予相应的权限。
前置条件:无后置条件:根据用户所有的权限进入相应的操作界面。
基本操作流程:1输入用户名2输入密码2校验密码是否正确。
3根据用户身份进入相应的操作界面。
可选流程:如果密码不正确,提示重新输入密码;如果用户名不正确,提示没有此用户。
2)用例名称:查询图书用例描述:由读者进行操作,查询图书馆中有没有需要图书,如果有,显示该图书编号、书名、作者、出版日期、当前借阅状态等信息。
前置条件:以顾客身份登录后置条件:无基本流程:1 以读者身份登录。
2输入图书的名称或作者名称。
3显示相关图书的信息。
可选流程:如果没有该图书,返回提示信息:“没有找到图书”。
3)用例名称:借书用例描述:由图书管理员把读者的借书卡的条码读入计算机,再将读者所选图书的条码读入计算机,在不超过读者允许借书的情况下,累计该读者所借的书;否则提示超过借书数量。
前置条件:以图书管理员的身份登录系统。
后置条件:图书信息中相应记录的还书日期值做改变;将借书明细加入借书记录中。
基本操作流程:1以图书管理员身份登录系统。
2进入借书功能。
3录入读者的借书卡条码。
4识别读者类别,提示读者可以借阅图书的数量及借阅时间等。
如果允许借阅,继续4,否则提示已达到借书数量。
5录入图书的条码,显示该图书的信息。
6还有其他图书,重复步骤3。
7保存操作。
可选流程在保存之前,可以取消操作。
4)用例名称:续借用例描述:由图书管理员把读者的借书卡的条码读入计算机,计算机显示读者所借图书及状态,选定需要续借的图书,系统提示还书时间,保存操作。
前置条件:以图书管理员的身份登录系统。
后置条件:图书信息中相应记录的还书日期值做改变;将续借明细加入借书记录中。
基本操作流程:1以图书管理员身份登录系统。
2进入续借功能。
3录入读者的借书卡条码。
4计算机显示读者所借图书及状态。
5如可以续借则选定需要续借的图书;否则提示无法续借。
6系统提示还书时间。
7保存操作。
可选流程:在保存之前,可以取消操作。
5)用例名称:还书用例描述:由图书管理员把图书的条码读入计算机,系统显示该书的读者资料,提示是否超出借阅期限。
如未超出则显示还书成功;如超出则计算罚金。
前置条件:以图书管理员的身份登录系统。
后置条件:图书信息中相应记录的状态值做改变;将还书明细加入还书记录中。
基本操作流程:1以图书管理员身份登录系统。
2进入还书功能。
3录入读者的借书卡条码。
4系统显示该书的读者资料,提示是否超出借阅期限。
5如未超出则显示还书成功;如超出则计算罚金。
可选流程: 在保存之前,可以取消操作。
6)用例名称:新书登记用例描述:由图书管理员将新书的信息录入计算机中,进行保存。
前置条件:以图书管理员的身份登录系统。
后置条件:图书信息中增加一条记录。
基本操作流程:1以图书管理员的身份登录系统。
2进入新书登记功能。
3输入新书的相应信息。
4保存操作。
可选流程:在保存之前,可以取消操作。
7)用例名称:修改或注销图书用例描述:由图书管理员修改图书的信息或注销图书,进行保存。
前置条件:以图书管理员的身份登录系统。
后置条件:图书信息中相应记录更新或删除。
基本操作流程:1以图书管理员的身份登录系统。
2进入图书管理功能。
3选定需要修改或删除的图书。
4修改图书的相应信息或删除图书。
5保存操作。
可选流程:在保存之前,可以取消操作。
8)用例名称:增加读者用例描述:由图书管理员将新读者的信息录入计算机中,进行保存。
前置条件:以图书管理员的身份登录系统。
后置条件:读者信息中增加一条记录。
基本操作流程:1以图书管理员的身份登录系统。
2进入读者管理功能。
3输入新读者的相应信息,设置读者类别。
4保存操作。
可选流程:在保存之前,可以取消操作。
9)用例名称:修改或删除读者用例描述:由图书管理员修改读者的信息或删除读者,进行保存。
前置条件:以图书管理员的身份登录系统。
后置条件:读者信息中相应记录更新或删除。
基本操作流程:1以图书管理员的身份登录系统。
2进入读者管理功能。
3录入读者的借书卡条码,查询读者,确定需要修改或删除的读者。
4修改读者的相应信息或删除读者。
5保存操作。
可选流程:在保存之前,可以取消操作。
2.2建立静态模型(类图)2.3建立动态模型(顺序图和状态机图)2.3.1建立顺序图如下图所示:管理人员用户登录界面个人主界面账户管理界面图书库存管理界面图书借、还管理界面1: 用户登录2: 输入登录密码3: 账户管理4: 增加、删除用户5: 返回个人主界面6: 图书库存管理7: 增加、删除图书8: 返回个人主界面9: 借、还图书10: 返回个人主界面11: 退出2.3.2建立状态机图如下图所示:3.系统设计 3.1数据库设计3.1.1数据库E-R 图根据实际调查对系统所做的需求分析、系统设计,将数据库实体分为图书信息实体、读者信息实体和管理员信息实体等。
3.1.2 读者信息实体读者是图书馆的重要组成部分,可以说如果没有读者,一个图书馆就无法生存下去。
这里创建一个读者信息实体,用来保存读者的详细信息。
读者信息实体E-R 图如图所示。
是否归还借书编号读者编号图书条形码借书时间实际还书时间借书操作员还书操作员应该还书时间读者3.1.3管理员信息实体在数据库中创建一个存储登录用户名和密码的管理员信息实体。
管理员信息实体图如图所示。
3.1.4 图书信息实体图书信息实体用来保存图书馆中图书的详细信息。
图书信息实体E-R图如图所示。
3.1.5 实体联系图每一个图书馆有多个管理员和图书,每个读者可以借多个图书,每个管理员管理多个学生,每个学生需要与多个管理员进行沟通。
实体联系图如图所示。
3.2系统功能模块图将该系统分为读者管理、图书管理、借还管理和退出等主要部分,其中各个部分及其包括的具体功能模块如图所示。
3.3详细设计3.3.1 读者信息模块数据表读者信息表用于保存读者的详细信息。
该读者信息表的结构如表所示。
3.3.2 管理员信息模块数据表管理员信息表用于保存管理员的基本信息。
该数据表的结构如表所示。
3.3.3 图书信息模块数据表图书信息表用于保存图书详细信息,该数据表的结构如表所示。
3.3.4 图书流通信息模块数据表图书流通信息表用来保存图书的借还信息,该数据表的结构如图所示。
3.3.5 系统流程图按照系统流程图使用该系统,对图书馆的读者信息、图书信息进行添加、删除、修改、查找等功能,主要流程图如图所示。
4.系统实现4.1系统实现截图5.总结与体会通过这次试验设计使我更加的了解了设计系统的基本流程,由于时间仓促,导致本系统的额外的功能没有能够实现,但我相信在以后的学习中,我会慢慢的将这些功能补全的。
6.参考文献《Java语言程序设计》原书第八版《Servlet和JSP学习指南》。