`
qinweiping
  • 浏览: 131393 次
  • 性别: 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的学生成绩管理系统.zip

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

    学生成绩管理系统

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

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

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

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

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

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

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

    java做的学生成绩管理系统

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

    C#大作业学生管理系统.zip

    【描述】提到“大二菜鸟做的很普通的学生管理系统”,这暗示了该系统可能由一名大二学生初学者创建,可能功能相对基础,但已经能够展示C#的基本应用和数据库管理的概念。初学者在设计这样的系统时,通常会学习如何...

    学生考试管理系统

    《菜鸟入门:学生考试管理系统开发详解》 在编程领域,尤其是对于初学者而言,实践是掌握知识的关键。"学生考试管理系统"就是一个非常适合新手上手的项目,它将理论与实践相结合,帮助我们深入理解VC++编程的基础...

    学生成绩管理系统 - 华中科技大学C语言课程设计,Qt实现,2016年寒假.zip

    本项目是一个基于C语言编程和Qt图形用户界面(GUI)框架开发的学生成绩管理系统,旨在帮助教育机构或教师高效管理学生的学习成绩。华中科技大学的学生在2016年寒假期间进行了这一课程设计,旨在提升学生的编程技能和...

    大一上学期C++课程设计——学生成绩管理系统(QT项目).zip

    课程设计:课程设计通常在课程学习过程中进行,目的是让学生在实践中理解和巩固课堂所学,学生成绩管理系统正好可以锻炼学生的编程实践能力。 【文件名称列表】Graduation Design "Graduation Design"很可能是项目...

    基于广义表的学生成绩管理系统,GUI由Qt实现.zip

    【基于广义表的学生成绩管理系统,GUI由Qt实现】是一个典型的计算机科学与技术专业毕业设计项目,它结合了数据库管理和图形用户界面(GUI)的设计。该项目利用广义表作为数据结构存储学生成绩,并采用Qt框架来构建...

    QT&C++ 学生成绩管理系统 ,无需配置环境,有安装包,适合快速理解.zip

    QT&C++ 学生成绩管理系统是一款专为计算机类学生设计的毕业设计项目,它提供了一个无需额外环境配置的完整安装包,便于快速理解和学习。这个系统利用了C++编程语言的强大功能,结合了QT框架,使得用户界面友好,操作...

Global site tag (gtag.js) - Google Analytics