精华内容
下载资源
问答
  • 创盟时代小编认为一个系统的价钱其实是和企业的述求离不开的,每个企业在不同的阶段不同的需求都会产生价钱的巨大差别。还有就是企业对于产品的定位、投入的成本也会影响企业的定价。一般来说说价钱高低会有以下几种...

    a873f30e95c5f9c995b4d91d4de22d6e.png

    很多企业在购买选择项目管理软件的时候都会有一些疑惑,市场价钱相差太巨大,有些企业以百万计、有些十万记、有些却只是几万或者几千。这样的情况会让很多企业会迷茫。创盟时代小编认为一个系统的价钱其实是和企业的述求离不开的,每个企业在不同的阶段不同的需求都会产生价钱的巨大差别。还有就是企业对于产品的定位、投入的成本也会影响企业的定价。一般来说说价钱高低会有以下几种区别。

    1060a6984feda3217f6c38be6768287d.png

    1、系统定制与saas软件的区别

    如果是定制的话价钱就是无法衡量的了,毕竟每个企业的需求都是完全不同的,企业的规模、目前的需求,项目的情况这个都会让项目管理系统价钱出现很大的浮动。总体来说项目管理软件定制的话一般都是几十万起步。saas的话现在的一般都是按年付费的,会根据您的企业用户数、空间需求大小产生区别,一般saas的话在6000/年-50000/年左右。

    2、开发商对产品的投入区别

    市面上有很多的项目管理saas系统但是很多企业对可能只是前期开发出来了系统,但是后期却很少对软件进行更新迭代。但是每个企业可能在软件的购买初期确实对软件本身的要求不高,但是随着企业的发展,或者随着市场的变动,需求肯定会产生变动,所以务必会有对系统迭代的需求。比方说:以前的系统只是web和app但是随着微信企业应用的出现系统如果不能迭代公众号对接、小程序对接这样的话也会让很多企业觉得不方便。那如果系统迭代比较好的软件开发商肯定会不断的投入人力物力来研发,价钱自然而然会有区别,反之亦然。

    对于定制而言,定制受到企业品牌、企业在行业中的经验、企业员工的技术能力这些都会影响开发商对定制的区别。

    3、企业给的需求不一样,或者供应商对需求的理解不一样

    这个就是沟通上的问题了,很多企业在找那个项目管理软件系统的时候,会找很多的供应商对比,但是由于自己的不了解或者说自己对自己需要的软件定位不清楚,会让在不同阶段沟通的供应商提供不同感觉的需求。可能在第一次和供应商沟通的时候您没有想法,供应商会根据自己的经验来给您推荐,在当时您可能觉得都挺好的、到第二和其他供应商沟通的时候你可能会有偏向性,会有一些需求的变动,但是这个时候前面的供应商并不知道您的需求变动。而且在前期沟通过程中企业却又是很不原因在供应商面前透露其他供应商。这些各方面的印刷都会让不同的企业报出不同的价钱。在这些前提下哪怕你找的是同一家公司两个不同的业务员来先后沟通可能也会产生价钱的巨大差距。

    创盟时代小编觉得不论是项目管理软件还是其他的软件都会存在以上说的问题,企业可以根据这些在选择供应商的时候去判断什么样的才是最适合自己公司的。

    展开全文
  • 需要用Java做一个简单的图书馆管理系统,具有排序、查找、计算、插入、显示等功能。 该系统需要具有以下功能: (1)图书数据结构:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。 (2)需要实现的...
  • 需要一个JAVAWEB 图书馆管理系统做参考,基本功能要有,最好配上系统介绍论文。有谁有吗?要能够运行的完整系统
  • JAVA+MySQL做一个图书信息管理系统(附源码)

    万次阅读 多人点赞 2019-01-21 21:19:40
    图书管理系统:调查学校图书馆,设计一个图书管理系统。 图书管理系统具有管理员登陆,图书维护,图书管理和系统维护四个功能模块组成。

    https://blog.csdn.net/weixin_43206161

    实 训 报 告 书

    所属课程名称     JAVA语言程序设计   
    题        目     图书信息管理系统    
    分        院       电信分院         
    专 业 班  级      ********    
    学      号      ********   
    学 生 姓 名       ********        
    指 导 教 师       ********         
    

    一小部分图片
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    目录
    第三章 引言 3
    1.1 系统概述 3
    1.2 需求分析 3
    1.3 运行环境 3
    第四章 概要设计 4
    2.1 设计思路 4
    2.2 模块功能介绍 4
    2.3 模块结构图 4
    2.4 程序流程图 5
    2.5 功能设计分工 7
    第五章 详细设计 8
    3.1 book_insert.java 8
    3.2 book_change.java 10
    第六章 测试与小结 13
    4.1程序写好无误,连接mysql,连接成功 13
    4.2添加4组数据 14
    4.3到数据库看看 17
    4.4修改004号的书名庄子为孔子,作者也是庄子为孔子,其它的信息不变 18
    4.5再到数据库看看 19
    4.6通过图书查询 20
    4.7小结 21
    第七章 程序清单 23
    第八章 参考文献 36

    第一章 引言
    1.1 系统概述

    图书管理系统:调查学校图书馆,设计一个图书管理系统。
    图书管理系统具有管理员登陆,图书维护,图书管理和系统维护四个功能模块组成。

    1.2 需求分析

    图书管理系统对于现代图书馆而言,是能否发挥其教学科研的作用的至关重要技术平台。对于读者和图书管理员来说,是能否方便快速获取信息的关键。所以,图书管理系统应该能够为用户提供充足的信息和快捷方便的操作手段。

    1.3 运行环境

    在Windows操作系统下运行,基于java开发平台,需要用户安装Jdk运行环境并对class path进行配置操作才能运行。数据库用mysql。
    

    第二章 概要设计
    2.1 设计思路

    2.1.1管理员打开程序,输入账户和密码,程序对其验证,成功后开启对数据库的连接,并调用主界面类。
    2.1.2 主界面类,用户进入此界面,会有三大模块,共计九个子模块供用户选择,在程序中分别对各个模块的按钮添加监听事件,事件下创建对应模块的功能函数/类。
    2.1.3 在对应的子模块中,用户对数据进行操作,程序中调用Login.getCon方法获取数据库连接,然后对用户的数据进行操作。
    2.2 模块功能介绍

    (1) 管理员登陆:验证后台数据库管理员的登陆操作
    (2) 图书维护主要是对图书信息(ISBN、书名、作者、价格、出版社、类别、内容简介)进行维护。本模块又分为三个子模块:
    ◇图书信息录入 ◇图书信息修改 ◇图书信息删除
    (3) 图书管理主要是对图书的事件操作。本模块又分为三个子模块:
    ◇图书借出 ◇图书归还 ◇图书信息查询
    (4)系统维护主要对图书系统的用户组进行维护。有以下三个模块:
    ◇新借记卡登记 ◇图书类别新增 ◇图书作者新增
    2.3 模块结构图

    2.4 程序流程图

    2.5 功能设计分工

    第三章 详细设计
    3.1 book_insert.java
    该模块用于输入图书信息,其中的设计要点主要有:1、为确保图书编号的唯一性,图书编号不能重复;2、输入并保存后,要给出提示信息;3、保存成功后,不得重复保存;4、可以直接让用户继续输入下一个记录

    ① 设置窗口布局、位置和可见等等,使用了super关键字,调用父类的有参构造方法,还有重要的是this.getContentPane().setLayout(null); 获取窗口的内容窗口,再设置内容窗口的布局是空布局(你自己想怎么放组件就怎么放组件)。然后设置7个文本设置栏,并设置字体、位置等等,使用了JLabel控件,对JFrame添加组件用getContentPane()方法获得JFrame的内容面板,再对其加入组件。

    ② 关闭窗口和添加成功窗口弹出,都用重写actionPerformed()方法,添加成功窗口还用了JOptionPane.showMessageDialog()方法

    ③ 这是数据库的连接程序
    (—)通过mysql 创建一个数据库,在这里命名为demo,然后建一个Book表
    (二)以下是java代码对表Book的操作
    1 Book表包括ISBN,Bname,Bprice,Bcomment,Bpublish,Bauthor,Bsort这些信息
    2创建Login类,用于数据库的连接
    3执行给定 SQL 语句, try {} catch(exception e) ,这是java的异常处理机制,捕捉异常
    4、finally语句和close()方法实现关闭连接
    catch(Exception e){
    e.printStackTrace() ;
    }
    当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。

    3.2 book_change.java
    ①设置窗口布局、位置和可见等等,java的JFrame中使用setTitle()方法设置窗体的标题,还有重要的是this.getContentPane().setLayout(null); 获取窗口的内容窗口,再设置内容窗口的布局是空布局(你自己想怎么放组件就怎么放组件)。然后设置7个文本设置栏,并设置字体、位置等等,使用了JLabel控件,对JFrame添加组件用getContentPane()方法获得JFrame的内容面板,再对其加入组件。还有了setLayout(null)布局函数,add()添加函数

    ②更改成功窗口和请更改为已有作者或分类窗口弹出,都用重写actionPerformed()方法,添加成功窗口还用了JOptionPane.showMessageDialog()方法

    ③这是数据库的连接程序
    (—)前面book_insert已经在mysql 创建一个数据库demo,和建好了Book表
    (二)以下是java代码对表Book的操作
    1同样用Login类,用于数据库的连接
    2通过String sqlupdate=“UPDATE book SET “;String where=” WHERE ISBN=”+textField.getText();语句以ISBN来找找到那本书进行修改
    3执行给定 SQL 语句, try {} catch(exception e) ,这是java的异常处理机制,捕捉异常
    4、finally语句和close()方法实现关闭连接
    catch(Exception e){
    e.printStackTrace() ;
    }
    当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。
    5、判断文本框的内容是否为空,不是空就添加更新语句到String,并设置那个标志为1,方便后面的代码执行
    if(!textField_1.getText().equals("")) {
    if(flag==0)
    { sqlupdate=sqlupdate+“Bname=’”+textField_1.getText()+"’";
    flag=1;}
    }

    第四章 调试分析
    1、 调试出现一些语法错误,根据Eclipse本身的改错给纠正的
    2、 项目出现!,我点java构建路径,把有错的给移除
    3、 mysql连接失败,我重新连接
    4、 找不到主类,我百度了,百度给的可能性太多了,我就重新建项目
    5、 出现了一堆看不懂的英文,我正好还有另一个版本Eclipse,就换了一个Eclipse

    第五章 测试与小结
    4.1程序写好无误,连接mysql,连接成功

    4.2添加4组数据

    提交成功后再次提交,则会:

    4.3到数据库看看

    数据已添加成功!

    4.4修改004号的书名庄子为孔子,作者也是庄子为孔子,其它的信息不变

    4.5再到数据库看看

    修改成功!
    4.6通过图书查询

    4.7小结
    经过这次课设实训,我们小组做出了java 图书信息管理系统,并且我们为此感到高兴。在此次课设学习过程中,我体会到学习是一个很反复的过程,不断的出现错误,不断的调试,从不断的迷茫到不断的清晰。自己去操作、去调试,这些点点滴滴为我们学习java积累了实践的经验。我在这次的实践中,遇到一些新的问题,用新的解决方法。更为重要的是,我再次体会到了团队合作的重要性,一方面大家有不同的思路,可以交换意见;另一方面,可以提高工作效率。还有,通过这次实训,我学会了eclipse连接到mysql,学到项目文件有!号的处理方法等等。项目实训不是简简单单的你做出了,而是你在这个过程学到了什么。
    然后,我觉得把Java学会的关键的点就是坚持练习。有的时候,我感觉有的腰酸背痛,花时间。学习编程语言没有捷径可走,学习Java时每天必须保证一定的打代码量。只有每天反复操作了,经常写代码了,我们在遇到问题时才有一定的思路。欲速则不达,学习编程语言需要一个比较漫长的阶段,不是一下子就可以精通的,它需要积累,需要熟悉。
    最后,我学到了一些东西,但觉得自己还远远不够,希望自己在以后学习中继续努力,能够真真正正拥有一门编程语言,对自己今后的发展起到作用。我打算利用寒假的时间,学习java编程思想。总之,在学习java语言的同时,也让我学会了如何来发现问题,如何解决问题,怎样有效的学习等等,相信会对我一生都有帮助。

    第六章 程序清单

    1、 Book_insert.java

    package windows;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.SwingConstants;
    import javax.swing.JTextArea;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import java.awt.Font;
    
    @SuppressWarnings("serial")
    public class Book_insert extends JFrame {
    	private JTextArea textArea ;
    	private JTextArea textArea_1 ;
    	private JTextArea textArea_2 ;
    	private JTextArea textArea_3 ;
    	private JTextArea textArea_4 ;
    	private JTextArea textArea_5 ;
    	private JTextArea textArea_6 ;
    
    	public Book_insert() {
    		super("图书添加");
    		setVisible(true);//设置可见
    		setBounds(100, 100, 450, 300);//边界
    		setLocation(330,400);//位置
    		//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		//获取窗口的内容窗口,再设置内容窗口的布局是空布局(你自己想怎么放组件就怎么放组件)。
    		this.getContentPane().setLayout(null);
    		
    		//定义一个JLabel类型的变量label,并赋值为"编号:"
    		JLabel label = new JLabel("\u56FE\u4E66\u540D\u5B57\uFF1A");
    		label.setFont(new Font("微软雅黑", Font.PLAIN, 12));//字体
    		label.setHorizontalAlignment(SwingConstants.CENTER);//中心对齐
    		label.setBounds(35, 78, 71, 15);//设置标签的大小
    		getContentPane().add(label);//获取内容窗格
    		
    		textArea = new JTextArea();
    		textArea.setColumns(10);//文本设置栏
    		textArea.setBounds(114, 74, 83, 24);
    		getContentPane().add(textArea);
    		
    		JLabel label_1 = new JLabel("\u56FE\u4E66\u4F5C\u8005\uFF1A");
    		label_1.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		label_1.setHorizontalAlignment(SwingConstants.CENTER);
    		label_1.setBounds(35, 122, 71, 15);
    		getContentPane().add(label_1);
    		
    		textArea_1 = new JTextArea();
    		textArea_1.setColumns(10);
    		textArea_1.setBounds(114, 118, 83, 24);
    		getContentPane().add(textArea_1);
    		
    		JLabel label_2 = new JLabel("\u56FE\u4E66\u4EF7\u683C\uFF1A");
    		label_2.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		label_2.setHorizontalAlignment(SwingConstants.CENTER);
    		label_2.setBounds(35, 163, 71, 15);
    		getContentPane().add(label_2);
    		
    		textArea_2 = new JTextArea();
    		textArea_2.setColumns(10);
    		textArea_2.setBounds(114, 159, 83, 24);
    		getContentPane().add(textArea_2);
    		
    		JLabel lblIsbn = new JLabel("\u4E66\u53F7\uFF08ISBN\uFF09\uFF1A");
    		lblIsbn.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		lblIsbn.setHorizontalAlignment(SwingConstants.CENTER);
    		lblIsbn.setBounds(10, 36, 96, 15);
    		getContentPane().add(lblIsbn);
    		
    		textArea_3 = new JTextArea();
    		textArea_3.setColumns(10);
    		textArea_3.setBounds(114, 32, 83, 24);
    		getContentPane().add(textArea_3);
    		
    		JLabel label_3 = new JLabel("\u51FA\u7248\u793E\uFF1A");
    		label_3.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		label_3.setHorizontalAlignment(SwingConstants.CENTER);
    		label_3.setBounds(47, 201, 59, 15);
    		getContentPane().add(label_3);
    		
    		textArea_4 = new JTextArea();
    		textArea_4.setColumns(10);
    		textArea_4.setBounds(114, 197, 83, 24);
    		getContentPane().add(textArea_4);
    		
    		JLabel label_4 = new JLabel("\u5185\u5BB9\u7B80\u4ECB\uFF0850\u5B57\u5185\uFF09\uFF1A");
    		label_4.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		label_4.setHorizontalAlignment(SwingConstants.CENTER);
    		label_4.setBounds(224, 78, 146, 15);
    		getContentPane().add(label_4);
    		
    		JButton button = new JButton("\u63D0\u4EA4");
    		button.setBounds(231, 197, 84, 23);
    		getContentPane().add(button);
    		
    		JButton btnNewButton = new JButton("\u8FD4\u56DE");
    		btnNewButton.setBounds(332, 197, 77, 23);
    		getContentPane().add(btnNewButton);
    		
    	    textArea_5 = new JTextArea();
    		textArea_5.setRows(8);
    		textArea_5.setBounds(227, 105, 161, 73);
    		getContentPane().add(textArea_5);
    		
    		JLabel label_5 = new JLabel("   \u7C7B\u522B\uFF1A");
    		label_5.setHorizontalAlignment(SwingConstants.LEFT);
    		label_5.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		label_5.setBounds(224, 36, 96, 15);
    		getContentPane().add(label_5);
    		
    		textArea_6 = new JTextArea();
    		textArea_6.setColumns(10);
    		textArea_6.setBounds(286, 32, 102, 24);
    		getContentPane().add(textArea_6);
    		
    		/*关闭窗口*/
    		btnNewButton.addActionListener(new ActionListener() {//重写actionPerformed()方法
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				setVisible(false);;//不可见
    		} 
    		 });
    		
    		button.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				if(b_insert()){
    					JOptionPane.showMessageDialog(null,"添加成功啦!!"); 
    				}
    				else {JOptionPane.showMessageDialog(null,"请输入已有作者或分类!!");}
    		} 
    		 });		
    	
    	}
    	
    	 public Boolean b_insert() {
    		  boolean result = false;
    		           Connection conn = null;
    		         try {	        
    		           conn = Login.getCon();  //建立数据库连接
    		          String sqlInset = "insert into Book(ISBN,Bname,Bprice,Bcomment,Bpublish,Bauthor,Bsort)"
    		          		+ "values('"+textArea_3.getText()+"','"+textArea.getText()+"','"+textArea_2.getText()+"','"
    		        		  +textArea_5.getText()+"','"+textArea_4.getText()+"','"+textArea_1.getText()+"','"
    		          		+textArea_6.getText()+"')";
    		          PreparedStatement stmt = conn.prepareStatement(sqlInset);   //会抛出异常   
                 
    		          int i = stmt.executeUpdate();//执行给定 SQL 语句         
    		          if (i == 1) {
    		              result = true;
    		          }
    		          } catch (SQLException e) {  	
    	             e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因。
    	             
    		              
    		           } finally { //finally的用处是不管程序是否出现异常,都要执行finally语句,所以在此处关闭连接
    		               try {
    		                   conn.close(); //打开一个Connection连接后,最后一定要调用它的close()方法关闭连接,以释放系统资源及数据库资源
    		              } catch(SQLException e) {
    		                   e.printStackTrace();
    		              }
    		          }
    		          
    		          return result;        
    		} }
    

    2、Book_change.java

    	
    package windows;
    
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    import javax.swing.JTextField;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.ImageIcon;
    import javax.swing.JOptionPane;
    import javax.swing.JTextArea;
    import javax.swing.border.LineBorder;
    import java.awt.Color;
    
    @SuppressWarnings("serial")
    public class Book_change extends JFrame {
    
    	private JTextField textField;
    	private JTextField textField_1;
    	private JTextField textField_2;
    	private JTextField textField_3;
    	private JTextField textField_4;
    	private JTextField textField_5;
    	private JTextArea  textArea;
    	/**
    	 * Initialize the contents of the  .
    	 */
    	 public Book_change() {
    		setTitle("图书修改");
    		setVisible(true);
    		setBounds(100, 100, 500, 411);
    		setLocation(285,400);
    		setDefaultCloseOperation(JFrame .DISPOSE_ON_CLOSE);
    		getContentPane().setLayout(null);
    		
    		JLabel lblNewLabel_2 = new JLabel("\u56FE\u4E66\u4FEE\u6539(\u786E\u8BA4\u4E66\u53F7)\uFF1A");
    		lblNewLabel_2.setFont(new Font("微软雅黑", Font.BOLD, 16));
    		lblNewLabel_2.setBounds(23, 10, 156, 29);
    		 getContentPane().add(lblNewLabel_2);
    		
    		JLabel lblNewLabel = new JLabel("ISBN(\u4E66\u53F7\uFF1A)");
    		lblNewLabel.setFont(new Font("黑体", Font.PLAIN, 12));
    		lblNewLabel.setBounds(23, 59, 111, 19);
    		 getContentPane().add(lblNewLabel);
    		
    		textField = new JTextField();
    		textField.setBounds(133, 59, 130, 21);
    		 getContentPane().add(textField);
    		textField.setColumns(10);
    		
    		JLabel label = new JLabel("\u8BF7\u8F93\u5165\u8981\u4FEE\u6539\u9879\uFF08\u4E0D\u6539\u52A8\u7684\u7559\u767D\uFF09");
    		label.setFont(new Font("微软雅黑", Font.PLAIN, 14));
    		label.setBounds(23, 95, 240, 29);
    		 getContentPane().add(label);
    		
    		JPanel panel = new JPanel();
    		panel.setBorder(new LineBorder(new Color(0, 0, 0)));
    		panel.setBounds(23, 122, 451, 210);
    		 getContentPane().add(panel);
    		panel.setLayout(null);
    		
    		JLabel label_1 = new JLabel("\u56FE\u4E66\u540D\uFF1A");
    		label_1.setBounds(22, 24, 63, 19);
    		label_1.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		panel.add(label_1);
    		
    		textField_1 = new JTextField();
    		textField_1.setBounds(95, 24, 92, 21);
    		textField_1.setColumns(10);
    		panel.add(textField_1);
    		
    		JLabel label_2 = new JLabel("\u4F5C\u8005\u540D\uFF1A");
    		label_2.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		label_2.setBounds(249, 24, 63, 19);
    		panel.add(label_2);
    		
    		textField_2 = new JTextField();
    		textField_2.setColumns(10);
    		textField_2.setBounds(322, 24, 92, 21);
    		panel.add(textField_2);
    		
    		JLabel label_3 = new JLabel("\u51FA\u7248\u793E\uFF1A");
    		label_3.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		label_3.setBounds(249, 65, 63, 19);
    		panel.add(label_3);
    		
    		textField_3 = new JTextField();
    		textField_3.setColumns(10);
    		textField_3.setBounds(322, 65, 92, 21);
    		panel.add(textField_3);
    		
    		JLabel label_4 = new JLabel("\u56FE\u4E66\u7B80\u4ECB\uFF1A");
    		label_4.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		label_4.setBounds(22, 148, 70, 15);
    		panel.add(label_4);
    		
    		JLabel label_5 = new JLabel("\u7C7B\u522B\uFF1A");
    		label_5.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		label_5.setBounds(22, 63, 63, 19);
    		panel.add(label_5);
    		
    		textField_4 = new JTextField();
    		textField_4.setColumns(10);
    		textField_4.setBounds(95, 63, 92, 21);
    		panel.add(textField_4);
    		
    		JLabel label_6 = new JLabel("\u4EF7\u683C\uFF1A");
    		label_6.setFont(new Font("微软雅黑", Font.PLAIN, 12));
    		label_6.setBounds(22, 102, 63, 19);
    		panel.add(label_6);
    		
    		textField_5 = new JTextField();
    		textField_5.setColumns(10);
    		textField_5.setBounds(95, 102, 92, 21);
    		panel.add(textField_5);
    		
    		textArea = new JTextArea();
    		textArea.setRows(3);
    		textArea.setText("\u8BF7\u8F93\u5165\u7B80\u4ECB\uFF0C50\u5B57\u4EE5\u5185\u3002");
    		textArea.setBounds(95, 144, 319, 48);
    		panel.add(textArea);
    		
    		JButton button = new JButton("\u4FEE\u6539");
    		button.setIcon(new ImageIcon(Book_change.class.getResource("/images/modify.png")));
    		button.setBounds(345, 58, 93, 23);
    		 getContentPane().add(button);
    		 
    		button.addActionListener(new ActionListener() {
    		public void actionPerformed(ActionEvent e) {
    					// TODO Auto-generated method stub
    					
    		if(b_change()){
    			JOptionPane.showMessageDialog(null,"更改成功啦!!"); 
    					}
    		else {JOptionPane.showMessageDialog(null,"请更改为已有作者或分类!!");}
    			} 
    			 });
    	}
    	 
    	 		 public Boolean b_change() {
    		       boolean result = false;
    		           Connection conn = null;
    		         try {	        
    		           conn = Login.getCon();  //建立数据库连接
    		           int flag=0;
    		           String sqlupdate="UPDATE book SET ";
    		           String where=" WHERE ISBN="+textField.getText();
    		           
    		           if(!textField_1.getText().equals("")) {  
    		           if(flag==0)
    		        	  { sqlupdate=sqlupdate+"Bname='"+textField_1.getText()+"'";
    		        	   flag=1;}
    		           }
    		           
    		            if(!textField_2.getText().equals("")){
    		        	   if(flag==0)
    			        	{ sqlupdate=sqlupdate+"Bauthor='"+textField_2.getText()+"'";
    			        	   flag=1;}
    		        	   else {
    		        		   sqlupdate=sqlupdate+","+"Bauthor='"+textField_2.getText()+"'"; 
    		        	   }
    		           }
    		            
    		            if(!textField_3.getText().equals("")){
    		        	   if(flag==0)
    			        	{ sqlupdate=sqlupdate+"Bpublish='"+textField_3.getText()+"'";
    			        	   flag=1;}
    		        	   else {
    		        		   sqlupdate=sqlupdate+","+"Bpublish='"+textField_3.getText()+"'"; 
    		        	   }
    		           }
    		            
    		          
    		            if(!textField_4.getText().equals("")){
    		        	   if(flag==0)
    			           { sqlupdate=sqlupdate+"Bsort='"+textField_4.getText()+"'";
    			        	   flag=1;}
    		        	   else {
    		        		   sqlupdate=sqlupdate+","+"Bsort='"+textField_4.getText()+"'"; 
    		        	   }
    		           }
    		           
    
    		            if(!textField_5.getText().equals("")){
    		        	   if(flag==0)
    			          { sqlupdate=sqlupdate+"Bprice="+textField_5.getText();
    			        	   flag=1;}
    		        	   else {
    		        		   sqlupdate=sqlupdate+","+"Bprice="+textField_5.getText(); 
    		        	   }
    		           }
    		            
    		            if(!textArea.getText().equals("") && !textArea.getText().equals("请输入简介,50字以内。")){
    		        	   if(flag==0)
    			          { sqlupdate=sqlupdate+"Bcomment='"+textArea.getText()+"'";
    			        	   flag=1;}
    		        	   else {
    		        		   sqlupdate=sqlupdate+","+"Bcomment='"+textArea.getText()+"'"; 
    		        	   }
    		           }
    		           
    		           sqlupdate=sqlupdate+where;
    		          PreparedStatement stmt = conn.prepareStatement(sqlupdate);   //会抛出异常   
    		          int i = stmt.executeUpdate();           
    		          if (i == 1) {
    		              result = true;
    		          }
    		          } catch (SQLException e) {
    		              // TODO Auto-generated catch block
    		              e.printStackTrace();
    		           } finally { //finally的用处是不管程序是否出现异常,都要执行finally语句,所以在此处关闭连接
    		               try {
    		                   conn.close(); //打开一个Connection连接后,最后一定要调用它的close()方法关闭连接,以释放系统资源及数据库资源
    		              } catch(SQLException e) {
    		                   e.printStackTrace();
    		              }
    		          }
    		          
    		          return result;        
    		} }
    

    这里实训报告没有显示全部的代码
    源码地址:https://download.csdn.net/download/weixin_43206161/11103940

    第七章 参考文献
    [1] 谢希仁. 计算机网络(第五版)[M]. 北京:电子工业出版社,2008年2月
    [2] 胡小强 计算机网络[M] 北京:北京邮电大学出版社2005年1月
    [3] 苗春义 Java项目开发全程实录 北京:清华大学出版社 2005年7月
    [4] 凯S.崔斯特曼 Java核心技术卷1(第10版)北京:机械工业出版社 2017年1月
    [5] 齐燕 Java语言图形编程工具的设计及应用[J]. 科技传播,2017年4月
    [6] 凯S.崔斯特曼 Java核心技术卷2(第10版)北京:机械工业出版社 2017年5月
    [7] 刘志宏《Java程序设计教程》北京: 航空工业出版社, 2010.7
    [8] Bruce Eckel《Java编程思想》北京: 机械工业出版社, 2007.6
    [9] 任进军《MySQL》北京: 工信和人邮出版社, 2010.7


    源码地址:https://download.csdn.net/download/weixin_43206161/11103940

    展开全文
  • 要求:使用类的形式做一个图书馆管理系统,实现借书,入库,还书,查书等功能。 设计思路: 第一步:先写一个书的类,来存储图书馆中最重要的组成部分书的信息管理,包括书名,书作者,书的所属类别,书的价格等 ...

    要求:使用类的形式做一个图书馆管理系统,实现借书,入库,还书,查书等功能。

    设计思路:

    第一步:先写一个书的类,来存储图书馆中最重要的组成部分书的信息管理,包括书名,书作者,书的所属类别,书的价格等

    class Book():
        '''书类,存储书名,作者,分类,价格等信息'''
        def __init__(self,name,author,classify,price):
            self.name = name
            self.author = author
            self.classify = classify
            self.price = price
        def get_bookinfo(self):
            print('书名:%s\n作者:%s\n分类:%s\n价格:%s'%(self.name,self.author,self.classify,self.price))
        def set_book_name(self,new_name):
            self.name = new_name
        def get_book_name(self):#获取书名
            return self.name
        def get_book_author(self):#获取书作者
            return self.author
        def get_book_classify(self):#获取书分类
            return self.classfiy
        def get_book_price(self):#获取书的价格
            return self.price

    第二步:因为单独一个类管理书籍信息,因此现在写一个图书馆主体类,写3个类变量,分别存储图书馆所有的图书(list)、尚未被借出的图书(list)、已被借出的图书(dict),并且使用序列化来存储信息编写算法如下:

    class Library():
        '''图书馆,实现借书,入库,还书,查书等功能,使用序列化存储书的实例'''
        import pickle as p
        with open(r'C:\Users\何发奋\Desktop\Python 习题\instance\book_library.txt','rb') as f:#序列化信息存储地址
            try:
                book_total_library = p.load(f)#存储所有的书
                book_in_library =p.load(f)#存储未被借出的书
                out_library = p.load(f)#存储被借出的书的信息,包括借书人以及借书日期
            except:
                book_total_library = []
                book_in_library =[]
                out_library = {}
        def __init__(self,name,location):
            '''初始化图书馆'''
            self.name = name
            self.location = location

    第三步:写借书,入库,还书,查书等功能

    3.1 入库

    def add():
            '''加书'''
            import pickle as p
            book_name = input('请输入书名:')
            author_name = input('请输入author:')
            classify = input('请输入classify:')
            price = input('请输入price:')
            book = Book(book_name,author_name,classify,price)
            Library.book_total_library.append(book)
            Library.book_in_library.append(book)
            #将书籍加入本馆总库以及在库图书列表
            with open(r'C:\Users\何发奋\Desktop\Python 习题\instance\book_library.txt','wb') as fp:
                p.dump(Library.book_total_library,fp)
                p.dump(Library.book_in_library,fp)
                p.dump(Library.out_library,fp)
            #将修改的数据记录入序列化

    3.2借书,借书的逻辑是

      step1:遍历本馆书库,查看是否有该书籍

      step2:遍历本馆可借书单,查看书籍是否已被借出

      step3:如果本馆有此书,并且未被借出,则出借该书,记录出借记录,否则提示本馆无此书,或者此书已经被出借

    def borrow(self,username,book_name):
            '''借书'''
            import pickle as p
            import time
            current_date = time.strftime('%Y-%m-%d',time.localtime())
            #print(Library.book_in_library)
            #print(Library.out_library)
            for book_object1 in Library.book_total_library:
                if book_object1.get_book_name() == book_name:
                    for book_object2 in Library.book_in_library:
                        #print(book_object2)
                        #print(book_object2.get_book_name())
                        if book_object2.get_book_name() ==book_name:
                            print('object2:',book_object2)
                            #查找图书在本馆,且未被借出
                            Library.out_library[book_object2] = (username,current_date)
                            #记录图书已经被借出,登记出借信息
                            Library.book_in_library.remove(book_object2)
                            #print(Library.book_in_library)
                            #print(Library.out_library)
                            #修改在库图书记录,记录当前图书已被借出,不在库
                            print('借书成功,请及时归还')
                            with open(r'C:\Users\何发奋\Desktop\Python 习题\instance\book_library.txt','wb') as fp:
                                p.dump(Library.book_total_library,fp)
                                p.dump(Library.book_in_library,fp)
                                p.dump(Library.out_library,fp)
                                #序列化记录修改记录
                            print()
                            return
                    else:#本馆有此书,但是已被借走
                        print('您要的书已被借走,您可通过book_info查看已被借阅的信息')
                        print()
                        return
                    #如果图书在本馆,但是已被借出,提示已被借走
            else:
                print('您所要借阅的书本馆尚无,请去其他图书馆看看')
                print()
                #如果本馆无此图书,提示

    3.3还书,还书的逻辑为先查看出借记录,查看是否有对应的出借记录,如果有则收回书籍,修改在库记录,否则提示报错

    def lend(self,book_name):
            '''还书'''
            import pickle as p
            for book_object in Library.out_library.keys():
                print(book_object.get_book_name())
                if book_name ==book_object.get_book_name():
                    Library.book_in_library.append(book_object)
                    del Library.out_library[book_object]#删除出借记录
                    with open(r'C:\Users\何发奋\Desktop\Python 习题\instance\book_library.txt','wb') as fp:
                        p.dump(Library.book_total_library,fp)
                        p.dump(Library.book_in_library,fp)
                        p.dump(Library.out_library,fp)
                    print('还书成功!')
                    print()
                    return
                    #如果查到对应的借出记录,则记录归还记录
            else:
                print('未查到借阅记录,请确认是否是在本馆借的书')
                print()
                #如果未查到对应的借出记录不做操作

    3.4查询功能,查书功能分3种,查询本馆所有的图书;查询本馆在库图书;查询本馆已被出借图书

    def info_all(self):#所有书籍
            import pickle as p
            if Library.book_total_library:
                print('*'*80)
                for item in Library.book_total_library:
                    item.get_bookinfo()
                    print('-'*80)
                print(' '*80)
        def info_ready(self):#在库书籍
            if Library.book_in_library:
                print('-'*80)
                for item in Library.book_in_library:
                    item.get_bookinfo()
                    print('-'*80)
                print(' '*80)
            else:
                print('当前无可借书籍')
                print(' '*80)
        def info_borrow(self):#已被出借书籍
            if Library.out_library:
                print('*'*80)
                for item in Library.out_library:
                    item.get_bookinfo()
                    print('-'*80)
                print(' '*80)
            else:
                print('无被借阅记录')
                print(' '*80)

    最后写程序的主体,也就是操作命令如下:

    if __name__ == '__main__':
        #import operator
        while 1:
            command = input('欢迎光临小何图书馆请输入命令:\nadd:增加图书\nborrow:借阅图书\nlend:还书\ninfo_all:查看库中图书列表\ninfo_ready:查看在库图书列表\ninfo_borrow:查看借出图书列表\nsearch:查找图书\nexit:退出\n')
            if command.strip().lower() == 'add':
                exec('xh_library.add()')
            elif command.strip().lower() == 'borrow':
                user_name = input('请输入用户名:')
                book_name = input('请输入书名:')
                temp = 'xh_library.borrow(%s,%s)'%(user_name,book_name)
                print(temp)
                exec('xh_library.borrow("%s","%s")'%(user_name,book_name))
            elif command.strip().lower() == 'lend':
                book_input = input('请输入要还的书名:')
                exec('xh_library.lend("%s")'% book_input)
            elif command.strip().lower() == 'info_all':
                exec('xh_library.info_all()')
            elif command.strip().lower() == 'info_ready':
                exec('xh_library.info_ready()')
            elif command.strip().lower() == 'info_borrow':
                #print('catch')
                exec('xh_library.info_borrow()')
            elif command.strip().lower() == 'exit':
                break

    尚未完全完善,待后续更新!

    转载于:https://www.cnblogs.com/hyj691001/p/10552029.html

    展开全文
  • 我这博文怎么要审核那么久,管理员哥哥 图书管理 读者管理 借阅管理 系统设置 那么系统可以按逐个功能模块的去分析构建。 从图书管理开始。

    首先我要构造一个导航条,上面需要有图书馆后台能够管理的所有功能模块。

    从最基本的开始,导航条需要有读者管理、图书管理,这是两种客观对象。由两种客观对象之间的关系,又产生了图书借阅管理,最后还要有一个都会有的系统设置。

    所以基本的导航应该是如下:

    图书管理 读者管理 借阅管理 系统设置


    那么系统可以按逐个功能模块的去分析构建。

    从图书管理开始。

    图书管理主要是用来统计存了多少本什么类型的书。也就是说,要维护一个由专门保存图书记录的数据表。

    而对这个数据库的增删改查,就分别形成了,添加书目、删除书目、修改书目、查询书目四个功能模块。

    添加书目开始,当然需要一个独立的页面。因为要输入的内容太多了。

    而删除书目,则可以在主页中直接实现。

    修改书目也需要一个独立的页面。

    查询可以在主页中直接实现。

    再具体到添加书目的实现。

    这个独立页面就相当于书目的注册页面了。

    这个时候需要同时确定这个数据表的表结构了。

    那么如何确定哪些关键字需要存储呢?

    当然是需要被使用到的字段。

    那么使用者有两类人。

    第一类是读者,读者不管是借书还是还书都只需要书名、作者、出版时间就可以了。

    第二类是图书馆管理员,管理员会增加和删除书库,可用编号来确定每一本书,即条形码

    当然分下来书的基数太大了,所以我们可以很自然的对图书进行分类管理,也就是加一个图书类型字段。有时候可以视情况而定,看需不需要在分类里再增加子类。

    好的,暂且确定下来的基本表结构为:

    bookname author printtime barcode booktype
    char(100) char(100) date() int(20) char(100)

    (数据类型是瞎定的,有待优化。)

    创建的时候会发现还需要确定一个主键,主键必须要能唯一确定一项表内容,暂时定条形码吧。这个是肯定可以的。

    create table books(
     bookname varchar(100),
     author varchar(100),
     printtime date,
     barcode primary key not null,
     booktype varchar(100));

    OK,表创建好了,下一步是创建一个提交的页面。命名为books_add.php

    <html>
    	<head>
    		<title>添加书目信息</title>
    	</head>
    	<body>
    		<form action = "books_add_ok.php" method = "POST">
    		<label>书名</label>
    		<input type = "text" name = "bookname"></input></br>
    		<label>作者</label>
    		<input type = "text" name = "author"></input></br>
    		<label>出版时间</label>
    		<input type = "text" name = "printtime"></input></br>
    		<label>条形码</label>
    		<input type = "text" name = "barcode"></input></br>
    		<label>书目类型</label>
    		<input type = "text" name = "bookname"></input></br>
    		<button type = "submit" >提交</button>
    	</body>
    </html>

    ok,一个不能再简单的表单好了。

    出现了一个问题,php的插入代码其实我可以在本页内就直接实现。

    那么要不要Post到其他php文件还是直接在本页内实现呢?

    手上的案例是分离的,也许是因为前后代码分离更方便阅读的原则吧。

    那我们也这样咯。需要一个books_insert.php文件。

    这个时候发现一个问题,光看文件名books_insert与books_add完全看不出是什么关系啊。这个命名不好。

    我需要能从文件名上就能看出彼此逻辑关系的命名方式。所以,books_insert.php改名为books_add_ok.php。

    <?php
    	include "conn/conn.php";
    	$bookname = $_POST['bookname'];
    	$author = $_POST['author'];
    	$printtime = $_POST['printtime'];
    	$barcode = $_POST['barcode'];
    	$booktype = $_POST['booktype'];
    	mysql_query("insert into books (bookname,author,printtime,barcode,booktype)values('$bookname','$author','$printtime','$barcode','$booktype')");
    ?>
    ok,还需要一个链接数据库的文件,conn/conn.php;

    <?php
    	$con = mysql_connect("localhost","root","") or die(mysql.error());
    	mysql_select_db("mylibrary",$con);
    	mysql_query("set names gb2312");
    ?>
    Ok,整个后台已经完成了,我们迫不及待的要测试一下了!



    测试成功了!不过以上都是基础,没有做任何程序健壮性方面的改进。不过我们先整体搭建框架,后面再做这些细化工作吧。

    下一步是修改模块。

    修改跟添加非常类似。甚至可以直接采用添加模板稍微修改一个title就行了啊!

    为了偷懒我决定这么做了。

    靠,不行。我不能全部字段都重新写啊,那跟添加没区别了,我至少得确定一个字段,然后修改其他字段,这才叫修改啊。

    选中一个字段提交修改表单-〉查询出该条记录-〉更新修改字段。

    Ok,我们先考虑实现第一步,如何实选中一个字段提交修改表单?

    显然,我们需要把所有书目列出来啊。那么做一个页面,列出所有书目。

    Ok,books.php

    <html>
    	<head>
    		<title>图书管理</title>
    	</head>
    	<body>
    		<table>
    			<tr>
    				<th>书名</th>
    				<th>作者</th>
    				<th>出版时间</th>
    				<th>条形码</th>
    				<th>书目类型</th>
    				<th>操作设置</th>
    			</tr>
    			<?php
    				include "conn/conn.php";
    				$sql = mysql_query("select * from books;");
    				$info = mysql_fetch_array($sql);
    				if($info == false){
    					echo "No books!";
    				}else{
    				do{
    			?>
    			<tr>
    				<td><?php echo $info['bookname'];?></td>
    				<td><?php echo $info['author'];?></td>
    				<td><?php echo $info['printtime'];?></td>
    				<td><?php echo $info['barcode'];?></td>
    				<td><?php echo $info['booktype'];?></td>
    				<td><a href = "books_modify.php?barcode=<?php echo $info['barcode']?>">
    				修改</a></td>
    				<td><a href = "books_delete.php?barcode=<?php echo $info['barcode']?>">删除</a></td>
    				<!--选中某一元素,只需要在本轮遍历的时候输出他的key就可以了,这次没有通过表单提交,而是直接通过url传递参数。获取则需要使用$_GET['传递值']-->
    			</tr>
    			<?php
    				}while($info = mysql_fetch_array($sql));  //误写成了while(mysql_fetch_array($sql));这样不会遍历,只会每次都输出第一组数据.
    				}
    			?>
    		</table>
    	</body>
    </html>

    OK,其中采用了url来传递被选中的值。测试了一下,我们可以点击修改按钮,然后就跳到books_modify.php页面,同时参数barcode也被传过去了

    下面是books_modify.php的代码

    <html>
    	<head>
    		<title>修改书目信息</title>
    	</head>
    	<body>	
    		<?php
    			$barcode = $_GET['barcode'];
    			include "conn/conn.php";
    			$sql = mysql_query("select * from books where barcode = $barcode");
    			$info = mysql_fetch_array($sql)//即便我只查一条,我也用这个方法了。
    		?>
    		<form action = "books_modify_ok.php" method = "POST">
    		<label>书名</label><input type ="text" name ="bookname" value = "<?php echo $info['booktype'];?>"></br>
    		<label>作者</label>
    		<input type = "text" name = "author" value = "<?php echo $info['author'];?>"></input></br>
    		<label>出版时间</label>
    		<input type = "text" name = "printtime" value = "<?php echo $info['printtime'];?>"></input></br>
    		<label>条形码</label>
    		<input type = "text" name = "barcode" value = "<?php echo $info['barcode'];?>"></input></br>
    		<label>书目类型</label>
    		<input type = "text" name = "bookname" value = <?php echo $info['booktype'];?>></input></br>
    		<button type = "submit" >提交</button>
    	</body>
    </html>

    通过$_GET['barcode']获取了传递过来的barcode值,然后我查询这条记录的其他内容,将其作为默认显示(设置为input中的value的值)。

    然后用户修改内容之后,点击提交,我们就调转到了books_modify_ok.php的后台功能实现页面了。

    在这之前,需要明确一个问题。

    修改,是我选中一个记录之后,去修改这个记录的字段。

    那么有两个问题:第一,我通过什么字段来选中这条记录呢?第二,我能修改哪些字段?

    如果我都能修改我选择的字段,那就不叫修改了。那是新建啊!

    所以我必须要用一个字段来锁定他能修改的内容,不能随便篡改。这个字段必须具备唯一性。

    书名可以吗?说明如果唯一的话,是最好的啊。

    那么实际情况的修改图书信息是怎样的呢?

    我手上的这个图书馆的例子,是根据一个隐式的id作为主键来确认的,如果是这样的话,那完全可以可以当作新建功能来用啊。

    因为id属性不可见,你修改一个,跟创建一个。在看起来是一模一样的。

    所以我决定条形码。条形码可见且唯一。

    books_modify_ok.php代码如下:

    <?php
    <span>	</span>include "conn/conn.php";
    <span>	</span>$barcode = $_GET['barcode'];
    <span>	</span>$bookname = $_POST['bookname'];
    <span>	</span>$author = $_POST['author'];
    <span>	</span>$printtime = $_POST['printtime'];
    <span>	</span>$booktype = $_POST['booktype'];
    <span>	</span>$sql = mysql_query("update books set bookname = '$bookname',author = '$author',printtime = '$printtime',booktype = '$booktype' where barcode = '$barcode';");
    <span>	</span>echo "<script language='javascript'>alert('图书信息修改成功!');history.back();</script>";
    ?>

    OK,测试成功。

    下一步是处理删除。books_delete.php。

    <?php
    	$barcode = $_GET['barcode'];
    	include "conn/conn.php";
    	$sql = mysql_query("delete from books where barcode = '$barcode';");
    	echo "<script language='javascript'>alert('图书信息删除成功!');history.back();</script>";
    ?>
    OK。最后一个处理的是查询。

    查询有些特殊:

    第一,因为主页本身就是一个查询结果,也就说我的查询结果,会需要更改主页,也就是在本页做修改。

    第二,因为查询可以根据不同字段进行查询,所以需要在主页做一个选择标签来接受查询字段。

    同时,在主页加一个链接,作为增加书目的入口,一并对主页进行修改。

    修改之后的books.php如下

    <html>
    	<head>
    		<title>图书管理</title>
    	</head>
    	<body>
    		<form method = "POST" action = "">
    		<select name = "searchtype">
    			<option value = "bookname">书名</option>
    			<option value = "author">作者</option>
    			<option value = "printtime">出版时间</option>
    			<option value = "barcode">条形码</option>
    			<option value = "booktype">书目类型</option>
    		</select>
    		<input name = "key" type = "text"></input>
    		<button type = "submit">提交</button>
    		<a href = "books_add.php">增加书目</a>
    		</form>
    		<table>
    			<tr>
    				<th>书名</th>
    				<th>作者</th>
    				<th>出版时间</th>
    				<th>条形码</th>
    				<th>书目类型</th>
    				<th>操作设置</th>
    			</tr>
    			<?php
    				include "conn/conn.php";
    				$f = $_POST['searchtype'];
    				$key = $_POST['key'];
    				$sql = mysql_query("select * from books;");
    				$info = mysql_fetch_array($sql);
    				if($info == false)
    					echo "No books!";
    				else if($info == true){
    					if($key ==""){
    				do{
    			?>
    			<tr>
    				<td><?php echo $info['bookname'];?></td>
    				<td><?php echo $info['author'];?></td>
    				<td><?php echo $info['printtime'];?></td>
    				<td><?php echo $info['barcode'];?></td>
    				<td><?php echo $info['booktype'];?></td>
    				<td><a href = "books_modify.php?barcode=<?php echo $info['barcode']?>">
    				修改</a></td>
    				<td><a href = "books_delete.php?barcode=<?php echo $info['barcode']?>">删除</a></td>
    			</tr>
    			<?php
    				}while($info = mysql_fetch_array($sql)); 
    				}else{
    					$sql = mysql_query("select from books where '$f' like '$key$';");
    					$info = mysql_fetch_array($sql);
    					if($info == false)
    						echo "没有找到相关记录!";
    					else{
    				do{
    			?>
    			<tr>
    				<td><?php echo $info['bookname'];?></td>
    				<td><?php echo $info['author'];?></td>
    				<td><?php echo $info['printtime'];?></td>
    				<td><?php echo $info['barcode'];?></td>
    				<td><?php echo $info['booktype'];?></td>
    				<td><a href = "books_modify.php?barcode=<?php echo $info['barcode']?>">
    				修改</a></td>
    				<td><a href = "books_delete.php?barcode=<?php echo $info['barcode']?>">删除</a></td>
    			</tr>
    			<?php	
    				}while($info = mysql_fetch_array($sql));
    				}
    				}
    				}
    			?>
    		</table>
    	</body>
    </html>
    点进添加页面进行添加书目。这个时候发现,添加可以成功,但是都没有返回主页的选项。总不能一直添加吧,非常不合理。

    所以修改books_add.php页面,加入一个返回书目主页(books.php)的按钮。

    同理可知books_modify.php页面,也需要加入一个返回书目主页的按钮。

    以后所有的主页分出来的功能页面,都要考虑一个返回按钮。

    books_add.php

    <html>
    	<head>
    		<title>添加书目信息</title>
    	</head>
    	<body>
    		<form action = "books_add_ok.php" method = "POST">
    		<label>书名</label>
    		<input type = "text" name = "bookname"></input></br>
    		<label>作者</label>
    		<input type = "text" name = "author"></input></br>
    		<label>出版时间</label>
    		<input type = "text" name = "printtime"></input></br>
    		<label>条形码</label>
    		<input type = "text" name = "barcode"></input></br>
    		<label>书目类型</label>
    		<input type = "text" name = "booktype"></input></br>
    		<button type = "submit" >提交</button>
    		<input name="Submit2" type="button" value="返回" onClick="history.back();">
    	</body>
    </html>

    books_modify.php

    <html>
    	<head>
    		<title>修改书目信息</title>
    	</head>
    	<body>	
    		<?php
    			include "conn/conn.php";
    			$barcode = $_GET['barcode'];
    			$sql = mysql_query("select * from books where barcode = $barcode");
    			$info = mysql_fetch_array($sql)//即便我只查一条,我也用这个方法了。
    		?>
    		<form action = "books_modify_ok.php?barcode=<?php echo $barcode?>" method = "POST">
    		<label>书名</label>
    		<input type ="text" name ="bookname" value = "<?php echo $info['booktype'];?>"></input></br>
    		<label>作者</label>
    		<input type = "text" name = "author" value = "<?php echo $info['author'];?>"></input></br>
    		<label>出版时间</label>
    		<input type = "text" name = "printtime" value = "<?php echo $info['printtime'];?>"></input></br>
    		<label>条形码:<?php echo $info['barcode'];?></input></label></br>
    		<label>书目类型</label>
    		<input type = "text" name = "booktype" value = <?php echo $info['booktype'];?>></input></br>
    		<button type = "submit" >提交</button>
    		<input name="Submit2" type="button" value="返回" onClick="history.back();">
    		</form>
    	</body>
    </html>

    以上,基本实现了所有的关于书目管理的所有基本功能。


    展开全文
  • 01学生工作管理系统学生工作管理系统(学工系统)常用功能(1)学生资助:贫困生认定申请时,会在统一时间开放填写,家庭信息一步到位,方便学校调查了解。(2)评奖评优:奖学金申请就在这里!各项奖学金后面都有申请的...
  • 图书馆管理系统

    2020-10-18 15:03:37
    这是大三时一个图书馆管理系统,当时学Java才一个学期,只懂点皮毛。 加上也没有软件项目的经验,所以起来很吃力。不过最终出来的效果还是不错的,所要的功能基本上都实现了,整个系统也比较漂亮。当然了,...
  • JavaWeb图书馆管理系统

    千次阅读 2020-04-27 22:02:06
    博主一个JavaWeb图书馆管理系统 前台: 用户登录 书籍推荐(按照借阅数量) 新书推荐 书籍类别查看 公告查看 添加书籍评论 查看个人借阅信息 后台: 管理员登录修改个人信息 书籍类别管理 书籍管理 书籍借阅 书籍...
  • 接下来,是书本与读者之间借阅关系的管理。...假设我是管理员,我管理对象:书、读者。 我会想知道,这读者能借多少本书,目前还有多少书未还,累计借过多少书。当然,还要知道他借书的时间,好确定
  • 老师要求做一个数据库管理系统,虽然数据库课上讲了很多知识,不过操作起来,关于软件,语言等等可以说是一点也没提,只好自己从头摸索,走了很多弯路,现在回头看看自己做好的系统发现真的是不忍直视,自己摸索了一...
  • 现在开始我们的第二模块:读者管理模块。
  • 用的是struts2 + spring,做好之后,每次只能一个人登上去,下一个人登陆后,前一个人就被挤掉了,当管理员登陆后,普通用户就登不上了
  • 基于JSP的图书馆管理系统

    千次阅读 2019-06-21 16:18:22
    基于JSP的图书馆管理系统 学校要求做一个图书馆管理系统做的头昏,终于做完了。希望分享出来给需要的孩子们。这是我自己写的代码有问题欢迎留言 ...
  • 为了更好的对读者进行管理,我们需要再加一个读者类型管理模块。 目的是为了给不同的读者,不同的权限。 那么读者的权限包括什么呢? 1、借书数量不同 2、借阅保存时间不同 暂时就这两种了。 所以读者类型表的...
  • 一个用C语言图书馆管理系统,程序比较简单,没有连接数据库,也没界面,适合大一大二程序大作业时作参考。
  • C++一个图书馆管理系统,项目已经完成,包含图书馆管理系统的基本功能,也支持添加其他功能,此软件能完美运行,适合大学生毕业设计,课程设计
  • 能读懂说明不了问题 小学我也能读懂别人优秀的作文 但是我写不出 如今我能读懂三体这部小说 然而我仍然写不出别人学一个月成就和自己一个月成就不一样,很正常,别人有没有计算机基础,有没有其他编程语言基础,这些...
  • 这是Java Web 2.0的一个项目,是一个图书馆管理系统,功能齐全,该有的基本都有,开发技术是Struts+MySQL,通过JDBC连接数据库,难得的是界面的十分出色,比起一般学生的只有功能界面丑陋的图书馆管理系统好多了...
  • 对于一个初学python以及用它来web开发的学生来说,独立做出一个完整的图书管理系统,稍微有点难度。但由于python有众多web开发的框架,以及框架中对API以及前后端+数据库的友好支持,又算不上很难,比如用Flask + ...
  • 对于一个初学python以及用它来web开发的学生来说,独立做出一个完整的图书管理系统,稍微有点难度。但由于python有众多web开发的框架,以及框架中对API以及前后端+数据库的友好支持,又算不上很难,比如用Flask + ...
  • )主要是学生管理系统什么的的人太多了,所以随便选了一个题材 2.界面展示 (数据随便插的勿喷) 3.所用控件 datagridview输出数据,combobox作为选项卡,linklabel超链接。 4.代码分析并展示各控件的作用 4.1 ...
  • JAVA实现图书馆管理系统

    千次阅读 2020-03-15 17:58:48
    于是综合这些内容一个图书馆管理系统。 为了提高实用性,图书管理体统分为: 1、管理员管理图书系统,可以增删改查功能; 2、学生用户系统,可借书还书。 登录 模拟平时常见的登录系统,选择登录权限(管理者...
  • 想找一个简单的——图书馆管理系统(ASP ACCESS )。不知道要怎么?。。需要有(用户管理、图书发布和借阅)
  • 图书馆管理系统总结

    2018-07-06 17:29:50
    总结在几周的学习与探索中,终于完成了图书馆管理系统,虽然最后的成果不是十分完美,但自己同样学到了很多。初学c++,第次作系统,可以允许自己得不是那么好。但仍要不断的鞭策自己进步,把写得不好的代码...
  • 你是否对图书馆有过这样一种期待:一个有着海量存储的智慧书房、精选的畅销和经典书籍、有声读物、报纸期刊,都在你的掌握之中,给你自由的花式阅读体验,不仅如此,还有视听欣赏区供你在休闲时聆听各类视频音乐。...
  • 又到了毕业季,不少软件专业的学生毕业都需要做一个课程设计,我也不例外,由于个人在上学期间有些许的项目实战经验,所以比较不怕这种要求,为了使得课程设计更有意义,我决定把课程设计的详尽过程都记录下来...
  • 普大图书馆管理系统款非常实用的图书馆信息管理软件。软件针对图书馆的业务内容及特点而设计,业务操作符合图书馆管理制度,广泛应用于各级学校和各企事业单位对内部图书馆的管理,能够实现,对图书馆各类信息...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 310
精华内容 124
关键字:

做一个图书馆管理系统