`
qinweiping
  • 浏览: 132816 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

【菜鸟学开发系统】学生成绩管理系统(三)

阅读更多

今天我们来探讨一下开发实现业务功能和数据库的操作 由于先前数据库设计的文档不小心弄丢了 正在写文章中(一)

package qinweiping;
import java.util.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class ChangePwdTeacher extends JPanel 
                     implements ActionListener
{ 
    private String host;
    //声明Connection引用、Statement对象引用与结果集引用
	private Connection conn;
	private Statement stmt;
	private ResultSet rs;
	//创建信息提示标签数组
	private JLabel[] jlArray={new JLabel("用户名"),
	   new JLabel("原始密码"),new JLabel("新密码"),
	   new JLabel("确认新密码")};
	//创建用户名输入框
	private JTextField jtf=new JTextField();
	//创建密码框数组
	private JPasswordField[] jpfArray={new JPasswordField(),
	        new JPasswordField(),new JPasswordField()};
	//创建操作按钮
	private JButton[] jbArray={new JButton("确认"),new JButton("重置")};
/* 主要是完成了对该模块的所需控件的初始化工作,一些类似的控件可以用数组一次性创建 */

	//构造器                          
	public ChangePwdTeacher(String host)
	{ 
	    this.host=host; 
	   //初始化页面
		this.initialFrame();
		//为按钮注册监听器
		this.addListener();
	}


	public void addListener()
	{    //为文本框注册监听器
	     jtf.addActionListener(this);
	     //为密码框注册监听器
	     jpfArray[0].addActionListener(this);
	     jpfArray[1].addActionListener(this);
	     jpfArray[2].addActionListener(this);
	    //为按钮注册监听器
		jbArray[0].addActionListener(this);
		jbArray[1].addActionListener(this);
	}
	//初始化页面的方法
	public void initialFrame()
	{   //设为空布局
		this.setLayout(null);
		//将控件放入相应的位置
		for(int i=0;i<jlArray.length;i++)
		{
			jlArray[i].setBounds(30,20+50*i,150,30);
			this.add(jlArray[i]);
			if(i==0)
			{
				jtf.setBounds(130,20+50*i,150,30);
				this.add(jtf);
			}
			else
			{
				jpfArray[i-1].setBounds(130,20+50*i,150,30);
				this.add(jpfArray[i-1]);
			}
			
		}
		jbArray[0].setBounds(40,230,100,30);
		this.add(jbArray[0]);
		jbArray[1].setBounds(170,230,100,30);
		this.add(jbArray[1]);
		
	}


	//实现ActionListener接口中的方法
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==jtf)//输入用户名并回车后
		{
			jpfArray[0].requestFocus(true);
		}
		else if(e.getSource()==jpfArray[0])//输入原始密码并回车后
		{
			jpfArray[1].requestFocus(true);
		}
		else if(e.getSource()==jpfArray[1])//输入新密码并回车后
		{
			jpfArray[2].requestFocus(true);
		}
		else if(e.getSource()==jpfArray[2])//输入确认新密码并回车后
		{
			jbArray[0].requestFocus(true);
		}
/*主要实现键盘的易用性,用户可以通过按Enter建直接进入下一个输入框 而不用鼠标单击相应的输入框在进行文字的输入这样可以方便用户操作*/
		else if(e.getSource()==jbArray[1])
		{////按下重置按钮的处理代码
		     //将输入信息清空
			for(int i=0;i<jpfArray.length;i++)
			{
				jpfArray[i].setText("");
			}
			jtf.setText("");
		}
/*   用户单击“重置”按钮后之行动的动作 将输入框的内容全部清空*/
		else if(e.getSource()==jbArray[0])
		{//按下确认按钮的处理代码
		    //用于判断密码格式的正则式字符串
			String patternStr="[0-9a-zA-Z]{6,12}";
			String user_name=jtf.getText().trim();//获取用户名
			if(user_name.equals(""))
			{//用户名为空
				JOptionPane.showMessageDialog(this,"请输入用户名",
				                "错误",JOptionPane.ERROR_MESSAGE);
				return;
			}
			String oldPwd=jpfArray[0].getText().trim();//获取原始密码
			if(oldPwd.equals(""))
			{//原始密码为空
				JOptionPane.showMessageDialog(this,"请输入原始密码",
				                  "错误",JOptionPane.ERROR_MESSAGE);
				return;
			}
			String newPwd=jpfArray[1].getText().trim();//获取新密码
			if(newPwd.equals(""))
			{//新密码为空
				JOptionPane.showMessageDialog(this,"请输入新密码",
				                "错误",JOptionPane.ERROR_MESSAGE);
				return;
			}
			if(!newPwd.matches(patternStr))
			{//新密码不符合格式
				JOptionPane.showMessageDialog(this,
				                  "密码只能是6到12位的字母或数字",
				                  "错误",JOptionPane.ERROR_MESSAGE);
				return;
			}
			String newPwd1=jpfArray[2].getText().trim();//获取确认密码
			if(!newPwd.equals(newPwd1))
			{//新密码与确认密码不同
				JOptionPane.showMessageDialog(this,"确认密码与新密码不符",
				                       "错误",JOptionPane.ERROR_MESSAGE);
				return;
			}
/*  根据用户单击确认按钮时候执行动作 还可以判断用户输入的有没有逻辑问题*/
			try
			{   //初始化数据库连接并更改密码
				this.initialConnection();
				String sql="update user_teacher set pwd='"+newPwd+"'"+
				            " where uid='"+user_name+"'"+
				           " and pwd='"+oldPwd+"'";
				int i=stmt.executeUpdate(sql);
				if(i==0)
				{//更改失败
					JOptionPane.showMessageDialog(this,
					      "修改失败,请检查您的用户名或密码是否正确",
					      "错误",JOptionPane.ERROR_MESSAGE);
				}
				else if(i==1)
				{//更改成功
					JOptionPane.showMessageDialog(this,"密码修改成功",
					           "提示",JOptionPane.INFORMATION_MESSAGE);
				}
				this.closeConn();//关闭数据库连接
			}
			catch(Exception ea){
				ea.printStackTrace();
			}
		}
	}
	
/*  根据用户输入更新数据库操作,根据更新记录的条数来确定是否更新成功 如果是0就是更新失败 是1的话那就更新成功*/


public void setFocus()
	{
		jtf.requestFocus(true);
	}
	//自定义的初始化数据库连接的方法
	public void  initialConnection()
	{
		try
		{
			Class.forName("org.gjt.mm.mysql.Driver");
			conn=DriverManager.getConnection(
				 "jdbc:mysql://"+host+"/test","root","");
			stmt=conn.createStatement();
		}
		catch(SQLException e)
		{
e.printStackTrace();
		}
		catch(ClassNotFoundException e)
		{
			e.printStackTrace();
		}
	}
	//关闭数据库连接的方法
	public void closeConn()
	{
		try
		{
			if(rs!=null)
			{
				rs.close();
			}
			if(stmt!=null)
			{
				stmt.close();
			}
			if(conn!=null)
			{
				conn.close();
			}
		}
		catch(SQLException e)
		{
			e.printStackTrace();
		}
	}
	public static void main(String args[])
	{
		ChangePwdTeacher cpt=new ChangePwdTeacher("127.0.0.1:3306");
		JFrame jframe=new JFrame();
		jframe.add(cpt);
		jframe.setBounds(70,20,700,650);
		jframe.setVisible(true);
	}
}
【注】代码中用到了innitialConnection 和closeConn两个方法 他们是用来初始化数据库的连接和关闭的方法,这两个方法具体的实现在后面会给出 这两个方法在后面的很多模块要用到

 效果截图如下:



 

  • 大小: 6.6 KB
1
0
分享到:
评论
2 楼 qinweiping 2011-12-14  
greatwqs 写道
试试  MVC
恩 是的
1 楼 greatwqs 2011-12-14  
试试  MVC

相关推荐

    C#ado.net学生成绩管理系统+SQL,菜鸟级别,简单易懂

    最后,了解如何打包应用程序并生成安装程序,使得其他用户可以方便地下载和安装这个学生成绩管理系统,也是开发过程中不可或缺的一部分。 通过学习和实践这个简单的学生成绩管理系统,初学者可以掌握C#编程、ADO...

    学生成绩管理系统需求文档

    - **目的**:文档旨在明确描述学生成绩管理系统的整体结构、功能模块及其具体需求,为后续的软件设计与开发提供清晰的指导方向。它不仅是软件设计的基础,也是进行测试的主要依据,同时还作为用户了解软件功能需求的...

    使用 Qt 构建、C++ 作为底层开发的学生成绩管理系统,支持对学生成绩的增删改查、排序、汇总等功能。.zip

    在学生成绩管理系统中,C++作为底层开发语言,可以实现系统的核心逻辑和数据处理,如数据库操作、成绩计算、排序算法等。C++的类和对象机制使得代码结构清晰,易于维护,同时其标准模板库(STL)提供了丰富的数据...

    Java学生管理系统——菜鸟

    【Java学生管理系统——菜鸟】 Java学生管理系统是一款针对初学者设计的项目,旨在帮助他们理解和实践Java编程语言以及数据库管理的基本概念。这个系统主要是用来管理学生的信息,如姓名、学号、年龄、专业等,同时...

    使用 Qt 构建、C++ 作为底层开发的学生成绩管理系统,支持对学生成绩的增删改查、排序、汇总等功能.zip

    学生成绩管理系统是教育信息化的一个重要组成部分,其设计和开发需要充分考虑到系统性、易用性、安全性和稳定性。通过使用Qt框架和C++语言,结合高效的关系型数据库技术,可以构建出一个功能全面、操作简便、性能...

    基于Qt的学生成绩管理系统.zip

    总的来说,"基于Qt的学生成绩管理系统"是一个综合性的项目,涵盖了软件开发的多个方面,包括前端界面设计、后端数据库操作、数据模型与视图的绑定以及系统集成。通过研究这个项目,不仅可以学习Qt框架的使用,还能...

    学生成绩管理系统

    学生成绩管理系统是一种基于信息化技术,旨在帮助学校和教师更高效地管理学生的学习成绩和相关信息的软件应用。这种系统通常采用MVC(Model-View-Controller)架构设计,结合Java Web技术如JSP(JavaServer Pages)...

    基于qt开发的简易学生成绩管理系统.zip

    【标题】:基于Qt开发的简易学生成绩管理系统 该系统是计算机专业毕业生的一个常见设计项目,主要目标是实现一个用户界面友好、功能完善的学生成绩管理应用。Qt是一个跨平台的应用程序开发框架,由Qt Company提供,...

    毕设&课程作业_基于C#的.NET framework框架开发的简易学生成绩管理系统.zip

    开发一个简易的学生成绩管理系统,不仅能够帮助教师高效地管理学生的成绩,还能为学生提供一个查询个人成绩的平台。本次提供的源码是基于C#语言和.NET framework框架开发的学生成绩管理系统,旨在为计算机系学生提供...

    基于python+Django的管理信息系统——学生成绩管理系统.zip

    【基于Python+Django的管理信息系统——学生成绩管理系统】 Python和Django是现代Web开发中的强大组合,尤其适用于快速构建高效、可扩展的管理信息系统。在这个基于Python和Django的学生成绩管理系统中,我们可以...

    SSM+Layui学生成绩管理系统.zip

    SSM(Spring、SpringMVC、MyBatis)与Layui结合的学生成绩管理系统是一套基于Java语言开发的Web应用,旨在为学校等教育机构提供一个便捷、高效的管理学生考试成绩的平台。该系统采用了当前流行的开源框架技术,将...

    基于java实现的在校学生成绩管理系统(控制台版本)

    为了满足这一需求,开发出了一个基于Java语言实现的在校学生成绩管理系统,此系统为控制台版本,具体功能包括但不限于学生信息和成绩的增删改查,以及相关的成绩统计查询功能。 该系统的开发环境选择了Java ...

    基于vue + springboot的学生成绩管理系统.zip

    总的来说,这个基于Vue + SpringBoot的学生成绩管理系统展示了现代Web应用开发的技术栈,涵盖了从前端到后端的完整流程,对于学习和理解全栈开发具有很高的参考价值。通过这个项目,开发者可以深入掌握前端Vue.js...

    学生成绩管理系统,用Java和sql做的,分为管理员,老师,学生三个角色。可登录注册.zip

    学生成绩管理系统是一个使用Java编程语言和SQL数据库技术开发的应用程序,它的目的是为了简化学校教务管理过程中的成绩录入、查询、统计和分析工作。该系统根据用户角色的不同,将用户分为三个主要群体:管理员、...

    这是一个基于MySQL的学生成绩管理系统.zip

    在这样的背景下,开发一个基于MySQL的学生成绩管理系统显得尤为重要,它不仅能够帮助教育机构高效地处理大量的学生成绩数据,还能通过数据分析提供决策支持,促进教育工作的科学化和规范化。 MySQL作为一个开源的...

    java做的学生成绩管理系统

    Java编写的学生成绩管理系统是一种基于计算机技术的教育管理工具,它主要用于收集、存储、管理和分析学生的学术成绩。这样的系统可以极大地提高教育机构的工作效率,减少人为错误,并为教师、学生和家长提供方便的...

Global site tag (gtag.js) - Google Analytics