精华内容
下载资源
问答
  • 小型新闻管理系统Java

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

    1)可以存储各类新闻标题(ID,名称,创建者)
    2)可以获取新闻标题总数
    3)可以逐条打印每条每条新闻的名称

    import java.util.LinkedList;
    class Qw{
       int on;
       String name;
       String create;
       Qw(int age,String name,String create){
       	this.on=on;
       	this.name=name;
       	this.create=create;
       }
       public void printName() {
       	System.out.println(name);
       }
    }
    public class NewsManage_02 {
       public static void main(String[] args) {
       	LinkedList list=new LinkedList();
       	Qw car=new Qw(00001,"汽车","创建者1");
       	list.add(car);
       	Qw edu=new Qw(00002,"教育","创建者2");
       	list.addFirst(edu);
       	list.addLast(edu);
       	list.remove(list.size()-1);
       	System.out.println("新闻标题的总数为:"+list.size()+"条");
       	for(int i=0;i<list.size();i++) {
       		System.out.println("第"+(i+1)+"条新闻的标题是");
       		((Qw) list.get(i)).printName();
       	}
       }
    }
    
    展开全文
  • 直播程序如何用java实现? 直播程序java解决方案? 直播程序java开发方案? 今天给大家分享一下近期在(www.zhaowubo.cn)上分享的Java开发直播程序的案例(附功能清单)仅供参考。希望能帮助想用Java开发...

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

    展开全文
  • Java+sql 实现-小型教务系统

    万次阅读 多人点赞 2017-12-12 20:37:49
    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上了(嘻嘻~)
     
     
     
     
     
     
     
     
     
     
     
    展开全文
  • Java电商系统程序电商系统

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

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

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

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

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

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

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

    千次阅读 2015-04-12 16:17:31
    import java.util.Scanner; //主函数 public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Car car1= new Car("奥迪A6","1000/天",4,1); Car car2 = new...
  • 后台技术选型: JDK8 MySQL Spring-boot Spring-data-jpa Lombok Freemarker Bootstrap Websocket 程序端技术选型 微信程序 程序端 扫码点餐 菜品分类显示 模拟支付 评论系统 购物车
  • JavaSwing 小型学生管理系统

    千次阅读 2020-12-22 09:08:04
    在项目中建立四个包,分别是com.wu.JavaBean、com.wuJavaDao、com.wu.JavaService、com.wu.JavaView 数据库表结构 学生表只有四个属性:学生姓名、学生性别、学生学号(主键)、学生班级 管理员表只有两个属性:管理员...
  • 微信程序系统教程共有“微信程序系统教程[初级阶段]”、“微信程序系统教程[中级阶段]——核心技术”、“微信程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信程序系统教程[阶段]全套课程”...
  • Java学生成绩管理系统小程序源代码

    热门讨论 2011-08-30 10:27:32
    Java学生成绩管理系统小程序源代码Java学生成绩管理系统小程序源代码Java学生成绩管理系统小程序源代码Java学生成绩管理系统小程序源代码
  • java单链表实现小学生管理系统

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

    千次阅读 2020-11-01 10:06:39
    以下为小型图书馆管理系统模式图: 模式总体概述: 其中IBorrower接口确定Borrower类标准,Library类为单例设计模式,即图书馆只有一个。Book类为Borrower类的内部类,libraryBook类为Library类的内部类。最后利用...
  • 今天给大家带来的是java编写的投票小系统,代码简易,适合初学者练手! 代码展示: package com.tarena.wgh.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.*; import javax...
  • 微信程序系统教程[班]全套课程
  • Java实现小型酒店管理系统

    千次阅读 2020-07-06 17:27:18
    编写Java程序实现小型酒店管理系统。 为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。 1、该系统的用户是:酒店前台。 2、酒店使用一个二维数组来模拟。“Room[][] rooms;” 3、酒店中...
  • 由此可以发现,Windows系统java编译器(javac)并没有严格区分大写! what?什么情况?说话的严格区分大写呢,为啥java编译器(javac)没有严格区分大写,而java解释器(java)就严格区分大写。 以下...
  • Java 简单的租车小系统

    千次阅读 2018-04-01 13:52:41
    import java.util.Scanner; public class Rentcar { static int peoplenumber = 0; static int load = 0; static float totalprice = 0; public static void main(String[] agrs) { Passe...
  • java小项目,租车系统

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

    千次阅读 2017-08-29 09:41:24
    System.out.println("欢迎使用DVD租用系统~"); System.out.println("请选择操作"); System.out.println("1:查看所有电影"); System.out.println("2:新增电影"); System.out.println("3:借出电影"); ...
  • 超市管理系统小型的(java

    热门讨论 2009-04-30 23:30:46
    基于struts网上书店 JSP+Access论坛 网络招标信息管理系统 sql2000网络教学平台 mySQL超市管理系统 超市管理系统 教学管理系统 基于网络环境的选课系统 学生信息管理系统 新闻系统 新闻文章发布系统 考试系统 网络...
  • JAVA】点名小系统

    2015-03-18 22:17:33
    import java.util.Random;//包含随机数需要的类 import java.lang.Math;//包含Math.abs函数 public class CheckStudent { public static void main(String args[]) { int i=32; System.out.print("It is a ...
  • java小程序之收银系统

    千次阅读 2018-07-13 19:30:07
    完成收银柜台收款程序 编写一个...控制台交互如下:package learnjava; import java.util.Scanner; public class Demo5 { /*** * 需求 * 编写一个收银柜台收款程序。根据单价,购买数量以及收款进行计算...
  • java小型图书馆管理系统

    万次阅读 多人点赞 2018-01-08 21:16:05
     根据需求,建立了一个BookMgr类,该类为实现小型图书馆的各个需求。为了和用户有一个良好的交互,根据需求且满足要求中的隐藏条件,先命名了交互...System.out.println("欢迎使用图书馆管理系统");   Syst
  • 一、需求分析 面板:用于放置两位抽奖号码——号码展示:1.数字 2.图片 鼠标监听器:按下鼠标,线程开始,开始号码随机滚动;释放鼠标,判断线程循环的值flag=0...二、系统实现 1、面板 package com.java7.chou...
  • 一、需求分析  1. 显示候选人照片和姓名。  2. 可以使用多种模式进行抽奖,包括... 3....二、系统总体框架 ... 系统需求比较简单,采用Java Swing技术可以很好的实现,系统的总体类框架图如下    说明:基
  • java小系统 数据库 图书馆

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

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

    万次阅读 多人点赞 2018-06-20 21:41:17
    Java图书管理系统 设计人:wangyunpeng_bio 项目需求 随着计算机的普及和应用水平的提高,经过考察比较,决定利用自己的Java知识开发小型的图书管理系统,方便图书的管理。 图书管理系统是典型的信息管理系统。...

空空如也

空空如也

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

小系统java

java 订阅