为您推荐:
精华内容
最热下载
问答
  • 5星
    59.25MB q6115759 2021-03-22 13:49:20
  • 5星
    63.04MB qq_41141585 2021-06-17 17:43:19
  • 5星
    165.73MB q6115759 2021-03-11 09:29:13
  • 5星
    2.25MB qq_40866897 2021-10-19 22:45:29
  • 5星
    2.37MB qq_45799793 2021-05-10 22:21:33
  • 5星
    99.2MB xiaohua1992 2020-12-23 22:01:39
  • 5星
    5.25MB weixin_45709829 2021-07-12 15:32:52
  • 5星
    2.98MB qq_41496513 2020-12-08 11:31:33
  • 5星
    27KB qq_52889967 2021-07-08 19:52:37
  • 5星
    24KB helongqiang 2021-08-12 20:08:15
  • 系统目前还处于功能完善阶段,适合需要二次开发的个人或公司使用,我们将会继续完善页面和业务代码,尽可能的为需要的人提供更加完善的功能。 系统技术: 项目构建 使用Maven聚合工程构建。 控制层:spring ...

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

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

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

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

    展开全文
    u010781073 2018-06-25 14:35:08
  • 4星
    1.71MB emanueling 2015-05-07 12:41:49
  • 5星
    23.08MB wxmiy 2014-07-22 13:52:16
  • 4星
    4.25MB doculu 2012-03-23 23:31:13
  • 5星
    1.28MB ruanjian99999 2012-12-13 17:32:43
  • 3,安装IntelliJ IDEA 开发工具(java) 4,安装微信程序开发者工具 5,注册程序获取程序appid java后台 一,源码导入 1,首先下载源码 上图中的Java后台源码,下载到桌面并解压 2,点击open导入上图的java...

    准备工作

    • 1,安装jdk8或者jdk11
    • 2,安装mysql8.0
    • 3,安装IntelliJ IDEA 开发工具(java)
    • 4,安装微信小程序开发者工具
    • 5,注册小程序获取小程序appid

    java后台

    一,源码导入

    • 1,首先下载源码
      image
      上图中的Java后台源码,下载到桌面并解压
    • 2,点击open导入上图的java源码,下面两种方式都可以
      image
      image
    • 3,选择你解压后的源码
      image
    • 4,导入成功后如下图
      image
    • 5,确认下项目是不是使用的jdk8,有时候不用jdk8有可能会报如下错误
      image
      解决方法如下图
      image
      image

    二,安装mysql8数据库

    我们这里要安装的是mysql8.0数据库。只要是8.0开头的,不管是8.0.11还是8.0.19都可以。
    数据库的安装,我在点餐视频的第3章的2,3,4节里都有讲。
    image

    2-1我们在进行第3节的idea链接mysql数据库操作时,会遇到下面一个错误。

    image
    时区错误,MySQL默认的时区是UTC时区,比北京时间晚8个小时。所以要修改mysql的时区。

    解决:

    找到mysql安装目录并进入bin文件夹,我的是安装在c盘
    image
    然后输入cmd,回车
    image
    输入:mysql -uroot -p123456进入mysql命令模式
    image
    然后输入

     set persist time_zone='+8:00';
    

    再次连接成功
    image
    配置完后,点击下test,如果出现绿色对勾,即代表链接成功。然后点击ok

    2-2,有的同学也会遇到下面这样的问题

    image
    image
    image
    这是因为驱动没有安装的问题。

    解决
    image
    问题出在了上图所示的地方。这个地方你如果有看我视频,肯定知道在哪里的。
    我们下面就来说下怎么解决吧。
    image
    一定要注意,上图我使用的是com.mysql.jdbc.Driver这个数据库驱动。
    然后下面的8.0.15的添加是先点加号,然后再如下图所示。
    image

    也可以去看下点餐系统常见问题汇总:

    https://blog.csdn.net/qiushi_1990/article/details/104857088

    三,创建diancan数据库和相关数据表

    如果下面第3步箭头是灰色无法点击,说明你mysql数据库没有链接成功,去看下上面第二步里提到的视频。
    image
    idea链接数据库成功后,我们再来执行qcl.sql文件。
    image
    到这里我们数据相关的配置就完成了。

    四,本地运行项目

    点击下图绿色箭头,运行项目
    image
    如果你上面绿色三角不能点,说明程序有错误。
    通过下面这个run可以看报错信息
    image
    项目运行成功的标示如下图
    image

    五,运行成功的检验

    输入下面网址,如果返回下面文字,就代表启动成功了
    image
    输入下面网址,即可进入登陆页面。
    image
    注意端口号要和你设置页里的保持一致
    image

    六,(导源码常见问题)程序包lombok不存在

    如果不存在下面错误,直接跳过即可
    image
    通常报这个错误,是因为,我们的开发者工具idea没有安装lombok库导致的

    6-1解决办法如下:

    提示我们没有安装,我们就安装一个不就行了,下面来教大家如何安装。
    1,点击扳手进入设置页
    image
    2,点击plugins,然后搜索lombok,点击install即可安装
    image
    3,安装完成后,重启idea开发工具即可
    image

    到这里java的部署就讲完了。下面讲小程序源码的导入

    小程序部分

    一,下载小程序源码并解压

    image

    二,打开小程序开发者工具,并导入小程序源码

    1,点击加号创建小程序项目
    image
    2,导入源码,填写自己的appid
    image
    至于appid如何获取,我这里不做讲解了,我零基础入门小程序的视频里都有讲解的:https://edu.csdn.net/course/detail/25749

    三,配置小程序云开发,用于获取小程序openid

    1,开通小程序云开发
    image
    这里云开发用免费版就可以了。
    2,把app.js里的云开发环境id换成你自己的
    image
    至于云开发的一些基础知识,本节不做讲解,有不懂的可以去看下我们的零基础入门小程序云开发视频:https://study.163.com/course/courseMain.htm?courseId=1209499804
    3,部署getopenid云函数
    image
    4,编译项目,如果能请求到openid即代表云函数部署成功了
    image

    四,运行小程序

    这和你上面java的运行要保持一致,如果是本地的java项目运行你就用 localhost
    image
    如果你是部署到服务器了,这里就要用你的服务器域名。
    image

    五,编译小程序

    image

    如果上述菜品栏没有数据,记得去自己的管理后台,先添加类目,再添加菜品
    image
    image
    上面两步操作,可以批量导入,相应的数据,我也再网盘里给大家准备好了。
    image
    到这里我们点餐系统的java后台和微信小程序就完整的部署了。有问题,可以加我微信2501902696。

    后面再有问题,我也会持续在这里给大家更新出来的:

    https://blog.csdn.net/qiushi_1990/article/details/104857088

    展开全文
    qiushi_1990 2020-03-14 11:32:01
  • 本篇文章帮大家学习java获取系统当前时间,包含了Java获取系统当前时间使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。以下实例演示了如何使用 Date 类及 SimpleDateFormat 类的 ...

    本篇文章帮大家学习java获取系统当前时间,包含了Java获取系统当前时间使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。

    以下实例演示了如何使用 Date 类及 SimpleDateFormat 类的 format(date) 方法来输出当前时间:import java.text.SimpleDateFormat;

    import java.util.Date;

    public class Main{

    public static void main(String[] args){

    SimpleDateFormat sdf = new SimpleDateFormat();// 格式化时间

    sdf.applyPattern("yyyy-MM-dd HH:mm:ss a");// a为am/pm的标记

    Date date = new Date();// 获取当前时间

    System.out.println("现在时间:" + sdf.format(date)); // 输出已经格式化的现在时间(24小时制)

    }

    }

    以上代码运行输出结果为:现在时间:2015-03-27 21:27:28 下午

    展开全文
    weixin_30698721 2021-02-27 19:42:24
  • 汤小洋 2020-01-16 17:19:02
  • 5星
    118KB shaolei_dp 2011-10-01 02:16:31
  • en~ 作为软件的菜鸟,最近在做java的课设(实现简单的学生信息管理系统),由于初学java和数据库,实现的过程异常艰辛,期间也填了许多没有百度到的坑,不过经过两周的奋斗也算是简单完成。SO~ 新手的我打算写下...

    ps:en~ 作为软件的菜鸟,最近在做java的课设(实现简单的学生信息管理系统),由于初学java和数据库,实现的过程异常艰辛,期间也填了许多没有百度到的坑,不过经过两周的奋斗也算是简单完成。SO~ 新手的我打算写下人生第一篇博文,算是对自己实现课设期间的总结,以便以后能够回头参考,也是方便有需要的童鞋(大神绕道~)能用到!(主要由于之前百度的文档并不是很全,比如用jdbc连接数据库,所以在此写的尽量详细些)嘻嘻~ 

    ***

     

    欢迎关注公众号:Leo的博客城堡

    ***

    一、课设概述
    1.任务
      根据所学JAVA以及数据库知识,设计出符合要求的小型教务系统即简单的学生信息管理系统(其实貌似仅限于本地~)。本系统可以实现管理系统中的登录(包括管理员、教师、学生)以及增、删、改、查等功能,以实现前台对后台数据库的管理。
    2.目的
      哈哈,花点心思简单实现出来就知道了~~
    3.要求
      要求运用JAVA及数据库等方面的知识,对学生信息管理 系统的开发,在功能上实现管理系统中增删改查;在界面上注意设计的美观程度;能够通过不同角色登录系统,并实现角色相对应的操作功能,以完成信息管理。
     
    二、数据库设计的过程(鉴于本人还未学,从简)
    2.1、需求分析
     (1).用户分析
      此学生信息管理系统的用户分为管理员,教师和学生,其中管理员可以实现对教师信息、学生信息、课程信息、班级信息和成绩信息的管理(增删改查);教师可以对个人信息的查询和密码修改、对学生信息、班级信息、课程信息的查询以及对成绩信息的修改;学生只能对个人信息查询及密码修改和对课程信息、班级信息、成绩信息的查询;所以对不同角色的权限分配很重要(不过貌似不需要在数据库里用授权)。以及用用户ID和密码来核对用户对系统安全很重要。
     2).功能需求
      1.登录模块:主要分为管理员、教师和学生,对于登录后,按照各自的需求进一步执行。
      2.基本信息管理模块:管理员、教师和学生实现相对应的信息管理。
    2.2、概念结构设计
    2.3、逻辑结构设计
      将概念设计阶段的E-R图转换成关系模式,设计出“学生管理系统”的逻辑结构,并根据程序设计需要设计视图。
     (1)首先创建数据库--“教务系统”;
     (2)在SQL Server 2008中创建关系数据模型(即表结构),本系统本人共设计6个表分别为管理员,教师表,学生表,班级表,课程表和成绩表;以及设计4个视图(由于前期构思未能全面,后期需要时添加的)分别为班级表1,成绩表1,课程表1,课程表2。
      a.管理员
    create table 管理员(管理员号 char(10) ,登录密码 char(20))
     
      b.教师表

     

    create table 教师表(教师号 char(10) primary key,姓名 char(20),性别 char(2),学历char(20),职称 char(20),所属学院char(20),登录密码 char(20))
     

     

      c.学生表

     

     

    create table 学生表(学号 char(10)  not null  primary key,姓名 char(20) not null,性别 char(2),年龄 smallint,班级号 char(10), foreign key(班级号) references 班级表(班级号),密码 char(20))
     

     

      d.班级表

     

    create table 班级表(班级号 char(10) primary key,班级名称 char(20),所属学院 char(20),班级人数 smallint,班主任 char(20));
     

     

      e.课程表

     

    create table 课程(课程号 char(20) primary key,课程名 char(20) ,教师号 char(20), foreign key(教师号) references 教师表(教师号));
     

     

     

      f.成绩表

     

    create table 成绩表(学号 char(10),课程号 char(20),成绩 smallint,primary key(学号,课号),foreign key(学号) references 学生表(学号),foreign key(课程号) references 课程表(课程号)); 
     

     

    后面的视图就不贴图了,基本创建过程均是相似的~~

     

        g.班级表1视图

     

    create view 班级表
    as
    select 学生表.学号,班级表.班级号,班级表.班级名称,班级表.所属学院,班级表.班级人数,班级表.班主任
    from 学生表,班级表
    where 学生表.班级号=班级表.班级号
     

     

      h.成绩表1视图

     

    create view 成绩表 as
    select 成绩表.学号,学生表.姓名 学生姓名,成绩表.课程号,课程表.课程名,教师表.姓名 教师姓名,成绩表.成绩
    from 成绩表,学生表,课程表,教师表
    where 成绩表.学号=学生表.学号 and 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
     

     

      i.课程表1视图

     

     

    create view 课程表1
    as 
    select 成绩表.课程号,课程表.课程名,课程表.教师号,教师表.姓名 教师姓名
    from 成绩表,课程表,教师表
    where 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
     

     

     

      j.课程表2视图

     

    create view 课程表2
    as 
    select 成绩表.学号,成绩表.课程号,课程表.课程名,课程表.教师号,教师表.姓名 教师姓名
    from 成绩表,课程表,教师表
    where 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
     

     

      k.学生信息表视图

     

     

    create view学生信息表
    as
    select学生表.学号,学生表.姓名,学生表.性别,学生表.年龄,学生表.班级号,班级表.班级名称,成绩表.课程号,课程表.课程名,成绩表.成绩,课程表.教师号
    from学生表,班级表,成绩表,课程表,
    where学生表.班级号=班级表.班级号and学生表.学号=成绩表.学号and课程表.课程号=成绩表.课程号
     

     

    2.4、物理结构设计(暂无)
    2.3、数据库实施和运行维护
     
    三、系统设计与实现
    3.1、系统设计
     (1)系统功能
      1.用户登录页面。该页面能够进行管理员、教师、学生登录。用户通过用户ID和密码验证账号通过后方可进入系统,一定程度上保证了信息的安全性,防止信息被非正规篡改。
      2.管理员主页。通过管理员账号登录后,可以通过该界面对教师信息和学生信息进行增删改查的功能操作,以及对课程、班级和成绩信息进行管理。
      3.教师主页。通过教师账号登录后,可以通过该页面对教师个人的信息进行查询和对密码的修改,以及对学生、班级、课程信息的查询和对成绩信息的修改。
      4.学生主页。通过学生账号登录后,可以通过该页面对个人信息查询和对班级、课程、成绩信息的查询。
     (2)开发环境和软件
      1.操作系统:win10
      2.数据库软件:SQL Server 2008
      3.java开发工具:Eclipse
    3.2、系统实现
     (1)用jdbc连接数据库
     好了,数据库中所需要的表和视图都已经建立好了,那么---对~激动人心的时刻就要到了,马上就要开始真正用java代码来创建页面,实现功能了,但是在这之前,有一件非常非常重要的事情要完成,那就是要用jdbc来实现将eclipse和数据库连接,以达到系统实现后能用前台操作来控制后台数据库,否则上来的import java.sql.*;语句就会报错。那么,该怎么完成这一步呢,由于本人是菜鸟入门,搭建的时候毫无经验,以至于花费了两天的的时间才连接好。纵使看到控制台print“Connection Success”时异常激动与开心,但盲目乱闯的痛苦过程却也是让人刻骨铭心。在此总结出一点经验:一定要学会用好搜索引擎,才能准确的找到问题的解决方法。在这里推荐一个教程,过程简单清晰,且能够一步到位,成功连接,我就不多赘述。java通过jdbc连接SQL server2008
      连接过程需要写连接方法~~~
            String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=教务系统";
    	String username="sa";
    	String userpwd="123";
    	
    	//连接数据库
    	public void connDB(){  //连接数据库方法
    		try {
    			conn=DriverManager.getConnection(dbURL,username,userpwd);
    			stmt=conn.createStatement();
    		}catch(Exception e) {
    			e.printStackTrace();
    		}
    	}

     
     (2)系统实现
      相信连接数据库一定难不倒聪明机智的你,那么接下来进入系统实现过程!!!先上个图~~~~
    哈哈~~你没看错,看似如此简单的信息系统竟然被我写出了这么多类(其中的几个Test类为在找bug过程中用来调试用的),由于后期就没看别人的文档了,也不清楚别人的实现过程是简单还是复杂,所以这个系统实现的过程完全个人的想法,可能是技术问题。那么,接下来就简单讲解下实现过程。
      1.登录界面(DLFrame类)
      先上效果图先~~~~
      当最初实现出这个页面时,小编还是很兴奋地~~,首先该登录页面需要什么组件或者是编者想要添加什么组件我们都要提前构思好。就以上图来说:1.窗口(继承JFrame类),2.“用户登录/LOGIN”的标签(JLabel类),3.角色栏,用于用户选择的下拉列表(JComboBox类)4.用户ID栏,填写账号的文本框(JTextField类),5.密码栏,能够对用户输入的密码自动掩盖的密码文本(JPasswordField类),6.三个按钮(JButton类),7.以及背景图设置(ImageIcon类)。基本组件构思好后就可以用类实现显示,并用相对应得布局管理器来将组件全部添加进窗口。大概思路在此,而代码的具体实现是java的基础知识(本人也是看视屏补得基础知识),就不需要多说了,贴段源码~~~ 
    DLFrame(){ //构造方法
    	    super("合肥师范学院官网");
    	    setLayout(new FlowLayout());
    	    p1=new JPanel();
    	    p2=new JPanel();
    	    p3=new JPanel();
    	    f1=new Font("宋体",Font.BOLD,30);
    	    f2=new Font("幼圆",Font.ITALIC,30);
    	    f3=new Font("楷书",Font.BOLD,18);
    	    f4=new Font("隶书",Font.PLAIN,40);
    	    
    	    //设置面板1的标签
    	    head1.setFont(f1);
    	    head1.setForeground(Color.BLUE);
    	    head2.setFont(f2);
    	    head2.setForeground(Color.GRAY);
    	    //p1.setBackground(new Color(255,240,240));
    	    p1.setBackground(null);
    	    p1.setOpaque(false);
    		p1.add(head1);
    	    p1.add(head2);
    	    
    	    //面板2为4行2列的网格布局管理器
    	    p2.setLayout(new GridLayout(4,2));
    	    /*usename.setFont(f3);
    	    password.setFont(f3);
    	    role.setFont(f3);*/
    	    //下拉列表中添加数据
    	    boxrole.addItem("管理员");
    	    boxrole.addItem("教师");
    	    boxrole.addItem("学生");
    	    //p2.setBackground(new Color(240,255,240));
    	    p2.setBackground(null);
    	    p2.setOpaque(false);
    	    boxrole.setOpaque(false);
    	    usenametext.setOpaque(false);
    	    txtPwd.setOpaque(false);
    	    p2.add(role);
    	    p2.add(boxrole);
    	    p2.add(usename);
    	    p2.add(usenametext);
    	    p2.add(password);
    	    p2.add(txtPwd);
    	    
    	    
    	    
    	    //将3个按钮添加进面板3中
    	    //p3.setBackground(new Color(230,230,250));
    	    p3.setBackground(null);
    	    p3.setOpaque(false);//设置透明
    	    a.setContentAreaFilled(false);
    	    b.setContentAreaFilled(false);
    	    c.setContentAreaFilled(false);
    	    //setGround(a);
    	    p3.add(a);
    	    p3.add(b);
    	    p3.add(c);
    	    
    	    //将三个面板添加进框架容器中
    	    this.add(p1);
    	    this.add(p2);
    	    this.add(p3);
    	    //this.add(new MyPanel());
    	    //设置背景图片  
    	    
    	    ImageIcon ic=new ImageIcon("C:\\Users\\YXS\\eclipse-workspace\\edu-a-s\\src\\edu\\yxs\\sqldemo\\4.jpg");
    	    JLabel l=new JLabel(ic);
    	    l.setBounds(0,0,ic.getIconWidth(),ic.getIconHeight());
    	    //l.setBounds(0,0,this.getWidth(),this.getHeight());
    	    //JPanel ip=(JPanel)this.getContentPane();
    	    this.getLayeredPane().add(l,new Integer(Integer.MIN_VALUE));
    	    ((JPanel)this.getContentPane()).setOpaque(false);//设置透明		
    	    
    	    //设置顶层容器的大小、位置、可见性及close功能
    	    setDefaultCloseOperation(EXIT_ON_CLOSE);
    	    setSize(350,300);
    	    setLocationRelativeTo(null);
    	    setVisible(true);
    	    
    	    //注册事件监听器
    	    //这里的this就是本类,已经是ActionListener的实现类    --有待探究
    	    boxrole.addItemListener(this);  
    	    a.addActionListener(this);
    	    b.addActionListener(this);
    	    c.addActionListener(this);
    	}

     
      2.管理员主页(GLFrame类)
     先上效果图~~~
      其中包括教师信息管理模块,学生信息管理模块,课程信息管理模块,成绩信息管理模块,班级信息管理模块登主模块,每一个模块又会对应不同的页面,一大波效果图上线~~~~
    (教师图就不贴了~)
      嗯,大概效果就是这样,具体思路大同小异,无非是每个功能的细节实现与处理上,需要花心思和时间下去,代码方面,就贴点代码段吧~~~
    public GLFrame() {   //构造方法
    		super("管理员管理页面");
    		setLayout(new FlowLayout());
    		//设置标签的颜色
    	        l.setFont(f1);
    	        l.setForeground(Color.blue);
    	        //设置按钮字体和颜色
    	        btnTM.setFont(f3);
    	        btnTM.setContentAreaFilled(false);
    	        //btnTM.setBackground(Color.blue);
    	        btnSM.setFont(f3);
    	        btnSM.setContentAreaFilled(false);
    	        btnCM.setFont(f3);
    	        btnCM.setContentAreaFilled(false);
    	        btnSCM.setFont(f3);
    	        btnSCM.setContentAreaFilled(false);
    	        btnCSM.setFont(f3);
    	        btnCSM.setContentAreaFilled(false);
    	        btnEXIT.setFont(f3);
    	        btnEXIT.setContentAreaFilled(false);
    	    
    		p1.add(l);
    		p1.setOpaque(false);
    		p2.setLayout(new GridLayout(3,2,10,10));
    		p2.setOpaque(false);
    		p2.add(btnTM);
    		p2.add(btnSM);
    		p2.add(btnCM);
    		p2.add(btnSCM);
    		p2.add(btnCSM);
    		p2.add(btnEXIT);
    		 
    		//布局管理器
    		this.add(p1);
    		this.add(p2);
    		
    		//设置背景图片
    		ImageIcon ic=new ImageIcon("C:\\Users\\YXS\\eclipse-workspace\\edu-a-s\\src\\edu\\yxs\\sqldemo\\5.jpg");
    		JLabel l=new JLabel(ic);
    		l.setBounds(0,0,ic.getIconWidth(),ic.getIconHeight());
    		//l.setBounds(0,0,this.getWidth(),this.getHeight());
    		//JPanel ip=(JPanel)this.getContentPane();
    		this.getLayeredPane().add(l,new Integer(Integer.MIN_VALUE));
    		((JPanel)this.getContentPane()).setOpaque(false);//设置透明
    		
    		//设置顶层容器的大小、位置、可见性及close功能
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setSize(350,300);
    		setLocationRelativeTo(null);
    		setVisible(true);
    		
    		btnTM.addActionListener(this);
    		btnSM.addActionListener(this);
    		btnCM.addActionListener(this);
    		btnSCM.addActionListener(this);
    		btnCSM.addActionListener(this);
    		btnEXIT.addActionListener(this);
    	}
    	
    	public void actionPerformed(ActionEvent e) {
    		//按钮为“教师信息管理”,跳转页面
    		if(e.getSource().equals(btnTM)) {
    			this.dispose();
    			new TM().display();
    		}
    		//按钮为“学生信息管理”,跳转页面
    		if(e.getSource().equals(btnSM)) {
    			//new SM().display();
    			this.dispose();
    			new SM().display();
    		}
    		//按钮为“课程信息管理”,跳转页面
    		if(e.getSource().equals(btnCM)) {
    			this.dispose();
    			new CM().display();
    		}
    		//按钮为“成绩信息管理”,跳转页面
    		if(e.getSource().equals(btnSCM)) {
    			this.dispose();
    			new SCM().display();
    		}
    		//按钮为“班级信息管理”,跳转页面
    		if(e.getSource().equals(btnCSM)) {
    			this.dispose();
    			new ClassM().display();
    		}
    		//按钮为“退出管理系统”,程序退出
    		if(e.getSource().equals(btnEXIT)) {
            	//System.exit(0);
    			this.dispose();
    			new DLFrame();
    		}
    	}
    长篇标准模型~~~
    public TM() {   //构造方法
    		super("教师信息管理系统");
    		//设置按钮颜色和字体
    		btnadd.setFont(f1);
    		btnadd.setBackground(new Color(131,175,155));
    		btndelete.setFont(f1);
    		btndelete.setBackground(new Color(131,175,155));
    		btnupdate.setFont(f1);
    		btnupdate.setBackground(new Color(131,175,155));
    		btnsearch.setFont(f1);
    		btnsearch.setBackground(new Color(131,175,155));
    		btndisplay.setFont(f1);
    		btndisplay.setBackground(new Color(131,175,155));
    		btnreturn.setFont(f1);
    		btnreturn.setBackground(new Color(131,175,155));
    		
    		//将按钮添加进菜单栏中
    		mb.add(btnadd);
    		mb.add(btndelete);
    		mb.add(btnupdate);
    		mb.add(btnsearch);
    		mb.add(btndisplay);
    		mb.add(btnreturn);
    		
    		//连接数据库
    		this.connDB();
    		//给按钮注册监听器
    		btnadd.addActionListener(this);
    		btndelete.addActionListener(this);
    		btnupdate.addActionListener(this);
    		btnsearch.addActionListener(this);
    		btndisplay.addActionListener(this);
    		btnreturn.addActionListener(this);
    		
    		setSize(500,300);
    		setLocationRelativeTo(null);
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		setVisible(true);
    		this.setJMenuBar(mb);
    	}
    	
    	public void display() {
    		//this.connDB();
    		String sql="select * from 教师表";
    		ArrayList ar=new ArrayList();  //建立数列进行存储数据库成员信息
    		int i=0,j=0;
    		try {
    			rs=stmt.executeQuery(sql);
    			while(rs.next()) {
    				ar.add(rs.getString("教师号"));
    				ar.add(rs.getString("姓名"));
    				ar.add(rs.getString("性别"));
    				ar.add(rs.getString("学历"));
    				ar.add(rs.getString("职称"));
    				ar.add(rs.getString("所属学院"));
    				ar.add(rs.getString("登录密码"));
    				i++;
    			}
    		}catch(Exception e) {
    			e.printStackTrace();
    		}
    		//创建二维数组进行存储
    		arr=new Object[i][7];
    		String[] list= {"教师号","姓名","性别","学历","职称","所属学院","登录密码"};
    		try {
    			rs=stmt.executeQuery("select * from 教师表  order by 教师号");
    			while(rs.next()) {
    				arr[j][0]=rs.getString("教师号");
    				arr[j][1]=rs.getString("姓名");
    				arr[j][2]=rs.getString("性别");
    				arr[j][3]=rs.getString("学历");
    				arr[j][4]=rs.getString("职称");
    				arr[j][5]=rs.getString("所属学院");
    				arr[j][6]=rs.getString("登录密码");
    				j++;
    			}
    		}catch(Exception e) {
    			e.printStackTrace();
    		}
    		tb=new JTable(arr,list);
    		jsp=new JScrollPane(tb);
    		this.add(jsp);
    	}
    	
    	public void delete() {   //删除信息方法
    		String tno=null;  //定义字符变量,来接收教师号   
    		int row=tb.getSelectedRow();  //代表鼠标选定的行数
    		if(row==-1) {  //表示未被选中
    			JOptionPane.showMessageDialog(null,"请选择要删除的记录!");
    		}else {
    			int x=0;
    			try {
    				rs=stmt.executeQuery("select * from 教师表");
    				while(rs.next() && x<=row) {
    					tno=rs.getString("教师号");
    					x++;
    				}
    				stmt.executeUpdate("delete  from 课程表  where 教师号="+tno);
    				stmt.executeUpdate("delete  from 教师表  where 教师号="+tno);   //局部变量一定要初始化
    				JOptionPane.showMessageDialog(null,"删除成功!");
    				this.dispose();
    				new TM().display();
    			}catch(Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    			
    	public void update() {
    		String sno1=null; //局部变量一定要初始化
    		int row=tb.getSelectedRow();  //代表鼠标选定的行数
    		if(row==-1) {  //表示未被选中
    			JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
    		}else {
    			int x=0;
    			try {
    				rs=stmt.executeQuery("select * from 教师表");
    				while(rs.next() && x<=row) {
    					sno1=rs.getString("教师号");
    					x++;
    				}
    				this.dispose();
    				new TMupdate(sno1);
    			}catch(Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	
    	public void show(String str) {   //查询结果方法
    		JFrame f=new JFrame("查询结果");
    		//JPanel p=new JPanel();
    		f.setLayout(new FlowLayout());
    		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		f.setSize(500,150);
    		f.setVisible(true);
    		f.setLocationRelativeTo(null);
    		Button btnrt=new Button("返回");
    		btnrt.setFont(f1);
    		btnrt.setBackground(new Color(131,175,155));
    		//btnrt.setSize(20,10);
    
    		this.connDB();
    		arr=new Object[1][7];
    		try {
    			rs=stmt.executeQuery("select * from 教师表  where 教师号="+str);
    			while(rs.next()) {
    				arr[0][0]=rs.getString("教师号");
    				arr[0][1]=rs.getString("姓名");
    				arr[0][2]=rs.getString("性别");
    				arr[0][3]=rs.getString("学历");
    				arr[0][4]=rs.getString("职称");
    				arr[0][5]=rs.getString("所属学院");
    				arr[0][6]=rs.getString("登录密码");
    			}
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		String[] list= {"教师号","姓名","性别","学历","职称","所属学院","登录密码"};
    		tb1=new JTable(arr,list); //创建表格
    		scroll1=new JScrollPane(tb1);
    		//f.add(btnrt,BorderLayout.NORTH);
    		f.add(btnrt);
    		f.add(scroll1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
    		//f1.add(btnrt); 
    		btnrt.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				f.dispose();
    			}
    		});
    	}
    	
    	//该方法用来确认是否在数据库中找到教师号
    	public boolean searchtest(String str) {
    		boolean x=false;
    		this.connDB();
    		try {
    			rs=stmt.executeQuery("select * from 教师表");
    			while(rs.next()) {
    				if(rs.getString("教师号").trim().equals(str)) {  //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
    					x=true;
    				}
    			}
    			//return x;
    		}catch(Exception e) {
    			e.printStackTrace();
    		}
    		return x;
    	}
    	
    	//查找方法
    	public void search() {   //等效于将一个窗口写在方法里面
    		JFrame f=new JFrame("查询");
    		f.setLayout(new FlowLayout());
    		f.setSize(240,180);
    		f.setVisible(true);
    		f.setLocationRelativeTo(null);
    		JPanel p1=new JPanel();
    		JPanel p2=new JPanel();
    		JLabel stuno=new JLabel("输入教师号:");
    		JTextField stuno1=new JTextField(10);
    		Button ok=new Button("确定");
    		Button cancel=new Button("取消");
    		p1.add(stuno);
    		p1.add(stuno1);
    		p2.add(ok);
    		p2.add(cancel);
    		f.add(p1);
    		f.add(p2);
    		//为组件注册监听器
    		ok.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				if(stuno1.getText().equals("")) {
    					JOptionPane.showMessageDialog(null,"请输入教师号");
    				}else {
    					if(!searchtest(stuno1.getText().trim())) {
    						f.dispose();
    						JOptionPane.showMessageDialog(null,"对不起,该教师不存在!");
    					}else {
    					    f.dispose();
    					    //new SM(stuno1.getText());
    					    show(stuno1.getText());
    					}
    				}
    			}
    		});
    		cancel.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				f.dispose();
    				//
    			}
    		});
    		f.addWindowListener(new WindowAdapter() {
    			public void windowClosing(WindowEvent e) {
    				Window w=(Window)e.getComponent();  
    				w.dispose();
    			}
    		});
    	}
    	
    	public void itemStateChanged(ItemEvent e) {
    		
    	}
    	
        public void actionPerformed(ActionEvent e) {
        	if(e.getSource()==btnadd) {
        		this.dispose();
        		new TMadd();
        	}
        	if(e.getSource()==btndelete) {
        		JOptionPane.showMessageDialog(null,"删除操作,谨慎操作!");
        		this.delete();
        	}
        	if(e.getSource()==btnupdate) {
        		//this.dispose();
        		this.update(); 
        	}
        	if(e.getSource()==btnsearch) {
        		this.search();
        	}
        	if(e.getSource()==btndisplay) {
        		this.dispose();
        		new TM().display();
        	}
        	if(e.getSource()==btnreturn) {
        		this.dispose();
            	new GLFrame();
        	}
        }
      基本代码都是大同小异,在于具体实现细节烧脑!
     
      3.教师主页(TeacherFrame类)先上图~~
    (后面功能图类似~~~)
    public TeacherFrame(String str) {   //构造方法
    		super("教师页面");
    		setLayout(new FlowLayout());
    		//设置标签的颜色
    	    l.setFont(f1);
    	    l.setForeground(Color.blue);
    	    //设置按钮字体和颜色
    	    btnTmg.setFont(f3);
    	    btnTmg.setContentAreaFilled(false);
    	    //btnTM.setBackground(Color.blue);
    	    btnSsh.setFont(f3);
    	    btnSsh.setContentAreaFilled(false);
    	    btnCsh.setFont(f3);
    	    btnCsh.setContentAreaFilled(false);
    	    btnSCmg.setFont(f3);
    	    btnSCmg.setContentAreaFilled(false);
    	    btnCSsh.setFont(f3);
    	    btnCSsh.setContentAreaFilled(false);
    	    btnEXIT.setFont(f3);
    	    btnEXIT.setContentAreaFilled(false);
    	    
    	    this.tno=str;
    	    
    		p1.add(l);	
    		p1.setOpaque(false);
    		p2.setOpaque(false);
    		p2.setLayout(new GridLayout(3,2,10,10));
    		p2.add(btnTmg);
    		p2.add(btnSsh);
    		p2.add(btnCsh);
    		p2.add(btnSCmg);
    		p2.add(btnCSsh);
    		p2.add(btnEXIT);
    		 
    		//布局管理器
    		this.add(p1);
    		this.add(p2);
    		
    		ImageIcon ic=new ImageIcon("C:\\Users\\YXS\\eclipse-workspace\\edu-a-s\\src\\edu\\yxs\\sqldemo\\6.jpg");
    		JLabel l=new JLabel(ic);
    		l.setBounds(0,0,ic.getIconWidth(),ic.getIconHeight());
    		//l.setBounds(0,0,this.getWidth(),this.getHeight());
    		//JPanel ip=(JPanel)this.getContentPane();
    		this.getLayeredPane().add(l,new Integer(Integer.MIN_VALUE));
    		((JPanel)this.getContentPane()).setOpaque(false);//设置透明
    		
    		//设置顶层容器的大小、位置、可见性及close功能
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setSize(350,300);
    		setLocationRelativeTo(null);
    		setVisible(true);
    		
    		this.connDB();
    		
    		btnTmg.addActionListener(this);
    		btnSsh.addActionListener(this);
    		btnCsh.addActionListener(this);
    		btnSCmg.addActionListener(this);
    		btnCSsh.addActionListener(this);
    		btnEXIT.addActionListener(this);
    	}
     
    public void tmg(String str) {   //个人信息管理方法
    		JFrame f=new JFrame("个人信息");
    		//JPanel p=new JPanel();
    		f.setLayout(new FlowLayout());
    		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		f.setSize(500,150);
    		f.setVisible(true);
    		f.setLocationRelativeTo(null);
    		Button btnchange=new Button("修改密码");
    		Button btnrt=new Button("返回");
    		btnchange.setFont(f3);
    		btnchange.setBackground(new Color(131,175,155));
    		btnrt.setFont(f3);
    		btnrt.setBackground(new Color(131,175,155));
    		//btnrt.setSize(20,10);
    
    		this.connDB();
    		arr=new Object[1][7];
    		try {
    			rs=stmt.executeQuery("select * from 教师表  where 教师号="+str);
    			while(rs.next()) {
    				arr[0][0]=rs.getString("教师号");
    				arr[0][1]=rs.getString("姓名");
    				arr[0][2]=rs.getString("性别");
    				arr[0][3]=rs.getString("学历");
    				arr[0][4]=rs.getString("职称");
    				arr[0][5]=rs.getString("所属学院");
    				arr[0][6]=rs.getString("登录密码");
    			}
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		String[] list= {"教师号","姓名","性别","学历","职称","所属学院","登录密码"};
    		tb1=new JTable(arr,list); //创建表格
    		scroll1=new JScrollPane(tb1);
    		//f.add(btnrt,BorderLayout.NORTH);
    		f.add(btnchange);
    		f.add(btnrt);
    		f.add(scroll1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
    		//f1.add(btnrt); 
    		btnrt.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				f.dispose();
    				new TeacherFrame(tno);
    			}
    		});
    		btnchange.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				f.dispose();
    				change();
    			}
    		});
    	}
    	
    	public void change() {  //创建修改密码页面,新窗口用于修改密码
    		this.connDB();
    		JFrame f=new JFrame("修改密码");
    		f.setLayout(new FlowLayout());
    		JPanel p=new JPanel();
    		JPanel p1=new JPanel();
    		p.setLayout(new GridLayout(3,2));
    		JLabel btn1=new JLabel("初始密码:");
    		btn1.setFont(f3);
    		JTextField tf1=new JTextField(10);
    		JLabel btn2=new JLabel("修改密码:");
    		btn2.setFont(f3);
    		JTextField tf2=new JTextField(10);
    		Button ok=new Button("确定");
    		ok.setBackground(new Color(131,175,155));
    		Button cancel=new Button("取消");
    		cancel.setBackground(new Color(131,175,155));
    		p.add(btn1);
    		p.add(tf1);
    		p.add(btn2);
    		p.add(tf2);
    		p1.add(ok);
    		p1.add(cancel);
    		f.add(p);
    		f.add(p1);
    		
    		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		f.setLocation(530,300);
    		//f.setLocationRelativeTo(null);
    		f.setSize(300,150);
    		f.setVisible(true);
    		
    		ok.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				try {   //获取初始密码
    					rs=stmt.executeQuery("select * from 教师表 where 教师号="+tno);
    					while(rs.next()) {
    						tpwd=rs.getString("登录密码").trim();
    					}
    				}catch(Exception e1) {
    					e1.printStackTrace();
    				}
    				
    				if(tf2.getText().equals("") || tf1.getText().equals("")) {
    					JOptionPane.showMessageDialog(null, "密码不能为空!请重新修改!");
    				}else{
    					if(!tpwd.equals(tf1.getText().trim())) {     //spwd.equals(tf1.getText().trim())
    					    JOptionPane.showMessageDialog(null,"初始密码错误,请重新输入密码!");  //"原密码是"+spwd+"输入密码是"+tf1.getText();
    					    tf1.setText("");
    					    tf2.setText("");
    					}else {
    						try {
    							stmt.executeUpdate("update 教师表 set 登录密码 ="+tf2.getText().trim()+"where 教师号="+tno);
    						}catch(Exception e1) {
    							e1.printStackTrace();
    						}
    						JOptionPane.showMessageDialog(null,"密码修改成功!请重新登录!");
    						f.dispose();
    						new DLFrame();
    					}
    					
    				}
    			}
    		});
    		cancel.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				f.dispose();
    				new TeacherFrame(tno);
    			}
    		});
    	}
    》》》》》》》》》》》》》》》》》》》》》》》》...加载中
      4.学生主页(StudentFrame类)先上图~
      
    (后面功能图类似~~)
      模块功能类似,实现过程也是类似~~
     
    public StudentFrame(String str) {   //构造方法
    		super("学生页面");
    		setLayout(new FlowLayout());
    		//设置标签的颜色
    	    l.setFont(f1);
    	    l.setForeground(Color.blue);
    	    //设置按钮字体和颜色
    	    btnSelf.setFont(f2);
    	    btnSelf.setBackground(new Color(0,255,255));
    	    btnSCsh.setFont(f3);
    	    btnSCsh.setBackground(new Color(255,160,122));
    	    btnCsh.setFont(f4);
    	    btnCsh.setBackground(new Color(30,144,255));
    	    btnCSsh.setFont(f3);
    	    btnCSsh.setBackground(new Color(0,255,0));
    	    btnEXIT.setFont(f2);
    	    btnEXIT.setBackground(new Color(220,20,60));
    	    
    		p1.add(l);
    		p1.setOpaque(false);
    		p2.setLayout(new GridLayout(4,2,10,10));
    		p2.setOpaque(false);
    		p2.add(btnSelf);
    		p2.add(btnSCsh);
    		p2.add(btnCsh);
    		p2.add(btnCSsh);
    		p2.add(btnEXIT);
    		
    		this.connDB();
    		this.sno=str;
    		//布局管理器
    		this.add(p1);
    		this.add(p2);
    		
    		ImageIcon ic=new ImageIcon("C:\\Users\\YXS\\eclipse-workspace\\edu-a-s\\src\\edu\\yxs\\sqldemo\\1.jpg");
    		JLabel l=new JLabel(ic);
    		l.setBounds(0,0,ic.getIconWidth(),ic.getIconHeight());
    		//l.setBounds(0,0,this.getWidth(),this.getHeight());
    		//JPanel ip=(JPanel)this.getContentPane();
    		this.getLayeredPane().add(l,new Integer(Integer.MIN_VALUE));
    		((JPanel)this.getContentPane()).setOpaque(false);//设置透明
    		
    		//设置顶层容器的大小、位置、可见性及close功能
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setSize(350,300);
    		setLocationRelativeTo(null);
    		setVisible(true);
    		
    		btnSelf.addActionListener(this);
    		btnSCsh.addActionListener(this);
    		btnCsh.addActionListener(this);
    		btnCSsh.addActionListener(this);
    		btnEXIT.addActionListener(this);
    	}
     
    public void cssearch(String str) {   //班级查询方法
    		JFrame f=new JFrame("班级信息页面");
    		//JPanel p=new JPanel();
    		f.setLayout(new FlowLayout());
    		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		f.setSize(500,150);
    		f.setVisible(true);
    		f.setLocationRelativeTo(null);
    		Button btnrt=new Button("返回");
    		btnrt.setFont(f3);
    		btnrt.setBackground(new Color(131,175,155));
    		//btnrt.setSize(20,10);
    
    		this.connDB();
    		arr=new Object[1][6];
    		try {
    			rs=stmt.executeQuery("select * from 班级表1  where 学号="+str);
    			while(rs.next()) {
    				arr[0][0]=rs.getString("学号");
    				arr[0][1]=rs.getString("班级号");
        			arr[0][2]=rs.getString("班级名称");
        			arr[0][3]=rs.getString("所属学院");
        			arr[0][4]=rs.getString("班级人数");
        			arr[0][5]=rs.getString("班主任");
    			}
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		String[] list={"学号","班级号","班级名称","所属学院","班级人数","班主任"};
    		tb1=new JTable(arr,list); //创建表格
    		jsp1=new JScrollPane(tb1);
    		//f.add(btnrt,BorderLayout.NORTH);
    		f.add(btnrt);
    		f.add(jsp1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
    		//f1.add(btnrt); 
    		btnrt.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				f.dispose();
    				new StudentFrame(sno);
    			}
    		});
    	}
    	
    	public void csearch(String str) {   //课程查询方法
    		JFrame f=new JFrame("课程信息页面");
    		//JPanel p=new JPanel();
    		f.setLayout(new FlowLayout());
    		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		f.setSize(500,150);
    		f.setVisible(true);
    		f.setLocationRelativeTo(null);
    		Button btnrt=new Button("返回");
    		btnrt.setFont(f3);
    		btnrt.setBackground(new Color(131,175,155));
    		//btnrt.setSize(20,10);
            
    		int i=0,j=0;
    		ArrayList ar=new ArrayList();
    		this.connDB();
    		try {
    			rs=stmt.executeQuery("select * from 课程表2 where 学号="+str);
    			while(rs.next()){
    				ar.add(rs.getString("学号"));
    				ar.add(rs.getString("课程号"));
    				ar.add(rs.getString("课程名"));
    				ar.add(rs.getString("教师号"));
    				ar.add(rs.getString("教师姓名"));
    				j++;
    			}
    		}catch(Exception e) {
    			e.printStackTrace();
    		}
    		arr=new Object[j][5];
    		try {
    			rs=stmt.executeQuery("select * from 课程表2  where 学号="+str);
    			while(rs.next()) {
    				arr[i][0]=rs.getString("学号");
    				arr[i][1]=rs.getString("课程号");
        			arr[i][2]=rs.getString("课程名");
        			arr[i][3]=rs.getString("教师号");
        			arr[i][4]=rs.getString("教师姓名");
        			i++;
    			}
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		String[] list={"学号","课程号","课程名","教师号","教师姓名"};
    		tb1=new JTable(arr,list); //创建表格
    		jsp1=new JScrollPane(tb1);
    		//f.add(btnrt,BorderLayout.NORTH);
    		f.add(btnrt);
    		f.add(jsp1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
    		//f1.add(btnrt); 
    		btnrt.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				f.dispose();
    				new StudentFrame(sno);
    			}
    		});
    	}
    	
    	public void scsearch(String str) {  //查询成绩页面
    		int i=0,j=0;
    		JFrame f=new JFrame("成绩信息页面");
    		//JPanel p=new JPanel();
    		f.setLayout(new FlowLayout());
    		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		f.setSize(500,200);
    		f.setVisible(true);
    		f.setLocationRelativeTo(null);
    		Button btnrt=new Button("返回");
    		btnrt.setFont(f3);
    		btnrt.setBackground(new Color(131,175,155));
    		//btnrt.setSize(20,10);
    
    		this.connDB();
    		ArrayList list=new ArrayList();
        	try {
        		rs=stmt.executeQuery("select * from 成绩表1 ");
        		while(rs.next()) {
        			list.add(rs.getString("学号"));
        			list.add(rs.getString("姓名"));
        			list.add(rs.getString("课程号"));
        			list.add(rs.getString("课程名"));
        			list.add(rs.getString("教师姓名"));
        			list.add(rs.getString("成绩"));
        			i++;
        		}
        	}catch(Exception e) {
        		e.printStackTrace();
        	}
    		arr=new Object[i][6];
    		try {
    			rs=stmt.executeQuery("select * from 成绩表1  where 学号="+str+"order by 课程号");
    			while(rs.next()) {
    				arr[j][0]=rs.getString("学号");
        			arr[j][1]=rs.getString("姓名");
        			arr[j][2]=rs.getString("课程号");
        			arr[j][3]=rs.getString("课程名");
        			arr[j][4]=rs.getString("教师姓名");
        			arr[j][5]=rs.getString("成绩");
        			j++;
    			}
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		String[] listname={"学号","姓名","课程号","课程名","教师姓名","成绩"};
    		tb1=new JTable(arr,listname); //创建表格
    		jsp1=new JScrollPane(tb1);
    		//f.add(btnrt,BorderLayout.NORTH);
    		f.add(btnrt);
    		f.add(jsp1);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
    		//f1.add(btnrt); 
    		btnrt.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				f.dispose();
    				new StudentFrame(str);
    			}
    		});   	
        }
     
      5.登录页面验证码(MyPanel类)
      代码块写好,但面板添加过程出现问题,小编准备后期自学了web再来解决页面的验证码登录问题,所以这里只能简单贴上代码块~~
    package edu.yxs.sqldemo;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Panel;
    import java.util.Random;
    
    class MyPanel extends Panel{
    	static String s1;
    	public void paint(Graphics g){
    		int width=70;
    		int height=40;
    		g.setColor(Color.LIGHT_GRAY);
    		g.fillRect(0,0, width, height);
    		g.setColor(Color.green);            //设置上下文颜色
    		g.drawRect(0,0,width-1,height-1); //绘制边框
    		Random r=new Random();  //产生随机数
    		//绘制背景圆点
    		for(int i=0;i<200;i++){
    			int x=r.nextInt(width)-2;
    			int y=r.nextInt(height)-2;
    			g.drawOval(x, y, 2, 2);
    		}
    		g.setFont(new Font("黑体",Font.BOLD,30));
    		g.setColor(Color.yellow);
    		char[] chars=("0123456789"+"abcdefghijklmnopqrstuvwxyz"+"HIJKLMNOPQRSTUVWXYZ").toCharArray();
    		StringBuilder sb=new StringBuilder();
    		for(int i=0;i<4;i++){
    			int pos=r.nextInt(chars.length);
    			char c=chars[pos];
    			sb.append(c+" ");
    		}
    		g.drawString(sb.toString(),20,30);
    		s1=sb.toString();
    		
    		g.setColor(Color.red);
    		for(int i=0;i<200;i++){
    			int x=r.nextInt(width)-2;
    			int y=r.nextInt(height)-2;
    			g.drawOval(x, y, 2, 2);
    		}
    	}
    	
    	public static void main(String[] args) {
    		new MyPanel();
    	}
    	
    }
     
    哒哒哒~~~~嗯,客官能够看到这里已是非常不易,每一个板块也实现差不多,接着就是不同页面的切换~
     
    ————————————————————我是分割线~~——————————————————

    四、总结与体会
      嗯~其实很幸运客官能够看到这里,其实对于和本人一样刚入门的java小白来说,接下来要说的才是最最重要的,因为接下来的是小编整个的实现过程中碰到的坑(这些坑是耗时最多的地方),有些百度不到所以,小编想要将这些经验分享,希望小白可能遇到这些问题的时候能够用来解决它们~~接下来就用图说话吧!!!
     1.其实在前期花时间最多的地方就是在数据库的连接上,在实验室整整搞了两天下午,连接问题无非在于路径添加,jdbc包的下载和在eclipse上的添加,很无奈~前面的教程很详细,一步到位。
      简单贴段测试连接的代码~~
    public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    		String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=教务系统";
    		String userName = "sa";
    		String userPwd = "123";
    		try {
    			//Class.forName(driverName);
    			Connection conn=DriverManager.getConnection(dbURL,userName,userPwd);
    			Statement stmt=conn.createStatement();
    			System.out.println("connect sqlserver success!");
    			//需要执行的语句
    			String sql="select * from 课程表";
    			ResultSet rs=stmt.executeQuery(sql);
    			//System.out.println("管理员号"+"\t"+"登录密码");
    			//System.out.println("cno"+"\t"+"cname"+"\t"+"cpno"+"\t"+"ccredit");
    			while(rs.next()) {
    				System.out.print(rs.getString(1)+"\t");
    				System.out.print(rs.getString(2)+"\t");
    			}
    			rs.close();
    			stmt.close();
    			conn.close();
    		} catch (Exception e) {
    			// TODO: handle exception
    			   e.printStackTrace();
    			   System.out.print("connect failed");
    		}
    	}
    		}
    	}
      2.紧接着在我连接好数据库后,发现select语句会很容易实现,但是在用到insert语句向数据库插入信息时,就会出现“列名无效”这个问题,也是困扰了我好几天,百度的很多方法都说是数据库在连接上出了问题,但我在测试方法里明明能够执行select语句,可见数据库的连接是毫无问题的,最后苦思冥想总算找到病根。
    图2-1
    图2-2
    图2-3
      如图2-1,当我在用该方法将用户从页面输入的信息插入数据库时,系统总会报错,说“列名无效”(如图2-2信息),但是当我在测试类里面用如图2-3的语句进行插入数据时,后台数据库能够正常的插入,当时我就很不解,深夜思来想去才明白可能是SQL语句使用时出错(那个时候还不会用断点debug,-_-||),那么只有一种可能,就是插入语句语法使用错误,于是手动几方排查,才想到,可能是在字符串插入时没有添加“''”导致的,最后实验,便成功插入。在现在看来,好像是是个特别小的问题,但是在你一直思考这个问题,死磕这个问题(强迫症),又百度不到解决方法时,是很绝望的!! 
    图2-4
     
      用图2-4的语句,添加了“''”符号,总算得到的图2-5的“insert success”,后面图2-6的问题也是这样,相同的方法解决。
     
    图2-5
    图2-6
    图2-7
    图2-8
     
      如果遇到“对象名无效”这种问题,一定是下面这段代码出问题了,也就是定位符或者是登录名或者密码错了,导致无法连接数据库,也就会出现对象名无效的问题。
           String dbURL="jdbc:sqlserver://localhost:1433;databaseName=教务系统";
    	String userName="sa";
    	String userPwd="123";String dbURL="jdbc:sqlserver://localhost:1433;databaseName=教务系统";
    	String userName="sa";
    	String userPwd="123";
      3.如下图,出现NullPointerException问题 由于 ResultSet 返回的数据库中数据时,遇到本身创建数据库表时定义了不能为空的列值为 null 值时就会自动报错,出现 nullpointerexception 异常,并且 rs.next() 会终止返回。所以在数据库中填写信息时要注意是否能够为null.

     
      4.如下图,在设置窗口背景的时候也花费了本人很长时间,主要是对类的不熟悉,还有就是图片的的添加路径问题也是困扰许久( 建议使用绝对路径,就是C盘下面找到eclipse的workspace目录下面的你创建的项目的包下面,在定义图片路径时,直接调用,不会出错),下面就贴段代码~~
       ImageIcon ic=new ImageIcon("C:\\Users\\YXS\\eclipse-workspace\\edu-a-s\\src\\edu\\yxs\\sqldemo\\1.jpg");
        JLabel l=new JLabel(ic);
        l.setBounds(0,0,ic.getIconWidth(),ic.getIconHeight());
        //l.setBounds(0,0,this.getWidth(),this.getHeight());
        //JPanel ip=(JPanel)this.getContentPane();
        this.getLayeredPane().add(l,new Integer(Integer.MIN_VALUE));
        ((JPanel)this.getContentPane()).setOpaque(false);//设置透明ImageIcon ic=new ImageIcon("C:\\Users\\YXS\\eclipse-workspace\\edu-a-s\\src\\edu\\yxs\\sqldemo\\1.jpg");
        JLabel l=new JLabel(ic);
        l.setBounds(0,0,ic.getIconWidth(),ic.getIconHeight());
        //l.setBounds(0,0,this.getWidth(),this.getHeight());
        //JPanel ip=(JPanel)this.getContentPane();
        this.getLayeredPane().add(l,new Integer(Integer.MIN_VALUE));
        ((JPanel)this.getContentPane()).setOpaque(false);//设置透明
      嗯~,图形添加好,问题就来了,会出现添加的图过大,无法适应窗口,即窗口无法将整张图展示出来,如图4-1,4-2的区别,后来小编也是找了很多方法,但貌似时类和方法的不熟悉,导致没有总之有效的方法,后来迫于无奈,于是将所有需要的背景图按照窗口的大小裁剪好,然后展示出来的效果如图4-4的效果。对了,还有一点很重要,一定要把JButton,JPanel这些组件设为透明,不然会阻挡背景图,很难受的~~~~
    图4-1
    图4-2
    图4-3
    图4-4
      
      5.在执行下面这段代码,即在学生对个人信息进行修改密码时,会出错,错误如图5-1,明明我输入密码和原始的密码完全相同,可是为何会错呢,找这个问题足足找了一晚上,后面才发现图中其实控制台打印的原始密码后面是有空格的,所以和你输入的才会无法匹配。其实是前台用java语句去访问后台数据库时,后台返回的一切字符串都会返回后面的空格,因为我们定义表的属性时,比如密码定义char(9),但我设置的密码是123,则在数据库中后面还有没用到的空格,在反馈前台时便会把空格返回。,所以一定要用trim()方法。
    ok.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				try {   //获取初始密码
    					rs=stmt.executeQuery("select * from 学生表 where 学号="+sno);
    					while(rs.next()) {
    						spwd=rs.getString("密码").trim();  //!!!对于数据库中传回来的值一定要用trim();因为后面会有多余的空格!!!
    						/*bug:数据库中数据会有空格,mmp,记于12/10/凌晨1:56,耻!*/
    						//spwd="123";
    					}
    				}catch(Exception e1) {
    					e1.printStackTrace();
    				}
    				
    				if(tf1.getText().equals("") || tf2.getText().equals("")) {
    					JOptionPane.showMessageDialog(null, "密码不能为空!请重新修改!");
    				}else {
    					if(!spwd.equals(tf1.getText())) {     //spwd.equals(tf1.getText().trim())
    					    JOptionPane.showMessageDialog(null,"初始密码错误,请重新输入密码!");  //"原密码是"+spwd+"输入密码是"+tf1.getText();
    					    tf1.setText("");
    					    tf2.setText("");
    				    }else {
    					    try {
    						    stmt.executeUpdate("update 学生表 set 密码 ="+"'"+tf2.getText().trim()+"'"+"where 学号="+sno);
    					    }catch(Exception e1) {
    						    e1.printStackTrace();
    					    }
    					    JOptionPane.showMessageDialog(null,"密码修改成功!请重新登录!");
    					    f.dispose();
    					    new DLFrame();
    				    }
    			    }
    			}
    		});
    图5-1
     
      6.还有一个问题是在成功创建JTable时,但用row=tb5.getSelectedRow()方法时无法响应选定操作来返回行数(代码如下),后来总结是,不能将该方法和JTable新建类放在同一个方法里,所以本人后期重新写了一个类来实现功能。
    <strong>public void scmg(String s1,String s2) { //精确到班级成绩的页面
    		String csname=null;
    		this.connDB();
    		try {
    			rs=stmt.executeQuery("select distinct 班级号 ,班级名称 from 学生信息表 where 班级号="+"'"+s2+"'");
    			while(rs.next()) {
    				csname=rs.getString("班级名称").trim();
    			}
    		}catch(Exception e) {
    			e.printStackTrace();
    		}
    		JFrame f=new JFrame(csname+" --学生成绩信息");
    		//JPanel p=new JPanel();
    		f.setLayout(new FlowLayout());
    		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		f.setSize(500,150);
    		f.setVisible(true);
    		f.setLocationRelativeTo(null);
    		Button btnrt=new Button("返回");
    		Button btnchange=new Button("修改");
    		btnchange.setFont(f3);
    		btnchange.setBackground(new Color(131,175,155));
    		btnrt.setFont(f3);
    		btnrt.setBackground(new Color(131,175,155));
    		//btnrt.setSize(20,10);
    
    		this.connDB();
    		int i=0,j=0;
    		ArrayList al=new ArrayList();
    		try {
    			rs=stmt.executeQuery("select * from 学生信息表  where 教师号="+s1+"and 班级号='"+s2+"'");
    			while(rs.next()) {
    				al.add(rs.getString("学号"));
    				al.add(rs.getString("姓名"));
    				al.add(rs.getString("性别"));
    				al.add(rs.getInt("年龄"));
    				al.add(rs.getString("班级名称"));
    				al.add(rs.getString("课程号"));
    				al.add(rs.getString("课程名"));
    				al.add(rs.getString("成绩"));
    				i++;
    			}
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		arr=new Object[i][8];
    		try {
    			rs=stmt.executeQuery("select * from 学生信息表  where 教师号="+s1+"and 班级号= '"+s2+"'");
    			while(rs.next()) {
    				arr[j][0]=rs.getString("学号");
    				arr[j][1]=rs.getString("姓名");
    				arr[j][2]=rs.getString("性别");
    				arr[j][3]=rs.getString("年龄");
    				arr[j][4]=rs.getString("班级名称");
    				arr[j][5]=rs.getString("课程号");
    				arr[j][6]=rs.getString("课程名");
    				arr[j][7]=rs.getString("成绩");
    				j++;
    			}
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		String[] list= {"学号","姓名","性别","年龄","班级名称","课程号","课程名","成绩"};
    		tb5=new JTable(arr,list); //创建表格
    		scroll5=new JScrollPane(tb5);
    		//f.add(btnrt,BorderLayout.NORTH);
    		f.add(btnchange);
    		f.add(btnrt);
    		f.add(scroll5);  //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
    		
    		//String sno1=null; //局部变量一定要初始化,获取学生学号
    		String cno=null; //获取课程号
    		
    		/
    		//*Bug:千万不要在同一个方法里定义获取行数!!!!!!!!!!!无法执行                    //
    		//row=tb5.getSelectedRow();  //代表鼠标选定的行数                                              //
    		/
    		
    		btnrt.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				f.dispose();
    				scmg(tno);
    			}
    		});
    		
    		btnchange.addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
    				if(row==-1) {  //表示未被选中
    					JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
    				}else {
    					//int x=0;
    					try {
    						//String sno1=(String)tb1.getModel().getValueAt(row,column);
    						f.dispose();
    						//scchange1(sno1,cno);
    					}catch(Exception e1) {
    						e1.printStackTrace();
    					}
    				}
    				//f.dispose();
    				//scchange();
    			}
    		});
    	   }</strong>


      嗯,问题大概就是这些了,哇,在实验室花了两个下午才写完,博客真不好写,哈哈,要是有客官能够看到这里也是不易,希望这篇博客是干货,对小白们有用,如果有用,那就赶紧动手实现吧~~~(个人觉得,图书管理系统,人员信息管理系统,大概都是和这个差不多的吧,举一反三)...
     
      还有,如果想要博主该系统的源代码的话,可以去这https://github.com/Javecc/yxsdemo/tree/master/sqldemo,博主已经将源码发到GitHub上了(嘻嘻~)
     
     
     
     
     
     
     
     
     
     
     
    展开全文
    qq_38330148 2017-12-12 20:37:49
  • caidewei121 2019-03-11 10:49:12
  • Long 2019-08-21 16:29:38
  • 4星
    1.51MB id_java 2015-07-23 15:33:54
  • 4星
    10MB lili6145 2012-05-27 13:17:40
  • 5星
    15KB qq_25827845 2017-02-28 21:36:13
  • 4星
    20.75MB yangxu4536 2013-05-24 23:49:11
  • 5星
    879KB huangyueranbbc 2015-12-31 18:12:48
  • weixin_29619665 2021-02-12 14:55:13
  • tyler_download 2016-06-21 18:32:37
  • 4星
    24.89MB pxzsky 2015-01-23 17:52:35
  • qq_36868951 2019-01-22 21:28:14
  • 4星
    8.67MB qq_36877577 2017-04-20 10:19:24
  • 5星
    57KB u010191818 2014-12-22 11:28:31
  • 5星
    14.58MB defonds 2014-03-19 10:04:37
  • qq_15418761 2018-06-11 18:04:41
  • qq502948261 2018-07-13 19:30:07
  • 4星
    14.59MB ltqwlbj 2013-01-06 23:34:52
  • peng_wei_kang 2018-07-06 15:24:06
  • 4星
    57.96MB huangyueranbbc 2016-01-04 10:22:41
  • 5星
    2.39MB afgasdg 2011-02-27 21:06:31

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,198,681
精华内容 1,279,472
关键字:

java小系统

java 订阅