精华内容
下载资源
问答
  • java小系统 数据库 图书馆

    千次阅读 多人点赞 2016-04-21 17:46:20
    图书管理系统  目录 第一章 研究前提................................................................................1 第二章 系统分析................................................................

                         图书管理系统

                             目录

    第一章 研究前提................................................................................1

    第二章 系统分析................................................................................3

    第三章 数据库分析............................................................................5

    第四章 系统详细设计与具体实现....................................................8

    第五章 收获与体会............................................................................14

    第六章 系统源代码............................................................................15

    参考文献

     

     

     

     

     

     

     

     

     

     

     

     

     

                        第一章

                       研究前提

    一:目的及要求

      1:下载并了解jdk1.8

      2:下载并且学会安装Microsoft SQL Server 2008数据库

      3:下载并安装eclipse 8.0 java开发工具

      4:掌握数据库的连接,了解java开发工具,熟悉java开发运行环境,学会用java编写项目,知道如何搭建系统框架,通过这个系统培养我们的眼光以及用java开发项目的兴趣

    附加:

      Jdk下载地址:Oracle官网”www.8u10-windows-i586.exe”

     http://java.sun.com/javase/downloads/index.jsp  

      Microsoft SQLServer 2008地址:CMDN开源社区

      Eclipse 8.0下载地址:http://www.eclipse.org

     二:研究环境

       JDK1.8    SQL server 2008  eclipse 8.0 windows 8.0操作系统  PC

     三:研究环境搭建

    JDK

      说明一下要找到适合自己操作系统的安装包,下载完安装包后解压到指定安装路径。直接点击exe可执行程序,安装到你指定的路径,                   如果没有特殊要求,一般默认安装到C:\Program Files\Java目录下。

      JDK环境配置,由于JDK提供的编译与运行都是基于命令行的,所以应该进行一下DOS下面的一个设定,把JDK安装目录的bin添加到DOS的外部命令中,这样就可以直接运用bin目录下的exe程序。

      配置步骤:开始->设置->控制面板->系统(或者在我的电脑 右键选择属性。系统->高级->环境变量。在环境变量窗口中,选择系统变量中变量名为PATH的环境变量,双击该按钮。把JDK安装路径中的bin目录的绝对路径,添加到PATH变量的值中,并且用半角的分号和已有路径进行分隔。

      检测jdk是否安装成功。

      开始->程序->附件->命令提示符(windows+r) 在命令行中输入javac,并回车执行。如果输出的是使用说明,则配置成功,否则重新配置环境。

    eclipse使用说明

      Eclipse是一个开源,免费的集成开发工具。

      Eclipse的安装很简单,只要解压到任意路径下就行,要说明的是安装eclipse前先安装jdk。

    然后,关于eclipse的使用,依次需要我自己去实践,比如

                                   1

    project->package->class 等等,重要的是去如何运行,调试,熟悉jdk1.6 API

    文档说明也是必要的。

    SQL server 2008说明

      1.1SQL server 2008数据库是一个非常好的工具。数据库安装是一个煎熬的过程,它对于新手来说是一个比较耗时的。

    注释:SQL Server 2008是一个重大的产品版本,它在Microsoft的数据平台上发布,帮助用户的组织随时随地管理任何数据。它可以将结构化、半结构化和非结构性文档的数据(例如图像和音乐)直接存储到数据库中。SQL Server 2008 提供一系列丰富的集成服务,可以对数据进行查询、搜索、同步、报告和分析之类的操作。数据可以存储在各种设备上,从数据中心最大的服务器一直到桌面计算机和移动设备,用户可以控制数据而不用管数据存储在哪里。

      安装方法建议直接百度SQL server 2008安装过程的图示步骤。(这里就不再说明具体注意事项)    尽管安装成功,还需要进行一些补丁。

     1.2 在连接数据库之前必须保证SQL Server 2008是采用SQL Server身份验证方式而不是windows身份验证方式。如果在安装时选用了后者,则重新设置如下:

    http://blog.163.com/jackie_howe/blog/static/19949134720122261121214/

     1.3 安装好SQL Server 2008后,运行开始→所有程序→Microsoft SQL Server 2008→配置工具→SQL Server配置管理器,在打开的窗口的左边找到MSSQLSERVER的协议,在右边右单击TCP/IP,选择已启用。如果Named Pipes 未启用也设为启用。右边的 TCP/IP,在弹出的窗口中选择IP地址标签,把IPAll中的 TCP端口 设成 1433,并将上方所有的已启用选项设置成是。

     1.4 然后重启数据库,重启完毕后,接下来使用命令测试1433端口是否打开。

    开始菜单→运行cmd→在命令提示符下输入:telnet 127.0.0.1 1433(注意telnet与127之间有空格,1与1433之间有空格)若提示“不能打开到主机的连接,在端口1433: 连接失败”,则说明1433端口没有打开,需要重新进行以上配置。

    如何实现eclipse与数据库SQLserver2008 的连接

      2.1 为使各个小程序都能连接在一起,需使用JDBC连接数据库,包括安装ODBC驱动,连接数据源。所以,需要下载驱动程序工具。

    Microsoft JDBC Driver for SQL Server

    http://www.microsoft.com/zh-cn/download/details.aspx?id=11774

    上面为下载地址。

     2.2 在环境变量中配置JDBC Driver,方法与配置jdk类似,这里不再重述。

     2.3 检测是否可以通过eclipse加载驱动数据库

       2.3.1打开SQL Server 2008,在其中新建数据库 Test

       2.3.2运行Eclipse,新建一个Java Project 名为 Test      

       2.3.3  右击工程名

    Build Path→Configure Build Path,在打开的窗口的右边选Libraries标签,然后单击 Add External JARs,找到sqljdbc4jar文件并打开,然后单击

                                   2

    OK完成构建路径的配置

    最后,进行程序设计,使eclipse成功加载驱动数据库

      在test中建立一个名为package的包,源代码如下:

    package pkg;
    import java.sql.*;
    public class Main {
    public static void main(String [] args)
     {
      String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
      String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=创建的数据库名";
      String userName="数据库登录名";
      String userPwd="登录密码";
     try
    {       Class.forName(driverName);
            System.out.println("加载驱动成功!");
    }catch(Exception e){
            e.printStackTrace();
            System.out.println("加载驱动失败!");
    }
    try

    {

    Connection dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
    System.out.println("连接数据库成功!");
    }catch(Exception e)
    {e.printStackTrace();                   

    System.out.print("SQL Server连接失败!");}                                     }

    }

    直到出现 加载驱动成功! 连接数据库成功!

                             

                          第二章

                         系统分析

      针对现有的图书馆管理系统,我们设计简单的图书系统,以用来满足我们基本的需求。  业务流程:

     

     

                                  3

        用户登录

     

      

     

     

     

     

     

                                                        No

     

     

     


       显示主界面

     

     

    管理

     

    帮助

     

     

     

     

     

                                 Yes

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

                                      

    针对业务流程,现在描述其功能如下:

    1.用户登录 系统对其用户的合法性进行检查。

    2.扩充书库 对新购进的书进行编号,并且把基本信息录入计算机,存储于数据库,易于形成表,并对表进行处理。

    3.系统管理 更改界面,退出系统。

    4.用户管理 更改用户密码,查询用户。

    5.图书预览 查询图书管理系统的库存,及其图书信息

                                   4

    6.图书查询 查询图书管理系统是否存在该图书

    7.帮助 使用指南,关于系统介绍,作者信息 版权所有

    8.图书管理 删除用户等等操作

    数据分析

      根据系统的基本原理,详细设计分析所需功能,对目标进行精确的概述,从而把实现目标进行转换java语言,进行系统思想转换。详细的源代码见第六章系统源代码。

                          第三章

                        数据库分析

    E-R关系图

    学生用户

     

      图书资料

     

                       

                    1                     n              

     

                               

      用户

     

    设计表

      实体型--->                      

    用户名

     

    密码

     

     

    属性----->

     

    图书信息

     

    实体型--->

     

     

     

     


    dbo.Table_book表

                               5

    SELECT     TOP (200) 图书名, 图书号, 单价, 作者, 出版社, 入库时间

    FROM       Table_book

    ORDER BY 作者

    dbo.Table_user表

    SELECT     TOP (200) 用户名, 密码

    FROM         Table_user

    表的相关信息                      

     

                                                 

                 

           

                                         6

                                         

     

     

     

    数据表dbo.Table_book

     

     

    数据表dbo.Table_user

                                7

                                    

                          第四章

                   系统详细设计与具体实现

    系统的功能分析与详细设计

      本系统的具体实现目标

    ·界面简单 友好 美观 画面感强

    ·操作简单 快捷方便 信息分类清晰准确 数据灵活查询

    ·数据存储安全 可靠

    ·对于用户输入的数据 进行严格检查 排除人为因素

     操作说明:

    系统用户名 sa 密码 123

     

                                    8

    操作流程:

    1 选择系统管理/更改主题按钮,在弹出的窗体中进行对界面更换

    2 选择系统管理/退出系统按钮,将要退出图书管理系统

    3 选择图书预览/预览图书按钮,在弹出的窗体中进行查看库存

    4 选择图书管理/删除操作按钮,在弹出窗体中进行操作

    5 选择扩充图书/新书登记按钮,在窗口中添加新书信息

    6 选择查询/查询图书操作按钮,在窗口中进行操作

    7 选择用户管理/更改密码按钮,在窗体中进行更改密码操作

    8 选择帮助/关于作者按钮,显示作者信息;帮助/关于系统按钮,显示系统相关信息;帮助/使用指南按钮,显示操作指南。

    系统的具体实现

    登录界面

     

     

     

     

    主界面

     

                              9

    系统管理系统/更改主题/睿智深灰

     

    图书预览

                                 10

    图书删除

       

                                  11                       

    扩充图书

                       

    图书查询

    用户管理/更改密码

                             12

                    

    关于作者

                    

    关于系统

              

    使用指南

                    

                                       13

                              第五章

                      收获与体会

    收获与体会

      本人自从开始接触java,对其兴趣浓厚,然而其学习路途并不是很顺利,尤其是到用数据库安装和用java连接数据库时,其中遇到的困难很多,当时觉得太难了,现在回过头来看,其实还好。一切都是值得的,因为在用java做这个图书管理系统过程中收获挺多,自己进一步了解与入门java。

      通过对java的学习,以及应用eclipse开发工具,我们初步了解通过编程实现企业图书管理的主要核心,实现一个简单图书管理系统。

      系统在调试过程中基本调试了当初的设计要求,设计合理,功能较为完善,目前可以做到查询,改密码,添加,删除,修改等等基本操作。其中程序源代码我将会在在附录中给出,相信大家通过源代码会进一步对编程思想有更深的了解。在这个页面设计中,也有许多的不足,页面设计较为简单,不够精致,美观。                        

      由于学习java的时间较短和使用java编程的能力有限,我们设计的图书管理系统只能完成几个简单的基本功能,还存在很多问题需要我们亟待解决,系统设计的不精致同时存在着许多不足与缺陷,还需要我们进一步完善。

      根据目前大二的我以及对IT的了解,可以使用jsp进行网页界面的设计,使用MVC设计模式,采用开源框架Struts,使之具有开发效率高、设计灵活、生成的软件界面友好美观等特点。

      在弄图书管理系统之前,我参阅了大量的图书设计文献,对所开发系统的现状,发展情况以及未来发展趋势有了深入的了解;在整个系统的需求分析过程中对开发前期工作的流程步骤有了深入的掌握;在开发过程我进一步学习了Java的基础语法和一些HTML网页设计方面的知识,以便使系统有更好的美观性,在编写过程中也规范了许多编码习惯。

      在整个系统开发的过程中,我学到了很多新的知识,以前学过的许多知识点在运用过程中也有了更为深入的分析,这是我大一到大二期间做过的规模最大的系统,在这个过程中也体会到了如何将书本知识转化到实际的应用中。

     

                                       14

                               第六章

                     系统源代码

    登录源代码Login类

    package pk;//login类所在的包

    import java.sql.*;//包含实现java程序与操作系统以及其他java程序之间进行数据交换的类 

    import java.awt.*;//包含创建用户界面与绘制图形的类

    import java.awt.event.*;//事件处理所在的类

    import javax.swing.*;//包含轻量级组件

    @SuppressWarnings("deprecation")

    public class Login extends JFrame implementsActionListener//登录界面login类继承JFrame类实现ActionListener接口

    {

           privatestatic final long serialVersionUID = 1L;//序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。

           Containercp=null;//定义空集合

           JFramef=null;//定义容器

           JButtonj1,j2;//定义按钮

           JTextFieldname;//文本框 用于存储用户名

           JPasswordFieldpwd;//密码框 用于存储密码

           JLabeljlabel1,jlabel2;//用于短文本字符串或图像或二者的显示区 标签

           Color c;//定义颜色

           JPaneljp1,jp2;//JPanel 是一般轻量级容器中间容器

           Login()//实现登入界面

           {

           f=newJFrame("小型图书馆管理系统");//显示"小型图书管理系统"的标题

           j1=newJButton("登录");//显示按钮登录

           j2=newJButton("取消");//显示按钮取消

           cp=f.getContentPane();//返回窗体的 contentPane对象

           jlabel1=newJLabel(" 用户 ");//显示用户

           jlabel2=newJLabel(" 密码 ");//显示密码

           jp1=newJPanel();//面板1

           jp2=newJPanel();//面板2

           name=newJTextField(19);//设置用户名长度大小

           pwd=newJPasswordField(19);//设置密码长度大小

           jp1.add(jlabel1);

           jp1.add(name);

           jp1.add(jlabel2);

           jp1.add(pwd);//以上分别把标签1 用户名 标签2 密码添加到面板1

    JLabel JL=new JLabel("<html><fontcolor=red size='6'><i>欢迎登陆图书馆

                                       15

    </i></font>",SwingConstants.CENTER);

    //定义标签JL 将JL中的内容添加到某区域的中心位置。用于罗盘方向常量                       

    (NORTH 等)和框方向常量(TOP 等)。

    //"<html><font color=red size='6'><i>欢迎登陆图书馆</i></font>"

    //规定文本的字体、字体尺寸、字体颜色  color->颜色  size->字体  <i>标签显示斜体文本效果

    cp.add(JL,"North");//将JL添加到NORTH

    jp2.add(j1);//将按钮登录添加到面板2

    jp2.add(j2);//将按钮取消添加到面板2

    cp.add(jp1,"Center");//将面板1添加到Center

    cp.add(jp2,"South");//将面板2添加到South

    jp1.setBackground(new Color(245,211,155));//label颜色  面板1设置背景   三色板调制颜色

    Toolkit kit=Toolkit.getDefaultToolkit();//

    Dimension screen=kit.getScreenSize();//

    int x=screen.width;//设置窗口的宽度

    int y=screen.height;//设置窗口的高度

    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("com.microsoft.sqlserver.jdbc.SQLServerDriver");

                  //连接数据库

           }

           catch(ClassNotFoundExceptione)

           {

                         System.out.println("加载驱动程序出错");//加载异常}

                                      16    

    try   

    {

           Stringdbuser = "sa";//数据库登录名

           Stringdbpwd = "123";//数据库登录密码

           Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";

           //直接使用当前类目录所在的数据库文件

           Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);

           //连接数据库

           Statementsql=con.createStatement();

           Stringuname=name.getText().trim();

           StringMima=pwd.getText().trim();

           StringqueryMima="select * from dbo.Table_user where 用户名='"+uname+"' and 密码='"+Mima+"'";

           //操作数据库的语句从dbo.Table_user表中获取用户名和密码

           ResultSetrs=sql.executeQuery(queryMima);

           if(rs.next())

           {

                  newBook(uname);//登录密码正确  则进入主框架 主登录界面

                  f.hide();

                  con.close();

           }

           else

           {

                  JOptionPane.showMessageDialog(null,"该用户不存在","提示!",JOptionPane.YES_NO_OPTION);

           }

           //如果不存在该用户则抛出用户不存在

           name.setText("");

           pwd.setText("");//重置用户名 密码框

           }

           catch(SQLExceptiong)

           {

                  System.out.println(g.getErrorCode());

                  System.out.println(g.getMessage());//异常问题的处理

           }

    }

           publicvoid actionPerformed(ActionEvent e)

           {

                  Stringcmd=e.getActionCommand();

                  if(cmd.equals("登录"))

                  {

                         confirm();//匹配登录按钮

                  }

                                            17

    else if(cmd.equals("取消"))              

    {

                         f.dispose();//匹配取消按钮

                  }

           }

           publicstatic void main(String [] args)

           {

                  newLogin();//程序入口处

           }

    }

    图书登记BookIn类

    package pk;

    import java.sql.*;//包含实现java程序与操作系统以及其他java程序之间进行数据交换的类 

    import java.awt.*;//包含创建用户界面与绘制图形的类

    import java.awt.event.*;//事件处理所在的类

    import java.awt.Container;//包含容器类

    import javax.swing.*;//包含轻量级组件

    public class BookIn implements ActionListener{

           //BookIn类实现接口ActionListener

    JFrame f3;//设置顶级窗口对象

    Container cp;//容器对象

    JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;//创建面板

    JButton jbt1,jbt2;//设置按钮

    JLabel label1,label2,label3,label4,label;//创建标签

    String sno;//创建字符串对象

    JTextField tf1,tf2,tf3,tf4,tf5,tf6;//创建文本框

    BookIn()//BookIn类

    {

           f3=newJFrame("图书信息添加");//设置标题

           cp=f3.getContentPane();//返回ContentPane内容

           jp1=newJPanel();//面板jp1

           jp2=newJPanel();//面板jp2

           jp3=newJPanel();//面板jp3

           jp4=newJPanel();//面板jp4

           jpanelWest=newJPanel();//创建面板jpanelWest

           jp=newJPanel();

           jbt1=newJButton("确定");

           jbt2=newJButton("取消");//创建按钮 内容分别为确定  取消

           label=newJLabel("<html><font color=blue size='6'>新书登记</font>",SwingConstants.CENTER);

           //创建标签  放到中间

                                          18

    label.setForeground(Color.black);//标签设置前景色

           tf1=newJTextField(20);//设置文本框tf1的大小

           tf2=new JTextField(20);//设置文本框tf2的大小

           tf3=newJTextField(20);//设置文本框tf3的大小

           tf4=newJTextField(20);//设置文本框tf4的大小

           tf5=newJTextField(20);//设置文本框tf5的大小

           tf6=newJTextField(20);//设置文本框tf6的大小

           jp1.add(jbt1);

           jp1.add(jbt2);

           JPaneljpanel=new JPanel();

           jpanel.add(label);//面板添加标签 label

           JPanelpp4=new JPanel();

           JPaneljpane4=new JPanel();

           cp.add(jpanel,"North");//面板放置North

           JPanelpp2=new JPanel(new GridLayout(6,1,20,10));//设置为网格布局 容器的水平间距为20 垂直布局间距为10

           JPanelpp3=new JPanel();

           pp4.setLayout(newGridLayout(6,1));//设置容器6行1列

           pp4.add(newJLabel("图书名",SwingConstants.CENTER));

           pp2.add(tf1);

           pp4.add(newJLabel("图书号",SwingConstants.CENTER));

           pp2.add(tf2);

           pp4.add(newJLabel("单 价",SwingConstants.CENTER));

           pp2.add(tf3);

           pp4.add(newJLabel("作 者",SwingConstants.CENTER));

           pp2.add(tf4);

           pp4.add(newJLabel("出版社",SwingConstants.CENTER));

           pp2.add(tf5);

           pp4.add(newJLabel("入库时间",SwingConstants.CENTER));

           pp2.add(tf6);

           //以上分别为将图书名 图书号 单价 作者 出版社 入库时间添加到pp4面板中

           //以上分别为将文本框添加到pp2面板中

           pp3.add(jbt1);

           pp3.add(jbt2);//  分别将按钮添加到面板pp3中

           cp.add(pp4,"West");

           cp.add(pp2,"East");

           cp.add(pp3,"South");

           cp.add(jpane4,"Center");

           //容器中West->pp4 East->pp2 South->pp3Center->jpane4 North->jpanel

           f3.setSize(320,300);//设置顶级窗口大小

           f3.setVisible(true);//设置顶级窗口可视化

           jbt1.addActionListener(this);

                                            19

    jbt2.addActionListener(this);

    }

    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("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    }//连接数据库

           catch(ClassNotFoundExceptione)

    {

                  System.out.println("加载驱动程序出错");

    }

    try

    {

           Stringdbuser = "sa";

           String dbpwd= "123";

           Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";

           Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);

           Statementsql;

           Strings="insert into dbo.Table_bookvalues('"+tf1.getText()+"','"+tf2.getText()+"','"+tf3.getText()+"','"

                         +tf4.getText()+"','"+tf5.getText()+"','"+tf6.getText()+"');";

           String query="select* from Table_book  where 图书号='"+tf2.getText()+"'";

           //查询功能

           sql=con.createStatement();

           ResultSetrs=sql.executeQuery(query);

           booleanmoreRecords=rs.next();//以上数据库操作基本上一样

           if(moreRecords)

           {

                  JOptionPane.showMessageDialog(f3,"图书号已经被使用,请重新输入");

                  con.close();//判断图书号是否已经被用

                  tf2.setText("");//重置图书号

                  return;

           }

           intinsert=sql.executeUpdate(s);

           if(insert==1)

           {

                                          20   

    JOptionPane.showMessageDialog(null,"图书信息录入成功!!!");

                  con.close();

                  tf1.setText("");

                  tf2.setText("");

                  tf3.setText("");

                  tf4.setText("");

                  tf5.setText("");

                  tf6.setText("");//更新数据库,并且重置六个文本框

           }

    }

    catch(SQLException g)

    {

           System.out.println(g.getErrorCode());

           System.out.println(g.getMessage());

    }

    }

    @SuppressWarnings("deprecation")@Override

    public void actionPerformed(ActionEvent e) {

          

           Stringcmd=e.getActionCommand();

           if(cmd.equals("确定"))

           {

                  insertRecord();//匹配按钮事件,调用插入方法

           }

           elseif(cmd.equals("取消"))

           {

                  f3.hide();//退出窗口

           }

    }

    public static void main(String [] args)

    {

           newBookIn();

    }

    }

    更改密码UpdateMima类

    package pk;//代码注释与上面几个类的代码近似一样

    import java.sql.*;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public class UpdateMima extends JFrame implementsActionListener{

           privatestatic final long serialVersionUID = 1L;

                                           21

    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=newJFrame("修改密码");

           cp=f.getContentPane();

           jp1=newJPanel();

           jp2=newJPanel();

           jp3=newJPanel();

           jp4=newJPanel();

           jpanelWest=newJPanel();

           jp=newJPanel();

           jbt1=newJButton("确定");

           jbt2=newJButton("取消");

           label=newJLabel("<html><font color=red size='4'>"

                         +"修改密码<br><hr>请记住你的密码</font>",SwingConstants.CENTER);

           label.setForeground(Color.gray);

           name=newJTextField(10);

           tf1=newJPasswordField(10);

           tf2=newJPasswordField(10);

           tf3=newJPasswordField(10);

           jp1.add(jbt1);

           jp1.add(jbt2);

           JPaneljpanel=new JPanel();

           jpanel.add(label);

           JPanelpp4=new JPanel();

           JPaneljpane4=new JPanel();

           JPanelpp3=new JPanel();

           cp.add(jpanel,"North");

           JPanelpp2=new JPanel(new GridLayout(6,1,20,10));

           pp4.setLayout(newGridLayout(6,1,20,10));

           pp4.add(newJLabel("用户名: ",SwingConstants.RIGHT));

           pp4.add(name);

                                            22      

    pp4.add(new JLabel("原密码: ",SwingConstants.RIGHT));

           pp4.add(tf1);

           pp4.add(newJLabel("新密码: ",SwingConstants.RIGHT));

           pp4.add(tf2);

           pp4.add(newJLabel("确认密码: ",SwingConstants.RIGHT));

           pp4.add(tf3);

           pp4.add(newJLabel());

           JPaneljpbutton=new JPanel();

           jpbutton.add(jbt1);

           jpbutton.add(jbt2);

           pp3.add(jbt1);

           pp3.add(jbt2);

           pp2.add(jpbutton);

           cp.add(pp4,"West");

           cp.add(pp2,"Center");

           cp.add(pp3,"South");

           cp.add(jpane4,"East");

           f.setSize(400,300);

           f.setVisible(true);

           jbt1.addActionListener(this);

           jbt2.addActionListener(this);

    }

    @SuppressWarnings("deprecation")

    public void upDateM()

    {

           try

           {

                  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

           }

                  catch(ClassNotFoundExceptione)

           {

                         System.out.println("加载驱动程序出错");

           }

           try

           {

                  Stringdbuser = "sa";

                   String dbpwd = "123";

           Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";

           Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);

           Statementsql=con.createStatement();

           Stringuname=name.getText().trim();

           StringqueryMima="select *  from Table_userwhere 用户名='"+uname+"'";

           ResultSetrs=sql.executeQuery(queryMima);

                                           23

    if(rs.next())

           {

                  StringnewMima=tf2.getText().trim();

                  Strings="update dbo.Table_user set 密码='"+newMima+"'where用户名 ='"+uname+"'";

                  sql=con.createStatement();

                  intupdateMima=sql.executeUpdate(s);

                  if(updateMima==1)

                  {

                         JOptionPane.showMessageDialog(f,"密码修改成功!");

                  }

                  f.hide();

                  con.close();

           }

           else

           {

                  JOptionPane.showMessageDialog(null,"该用户不存在","提示!",JOptionPane.YES_NO_CANCEL_OPTION);

           }

           name.setText("");

           tf1.setText("");

           tf2.setText("");

           tf3.setText("");

           }

           catch(SQLExceptiong)

           {

                  System.out.println(g.getErrorCode());

                  System.out.println(g.getMessage());

           }

    }

    @SuppressWarnings("deprecation")

    public void actionPerformed(ActionEvent e) {

           Stringcmd=e.getActionCommand();

           if(cmd.equals("确定"))

           {

                  if(name.getText().equals("")||tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals(""))

                  {

                  JOptionPane.showMessageDialog(null,"请填写用户所有的信息","提示",JOptionPane.YES_NO_OPTION);

                  return;

                  }

                                           24

    if(tf2.getText().trim().equals(tf3.getText().trim()))

                  upDateM();

           }

    else if(cmd.equals("取消"))

    {

           f.hide();

    }

    }

    public static void main(String []args )

    {

           newUpdateMima("");

    }

    }

    删除图书RemoveBook类

    package pk;//代码注释与上面几个类的代码近似一样

    import java.sql.*;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public 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="0";

    RemoveBook()

    {

           f=newJFrame("书籍是人类进步的阶梯!");

           cp=f.getContentPane();

           jpS=newJPanel();

           jpanelWest=newJPanel();

           jbt1=newJButton("查询");

           jbt1.setBackground(Color.orange);

           jbt2=newJButton("取消");

           jbt2.setBackground(Color.magenta);

           jbt3=newJButton("删除");

                                             25

    jbt3.setBackground(Color.LIGHT_GRAY);

           label =newJLabel("<html><font color=yellow size='4'>"

                         +"删除图书<br><hr>"

                         +"<html><font color=red size='4'>请输入要删除的图书名:</font>",SwingConstants.CENTER);

           label.setForeground(Color.blue);

           L=newJLabel("该种图书共有"+count+"本");

           table=newJTable(ar,columnName);

           JScrollPanesrollpane=new JScrollPane(table);

           tf=newJTextField(18);

           jpS.add(jbt1);

           jpS.add(jbt2);

           jpS.add(jbt3);

           JPaneljpanel=new JPanel();

           jpanel.add(label);

           jpanel.add(tf);

           JPanelpp4=new JPanel();

           JPaneljpE=new JPanel();

           cp.add(jpanel,"North");

           JPanelp=new JPanel();

           p.setLayout(newBorderLayout());

           p.add(L,"North");

           p.add(srollpane);

           cp.add(pp4,"West");

           cp.add(p,"Center");

           cp.add(jpS,"South");

           cp.add(jpE,"East");

           jpS.setBackground(Color.lightGray);

           jpanelWest.setBackground(Color.lightGray);

           jpanel.setBackground(Color.lightGray);

           f.setSize(1000,600);

           f.setVisible(true);

           jbt1.addActionListener(this);

           jbt2.addActionListener(this);

           jbt3.addActionListener(this);

          

    }

    int i=0;

    public void showRecord(String ql)

    {

           while(i>=0)

           {

                  ar[i][0]="";

                                          26

           ar[i][1]="";

                  ar[i][2]="";

                  ar[i][3]="";

                  ar[i][4]="";

                  ar[i][5]="";

                  i--;

           }

           i=0;

           try

           {

                  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

           }

                  catch(ClassNotFoundExceptione)

           {

                         System.out.println("加载驱动程序出错");

           }

           try

           {

                   String dbuser = "sa";

                   String dbpwd = "123";

                   Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";

                  Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);

               Statement sql;

              

               String s="select * from dbo.Table_bookwhere 图书名 ='"+ql+"'";

               sql=con.createStatement();

               ResultSet rs=sql.executeQuery(s);

               while(rs.next())

                  {

                         Stringbname=rs.getString(1);

                         Stringbno=rs.getString(2);

                         Stringprice=rs.getString(3);

                         Stringwriter=rs.getString(4);

                         Stringpublish=rs.getString(5);

                         Stringindate=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++;}

                                               27

    count=""+i+"";

                  table=newJTable(ar,columnName);

                  L.setText("书库现有图书"+count+"本");

                  f.repaint();

                  con.close();

           }

           catch(SQLExceptiong)

           {

                  System.out.println(g.getErrorCode());

                  System.out.println(g.getMessage());     

           }

    }    

    public void deleteRecord(int ql)

    {

           try

           {

                  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

           }

                  catch(ClassNotFoundExceptione)

           {

                         System.out.println("加载驱动程序出错");

           }

           try

           {    

                  Statementsql;

                  Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";

                  Connectioncon=DriverManager.getConnection(url);

                  Strings="delete * from dbo.Table_book where 图书名='"+ql+"'";

                  sql=con.createStatement();

                  intdel=sql.executeUpdate(s);

                  if(del==1)

                  {

                         JOptionPane.showMessageDialog(null,"删除成功!","信息",JOptionPane.YES_NO_CANCEL_OPTION);

                  }

                  con.close();

                  f.repaint();

           }

           catch(SQLExceptiong)

           {

                  System.out.println(g.getErrorCode());

                  System.out.println(g.getMessage());

           }}

                                      28

     

    @SuppressWarnings("deprecation")

    public void actionPerformed(ActionEvent e) {

          

          

           Stringql="";

           if(e.getSource()==jbt1)

           {

                  ql=tf.getText().trim();

                  showRecord(ql);

           }

           if(e.getSource()==jbt3)

           {

                 

                  int  index=table.getSelectedRow();

                  if(index==-1)

                  {

                         JOptionPane.showMessageDialog(null,"请输入要删除的表格行","输入错误",JOptionPane.YES_NO_OPTION);

                  }

                  else

                  {

                         deleteRecord(index);

                  }

           }

                  if(e.getSource()==jbt2)

                  {

                         f.hide();

                  }

                 

    }

    public static void main(String []arg)

    {

    new RemoveBook();

    }

    }

    查询图书QueryBook类

    package pk;

    import java.sql.*;//包含实现java程序与操作系统以及其他java程序之间进行数据交换的类 

    import java.awt.*;//包含创建用户界面与绘制图形的类

    import java.awt.event.*;//事件处理所在的类

                                         29

    import javax.swing.*;//包含轻量级组件

    //查询图书

    public class QueryBook implements ActionListener{

    /**

            *

            */

    //QueryBook类实现接口ActionListener

           JFramef;//设置顶级窗口对象

    Container cp;//容器对象

    JPanel jpS,jpanelWest;//创建面板

    JButton jbt1,jbt2,jbt3;//设置按钮

    JLabel label,L;//创建标签

    JTextField tf;//创建文本框

    JTable table;

    Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"};

    Object ar[][]=new Object [2000][6];

    String sno;//创建表 与  数组

    String count="0";

    QueryBook()

    {

           f=newJFrame("书籍是人类进步的阶梯!");//设置标题

           cp=f.getContentPane();//返回ContentPane内容

           jpS=newJPanel();//创建面板jpS

           jpanelWest= new JPanel();//创建面板jpanelWest

           jbt1=newJButton("查询");

           jbt1.setBackground(Color.lightGray);//创建按钮 设为查询 并且设置背景颜色

           jbt2=newJButton("确定");

           jbt2.setBackground(Color.lightGray);//创建按钮 设为确定 并且设置背景颜色

           jbt3=newJButton("取消");

           jbt3.setBackground(Color.lightGray);//创建按钮 设为取消 并且设置背景颜色

     

           label=newJLabel("<html><font color=blue size='6'>图书查询<br><hr>请输入图书名:</Font>",SwingConstants.CENTER);

           label.setForeground(Color.gray);

           //设置超级文本 设置颜色

                         L=newJLabel("该种图书共有"+count+"本");//添加标签,显示多少本书

                         table=newJTable(ar,columnName);//建立一个新的表

                         JScrollPanescrollpane =new JScrollPane(table);//建立一个滚动面板

                         tf=newJTextField(18);//设置文本框大小

                         jpS.add(jbt1);

                         jpS.add(jbt2);

                         jpS.add(jbt3);//按钮jbt1 jbt2  jbt3 添加到面板jpS

                                                    30

    JPanel jpanel=new JPanel();

                         jpanel.add(label);

                         jpanel.add(tf);

                         JPanelpp4=new JPanel();

                         JPaneljpE=new JPanel();

                         cp.add(jpanel,"North");//面板添加到容器North

                         JPanelp=new JPanel();

                         p.setLayout(newBorderLayout());//面板为边界布局

                         p.add(L,"North");//标签为North方向

                         p.add(scrollpane);//面板添加滚动面板

                         cp.add(pp4,"West");

                         cp.add(p,"Center");

                         cp.add(jpS,"South");

                         cp.add(jpE,"East");//pp4->Westp->Center jpS->South jpE->East

                  jpS.setBackground(Color.lightGray);//设置面板背景颜色

                  jpanel.setBackground(Color.lightGray);//设置面板背景颜色

                  f.setSize(1000,550);//设置大小

                  f.setVisible(true);//设置可视化

                  jbt1.addActionListener(this);

                  jbt2.addActionListener(this);

                  jbt3.addActionListener(this);//按钮监听事件

    }

    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("com.microsoft.sqlserver.jdbc.SQLServerDriver");

           }

           catch(ClassNotFoundExceptione)

           {

                  System.out.println("加载驱动程序失败");}

                                            31

           try

           {

                   Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";

                   Connectioncon=DriverManager.getConnection(url);

                   Statement sql;

                   String s="select * from dbo.Table_bookwhere 图书名 ='"+ql+"'";

                   sql=con.createStatement();

                         ResultSetrs=sql.executeQuery(s);

                         while(rs.next())

                         {

                                Stringbname=rs.getString(1);

                                Stringbno=rs.getString(2);

                                Stringprice=rs.getString(3);

                                Stringwriter=rs.getString(4);

                                Stringpublish=rs.getString(5);

                                Stringindate=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(SQLExceptiong)

           {

                  System.out.println(g.getErrorCode());

                  System.out.println(g.getMessage());

                 

           }

           }

    public void deleteRecord(int index)

    {

           try

           {

                  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

                                          32

           }catch(ClassNotFoundExceptione)

           {

                  System.out.println("加载驱动程序失败");

           }

           try

           {

                  Stringdbuser = "sa";

                   String dbpwd = "123";

                  Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";

                  Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);

                  Statementsql;

                  Stringql=(String)(ar[index][1]);

                  Strings="delete * from Table_book  where 图书名 ='"+ql+"'";

                  sql=con.createStatement();

                  intdel=sql.executeUpdate(s);

                  if(del==1)

                  {

                         JOptionPane.showMessageDialog(null,"删除成功","信息",JOptionPane.YES_NO_CANCEL_OPTION);

                        

                  }

                  con.close();

                  f.repaint();

         }

    catch(SQLException g)

           {

           System.out.println(g.getErrorCode());

           System.out.println(g.getMessage());

          

           }

    }

     

    @SuppressWarnings("deprecation")

    public void actionPerformed(ActionEvent e)

    {

           Stringql="";

           Stringcmd=e.getActionCommand();

           if(cmd.equals("查询"))

           {

                  ql=tf.getText().trim();

                  showRecord(ql);

           }

           if(cmd.equals("确定"))

                                           33

    {

                  System.exit(0);

           }

           if(cmd.equals("取消"))

           f.hide();

    }

    public static void main(String []arg){

           newQueryBook();           

    }

    }

    预览图书BookBrower类

    package pk;

    import java.sql.*;//包含实现java程序与操作系统以及其他java程序之间进行数据交换的类

    import java.awt.*;//包含创建用户界面与绘制图形的类

    import java.awt.event.*;//事件处理所在的类

    import javax.swing.*;//包含轻量级组件

    //预览图书

    public class BookBrower implements ActionListener {

           /**

            *

            */

           //预览图书 实现ActionListener接口

    JFrame f;//设置顶级窗口对象

    Container cp;//容器对象

    JPanel jpS,jpanelWest;//设置面板

    JButton jbt1,jbt2;//设置按钮

    JLabel L,label;//设置标签

    JTable table;//表对象

    Object columnName[]={"书名","书号","单价","作者","出版社","入架时间"};

    //设置一维数组

    Object ar[][]=new Object[1000][6];//设置二维数组

    String count="1000";

    String sno;

    BookBrower()

    {

           f=newJFrame("预览图书");//设置窗口标题

           cp=f.getContentPane();//返回窗体的 contentPane对象

           jpS=newJPanel();

           jpanelWest=newJPanel();

           JButtonjbt1 = new JButton("确定");//按钮添加确定

           jbt1.setBackground(Color.lightGray);//设置按钮颜色

                                          34

    JButton jbt2=new JButton("返回");//按钮添加确定

           jbt2.setBackground(Color.lightGray);//设置按钮颜色

           label=newJLabel("<html><font color= blue size='6'>&nbsp;"

                         +"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+"预览图书<br><hr>立志宜思真品格,读书须尽真功夫--阮元</font>",SwingConstants.CENTER);

           //设置超文本  颜色字体大小 &nbsp为空格符  放在窗口中间

           L=newJLabel("图书库现有图书"+count+"本");//标签

           table =newJTable(ar,columnName);

           JScrollPanescrollpane=new JScrollPane(table);//滚动面板

           jpS.add(jbt1);

           jpS.add(jbt2);//按钮1  按钮2  添加到面板中

           JPaneljpanel=new JPanel();

           jpanel.add(label);//label添加到面板中

           JPanelpp4=new JPanel();

           JPaneljpE=new JPanel();

           cp.add(jpanel,"North");//面板jpanel添加到容器North

           JPanelp=new JPanel();

           p.setLayout(newBorderLayout());//p设为为边界布局

           p.add(L,"North");

           p.add(scrollpane);

           cp.add(pp4,"West");//pp4添加到West

           cp.add(p,"Center");//p添加到Center

           cp.add(jpS,"South");//jpS添加到South

           cp.add(jpE,"East");//East添加到East

           jpanel.setBackground(Color.LIGHT_GRAY);//设置背景颜色

           jpS.setBackground(Color.LIGHT_GRAY);

           jpanelWest.setBackground(Color.LIGHT_GRAY);

           f.setSize(1000,600);//设置大小

           f.setVisible(true);//设为可视化

           jbt1.addActionListener(this);

           jbt2.addActionListener(this); 

    }

    int i=0;

    public void showRecord()

    {

           while(i>=0)

           {

                  ar[i][0]="";

                  ar[i][1]="";

                  ar[i][2]="";

                  ar[i][3]="";

                  ar[i][4]="";

                                                 35

    ar[i][5]="";

                  i--;

           }

           i=0;

           try

           {

                  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

                  //连接数据库

           }catch(ClassNotFoundExceptione)

           {

                  System.out.println("加载驱动程序失败");//显示驱动加载异常

           }

           try

           {

                  Stringdbuser = "sa";

                  Stringdbpwd = "123";

                  //存储于数据库中的用户名 密码

                  Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";

                  Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);

                  Strings="select * from dbo.Table_book ";//获取图书相关信息

                  Statementsql=con.createStatement();

                  ResultSetrs=sql.executeQuery(s);

                  while(rs.next())

                  {

                         Stringbname=rs.getString(1);

                         Stringbno=rs.getString(2);

                         Stringprice=rs.getString(3);

                         Stringwriter=rs.getString(4);

                         Stringpublish=rs.getString(5);

                         Stringindate=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();}

                                             36

           catch(SQLExceptiong)

           {

                  System.out.println(g.getErrorCode());

                  System.out.println(g.getMessage());

           }

    }

    @SuppressWarnings("deprecation")

    @Override

    public void actionPerformed(ActionEvent e) {

           Stringcmd=e.getActionCommand();

           if(cmd.equals("确定"));

           {

                  f.hide();//匹配确定按钮

           }

           if(cmd.equals("返回"));

           {

                  f.hide();//匹配返回按钮

           }

    }

    public static void main(String []arg)

           {

                  BookBrowera=new BookBrower();

                  a.showRecord();//调用显示方法名

           }

    }

    图书主界面Book类

    package pk;

    import java.sql.*;//包含实现java程序与操作系统以及其他java程序之间进行数据交换的类

    import java.awt.*;//包含创建用户界面与绘制图形的类

    import java.awt.event.*;//事件处理所在的类

    import javax.swing.*;//包含轻量级组件

    //预览图书

    public class BookBrower implements ActionListener {

           /**

            *

            */

           //预览图书 实现ActionListener接口

    JFrame f;//设置顶级窗口对象

    Container cp;//容器对象

    JPanel jpS,jpanelWest;//设置面板

    JButton jbt1,jbt2;//设置按钮

                                        37

    JLabel L,label;//设置标签

    JTable table;//表对象

    Object columnName[]={"书名","书号","单价","作者","出版社","入架时间"};

    //设置一维数组

    Object ar[][]=new Object[1000][6];//设置二维数组

    String count="1000";

    String sno;

    BookBrower()

    {

           f=newJFrame("预览图书");//设置窗口标题

           cp=f.getContentPane();//返回窗体的 contentPane对象

           jpS=newJPanel();

           jpanelWest=newJPanel();

           JButtonjbt1 = new JButton("确定");//按钮添加确定

           jbt1.setBackground(Color.lightGray);//设置按钮颜色

           JButtonjbt2=new JButton("返回");//按钮添加确定

           jbt2.setBackground(Color.lightGray);//设置按钮颜色

           label=newJLabel("<html><font color= blue size='6'>&nbsp;"

                         +"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+"预览图书<br><hr>立志宜思真品格,读书须尽真功夫--阮元</font>",SwingConstants.CENTER);

           //设置超文本  颜色字体大小 &nbsp为空格符  放在窗口中间

           L=newJLabel("图书库现有图书"+count+"本");//标签

           table =newJTable(ar,columnName);

           JScrollPanescrollpane=new JScrollPane(table);//滚动面板

           jpS.add(jbt1);

           jpS.add(jbt2);//按钮1  按钮2  添加到面板中

           JPaneljpanel=new JPanel();

           jpanel.add(label);//label添加到面板中

           JPanelpp4=new JPanel();

           JPaneljpE=new JPanel();

           cp.add(jpanel,"North");//面板jpanel添加到容器North

           JPanelp=new JPanel();

           p.setLayout(newBorderLayout());//p设为为边界布局

           p.add(L,"North");

           p.add(scrollpane);

           cp.add(pp4,"West");//pp4添加到West

           cp.add(p,"Center");//p添加到Center

           cp.add(jpS,"South");//jpS添加到South

           cp.add(jpE,"East");//East添加到East

           jpanel.setBackground(Color.LIGHT_GRAY);//设置背景颜色

           jpS.setBackground(Color.LIGHT_GRAY);

           jpanelWest.setBackground(Color.LIGHT_GRAY);

                                             38

    f.setSize(1000, 600);//设置大小

           f.setVisible(true);//设为可视化

           jbt1.addActionListener(this);

           jbt2.addActionListener(this); 

    }

    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("com.microsoft.sqlserver.jdbc.SQLServerDriver");

                  //连接数据库

           }catch(ClassNotFoundExceptione)

           {

                  System.out.println("加载驱动程序失败");//显示驱动加载异常

           }

           try

           {

                  Stringdbuser = "sa";

                  Stringdbpwd = "123";

                  //存储于数据库中的用户名 密码

                  Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=student";

                  Connectioncon=DriverManager.getConnection(url,dbuser,dbpwd);

                  Strings="select * from dbo.Table_book ";//获取图书相关信息

                  Statementsql=con.createStatement();

                  ResultSetrs=sql.executeQuery(s);

                  while(rs.next())

                  {

                         Stringbname=rs.getString(1);

                         Stringbno=rs.getString(2);

                         Stringprice=rs.getString(3);

                         Stringwriter=rs.getString(4);

                                                      39

    String publish=rs.getString(5);

                         Stringindate=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(SQLExceptiong)

           {

                  System.out.println(g.getErrorCode());

                  System.out.println(g.getMessage());

           }

    }

    @SuppressWarnings("deprecation")

    @Override

    public void actionPerformed(ActionEvent e) {

           Stringcmd=e.getActionCommand();

           if(cmd.equals("确定"));

           {

                  f.hide();//匹配确定按钮

           }

           if(cmd.equals("返回"));

           {

                  f.hide();//匹配返回按钮

           }

    }

    public static void main(String []arg)

           {

                  BookBrowera=new BookBrower();

                  a.showRecord();//调用显示方法名

           }

    }

     

     

                                         40

                              参考文献

    [1]Java基础入门     清华大学出版社   传智播客高教产品研发部编著

    [2]java编程思想     机械工业出版社   Bruce Eckel  著  陈昊鹏 译

    [3]CSDN博客

    [4]HTML5入门经典     机械工业出版社   刘欢 王雨竹 著 

     

     

     

     

     

     

     

     

     

     

     

     

     

     

                                   43      

    展开全文
  • Java电商系统程序电商系统

    万次阅读 热门讨论 2018-06-25 14:35:08
    系统目前还处于功能完善阶段,适合需要二次开发的个人或公司使用,我们将会继续完善页面和业务代码,尽可能的为需要的人提供更加完善的功能。 系统技术: 项目构建 使用Maven聚合工程构建。 控制层:spring ...

    电商系统中商品分类设计:

    在实际项目中商品的分类可以分为后台商品类目和前台商品类目,后台类目一般都是三级分类,而前台分类则需要根据时间、季节等因素进行调整,如果前台直接按后台分类进行展示的话,那调整的话就比较困难了,

    所以一般会创建两套分类,一个后台分类,一个前台分类,后台分类则尽可能粒度较细而前台分类则根据运营的需求实时调整,这个前台分类就需要关联后台的一个或多个分类,这样前台分类就可以灵活配置,快速调整。

    演示地址:http://www.backzhang.com/#/login

    展开全文
  • 直播程序如何用java实现? 直播程序java解决方案? 直播程序java开发方案? 今天给大家分享一下近期在(www.zhaowubo.cn)上分享的Java开发直播程序的案例(附功能清单)仅供参考。希望能帮助想用Java开发...

    直播小程序如何用java实现?
    直播小程序java解决方案?
    直播小程序java开发方案?
    今天给大家分享一下近期在(www.zhaowubo.cn)上分享的Java开发直播小程序的案例(附功能清单)仅供参考。希望能帮助想用Java开发直播小程序的伙伴们。
    在这里插入图片描述
    在这里插入图片描述
    更多Java直播小程序
    开发方案敬请关注

    展开全文
  • java小项目影院系统

    千次阅读 2016-09-27 22:02:47
    java小项目,影院管理系统 http://download.csdn.net/detail/github_32658299/9632276 下面是两个关键的类 1.这是电影院测试类,用来读取用户输入并进行出票import java.util.InputMismatchException; import ...

    java小项目,影院管理系统
    http://download.csdn.net/detail/github_32658299/9632276
    下面是两个关键的类
    1.这是电影院测试类,用来读取用户输入并进行出票

    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    /**
     * 测试cinema类
     * 模拟电影院的出票系统
     * 解析XML文件用于初始化Cinema的Schedule类,其保存电影院所放映电影所有场次信息
     * 要求:
     * 1.打印用户的购票信息
     * 2.利用序列化保存用户购票信息
     * 3.利用反序列化加载用户的购票历史记录
     * 4.同一张票只能卖出一次(电影名、座位号、放映时间相同则为同一张票)
     * 5.对用户输入进行判断,给出错误提示
     * 
     * @author cxp
     * @data 2016-9-13
     * @modify
     */
    public class TestCinema {
        /**
         *  判断电影名是否输入正确
         * @param schedule
         * @param movieName
         * @return
         */
        public static boolean chooseName(Schedule schedule, String movieName) {
            // 判断放映表是否存在用户输入的电影名
            for (ScheduleItem scheduleItem : schedule.getItemList()) {
                if (scheduleItem.getMovie().getMovieName().equals(movieName)) {
                    return true;
                }
            }
            return false;
        }
    
        /**
         *  判断用户输入时间是否正确
         * @param schedule
         * @param time
         * @param movieName
         * @return
         */
        public static boolean chooseTime(Schedule schedule, String time, String movieName) {
            for (ScheduleItem scheduleItem : schedule.getItemList()) {
                if (scheduleItem.getTime().equals(time) && scheduleItem.getMovie().getMovieName().equals(movieName))
                    return true;
            }
            return false;
        }
    
        /**
         * 判断用户输入票的类别是否正确
         * @param num
         * @return
         */
        public static boolean chooseType(int num) {
            if (num == 1 || num == 2 || num == 3)
                return true;
            else
                return false;
        }
    
        /**
         *  利用正则表达式判断输入的座位号是否合法
         * @param seat
         * @return
         */
        public static boolean chooseSeat(String seat) {
            //[1-5]表示匹配数字的范围是1~5,问号(?)表示此数字只能出现一次[-]表示要完全匹配-号 
             if (seat.matches("[1-5]?+[-]+[1-7]?"))
            return true;
             else
             return false;
        }
    /**
     * 主程序
     * @param args
     */
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            // 新建电影院类
            Cinema cinema = new Cinema();
            //获取schedule
            Schedule cs = cinema.getSchedule();
            //解析XML文件,显示电影场次集合
            cs.paraeXML("NewFile.xml");
    //**************************主界面循环**************************//
            String condition = "y";
            while ("y".equalsIgnoreCase(condition)) {
                // 打印主界面,显示电影放映时间表
                cs.printItemList();
                System.out.println("请输入电影名称:");
                String movieName;// 用户输入的电影名
                // 循环,直到用户输入正确的电影名
                while (true) {
                    boolean flag = false;// 判断用户输入的电影名是否在放映表中
                    movieName = scanner.next();
                    flag = chooseName(cs, movieName);
                    if (flag == true)
                        break;
                    else
                        System.out.println("电影名称有误,请重新输入电影名称:");
    
                }
    
                System.out.println("请输入电影播放时间:以xx:xx的格式");
                String time;
                // 循环,直到用户输入正确的时间
                while (true) {
                    boolean flag = false;
                    time = scanner.next();
                    // 判断电影在用户输入的时间点是否放映,且放映的电影与用户之前选择的相匹配
                    flag = chooseTime(cs, time, movieName);
                    if (flag == true)
                        break;
                    else
                        System.out.println("时间输入有误,请重新时间:");
    
                }
                // 将用户选择的电影名的相应放映场次找出来
                // 不能放在chooseName里找的原因:将scItem作为参数传进去的是一个引用的副本,
                // 可以利用这个引用改变引用所指向对象的内存,但对引用本身赋值,函数返回后,副本被销毁,原指针仍为空
                ScheduleItem scItem = null;// 电影名对应的场次信息
                for (ScheduleItem scheduleItem : cs.getItemList()) {
                    if (scheduleItem.getMovie().getMovieName().equals(movieName)&&scheduleItem.getTime().equals(time)) {
                        scItem = scheduleItem;
    
                    }
                }
    
                System.out.println("请输入您要购买的票的类型:1.全价票 2.学生票 3.赠票");
                int num=0;
                // 循环,直到用户输入正确的数字
                while (true) {
                    boolean flag = false;
                    try{
                    num = scanner.nextInt();
                    // 判断电影在用户输入的时间点是否放映,且放映的电影与用户之前选择的相匹配
                    flag = chooseType(num);
                    if (flag == true)
                        break;
                    else
                        System.out.println("数字输入有误,请选择购票类型:1.全价票 2.学生票 3.赠票");
                    }catch (InputMismatchException  e) {
                        scanner.next(); // 增加这样一行,清空缓冲区
                        System.out.println("输入不匹配,请输入数字:1.全价票 2.学生票 3.赠票!");
                    }
                }
    //****************************普通票****************************//
                switch(num){
                case 1:
                    System.out.println("请输入您需要的座位号:以排-列的形式");
                    String seat;
                    // 循环,直到用户输入正确座位号
                    while (true) {
                        boolean flag = false;// 标记用户输入座位号是否合法
                        seat = scanner.next();
                        // 判断电影在用户输入的时间点是否放映,且放映的电影与用户之前选择的相匹配
                        flag = chooseSeat(seat);
                        if (flag == true)
                            break;
                        else
                            System.out.println("输入错误,请重新输入您需要的座位号:以排-列的形式");
                    }
    
                    Ticket ticket = new OriginalTicket(new Seat(seat), scItem.getMovie().getPrice(), scItem);
                    if(!cinema.checkTicket(ticket)){
                    //打印购票信息
                    ticket.buyTicket();
                    // 添加购买的票到集合中
                    cinema.getTicketList().add(ticket);
                    //序列化已购电影票
                    if(!cinema.getTicketList().isEmpty())
                    cinema.saveTicket();
                    break;
                    }
                    System.out.println("该票已被选购,请重新购票!");
                    break;
    //****************************学生票****************************//
                case 2:
                    System.out.println("请输入您所需要的折扣:1-9的整数");
                    int discount = scanner.nextInt();
                    System.out.println("请输入您需要的座位号:以排-列的形式");
                    // 循环,直到用户输入正确座位号
                    while (true) {
                        boolean flag = false;// 标记用户输入座位号是否合法
                        seat = scanner.next();
                        // 判断电影在用户输入的时间点是否放映,且放映的电影与用户之前选择的相匹配
                        flag = chooseSeat(seat);
                        if (flag == true)
                            break;
                        else
                            System.out.println("输入错误,请重新输入您需要的座位号:以排-列的形式");
                    }
                    // 创建学生票
                    Ticket studentTicket = new StudentTicket(new Seat(seat), scItem.getMovie().getPrice(), scItem,
                            discount);
                    //判断该票是否被购买
                    if(!cinema.checkTicket(studentTicket)){
                    //打印购票信息到文件中
                    studentTicket.buyTicket();
                    // 添加购买的票到集合中
                    cinema.getTicketList().add(studentTicket);
                    //序列化已购电影票
                    cinema.saveTicket();
                    break;
                    }
                    System.out.println("该票已被选购,请重新购买!");
                    break;
    //****************************赠票****************************//
                case 3:
                    System.out.println("请输入客户姓名:");
                    String customerName = scanner.next();
                    System.out.println("请输入您需要的座位号:以排-列的形式");
                    // 循环,直到用户输入正确座位号
                    while (true) {
                        boolean flag = false;// 标记用户输入座位号是否合法
                        seat = scanner.next();
                        // 判断电影在用户输入的时间点是否放映,且放映的电影与用户之前选择的相匹配
                        flag = chooseSeat(seat);
                        if (flag == true)
                            break;
                        else
                            System.out.println("输入错误,请重新输入您需要的座位号:以排-列的形式");
    
                    }
                    // 创建赠票
                    Ticket FreeTicket = new FreeTicket(new Seat(seat), scItem.getMovie().getPrice(), scItem, customerName);
                    if(!cinema.checkTicket(FreeTicket)){
                    //打印购票信息到文件中
                    FreeTicket.buyTicket();
                    // 添加购买的票到集合中
                    cinema.getTicketList().add(FreeTicket);
                    //序列化已购电影票
                    cinema.saveTicket();
                    break;
                    }
                 System.out.println("该票已被选购,请重新选票!");
                 break;
                }
                System.out.println("请选择继续购票(y)或退出系统(n):y/n");
                //循环判断用户输入是否正确
                while (true) {
                    condition = scanner.next();
                    if ("y".equalsIgnoreCase(condition) || "n".equalsIgnoreCase(condition))
                        break;
                    else
                        System.out.println("输入错误!请重新选择继续购票(y)或退出系统(n):y/n");
                }
            }
        }
    }

    2.这是放映日程类,该类解析xml文件并使用xml文件初始化电影信息集合 List

    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    /**
     * 放映日程类 Schedule;包含: 
     * 电影信息集合 List<ScheduleItem>
     * 
     * @author cxp
     * @data 2016-9-13
     * @modify
     * */
    public class Schedule {
    
        // 存储电影信息的集合
        private List<ScheduleItem> itemList = new ArrayList<ScheduleItem>();
    
       /**
        * 无参构造函数
        */
        public Schedule() {
            super();
        }
    
        /**
         *  打印电影场次信息及座位表
         */
        public void printItemList() {
            System.out.println("序号\t电影名称\t英文名称\t导演\t演员\t电影类型\t价格\t时间 ");
            int k=1;//打印序号
            //打印电影场次信息
            for (ScheduleItem scheduleItem : itemList) {
                System.out.println(k+"\t"+scheduleItem);
                k++;
            }
            //打印影院座位图
            System.out.println("下面为影院的座位结构图:");
            System.out.println("\t\t\t屏幕");
            for (int i = 1; i <=5; i++) {
                for (int j = 1; j <= 7; j++) {
                    System.out.print(i+"-"+j+"\t");
                }
                System.out.println();
            }       
        }
    
        /**
         *  getter和setter方法
         * @return
         */
        public List<ScheduleItem> getItemList() {
            return itemList;
        }
    
        public void setItemList(List<ScheduleItem> itemList) {
            this.itemList = itemList;
        }
    
        /**
         * 1.获得文档对象
         * 
         * @param fileName
         * @return
         */
        public Document getDocument(String fileName) {
            // 读取对象
            SAXReader reader = new SAXReader();
            // 获得文档对象
            Document document;
    
            try {
                document = reader.read(new File(fileName));
                return document;
            } catch (DocumentException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 2.解析文档 XML 
         * 将XML文件中的movie用来初始化Movie和Schedule类
         * 并将Schedule添加到itemList列表中
         * 
         * @param fileName
         */
        public void paraeXML(String fileName) {
            // 1.获得文档对象
            Document document = getDocument(fileName);
            // 2.获得根节点
            Element root = document.getRootElement();
            Element slElement = root.element("ShowList");
            // 获得子节点列表
            List<Element> list = slElement.elements();
           //循环,初始化itemList集合
            for (Element element : list) {
                // 存放XML文件数据(Name、Poster、Director、Actor、Type、Price)
                String movieName = element.elementText("Name");
                String poster = element.elementText("Poster");
                String director = element.elementText("Director");
                String actor = element.elementText("Actor");
                String type = element.elementText("Type");
                String price = element.elementText("Price");
                // 根据type选择相应的枚举类型成员
                MovieType movieType = null;
                switch (1) {
                case 1:
                    if (type.equalsIgnoreCase("CARTOON")) {
                        movieType = MovieType.CARTOON;
                        break;
                    }
                case 2:
                    if (type.equalsIgnoreCase("THRILLER")) {
                        movieType = MovieType.THRILLER;
                        break;
                    }
                case 3:
                    if (type.equalsIgnoreCase("ROMANCE")) {
                        movieType = MovieType.ROMANCE;
                        break;
                    }
                case 4:
                    if (type.equalsIgnoreCase("COMEDY")) {
                        movieType = MovieType.COMEDY;
                        break;
                    }
                case 5:
                    if (type.equalsIgnoreCase("ACTION")) {
                        movieType = MovieType.ACTION;
                        break;
                    }
                default:
                    movieType = MovieType.UNKNOW;
                }
                // 创建一个Movie对象
                Movie movie = new Movie(movieName, poster, director, actor,
                        movieType, Double.parseDouble(price));
                // 解析放映时间节点
                Element scElement = element.element("Schedule");
                List<Element> scList = scElement.elements();
                // 解析放映时间结点并添加item到itemList集合中
                for (Element element2 : scList) {
                    //获得element2元素的文本值
                    String time = element2.getText();
                    // 根据time以及之前的movie对象创建一个ScheduleItem对象
                    ScheduleItem item = new ScheduleItem(time, movie);
                    // 将此对象添加到列表中
                    itemList.add(item);
                    // System.out.println(stringBuffer2.toString());
                }
            }
        }
    
    }
    展开全文
  • Java+sql 实现-小型教务系统

    万次阅读 多人点赞 2017-12-12 20:37:49
    en~ 作为软件的菜鸟,最近在做java的课设(实现简单的学生信息管理系统),由于初学java和数据库,实现的过程异常艰辛,期间也填了许多没有百度到的坑,不过经过两周的奋斗也算是简单完成。SO~ 新手的我打算写下...
  • Java 小型图书馆管理系统

    千次阅读 2020-11-01 10:06:39
    以下为小型图书馆管理系统模式图: 模式总体概述: 其中IBorrower接口确定Borrower类标准,Library类为单例设计模式,即图书馆只有一个。Book类为Borrower类的内部类,libraryBook类为Library类的内部类。最后利用...
  • Java小项目之:投票系统 今天给大家带来的是java编写的投票小系统,代码简易,适合初学者练手! 代码展示: package com.tarena.wgh.servlet; import java.io.IOException; import java.io.PrintWriter; import ...
  • java获取系统的cpu 内存大小的方法,网上找到的 OperatingSystemMXBean osmxb = ManagementFactory.getPlatformMXBean(OperatingSystemMXBean.class); long totalvirtualMemory = osmxb.getTotalSwapSpaceSize(); ...
  • java小项目,租车系统

    千次阅读 2017-09-20 12:46:10
    暑假因为有事耽误了,本以为暑假完结windows程序设计的,唉,慢慢补吧,学校开了java,因为学过c++,所以觉java并不是太难,根据慕课网给的项目,做了这个租车系统 无非就是面向对象思想,定义一个抽象汽车类,...
  • 小型新闻管理系统Java

    千次阅读 2019-04-13 19:39:58
    开发一套小型新闻管理系统,要求如下 1)可以存储各类新闻标题(ID,名称,创建者) 2)可以获取新闻标题总数 3)可以逐条打印每条每条新闻的名称 import java.util.ArrayList; class Sd{ int on; String name; ...
  • java小型图书馆管理系统

    万次阅读 多人点赞 2018-01-08 21:16:05
     根据需求,建立了一个BookMgr类,该类为实现小型图书馆的各个需求。为了和用户有一个良好的交互,根据需求且满足要求中的隐藏条件,先命名了交互...System.out.println("欢迎使用图书馆管理系统");   Syst
  • java小程序之收银系统

    千次阅读 2018-07-13 19:30:07
    完成收银柜台收款程序 编写一个...控制台交互如下:package learnjava; import java.util.Scanner; public class Demo5 { /*** * 需求 * 编写一个收银柜台收款程序。根据单价,购买数量以及收款进行计算...
  • 一、需求分析 面板:用于放置两位抽奖号码——号码展示:1.数字 2.图片 鼠标监听器:按下鼠标,线程开始,开始号码随机滚动;释放鼠标,判断线程循环的值flag=0...二、系统实现 1、面板 package com.java7.chou...
  • JavaSwing 小型学生管理系统

    千次阅读 2020-12-22 09:08:04
    在项目中建立四个包,分别是com.wu.JavaBean、com.wuJavaDao、com.wu.JavaService、com.wu.JavaView 数据库表结构 学生表只有四个属性:学生姓名、学生性别、学生学号(主键)、学生班级 管理员表只有两个属性:管理员...
  • java小项目鲜花销售系统

    千次阅读 2018-12-16 20:12:01
    项目:七彩鲜花销售系统 一、练习目标 1.体会数组的作用 2.找到分层开发的感觉 3.收获分层开发的兴趣 4.作出效果,找到自信 5.学会调试错误 6.掌握数组的增删改查方法 全部讲解和练习时间控制在3小时以内 ...
  • Java Web 系统

    千次阅读 2010-02-14 23:02:00
    1.Deployment Descriptor 配置1.1Web.xml ServletConfig参数配置:配置地点:web-app->servlet->init-param配置项:param-name ,param-valuejava代码示例:getServletConfg().getInitParameter("adminEmail");...
  • Java小程序教务管理系统

    千次阅读 多人点赞 2017-01-03 19:05:09
    需求文档:...package IMS; import java.util.*; class Friend{//朋友类 private String friendID; private String otherName; public String getFriendID() { return
  • Java学生成绩管理系统小程序源代码

    热门讨论 2011-08-30 10:27:32
    Java学生成绩管理系统小程序源代码Java学生成绩管理系统小程序源代码Java学生成绩管理系统小程序源代码Java学生成绩管理系统小程序源代码
  • 后台技术选型: JDK8 MySQL Spring-boot Spring-data-jpa Lombok Freemarker Bootstrap Websocket 程序端技术选型 微信程序 程序端 扫码点餐 菜品分类显示 模拟支付 评论系统 购物车
  • Java 小型学生管理系统心得

    千次阅读 2015-06-03 15:45:24
    这个学生管理系统相对来说比较简单,主要就是复习下java怎么连接数据库,然后你怎么来实现这个功能,我简单的说下思路吧。 首先你要构思好这个界面,他包括增删查改这些基本功能,然后你去分析这些功能都能怎么实现...
  • Java实现小型酒店管理系统

    千次阅读 2020-07-06 17:27:18
    编写Java程序实现小型酒店管理系统。 为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。 1、该系统的用户是:酒店前台。 2、酒店使用一个二维数组来模拟。“Room[][] rooms;” 3、酒店中...
  • JAVA小程序—学生点名系统

    千次阅读 2018-01-08 20:45:59
    写在前面,因为用的Mac ...程序算法十分简单,刚刚学完JAVA-GUI编程,就小试牛刀,学的过时的AWT,而且API文档也没怎么看就心急赶紧做了这么个东西。 具体代码实现如下: import java.awt.*; import java.awt.ev
  • 员工管理系统(部门员工类)import java.util.ArrayList; public class Dept { private int dno; private String dname; private String tel; private ArrayList&lt;Emp&gt; emps=new ArrayList&lt;...
  • 注:数据库设计非常重要,特别是数据类型的定义,表与表之间的关系,如果前期这些没整太好,在后期写java代码的时候会有些麻烦,比如,修改数据类型,删除表,添加表中字段等等。不过还好有Navicat这种神器,让...
  • JAVA小白的图书管理系统最后版

    千次阅读 2018-05-18 15:48:28
    经过多天学习与多位大神的帮助下,小白完成了简单的JAVA图书管理系统。 首先建立了三个子类和一个父类抽象父类 book子类 package com.www.lenovo.entity; import java.util.Scanner; public class Book extends...
  • java单链表实现小学生管理系统

    千次阅读 2018-03-06 12:38:25
    题目:用单链表实现小学生信息(姓名、学号、成绩等)的增删改查与排序最开始写的时候不知道java中有linklist类,所以用嵌套的方法做的//Student.javaimport java.util.*; public class Student { private int ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,224
精华内容 14,089
关键字:

java小系统

java 订阅