精华内容
下载资源
问答
  • (4) 系统维护功能:数据的安全管理,主要是依靠管理员对数据库里的信息进行备份和恢复,数据备份后,如果出了什么意外可以恢复数据库到当时备份的状态,这提高了系统和数据的安全性,有利于系统的维护;...
  • 用VB6.0开发的数据库系统,小型的管理信息系统
  • 个人信息管理系统V1.0.0.3 辅助管理个人收支 个人事务等 需要.net framework 4.0 使用sql server作为后台数据库 内含数据库脚本
  • 本系统是一个学生管理系统,主要应用于大学的学生管理。由于对系统的分析可能不够全面,只能是模拟一下学生管理系统。每个学生都有一个学号,且没有相同的,所以可以以学号为帐号,这样,同学们就可以自行登陆学生...
  • C# 课程设计 个人信息管理系统 SQL数据库C# 课程设计 个人信息管理系统 SQL数据库
  • 学生个人信息管理系统数据库编写(word文档)
  • 学生个人信息表 create table 学生个人信息 ( 学号 char(10) primary key, 姓名 char(20) not null, 性别 char(4) not null, 出生年月 datetime not null, 籍贯 char(30), 所在系 char(10), 班级 char(15), 专业 ...
  • 图书管理系统数据库设计 一系统概述 1系统介绍 图书管理是每个图书馆全部需要进行工作一个设计良好图书管理系统数据库能够给图书管理带来很大便利 2需求分析 图书管理系统需求定义为 1.学生能够直接经过借阅终端来...
  • (2)客户信息管理功能实现了可以对个人的信息以及购买编号进行修改更新,可以添加新的客户、修改已有客户信息和删除旧的客户信息。 (3) 家电信息管理可以进行实现库存管理功能,准确查看各商品库存。 (4) 订单...
  • 数据库课设之学生信息管理系统

    万次阅读 多人点赞 2019-07-13 17:31:10
    数据库课设之学生信息管理系统 一、系统需求分析 学校每年都有新生入学、老生毕业,还有其他各种人事变动。如何有效地管理这些学生 的信息,帮助学校和老师掌握学生的情况,这就是学生信息管理系统需要完成的功能。 ...

    数据库课设之学生信息管理系统

    一、系统需求分析

    学校每年都有新生入学、老生毕业,还有其他各种人事变动。如何有效地管理这些学生
    的信息,帮助学校和老师掌握学生的情况,这就是学生信息管理系统需要完成的功能。

    1.1 系统功能分析
    本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统
    的主要功能有:
    a、学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。
    b、学生流动情况的输入,包括:转系、休学、复学、退学、毕业。
    c、奖惩情况的输入。
    d、学生个人情况查询和修改,包括流动情况和奖罚情况。

    1.2 系统功能模块设计(划分)
    根据系统功能要求可以将系统分解成几个模
    块来分别设计应用程序界面,如图 1 所示。
    在这里插入图片描述
    1.3 与其它系统的关系
    学生信息管理系统是校园信息管理系统的一个组成部分。它为其它系统,如班级信息管理系统、
    教学管理系统、成绩单系统、宿舍分配系统等,提供学生的基本情况。同时需要其他系统提
    供的班级设置和院系设置等情况。这些系统可以使用同一个数据库,直接相互调用所需的数
    据。

    1.4 数据流程图
    学生信息管理系统的数据流程如图 2 所示。
    在这里插入图片描述

    二、数据库设计

    2.1 数据库需求分析
    根据上一节的数据流程图,可以列出以下记录学生信息所需的数据项和数据结构:
    a、学生:学号、姓名、性别、生日、籍贯、所在院系、所在班级。
    b、处罚记录:记录号、级别、处罚对象、记录时间、详细描述、是否生效。
    c、奖励记录:记录号、级别、奖励对象、记录时间、详细描述。
    d、学籍变更记录:记录号、变更情况、记录对象、记录时间、详细描述。
    所需的外部数据支持:
    e、班级:班级编号、班级名称、所属院系。
    f、院系:代码、名称。

    2.2 数据库概念结构设计
    图 3 是本系统所需数据的 E-R 模型图。
    在这里插入图片描述

    三、各功能模块的设计与实现

    3.1 功能说明
    1、学生个人信息输入
    2、学籍变更情况的输入
    3、奖励情况的输入
    4、处罚情况的输入
    5、学生个人情况查询和修改

    3.2 用户界面设计
    完成数据库创建和功能说明以后,我们可以进行下一步工作,即设计用户界面。由于本
    系统管理内容比较简单,且为校园管理信息系统的一部分,因此使用一个窗体不同的标签页
    来完成系统要求的 5 项功能。
    我们把学生信息管理系统的窗体分成____个主要部分,如图____所示。
    1、应用程序主窗体的创建
    2、学生个人信息输入界面
    3、学籍变更情况输入界面
    4、奖励情况输入界面
    5、处罚情况输入界面
    6、学生个人情况查询和修改界面

    3.3 各功能模块的实现
    1、学生个人信息输入
    2、学籍变更情况输入
    3、奖励情况输入
    4、处罚情况输入
    5、学生个人情况查询和修改
    在这里插入图片描述

    四、系统实现

    根据系统E-R图,需要设计4个数据表来存放学生的信息。为了系统的完整,系统中包括了应用程序设计中所需的4个外部数据表。为了优化数据表结构,部分字段采用代码形式,因此需要附加3个代码表。这11个数据表如表1到表11所示。

    表1 student学生个人信息表
    在这里插入图片描述
    表2 studentxj学籍变更信息表
    在这里插入图片描述
    表3 reward奖励记录信息表
    在这里插入图片描述
    表4 punishment处罚记录信息表
    在这里插入图片描述
    表5 class班级信息表
    在这里插入图片描述
    表6 department院系信息表
    在这里插入图片描述
    表7 change_code学籍变动代码表
    在这里插入图片描述
    表8 reward_levels奖励等级代码表
    在这里插入图片描述
    表9 punish_levels处罚等级代码表
    在这里插入图片描述
    表10 studentdlb学生账号密码登录表
    在这里插入图片描述
    表11 teacherdlb老师账号密码登录表
    在这里插入图片描述
    4.1、学生和教务办老师的账号密码登陆界面
    学生和教务办老师的账号密码登陆界面请见如图3-1学生和教务办老师的账号密码登陆界面。这个界面是进入学生信息管理系统的钥匙并且设置了教务办老师和学生两个权限,为了实现不同权限的登录功能,所以在数据库中设计了学生账号密码登录表和老师账号密码登录表两个表格,然后用户可以选择自己的身份权限输入自己的账号密码进行登录,然后系统通过连接数据库的两个表格去和用户输入的账号密码去相应匹配,只有匹配成功之后才会出现不同的用户主界面,然后才可以进行数据操作。(用户名的填写格式界面文本框有提示)
    实现学生和教务办老师的账号密码登陆界面的全部代码:

    package xr06;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Vector;
    import javax.swing.*;
    
    import xr06.DbProcess;
    public class Student_management_login_system extends JFrame implements ActionListener {
    
    	JButton jb1,jb2,jb3=null;  
        JRadioButton jrb1,jrb2=null;  
        JPanel jp0,jp1,jp2,jp3,jp4=null;  
        JTextField jtf=null;  
        JLabel jlb0,jlb1,jlb2,jlb3=null;  
        JPasswordField jpf=null;  
        ButtonGroup bg=null;
        private static DbProcess dbProcess;
        public static void main(String[] args) {  
    
    		Student_management_login_system smls=new Student_management_login_system();  
        }  
        public Student_management_login_system()
        {
        	setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\timg-1.jpg"));//图片可以自己选择换
     
        	jb1=new JButton("登录 (login)");  
        	jb1.setBounds(32, 5, 150, 27);
        	jb1.setBackground(Color.ORANGE);
            jb2=new JButton("重置 (resetting)"); 
            jb2.setBounds(196, 5, 204, 27);
            jb2.setBackground(Color.ORANGE);
            jb3=new JButton("退出 (exit)");
            jb3.setBounds(414, 5, 150, 27);
            jb3.setForeground(Color.BLACK);
            jb3.setBackground(Color.ORANGE);
            jb1.addActionListener(this);  
            jb2.addActionListener(this);  
            jb3.addActionListener(this);  
            jrb1=new JRadioButton("教务办老师 (teacher)");  
            jrb1.setFont(new Font("宋体", Font.BOLD, 15));
            jrb1.setBounds(216, 30, 201, 27);
            jrb1.setBackground(new Color(255, 255, 153));
            jrb2=new JRadioButton("学生 (student)");  
            jrb2.setFont(new Font("宋体", Font.BOLD, 15));
            jrb2.setBounds(423, 30, 163, 27);
            jrb2.setBackground(new Color(255, 255, 153));
            bg=new ButtonGroup();  
            bg.add(jrb1);  
            bg.add(jrb2);  
            jrb2.setSelected(true);
            jp0=new JPanel(); 
            jp0.setBounds(0, 0, 602, 100);
            jp0.setBackground(new Color(255, 255, 153));
            jp1=new JPanel();  
            jp1.setBounds(0, 99, 602, 55);
            jp1.setBackground(new Color(255, 255, 153));
            jp2=new JPanel();  
            jp2.setBounds(0, 152, 602, 70);
            jp2.setBackground(new Color(255, 255, 153));
            jp3=new JPanel();  
            jp3.setBounds(0, 221, 602, 86);
            jp3.setBackground(new Color(255, 255, 153));
            jp4=new JPanel(); 
            jp4.setBounds(0, 307, 602, 93);
            jp4.setBackground(new Color(255, 255, 153));
            jlb0=new JLabel("\u5B66\u751F\u4FE1\u606F\u7BA1\u7406\u7CFB\u7EDF");
            jlb0.setFont(new Font("方正舒体", Font.BOLD, 40));
            jlb0.setBounds(129, 36, 351, 51);
            jlb1=new JLabel("用户名 (user name):");  
            jlb1.setFont(new Font("宋体", Font.BOLD, 18));
            jlb1.setBounds(54, 25, 236, 18);
            jlb2=new JLabel("\u5BC6  \u7801 (pass-word)\uFF1A");  
            jlb2.setFont(new Font("宋体", Font.BOLD, 18));
            jlb2.setBounds(54, 35, 227, 18);
            jlb3=new JLabel("\u8EAB   \u4EFD (Identity)\uFF1A"); 
            jlb3.setFont(new Font("宋体", Font.BOLD, 15));
            jlb3.setBounds(29, 26, 201, 34);
            jtf=new JTextField(15);  
            jtf.setBounds(253, 24, 281, 24);
            jpf=new JPasswordField(15); 
            jpf.setBounds(253, 34, 281, 24);
            jtf.addFocusListener(new JTextFieldHintListener("请输入学号/教职工号", jtf));
            jp0.setLayout(null);
            jp0.add(jlb0);
            jp1.setLayout(null);
            
            jp1.add(jlb1);  
            jp1.add(jtf);  
            jp2.setLayout(null);
    
            jp2.add(jlb2);  
            jp2.add(jpf);  
            jp3.setLayout(null);
    
            jp3.add(jlb3);      //添加标签
            jp3.add(jrb1);  
            jp3.add(jrb2);  
            jp4.setLayout(null);
    
            jp4.add(jb1);       //添加按钮
            jp4.add(jb2);  
            jp4.add(jb3);
            getContentPane().setLayout(null);
            getContentPane().add(jp0);
            getContentPane().add(jp1);  
            getContentPane().add(jp2);  
            getContentPane().add(jp3);  
            getContentPane().add(jp4);
            this.setTitle("学生信息管理系统 ");          
            this.setSize(605,433);         
            this.setLocation(700, 300);           
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //设置当关闭窗口时,保证JVM也退出 
            this.setVisible(true);  
            this.setResizable(false); 
        }
    	public void actionPerformed(ActionEvent e) {
    		if(e.getActionCommand().equals("登录 (login)")  
    				&& !jtf.getText().isEmpty()&&!jpf.getText().isEmpty()){
    				System.out.println("actionPerformed(). 登录 (login)");
    				String jtfQueryField = jtf.getText().trim();
    				String jpfQueryField = jpf.getText().trim();
    				queryProcess(jtfQueryField,jpfQueryField);
    				
    				}
    		else if(e.getActionCommand().equals("登录 (login)")  
    				&& jtf.getText().isEmpty()&&!jpf.getText().isEmpty()){
    			JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);  
    			}//只有用户名没有输入
    		else if(e.getActionCommand().equals("登录 (login)")  
    				&& jtf.getText().isEmpty()&& jpf.getText().isEmpty()){
    			JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);  
    			}//用户名和密码都没有输入
    		else if(e.getActionCommand().equals("登录 (login)")  
    				&& !jtf.getText().isEmpty()&&jpf.getText().isEmpty()){
    			JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);  
    			}//只有密码没有输入
    		else if(e.getActionCommand().equals("重置 (resetting)")){
    	        jtf.setText("");  
    	        jpf.setText("");  
    			}
    		else{
    			int n=JOptionPane.showConfirmDialog(null,"确定退出系统登陆界面?", "学生信息管理系统",JOptionPane.YES_NO_OPTION);
    			if(n==0) {
    				this.setVisible(false);
    			}
    		}
    	}	
    		public void queryProcess(String jtfQueryField,String jpfQueryField)
    		{
    			if(jrb1.isSelected())  
                {  
    				try{
    					// 建立查询条件
    					String jtfsql = "select * from teacherdlb where ";
    					jtfsql = jtfsql + "tuserNo";
    					jtfsql = jtfsql + " = ";
    					jtfsql = jtfsql + "'" + jtfQueryField + "';";
    					System.out.println("queryProcess(). jtfsql = " + jtfsql);
    					dbProcess = new DbProcess();
    					dbProcess.connect();
    					ResultSet jtfrs = dbProcess.executeQuery(jtfsql);
    					jtfrs.next();
    					System.out.print(jpfQueryField);
    					if(jtfrs.getString("tuserNo").equals(jtfQueryField)&&jtfrs.getString("tpswd").equals(jpfQueryField))  
    			        {            
    			            JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);           
    			            dispose();        
    			            jtf.setText("");  
    				        jpf.setText("");             
    				        Teacher t=new Teacher();       //创建新界面  
    			        }else 
    			        {  
    			            JOptionPane.showMessageDialog(null,"密码错误!请重新输入密码!","提示消息",JOptionPane.WARNING_MESSAGE); 
    			            jpf.setText("");
    			        }
    					dbProcess.disconnect();
    				}catch(SQLException sqle){
    					System.out.println("sqle = " + sqle);
    					JOptionPane.showMessageDialog(null,
    						"用户名或者密码错误!","错误",JOptionPane.ERROR_MESSAGE);
    				}catch(Exception e){
    					System.out.println("e = " + e);
    					JOptionPane.showMessageDialog(null,
    						"用户名或者密码错误!","错误",JOptionPane.ERROR_MESSAGE);
    				}                              //连接到教师的方法 页面
                }
    			if(jrb2.isSelected()) //学生在登录系统  
                {  
                	try{
        				// 建立查询条件
        				String jtfsql = "select * from studentdlb where ";
        				jtfsql = jtfsql + "suserNo";
        				jtfsql = jtfsql + " = ";
        				jtfsql = jtfsql + "'" + jtfQueryField + "';";
        				System.out.println("queryProcess(). jtfsql = " + jtfsql);
        				dbProcess = new DbProcess();
        				dbProcess.connect();
        				ResultSet jtfrs = dbProcess.executeQuery(jtfsql);
        				jtfrs.next();
        				System.out.print(jpfQueryField);
        				if(jtfrs.getString("suserNo").equals(jtfQueryField)&&jtfrs.getString("spswd").equals(jpfQueryField))  
        		        {            
        		            JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);           
        		            dispose();        
        		            jtf.setText("");  
        			        jpf.setText("");             
        		            Student ui=new Student();      //创建新界面  
        		        }else 
        		        {  
        		            JOptionPane.showMessageDialog(null,"密码错误!请重新输入密码!","提示消息",JOptionPane.WARNING_MESSAGE); 
        		            jpf.setText("");
        		        }
        				dbProcess.disconnect();
        			}catch(SQLException sqle){
        				System.out.println("sqle = " + sqle);
        				JOptionPane.showMessageDialog(null,
        					"用户名或者密码错误!","错误",JOptionPane.ERROR_MESSAGE);
        			}catch(Exception e){
        				System.out.println("e = " + e);
        				JOptionPane.showMessageDialog(null,
        					"用户名或者密码错误!","错误",JOptionPane.ERROR_MESSAGE);
        			}                              //连接到学生的方法 页面
                }  
    
    
    			
    		}
    
    }
    
    

    图3-1学生和教务办老师的账号密码登陆界面
    在这里插入图片描述
    4.2、学生用户主界面
    学生用户主界面请见如图3-2学生用户主界面。首先这个界面是在选择学生权限用户登录之后出现的,这个界面可以供用户选择查询各式个人信息以及了解学校学院相关的一些常识或者退出系统(点击相应的按钮,然后会出现相应的功能界面),同时为了使界面更加优化,特别插入了“超越梦想”为主题的图片,希望学生用户能够好好提升自己,为梦想努力奋斗,超越自我,迎来美丽人生。
    实现学生用户主界面的全部代码:

    package xr06;
    import java.util.Vector;
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.ImageIcon;
    import java.awt.Toolkit;
    
    public class Student extends JFrame implements ActionListener {
    
    	private JPanel contentPane;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		
    		Student ui=new Student();
    						
    	}
    	/**
    	 * Create the frame.
    	 */
    	public Student() {
    		setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\timg-1.jpg"));//插入图片
    		this.setResizable(false);
    		setTitle("学生信息管理系统");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(700, 320, 579, 409);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		
    		JPanel panel = new JPanel();
    		panel.setBackground(new Color(255, 255, 153));
    		panel.setBounds(0, 0, 573, 374);
    		contentPane.add(panel);
    		panel.setLayout(null);
    			
    		
    		JLabel lblNewLabel = new JLabel("同学你好!欢迎登陆学生信息管理系统");
    		lblNewLabel.setFont(new Font("宋体", Font.BOLD, 20));
    		lblNewLabel.setForeground(new Color(255, 255, 0));
    		lblNewLabel.setBounds(94, 24, 366, 32);
    		panel.add(lblNewLabel);
    		
    		JButton button_1 = new JButton("个人信息查询");
    		button_1.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				dispose();
    				Personcx px = new Personcx();
    			}
    		});
    		button_1.setBounds(86, 90, 167, 32);
    		panel.add(button_1);
    		
    		JButton button_2 = new JButton("个人奖励记录");
    		button_2.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				dispose();
    				Personjl xj = new Personjl();
    			}
    		});
    		button_2.setBounds(86, 148, 167, 32);
    		panel.add(button_2);
    		
    		JButton button_3 = new JButton("个人学籍变更记录");
    		button_3.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				dispose();
    				Personxj xj = new Personxj();
    			}
    		});
    		button_3.setBounds(293, 90, 167, 32);
    		panel.add(button_3);
    		
    		JButton button_4 = new JButton("个人处分记录");
    		button_4.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				dispose();
    				Personcf cf = new Personcf();
    			}
    		});
    		button_4.setBounds(293, 148, 167, 32);
    		panel.add(button_4);
    		
    		JButton button_5 = new JButton("退出");
    		button_5.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				int n=JOptionPane.showConfirmDialog(null,"确定退出该系统?", "学生信息管理系统",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					dispose();
    					Student_management_login_system sm=new Student_management_login_system();
    				}
    			}
    		});
    		button_5.setForeground(Color.RED);
    		button_5.setBounds(293, 206, 167, 32);
    		panel.add(button_5);
    		
    		JLabel label = new JLabel("         温馨提示:新生个人登陆系统之后请先查看入学须知");
    		label.setFont(new Font("宋体", Font.PLAIN, 16));
    		label.setForeground(new Color(153, 255, 51));
    		label.setBounds(25, 277, 487, 41);
    		panel.add(label);
    		
    		JButton button = new JButton("入学须知");
    		button.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				dispose();
    				Personrx rx = new Personrx();
    			}
    		});
    		button.setBounds(86, 206, 167, 32);
    		panel.add(button);
    		
    		JLabel lblNewLabel_1 = new JLabel("New label");
    		lblNewLabel_1.setIcon(new ImageIcon("C:\\Users\\\u8C22\u5112\\Pictures\\Camera Roll\\29755920_1478787143469_1024x1024.jpg"));
    		lblNewLabel_1.setBounds(0, 0, 573, 400);
    		panel.add(lblNewLabel_1);
    		this.setVisible(true);
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    }
    
    

    图3-2学生用户主界面
    在这里插入图片描述
    3.3、老师学生账号密码界面
    老师学生账号密码界面请见如图3-3老师学生账号密码界面。这个界面的设计同样是专门为教务办用户设计,能通过点击全部查询,查询到系统录入的所有同学和教务办老师的账号密码,这个界面信息显示也采用了多表查询,将学生账号密码登录表、老师账号密码登录表两个表格联合查询;然后也可以通过下拉框选择相应想要选择查询的内容比如老师账号,然后点击查询获取相对应的老师账号密码信息。如果修改了账号和密码点击更新按钮,又确认实施该操作,那么会退出系统返回到原始登录界面,其它按钮的功能同上。
    实现老师学生账号密码界面的全部代码:

    package xr06;
    import java.util.Vector;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.DefaultTableModel;
    import org.omg.CORBA.PUBLIC_MEMBER;
    import java.awt.color.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class Studentzh extends JFrame implements ActionListener {
    	// 定义基本信息组件
    		JLabel jLStudentxjTable = null;// 学生学籍表
    		JLabel jLSelectQueryField = null;// 选择
    		JLabel mh = null;// :
    		JLabel teacherzh = null;// 老师账号
    		JLabel teachermm = null;// 老师密码
    		JLabel studentzh = null;// 学生账号
    		JLabel studentmm = null;// 学生密码
    		JLabel ms = null;// 描述
    		JLabel dm = null;// 代码
    		JLabel sm = null;// 说明
    		/// 定义文本框
    		JTextField jTFQueryField = null;// 查询字段
    		JTextField jTFSTz = null;// 老师账号
    		JTextField jTFSTP = null;// 老师密码
    		JTextField jTFSSZ = null;// 学生账号
    		JTextField jTFSSP = null;// 学生密码
    		JTextField jTFSDES = null;// 描述
    		JTextField jTFSCode = null;// 代码
    		JTextField jTFSsm = null;// 说明
    		// 定义按钮
    		JButton jb5 = null;// 顶部选择的四个表+1个菜单
    		JButton jBQuery = null;// 查询
    		JButton jBQueryAll = null;// 查询所有记录
    		JButton jBInsert = null;// 插入
    		JButton jBUpdate = null;// 更新
    		JButton jBDeleteCurrentRecord = null;// 删除当前记录
    		JButton jBDeleteAllRecords = null;// 删除所有记录
    		JButton EXIT = null;// 退出
    		// 定义其他
    		JComboBox<String> jCBSelectQueryField = null;// 查询字段
    		JComboBox<String> jCBsexQueryField = null;// 
    		JPanel jP1, jP2, jP3, jP4, jP5, jP6, jP8 = null;
    		JPanel jPTop, jPBottom = null;
    		DefaultTableModel studentTableModel = null;
    		JTable studentJTable = null;
    		JScrollPane studentJScrollPane = null;
    		Vector studentVector = null;
    		Vector titleVector = null;
    		private static DbProcess dbProcess;
    		String SelectQueryFieldStr = "老师账号";
    		public static void main(String[] args) {
    			Studentzh ss = new Studentzh();
    		}
    
    		// ****************************事件判断**********************
    		public Studentzh() {
    			setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\timg-1.jpg"));
    			this.setResizable(false);
    			jLSelectQueryField = new JLabel("选择");
    			jLSelectQueryField.setBounds(5, 9, 30, 18);
    			mh = new JLabel(" : ");
    			mh.setBounds(192, 9, 24, 18);
    			teacherzh = new JLabel("老师账号:");
    			teacherzh.setBounds(5, 25, 68, 18);
    			teachermm = new JLabel("老师密码:");
    			teachermm.setBounds(323, 25, 68, 18);
    			// 文本框创建
    			jTFQueryField = new JTextField(10);// 查询字段
    			jTFQueryField.setBounds(214, 6, 106, 24);
    			jTFSTz = new JTextField(15);// 老师账号
    			jTFSTz.setBounds(79, 18, 215, 24);
    			jTFSTP = new JTextField(15);// 老师密码
    			jTFSTP.setBounds(395, 18, 215, 24);
    			jBQuery = new JButton("查询选择内容");
    			jBQuery.setBounds(334, 5, 155, 27);
    			jBQuery.setFont(new Font("宋体", Font.BOLD, 15));
    			jBQueryAll = new JButton("查询所有记录");
    			jBQueryAll.setBounds(503, 5, 155, 27);
    			jBQueryAll.setFont(new Font("宋体", Font.BOLD, 15));
    			jBQuery.addActionListener(this);
    			jBQueryAll.addActionListener(this);
    			// 建立下拉框
    			jCBSelectQueryField = new JComboBox<String>();// 查询字段
    			jCBSelectQueryField.setBounds(37, 6, 155, 24);
    			jCBSelectQueryField.addItem("老师账号");
    			jCBSelectQueryField.addItem("老师密码");
    			jCBSelectQueryField.addItem("学生账号");
    			jCBSelectQueryField.addItem("学生密码");
    			jCBSelectQueryField.addItemListener(new ItemListener() {// 下拉框事件监听
    				public void itemStateChanged(ItemEvent event) {
    					switch (event.getStateChange()) {
    					case ItemEvent.SELECTED:
    						SelectQueryFieldStr = (String) event.getItem();
    						System.out.println("选中:" + SelectQueryFieldStr);
    						break;
    					case ItemEvent.DESELECTED:
    						System.out.println("取消选中:" + event.getItem());
    						break;
    					}
    				}
    			});
    
    			studentVector = new Vector();
    			titleVector = new Vector();
    			// 定义表头
    			titleVector.add("老师账号");
    			titleVector.add("老师密码");
    			titleVector.add("学生账号");
    			titleVector.add("学生密码");
    			studentJTable = new JTable(studentVector, titleVector);
    			studentJTable.setPreferredScrollableViewportSize(new Dimension(400, 160));
    			studentJScrollPane = new JScrollPane(studentJTable);
    			studentJScrollPane.setBounds(0, 0, 480, 172);
    			// 分别设置水平和垂直滚动条自动出现
    			studentJScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    			studentJScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    
    			// 为表格添加监听器
    			studentJTable.addMouseListener(new MouseAdapter() {
    				public void mouseClicked(MouseEvent e) {
    					int row = ((JTable) e.getSource()).rowAtPoint(e.getPoint()); // 获得行位置
    					System.out.println("mouseClicked(). row = " + row);
    					Vector v = new Vector();
    					v = (Vector) studentVector.get(row);
    
    					jTFSTz.setText((String) v.get(0));// 老师账号
    					jTFSTP.setText((String) v.get(1));// 老师密码
    					jTFSSZ.setText((String) v.get(2));// 学生账号
    					jTFSSP.setText((String) v.get(3));// 学生密码
    				}
    			});
    
    			jP1 = new JPanel();
    			jP1.setBounds(356, 17, 8, 2);
    			jP3 = new JPanel();
    			jP3.setBounds(98, 55, 480, 172);
    			jP3.setBackground(new Color(204, 51, 0));
    			jP4 = new JPanel();
    			jP4.setBackground(new Color(255, 255, 102));
    			jP4.setBounds(0, 13, 682, 45);
    			jP5 = new JPanel();
    			jP5.setBackground(new Color(255, 255, 153));
    			jP5.setBounds(0, 69, 682, 45);
    			jP6 = new JPanel();
    			jP6.setBackground(new Color(255, 255, 153));
    			jP6.setBounds(0, 113, 682, 79);
    			jPTop = new JPanel();
    			jPTop.setBackground(new Color(255, 255, 102));
    			jPBottom = new JPanel();
    			jPBottom.setBackground(new Color(255, 255, 51));
    			jP3.setLayout(null);
    			jP3.add(studentJScrollPane);
    			jP1.setLayout(new FlowLayout(FlowLayout.CENTER, 4, 1));
    			jP4.setLayout(null);
    	//底部的五部分
    			// 第四行
    			jP4.add(jLSelectQueryField);// 文字“选择”
    			jP4.add(jCBSelectQueryField);// 下拉框
    			jP4.add(mh);
    			jP4.add(jTFQueryField);
    			jP4.add(jBQuery);
    			jP4.add(jBQueryAll);
    			jP4.setPreferredSize(new Dimension(20, 20));
    			jP5.setLayout(null);
    			// 第五行
    			jP5.add(teacherzh);
    			jP5.add(jTFSTz);
    			jP5.add(teachermm);
    			jP5.add(jTFSTP);
    			jP5.setPreferredSize(new Dimension(20, 20));
    			jP6.setLayout(null);
    			studentzh = new JLabel("学生账号:");
    			studentzh.setBounds(5, 32, 68, 18);
    			jP6.add(studentzh);
    			jTFSSZ = new JTextField(15);// 学生账号
    			jTFSSZ.setBounds(79, 29, 215, 24);
    			jP6.add(jTFSSZ);
    			studentmm = new JLabel("学生密码:");
    			studentmm.setBounds(323, 32, 68, 18);
    			jP6.add(studentmm);
    			jP6.setPreferredSize(new Dimension(20, 20));
    			jPTop.setLayout(null);
    			// 命名组件
    			jLStudentxjTable = new JLabel("账户密码表");
    			jLStudentxjTable.setBounds(14, 13, 130, 26);
    			jLStudentxjTable.setFont(new Font("华文新魏", Font.BOLD, 25));
    			jP2 = new JPanel();
    			jP2.setBackground(new Color(255, 255, 102));
    			jP2.setBounds(258, 0, 165, 50);
    			jP2.setLayout(null);
    			jP2.add(jLStudentxjTable);
    			jPTop.add(jP2);
    			// 设置顶部
    			jPTop.add(jP1);
    			jPTop.add(jP3);
    			jPBottom.setLayout(null);
    			jPBottom.add(jP4);
    			jPBottom.add(jP5);
    			jPBottom.add(jP6);
    			jTFSSP = new JTextField(15);
    			jTFSSP.setBounds(395, 29, 215, 24);
    			jP6.add(jTFSSP);
    			// 设置大局面
    			getContentPane().add("North", jPTop);
    			
    			JLabel lblNewLabel = new JLabel("   \u6CE8\u610F\u4E8B\u9879\uFF1A\u8D26\u53F7\u5BC6\u7801\u6D89\u53CA\u4F7F\u7528\u8005\u548C\u7BA1\u7406\u8005\u9690\u79C1\uFF0C\u8BF7\u52FF\u6CC4\u9732\u5916\u4F20\uFF01");
    			lblNewLabel.setBounds(79, 224, 523, 36);
    			jPTop.add(lblNewLabel);
    			lblNewLabel.setForeground(new Color(255, 0, 0));
    			lblNewLabel.setFont(new Font("华文宋体", Font.BOLD, 17));
    			getContentPane().add("South", jPBottom);
    			jBInsert = new JButton("插入");
    			jBInsert.setBounds(10, 205, 80, 27);
    			jPBottom.add(jBInsert);
    			jBInsert.setFont(new Font("宋体", Font.BOLD, 15));
    			jBUpdate = new JButton("更新");
    			jBUpdate.setBounds(95, 205, 80, 27);
    			jPBottom.add(jBUpdate);
    			jBUpdate.setFont(new Font("宋体", Font.BOLD, 15));
    			jBDeleteCurrentRecord = new JButton("删除当前记录");
    			jBDeleteCurrentRecord.setBounds(189, 205, 155, 27);
    			jPBottom.add(jBDeleteCurrentRecord);
    			jBDeleteCurrentRecord.setFont(new Font("宋体", Font.ITALIC, 15));
    			jBDeleteCurrentRecord.setForeground(Color.RED);
    			jBDeleteAllRecords = new JButton("删除所有记录");
    			jBDeleteAllRecords.setBounds(358, 205, 155, 27);
    			jPBottom.add(jBDeleteAllRecords);
    			jBDeleteAllRecords.setFont(new Font("宋体", Font.ITALIC, 15));
    			jBDeleteAllRecords.setForeground(Color.RED);
    			EXIT = new JButton("返回主页面");
    			EXIT.setBounds(527, 205, 155, 27);
    			jPBottom.add(EXIT);
    			EXIT.addMouseListener(new MouseAdapter() {
    				@Override
    				public void mouseClicked(MouseEvent e) {
    					dispose();                    
    					Teacher ui=new Teacher();
    				}
    			});
    			
    			EXIT.setFont(new Font("宋体", Font.BOLD, 15));
    			EXIT.setForeground(Color.RED);
    			EXIT.addActionListener(this);
    			jBDeleteAllRecords.addActionListener(this);
    			jBDeleteCurrentRecord.addActionListener(this);
    			jBUpdate.addActionListener(this);
    			jBInsert.addActionListener(this);
    
    			getContentPane().setLayout(new GridLayout(2, 1));
    			this.setTitle("账号密码查改");
    			this.setSize(700, 568);// 改表的大小
    			this.setLocation(630, 180);// 改表的位置
    			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			this.setVisible(true);// 使页面显示
    			// this.setVisible(false);使页面消失
    
    			dbProcess = new DbProcess();
    
    		}
    
    		// 监听器事件
    		public void actionPerformed(ActionEvent e) { // 事件判断
    
    			if (e.getActionCommand().equals("查询选择内容") && !jTFQueryField.getText().isEmpty()) {
    				System.out.println("actionPerformed(). 查询选择内容");
    				String sQueryField = jTFQueryField.getText().trim();
    				int n=JOptionPane.showConfirmDialog(null,"确定查询该选项?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					queryProcess(sQueryField);
    					jTFQueryField.setText("");
    				}
    			} if (e.getActionCommand().equals("查询所有记录")) {
    				System.out.println("actionPerformed(). 查询所有记录");
    				int n=JOptionPane.showConfirmDialog(null,"确定查询所有记录?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					queryAllProcess();
    				}
    			} if (e.getActionCommand().equals("插入") && !jTFSTz.getText().isEmpty() && !jTFSTP.getText().isEmpty()
    					&& !jTFSSZ.getText().isEmpty() && !jTFSSP.getText().isEmpty() ) {
    				System.out.println("actionPerformed(). 插入");
    				int n=JOptionPane.showConfirmDialog(null,"确定插入该条记录?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					insertProcess();
    					JOptionPane.showMessageDialog(null, "                                插入成功", "插入成功", JOptionPane.PLAIN_MESSAGE);
    				} 
    			} if (e.getActionCommand().equals("更新") && !jTFSTz.getText().isEmpty() && !jTFSTP.getText().isEmpty()
    					&& !jTFSSZ.getText().isEmpty() && !jTFSSP.getText().isEmpty() ) {
    				System.out.println("actionPerformed(). 更新");
    				int n=JOptionPane.showConfirmDialog(null,"确定更新该条记录?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					JOptionPane.showMessageDialog(null, "                                更新成功", "更新成功", JOptionPane.PLAIN_MESSAGE);
    					updateProcess();
    					dispose();
    					Student_management_login_system sm=new Student_management_login_system();
    				} 
    			}  if (e.getActionCommand().equals("删除当前记录")) {
    				System.out.println("actionPerformed(). 删除当前记录");
    				int n=JOptionPane.showConfirmDialog(null,"注意:确定删除该条记录?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					JOptionPane.showMessageDialog(null, "                                删除成功", "删除成功", JOptionPane.PLAIN_MESSAGE);
    					deleteCurrentRecordProcess();
    				} 
    			} if (e.getActionCommand().equals("删除所有记录"))   {
    				System.out.println("actionPerformed(). 删除所有记录");
    				int n=JOptionPane.showConfirmDialog(null,"注意:确定删除所有记录?", "账号密码记录",JOptionPane.YES_NO_OPTION);
    				if(n==0) {
    					JOptionPane.showMessageDialog(null, "                                全部删除成功", "全部删除成功", JOptionPane.PLAIN_MESSAGE);
    					deleteAllRecordsProcess();
    				}
    			}
    
    		}
    
    		// “查询”程序
    		public void queryProcess(String sQueryField) {
    			try {
    				// 建立查询条件
    				if(SelectQueryFieldStr=="老师账号"||SelectQueryFieldStr=="老师密码") {
    				String sql = "SELECT `teacherdlb`.tuserNo,`teacherdlb`.tpswd FROM `teacherdlb`  WHERE teacherdlb.tpswd IS NOT NULL  AND ";
    				String queryFieldStr = jCBSelectQueryFieldTransfer(SelectQueryFieldStr);
    				System.out.println(queryFieldStr);
    
    				
    					sql = sql + queryFieldStr;
    					sql = sql + " = ";
    					sql = sql + "'" + sQueryField + "';";
    			
    				String sql1 = "SELECT `studentdlb`.suserNo,`studentdlb`.spswd FROM `studentdlb`  WHERE studentdlb.spswd IS NOT NULL ; ";
    				System.out.println("queryProcess(). sql = " + sql);
    
    				dbProcess.connect();
    				ResultSet rs = dbProcess.executeQuery(sql);
    				ResultSet rs1 = dbProcess.executeQuery(sql1);
    
    				// 将查询获得的记录数据,转换成适合生成JTable的数据形式
    				studentVector.clear();
    				while (rs.next()&&rs1.next()) {
    					Vector v = new Vector();
    					v.add(rs.getString("tuserNo"));
    					v.add(rs.getString("tpswd"));
    					v.add(rs1.getString("suserNo"));
    					v.add(rs1.getString("spswd"));
    					
    					studentVector.add(v);//显示表
    				}
    
    				studentJTable.updateUI();
    
    				dbProcess.disconnect();}
    				
    				if(SelectQueryFieldStr=="学生账号"||SelectQueryFieldStr=="学生密码") {
    					String sql = "SELECT `studentdlb`.suserNo,`studentdlb`.spswd FROM `studentdlb`  WHERE studentdlb.spswd IS NOT NULL  AND ";
    					String queryFieldStr = jCBSelectQueryFieldTransfer(SelectQueryFieldStr);
    					System.out.println(queryFieldStr);
    
    					
    						sql = sql + queryFieldStr;
    						sql = sql + " = ";
    						sql = sql + "'" + sQueryField + "';";
    				
    					String sql1 = "SELECT `teacherdlb`.tuserNo,`teacherdlb`.tpswd FROM `teacherdlb`  WHERE teacherdlb.tpswd IS NOT NULL ; ";
    					System.out.println("queryProcess(). sql = " + sql);
    
    					dbProcess.connect();
    					ResultSet rs = dbProcess.executeQuery(sql);
    					ResultSet rs1 = dbProcess.executeQuery(sql1);
    
    					// 将查询获得的记录数据,转换成适合生成JTable的数据形式
    					studentVector.clear();
    					while (rs.next()&&rs1.next()) {
    						Vector v = new Vector();
    						v.add(rs1.getString("tuserNo"));
    						v.add(rs1.getString("tpswd"));
    						v.add(rs.getString("suserNo"));
    						v.add(rs.getString("spswd"));
    						
    						studentVector.add(v);//显示表
    					}
    
    					studentJTable.updateUI();
    
    					dbProcess.disconnect();}
    				
    			} catch (SQLException sqle) {
    				System.out.println("sqle = " + sqle);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			} catch (Exception e) {
    				System.out.println("e = " + e);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    		}
    
    		// “查询全部”程序
    		public void queryAllProcess() {
    			try {
    				// 建立查询条件
    				String sql = "SELECT `studentdlb`.suserNo,`studentdlb`.spswd FROM `studentdlb`  WHERE studentdlb.spswd IS NOT NULL  ;";
    				String sql1 = "SELECT `teacherdlb`.tuserNo,`teacherdlb`.tpswd FROM `teacherdlb`  WHERE teacherdlb.tpswd IS NOT NULL ; ";
    				System.out.println("queryProcess(). sql = " + sql);
    
    				dbProcess.connect();
    				ResultSet rs = dbProcess.executeQuery(sql);
    				ResultSet rs1 = dbProcess.executeQuery(sql1);
    
    				// 将查询获得的记录数据,转换成适合生成JTable的数据形式
    				studentVector.clear();
    				while (rs.next()&&rs1.next()) {
    					Vector v = new Vector();
    					v.add(rs1.getString("tuserNo"));
    					v.add(rs1.getString("tpswd"));
    					v.add(rs.getString("suserNo"));
    					v.add(rs.getString("spswd"));
    					studentVector.add(v);//显示表
    				}
    
    				studentJTable.updateUI();
    
    				dbProcess.disconnect();
    			} catch (SQLException sqle) {
    				System.out.println("sqle = " + sqle);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    		}
    
    		// “插入”程序
    		public void insertProcess() {
    			String tuserNo = jTFSTz.getText().trim();
    			String tpswd = jTFSTP.getText().trim();
    			String suserNo = jTFSSZ.getText().trim();
    			String spswd = jTFSSP.getText().trim();
    
    			// 建立插入条件
    			String sql = "insert into `teacherdlb` values('";
    			sql = sql + tuserNo + "','";
    			sql = sql + tpswd + "');";
    			
    			String sql1 = "insert into `studentdlb` values('";
    			sql1 = sql1 + suserNo + "','";
    			sql1 = sql1 + spswd + "');";
    			System.out.println("insertProcess(). sql = " + sql+"insertProcess(). sql1 = " + sql1);
    			try {
    				if (dbProcess.executeUpdate(sql) < 1||dbProcess.executeUpdate(sql1) < 1) {
    					System.out.println("insertProcess(). insert database failed.");
    				}
    			} catch (Exception e) {
    				System.out.println("e = " + e);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    			queryAllProcess();
    		}
    
    		// “更新”程序
    		public void updateProcess() {
    			String tuserNo = jTFSTz.getText().trim();
    			String tpswd = jTFSTP.getText().trim();
    			String suserNo = jTFSSZ.getText().trim();
    			String spswd = jTFSSP.getText().trim();
    
    			// 建立更新条件
    			String sql = "update teacherdlb set tpswd = '";
    			sql = sql + tpswd + "'";
    			sql = sql + " WHERE tuserNo = '" + tuserNo + "';";
    			
    			String sql1 = "update studentdlb set spswd = '";
    			sql1 = sql1 + spswd + "'";
    			sql1 = sql1 + " WHERE suserNo = '" + suserNo + "';";
    			
    			System.out.println("updateProcess(). sql = " + sql+"updateProcess(). sql1 = " + sql1);
    			try {
    				if (dbProcess.executeUpdate(sql) < 1||dbProcess.executeUpdate(sql1) < 1) {
    					System.out.println("updateProcess(). update database failed.");
    				}
    			} catch (Exception e) {
    				System.out.println("e = " + e);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    			queryAllProcess();
    		}
    
    		// “删除”程序
    		public void deleteCurrentRecordProcess() {
    			String tuserNo = jTFSTz.getText().trim();
    			String suserNo = jTFSSZ.getText().trim();
    
    			// 建立删除条件
    			String sql = "delete from teacherdlb where tuserNo = '" + tuserNo + "';";
    			String sql1 = "delete from studentdlb where suserNo = '" + suserNo + "';";
    			System.out.println("deleteCurrentRecordProcess(). sql = " + sql+"deleteCurrentRecordProcess(). sql1 = " + sql1);
    			try {
    				if (dbProcess.executeUpdate(sql) < 1||dbProcess.executeUpdate(sql1) < 1) {
    					System.out.println("deleteCurrentRecordProcess(). delete database failed.");
    				}
    			} catch (Exception e) {
    				System.out.println("e = " + e);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    			queryAllProcess();
    		}
    
    		// “删除全部”程序
    		public void deleteAllRecordsProcess() {
    			// 建立删除条件
    			String sql = "delete from teacherdlb;";
    			String sql1 = "delete from studentdlb;";
    			System.out.println("deleteAllRecordsProcess(). sql = " + sql+"deleteAllRecordsProcess(). sql1 = " + sql1);
    			try {
    				if (dbProcess.executeUpdate(sql) < 1||dbProcess.executeUpdate(sql1) < 1) {
    					System.out.println("deleteAllRecordsProcess(). delete database failed.");
    				}
    			} catch (Exception e) {
    				System.out.println("e = " + e);
    				JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    			}
    			queryAllProcess();
    		}
    
    		public String jCBSelectQueryFieldTransfer(String InputStr) {
    			String outputStr = "";
    			System.out.println("jCBSelectQueryFieldTransfer(). InputStr = " + InputStr);
    
    			if (InputStr.equals("老师账号")) {
    				outputStr = "tuserNo";
    			} else if (InputStr.equals("老师密码")) {
    				outputStr = "tpswd";
    			} else if (InputStr.equals("学生账号")) {
    				outputStr = "suserNo";
    			} else if (InputStr.equals("学生密码")) {
    				outputStr = "spswd";
    			} 
    			System.out.println("jCBSelectQueryFieldTransfer(). outputStr = " + outputStr);
    			return outputStr;
    		}
    
    		// 退出程序
    		public void close() {
    			System.exit(0);
    		}
    }
    
    
    

    图3-3老师学生账号密码界面
    在这里插入图片描述
    3.4、新生信息输入界面
    新生信息输入界面请见如图3-4新生信息输入界面。这个界面的设计同样是专门为教务办用户设计,首先这个界面是一个录入新生信息的界面,在每一个文本框都有相应输入的数据格式的提示比如生日的文本框所提示的内容是“2013-05-20”这种格式,因为在数据库中的学生信息表格中设计的时间的数据类型是date类型,所以必须用这种数据格式的填写才能成功插入到数据库相应的表格里面去。只有当所有的文本框中都输有正确数据,然后点击确认键,然后会弹出一个窗口让用户再确认一次是否允许该操作的执行,减少用户操作失误的几率。插入数据成功之后界面的所有文本框会清空,用户可以再继续将其他学生信息插入到学生信息表中;也可以点击返回,然后返回主界面。
    实现新生信息输入界面的全部代码:

    package xr06;
    
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    
    import java.awt.Font;
    import java.awt.Color;
    import java.awt.SystemColor;
    import javax.swing.JTextField;
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JRadioButton;
    import javax.swing.ImageIcon;
    import java.awt.Toolkit;
    
    public class Newstudent extends JFrame {
    	static String select="男";
    	ButtonGroup bg=null;
    	private static DbProcess dbProcess;
    	private JPanel contentPane;
    	private JTextField textField;
    	private JTextField textField_1;
    	private JTextField textField_3;
    	private JTextField textField_4;
    	private JTextField textField_5;
    	private JTextField textField_6;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		
    					Newstudent f = new Newstudent();
    					
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public Newstudent() {
    		setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\timg-1.jpg"));
    		
    		
    		this.setResizable(false);
    		setFont(new Font("Dialog", Font.BOLD, 25));
    		setTitle("新生信息输入");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(700, 200, 570, 533);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		
    		JPanel panel = new JPanel();
    		panel.setBackground(new Color(255, 255, 153));
    		panel.setBounds(0, 0, 566, 498);
    		contentPane.add(panel);
    		panel.setLayout(null);
    		
    		JLabel lblNewLabel = new JLabel("新生信息输入");
    		lblNewLabel.setBounds(182, 13, 197, 36);
    		lblNewLabel.setBackground(Color.LIGHT_GRAY);
    		lblNewLabel.setFont(new Font("华文新魏", Font.BOLD, 30));
    		panel.add(lblNewLabel);
    		
    		JLabel lblNewLabel_1 = new JLabel("学号:");
    		lblNewLabel_1.setFont(new Font("宋体", Font.BOLD, 20));
    		lblNewLabel_1.setBounds(92, 76, 71, 18);
    		panel.add(lblNewLabel_1);
    		
    		JLabel label = new JLabel("姓名:");
    		label.setFont(new Font("宋体", Font.BOLD, 20));
    		label.setBounds(92, 126, 74, 18);
    		panel.add(label);
    		
    		JLabel label_1 = new JLabel("性别:");
    		label_1.setFont(new Font("宋体", Font.BOLD, 20));
    		label_1.setBounds(92, 176, 70, 18);
    		panel.add(label_1);
    		
    		JLabel label_2 = new JLabel("生日:");
    		label_2.setFont(new Font("宋体", Font.BOLD, 20));
    		label_2.setBounds(92, 226, 77, 18);
    		panel.add(label_2);
    		
    		JLabel label_3 = new JLabel("地址:");
    		label_3.setFont(new Font("宋体", Font.BOLD, 20));
    		label_3.setBounds(92, 276, 66, 18);
    		panel.add(label_3);
    		
    		textField = new JTextField();
    		textField.setBounds(162, 74, 255, 24);
    		panel.add(textField);
    		textField.setColumns(10);
    		textField.addFocusListener(new JTextFieldHintListener("新生学号 如 1705", textField));
    		
    		textField_1 = new JTextField();
    		textField_1.addFocusListener(new JTextFieldHintListener("新生姓名 如 XR", textField_1));
    		textField_1.setColumns(10);
    		textField_1.setBounds(162, 124, 255, 24);
    		
    		panel.add(textField_1);
    		
    		
    		textField_3 = new JTextField();
    		textField_3.addFocusListener(new JTextFieldHintListener("新生生日 如 2013-05-20", textField_3));
    		textField_3.setColumns(10);
    		textField_3.setBounds(162, 224, 255, 24);
    		panel.add(textField_3);
    		
    		textField_4 = new JTextField();
    		textField_4.addFocusListener(new JTextFieldHintListener("新生地址籍贯 如 湖南长沙", textField_4));
    		textField_4.setColumns(10);
    		textField_4.setBounds(162, 274, 255, 24);
    		panel.add(textField_4);
    		
    		JLabel label_4 = new JLabel("院系:");
    		label_4.setFont(new Font("宋体", Font.BOLD, 20));
    		label_4.setBounds(92, 326, 66, 18);
    		panel.add(label_4);
    		
    		textField_5 = new JTextField();
    		textField_5.addFocusListener(new JTextFieldHintListener("新生院系 如 0101", textField_5));
    		textField_5.setColumns(10);
    		textField_5.setBounds(162, 324, 255, 24);
    		panel.add(textField_5);
    		
    		JLabel label_5 = new JLabel("班名:");
    		label_5.setFont(new Font("宋体", Font.BOLD, 20));
    		label_5.setBounds(92, 376, 66, 18);
    		panel.add(label_5);
    		
    		textField_6 = new JTextField();
    		textField_6.addFocusListener(new JTextFieldHintListener("新生班名 如 01", textField_6));
    		textField_6.setColumns(10);
    		textField_6.setBounds(162, 374, 255, 24);
    		panel.add(textField_6);
    		
    		JButton btnNewButton = new JButton("确认");
    		btnNewButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				if ( !textField.getText().isEmpty() && !textField_1.getText().isEmpty()
    						 && !textField_3.getText().isEmpty() && !textField_4.getText().isEmpty()
    						&& !textField_5.getText().isEmpty() && !textField_6.getText().isEmpty()) {
    					System.out.println("mouseClicked(). 确认");
    					int n=JOptionPane.showConfirmDialog(null,"确定录入该生信息?", "新生信息录入",JOptionPane.YES_NO_OPTION);
    					if(n==0) {
    						insertProcess();
    						JOptionPane.showMessageDialog(null, "                   录入信息成功", "输入信息成功", JOptionPane.PLAIN_MESSAGE); 
    						textField.setText("");
    						textField_1.setText("");
    						textField_3.setText("");
    						textField_4.setText("");
    						textField_5.setText("");
    						textField_6.setText("");
    					}
    				}
    				else {JOptionPane.showMessageDialog(null, "                   请输入完整数据,谢谢", "请输入完整数据", JOptionPane.PLAIN_MESSAGE); }
    		}
    			});
    		btnNewButton.setForeground(Color.BLACK);
    		btnNewButton.setBackground(Color.ORANGE);
    		btnNewButton.setFont(new Font("宋体", Font.BOLD, 20));
    		btnNewButton.setBounds(322, 433, 95, 35);
    		panel.add(btnNewButton);
    		
    		JButton button = new JButton("返回");
    		button.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				dispose();
    				Teacher t = new Teacher();
    			}
    		});
    		button.setForeground(Color.RED);
    		button.setFont(new Font("宋体", Font.BOLD, 20));
    		button.setBackground(Color.ORANGE);
    		button.setBounds(438, 433, 95, 35);
    		panel.add(button);
    		
    		
    		JRadioButton rdbtnNewRadioButton = new JRadioButton("男");
    		rdbtnNewRadioButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				System.out.println("选择“男”");
    				select="男";
    			}
    		});
    		rdbtnNewRadioButton.setFont(new Font("宋体", Font.BOLD, 17));
    		rdbtnNewRadioButton.setBackground(new Color(255, 255, 153));
    		rdbtnNewRadioButton.setBounds(162, 174, 77, 27);
    		panel.add(rdbtnNewRadioButton);
    		
    		JRadioButton rdbtnNewRadioButton_1 = new JRadioButton("女");
    		rdbtnNewRadioButton_1.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				System.out.println("选择“女”");
    				select="女";
    			}
    		});
    		
    		rdbtnNewRadioButton_1.setFont(new Font("宋体", Font.BOLD, 17));
    		rdbtnNewRadioButton_1.setBackground(new Color(255, 255, 153));
    		rdbtnNewRadioButton_1.setBounds(238, 174, 157, 27);
    		panel.add(rdbtnNewRadioButton_1);
    		this.setVisible(true);
    		bg=new ButtonGroup();  
            bg.add(rdbtnNewRadioButton);  
            bg.add(rdbtnNewRadioButton_1);  
            rdbtnNewRadioButton.setSelected(true);
    		dbProcess = new DbProcess();
    		
    	}
    	public void insertProcess() {
    		
    		String Sno = textField.getText().trim();
    		String Sname = textField_1.getText().trim();
    		String Ssex = select;
    		String Sbirth = textField_3.getText().trim();
    		String Sadd = textField_4.getText().trim();
    		String Sacademy = textField_5.getText().trim();
    		String Scla = textField_6.getText().trim();
    
    		// 建立插入条件
    		String sql = "insert into student values('";
    		sql = sql + Sno + "','";
    		sql = sql + Sname + "','";
    		sql = sql + Ssex + "','";
    		sql = sql + Sbirth + "','";
    		sql = sql + Sadd + "','";
    		sql = sql + Sacademy + "','";
    		sql = sql + Scla + "');";
    
    		System.out.println("insertProcess(). sql = " + sql);
    		try {
    			if (dbProcess.executeUpdate(sql) < 1) {
    				System.out.println("insertProcess(). insert database failed.");
    			}
    		} catch (Exception e) {
    			System.out.println("e = " + e);
    			JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);
    		}
    	}
    }
    
    

    图3-4新生信息输入界面
    在这里插入图片描述

    以上只是数据库课设之学生信息管理系统部分设计内容和源代码资源,如果想要学生信息管理系统全部资源请点击下面资源链接进行下载,希望能帮助到你!

    独家资源:点击资源下载链接

    同时在完成相关设计可能会用到的博主博客中的文章内容:

    1、Navicat for MySQL资源分享和下载以及SQL文件的导入导出

    2、Eclipse最新最简最详细安装教程

    各位大佬如有更好的建议或者不清楚的地方让各位产生了疑问,各位可以在评论中提出!

    展开全文
  • 精品文档 精品文档 PAGE PAGE #欢迎下载 java学生信息管理系统设计 利用数据库做的 1 系统简介 本系统提供了学生信息管理中常见的基本功能主要包括管理员和学生两大模块 管理员的主要功能有对学生信息和课程信息进行...
  • 本文采用的是Jsp和SQL SERVER技术,通过使用数据库达到数据的存取,从而开发出了个人通讯录管理系统。讨论了开发该系统的可行性,提出了本系统的需求并给出了系统的总体框架,选择了NetBeans IDE 6.5和SQL SERVER 等...
  • 数据库为什么会出现数据库呢?...找起来也不好找,比如较原始的方式,我们可能都会习惯新建一个txt文本或者excel表格或者ppt来保存自己的数据,txt里保存了一份个人简介信息,excel里保存了一张自己

    数据库

    为什么会出现数据库呢?

    当然为了方便数据的组织,存储和管理,数据库就像一个仓库一样专门为了存放各种各样的数据,有了数据库数据就像有了一个最美好的归宿一样,而不是随地安家,导致很多双胞胎,多胞胎数据随地横行,维护起来也极其麻烦,找起来也不好找,比如较原始的方式,我们可能都会习惯新建一个txt文本或者excel表格或者ppt来保存自己的数据,txt里保存了一份个人简介信息,excel里保存了一张自己的成绩表,而ppt是自己做的一个项目介绍,假如txt,excel,ppt里多次出现了自己的名字,有一天自己发现当时打字太快有一些输入错误了,然后还得一个个去查找看看哪个输入有问题找到修改一下,试想,如果这个在不同地方不同时间点多次使用到的信息如果被保存在了数据库某一张表的某一个格子里,即使有一天你改名字了,so easy,只要链接到你名字出现的那个数据库,然后打开所在的数据库,找到那个表很容易就找到了那个数据,然后再键入一行修改的语句,哦了,改好了,就是这么爽,由此看来,数据的管理真的至关重要,因为时代的进步,数据量真的是太多了,管理好了维护使用都很方便,管理不好了,维护起来麻烦,用起来也麻烦。我们见到最多的当属关系型数据库,类似于excel表一样的二维关系那样。

    数据库的特点:

    由于数据库管理系统对数据库优秀的管理,使得数据库具备
    1.数据可以共享(不同地理位置的多个用户可以同时存取数据库中的同一个数据)
    2.减少了数据的冗余(不必存在的多余数据不能存放在数据库里)
    3.数据的独立性
    4.数据实现集中控制(用户连接服务器来使用数据库中的数据,控制管理服务器上的数据库就好了)
    5.数据的一致性和可维护性,确保数据的安全性,完整性
    6.故障恢复

    数据库管理系统(Database Management System)

    为什么会出现数据库管理系统呢?
    其实数据库管理系统就是为了方便数据库中数据的一种规范化的使用,管理,维护而诞生的软件,用来和数据库中的数据打交道用的,有了它我们可以很方便的运用数据库,当然如果我们不是数据库管理员的话也没必要去维护数据,哈哈。

    分类
    最常见到的无非是MySQL,Oracle,SQL Servel,DB2……

    SQL(Structured Query Language)结构化查询语言

    为什么会出现SQL
    为了方便用户和关系型数据库管理系统按照一种规范统一性的语言进行交流,一句SQL语言就相当于一个命令,指挥数据库管理系统来调遣它所管理的数据从而实现数据的存取,查询,增删和更新,或者是增删数据库,数据表等等。

    分类:
    从开发的角度看,常用到的语言是1.数据查询语言(DQL:Data Query Language),2.数据操作语言(DML:Data Manipulation Language)和 数据定义语言(DDL)。

    经过上边的简单介绍相信大家已经大概了解了数据库,数据库管理系统以及SQL了,他们三者之间也是存在着密不可分的关系,数据库是用来存储管理数据的,数据库管理系统是管理操纵数据库的,SQL是用来方便用户和数据库管理系统(关系数据库管理系统)进行沟通的,为什么要进行沟通呢,因为数据库管理系统掌握了数据库的所有信息,我们为了使用数据,更新数据,增删数据,维护数据,管理数据库才与它用SQL这门语言进行交流。

    展开全文
  • 1)维护学生的个人基本信息,实现对学生个人信息的增、删、改、查,学生信息包括学号、姓名、性别、年龄、入学时间、系别、专业、密码。 2)维护教师的个人基本信息,实现对教师个人信息的增、删、改、查,教师信息...
  • 系统主要包括信息录入、信息维护、信息查询、报表打印、关闭系统这几部分。其功能主要有: ⒈有关学生信息的录入,包括录入学生基本信息、学生考试成绩等。 ⒉学生信息的维护,包括添加修改学生基本信息、考试成绩...
  • 关于上个资源忘了上传数据库表示抱歉(记得好像有加进去的),不过没关系,现在补上
  • 设计完成后,提交学生信息管理系统设计的学生登录模块、学生的个人信息模块、学生所修课程管理模块、学生考试成绩查询模块、登录密码修改模块等5大模块设计的数据表,界面以及数据库文件和程序代码。 四、进程安排 ...
  • 图书管理信息系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备...
  • 数据库应用管理系统

    2014-06-03 20:59:56
    掌握并运用ADO.NET技术,实现一个C/S版本的信息管理系统; 三、实验内容: (1)设计一个学生成绩管理信息系统,能对学生的成绩记录进行方便的输入、查询、修改等操作,以及综合统计查询等。 (2)对学生成绩的综合...
  • Android实现学生信息管理系统之登录与数据库准备

    千次阅读 多人点赞 2019-07-13 10:56:56
    前一阵自学了一些安卓基础,正好需要交数据库大作业,就拿android做了一个简单的学生信息管理系统。 功能设计 登录界面(入口):后台数据库登录密码验证、登录身份选择、修改密码。 学生端:学生可以选课、可以查看...

    前言

    前一阵自学了一些安卓基础,正好需要交数据库大作业,就拿android做了一个简单的学生信息管理系统。
    Android学生信息管理系统
    代码我已经放到了github上,需要的可以下载
    https://github.com/SunnyBoy-WYH/AndroidDemo
    考虑到大家可能github下载慢,我也在码云放了一份
    https://gitee.com/SunnyBoy-WYH/AndroidDemo

    觉得还可以的可以Star一下…

    功能设计

    登录界面(入口):后台数据库登录密码验证、登录身份选择、修改密码。

    学生端:学生可以选课、可以查看选课结果、查看个人信息、向老师和管理员提出建议、切换账户。

    教师端:查看所教课程信息、管理所教学生成绩、查看学生留言(匿名)、统计学生信息、查看教师个人信息。

    管理员端:查询、管理学生、教师、管理员、课程信息,对学生绩点按照条件排序、查看留言,并且可以看到留言人的信息。

    后台:Sqlite数据库,表的基本设计,触发器、外键依赖、约束等保证表的合理性、完整性,对于账户的md5加密算法设计

    一、数据库表设计

    先来看看总体的E-R图,可能设计的不太好,大家仅供参考。
    在这里插入图片描述

    package com.example.database_manage.database;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    /*
       该界面主要用于建表,以及设定完整性
     */
    public class DBOpenHelper extends SQLiteOpenHelper {
    
            //带全部参数的构造函数,此构造函数必不可少
            public DBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
                super(context, name, factory, version);
            }
            @Override
            public void onCreate(SQLiteDatabase db) {
    
                //学生信息
                String sql_student = "create table student(" +
                        "id int primary key not null ," +
                        "name varchar(20) not null," +
                        "sex varchar(10) not null,"+
                        "age int check(age<100 and age>0),"+
                        "banji varchar(20) ,"+
                        "phone int ,"+
                        "college varchar(20) default '无'," +
                        "jidian int check(jidian>0 and jidian<5.0)) "
                        ;
                //学生——登陆密码表
                String sql_student_load = "create table load_account(account int primary Key not null ,password varchar(20))";
    			//触发器
                String sql_ctrigger = "CREATE TRIGGER load_add AFTER INSERT ON student  " +
                        "BEGIN INSERT INTO load_account(account,password) VALUES (new.id,'e10adc3949ba59abbe56e057f20f883eWYH'); END;";
                String sql_trigger = "CREATE TRIGGER delete_load BEFORE DELETE ON student BEGIN DELETE  FROM load_account WHERE account =old.id ;END ; ";
                String sql_trigger2 = "CREATE TRIGGER student_load_change " +
                        " AFTER UPDATE ON student BEGIN UPDATE  load_account SET ACCOUNT = NEW.ID WHERE ACCOUNT = OLD.ID; END;";
                db.execSQL(sql_student_load);
                db.execSQL(sql_student);
                db.execSQL(sql_ctrigger);
                db.execSQL(sql_trigger);
                db.execSQL(sql_trigger2);
    
    
                //老师个人信息表
                String sql_teacher ="create table teacher(" +
                        "teacher_id int primary key not null," +
                        "name varchar(20)," +
                        "sex  varchar(20) check(sex = '男' or sex = '女')," +
    
                        "age int check(age>0 and age<100)," +
                        "level varchar(20)," +
                        "phone int ," +
                        "college varchar(20))";
                //老师登录信息表
                String sql_teacher_load = "create table load_teacher(" +
                        "account int primary key not null ," +
                        "password varchar(20))";
    			//触发器
                String sql_ttrigger = "CREATE TRIGGER load_add_teacher AFTER INSERT ON teacher  " +
                        "BEGIN INSERT INTO load_teacher(account,password) VALUES (new.teacher_id,'e10adc3949ba59abbe56e057f20f883eWYH'); END;";
                String sql_dttrigger = "CREATE TRIGGER delete_teacher_load " +
                        " BEFORE DELETE ON teacher BEGIN DELETE FROM load_teacher WHERE ACCOUNT = OLD.TEACHER_ID; END;";
                String sql_dttrigger1 = "CREATE TRIGGER teacher_load_change " +
                        " AFTER UPDATE ON teacher BEGIN UPDATE  load_teacher SET ACCOUNT = NEW.TEACHER_ID WHERE ACCOUNT = OLD.TEACHER_ID; END;";
    
                db.execSQL(sql_teacher_load);
                db.execSQL(sql_teacher);
                db.execSQL(sql_ttrigger);
                db.execSQL(sql_dttrigger);
                db.execSQL(sql_dttrigger1);
    
    
                //学生选课信息表
                String sql_student_course = "create table student_course(" +
                        "student_id int ,"+
                        "course_name varchar(20),"+
                        "teacher_name varchar(10),"+
                        "score int, " +
                        "FOREIGN KEY(course_name) REFERENCES course(course_name)," +
                        "FOREIGN KEY(teacher_name) REFERENCES course(teacher_name)" +
    
                        ")";
                //课程信息表
                String sql_course = "create table course(" +
                        "teacher_name varchar(20) not null,"+
                        "course_name varchar(20) not null," +
                        "course_weight SMALLINT ,"+
                        "course_time varchar(20)," +
                        "course_period varchar(20)," +
                        "primary key(teacher_name,course_name)," +
                        "FOREIGN KEY(teacher_name) REFERENCES teacher(name))";
                db.execSQL(sql_course);
                db.execSQL(sql_student_course);
    
    
    			//留言信息存储表
                String sql_liuyan  = "create table message(" +
                        "student_id int primary key not null," +
                        "message text)";
                db.execSQL(sql_liuyan);
    
    
    
                //管理员表
                String sql_admin = "create table administractor(" +
                        " account varchar(20)," +
                        " password varchar(20))";
                String sql_insert_admin = "insert into administractor values('WYH','c7533ad5fb828c1bedd12608f86f998dWYH')";
    
                db.execSQL(sql_admin);
                db.execSQL(sql_insert_admin);
    
           
                //个人资源配置表,比如更改图片之类的啦
                String personal_resource = "create table personal_resource(" +
                        "id int primary key not null ," +
                        "IMAGE blob)";
    
                db.execSQL(personal_resource);
    
                //触发器
    
                String personal_resource_trigger = "CREATE TRIGGER personal_resource_trigger AFTER INSERT ON student " +
                        "BEGIN INSERT INTO personal_resource(id,IMAGE) VALUES (new.id,null);END;";
                String personal_resource_trigger1 = "CREATE TRIGGER personal_resource_trigger_t AFTER INSERT ON teacher " +
                        "BEGIN INSERT INTO personal_resource(id,IMAGE) VALUES (new.teacher_id,null);END;";
    
                db.execSQL(personal_resource_trigger);
                db.execSQL(personal_resource_trigger1);
    
    
    
    			//插入基本测试数据
                String sql_insert1 = "insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('李xx','电子线路基础',2,'周一上午','1')";
                String sql_insert2 = "insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('高x* 刘x','大学英语4',4,'周五上午','1')";
                String sql_insert3 = "insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('魏xx','数据库原理',3,'周三上午','1')";
                String sql_insert4 = "insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('司xx','数学模型',2,'周一晚上','1')";
                String sql_insert5 = "insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('司xx','运筹学',2,'周三下午','1')";
                String sql_insert6 = "insert into course(teacher_name,course_name,course_weight,course_time,course_period) values('王xx','毛泽东思想概论',4.5,'周五晚上','1')";
                db.execSQL(sql_insert1);
                db.execSQL(sql_insert2);
                db.execSQL(sql_insert3);
                db.execSQL(sql_insert4);
                db.execSQL(sql_insert5);
                db.execSQL(sql_insert6);
    
    
    
    
    			//插入基本测试数据
                String sql_p = "insert into student(id ,name ,sex,age ,banji , phone, college )" +
                        " values(20171302028,'武xx','男',19,'17计科3班',188330,'网络空间安全与计算机学院')";
    
                String sql_p1 = "insert into student(id ,name ,sex,age ,banji , phone, college )" +
                        " values(20180301178,'梁x','女',20,'18新闻2班',188330,'新闻传播学院')";
                String sql_p2 = "insert into student(id ,name ,sex,age ,banji , phone, college )" +
                        " values(20171302029,'台x','男',20,'17计科3班',188330,'网络空间安全与计算机学院')";
                String sql_p3 = "insert into student(id ,name ,sex,age ,banji , phone, college )" +
                        " values(20171302030,'王x','男',20,'17计科3班',188330,'网络空间安全与计算机学院')";
                String sql_p4 = "insert into student(id ,name ,sex,age ,banji , phone, college )" +
                        " values(20171302031,'霍xx','男',20,'17材料2班',188330,'化学与环境科学学院')";
                String sql_p5 = "insert into student(id ,name ,sex,age ,banji , phone, college )" +
                        " values(20171102027,'王xx','男',20,'17材料2班',18812141604,'化学与环境科学学院')";
    
    
                String sql_tp1 = "insert into teacher(teacher_id ,name ,sex,age ,level , phone, college )" +
                        " values(2018,'魏xx','男',20,'高级教师',188330,'网络空间安全与计算机学院')";
                String sql_tp = "insert into teacher(teacher_id ,name ,sex,age ,level , phone, college )" +
                        " values(2017,'司xx','男',19,'高级教师',188330,'网络空间安全与计算机学院')";
                db.execSQL(sql_p);
                db.execSQL(sql_tp);
                db.execSQL(sql_p1);
                db.execSQL(sql_p2);
                db.execSQL(sql_p3);
                db.execSQL(sql_p4);
                db.execSQL(sql_p5);
                db.execSQL(sql_tp1);
    
    
            }
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
            }
    
        }
    
    
    

    为了能够快速简单的获取SQLitedatabase对象,设计一个公用类方法

    CommonDatabase.java

    package com.example.database_manage.database;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    
    public class CommonDatabase {
        private DBOpenHelper dbHelper;
        private SQLiteDatabase sqlite;
        public SQLiteDatabase getSqliteObject(Context context, String db_name){
            dbHelper = new DBOpenHelper(context,db_name,null,1);
            sqlite = dbHelper.getWritableDatabase();
            return sqlite;
        }
    
    }
    
    

    我们的登录信息在数据库应该以密文显示,所以我们应该使用一种加密算法,在这里我选择了不可逆的md5算法。然后再登录的时候将密码用md5转换后再与数据库中进行比较。

    MD5demo.java

    package com.example.database_manage.database;
    
    import java.math.BigInteger;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class MD5Demo {
        private  static  String key = "WYH";
    
        //写一个md5加密的方法
        public static String md5(String plainText) {
            //定义一个字节数组
            byte[] secretBytes = null;
            try {
                // 生成一个MD5加密计算摘要
                MessageDigest md = MessageDigest.getInstance("MD5");
                //对字符串进行加密
                md.update(plainText.getBytes());
                //获得加密后的数据
                secretBytes = md.digest();
            } catch (NoSuchAlgorithmException e) {
                throw new RuntimeException("没有md5这个算法!");
            }
            //将加密后的数据转换为16进制数字
            String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字
            // 如果生成数字未满32位,需要前面补0
            for (int i = 0; i < 32 - md5code.length(); i++) {
                md5code = "0" + md5code;
            }
            return md5code+key;
        }
    
    }
    

    虽然md5算法是不可逆的,但是网上依旧有解密网站,但是解密网站相当于是一个大量存储这种转换信息的数据库,并不是真正的解密了。
    网址如下:
    https://www.cmd5.com/
    它只能解密一些简单的诸如123456789这种密码,但是这里我的初始密码确实是123456,所以我在最后返回的md5密文后增加一个key,如上面代码所示,相当于增加了个人标记。

    二、登录界面与逻辑设计

    效果如图所示
    在这里插入图片描述
    登录布局代码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@mipmap/load_new"
    
        tools:context=".start_load.load">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:layout_marginTop="30dp"
            android:text="河北大学学生信息系统"
            android:textSize="30dp" />
    
        <ImageView
    
            android:layout_width="150dp"
            android:layout_height="150dp"
            app:srcCompat="@mipmap/school_new"
            android:layout_marginTop="60dp"
            android:layout_gravity="center_horizontal"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="50dp">
    
            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_gravity="center"
                android:layout_marginLeft="80dp"
                android:src="@mipmap/geren"/>
    
                <android.support.design.widget.TextInputLayout
                    android:layout_width="match_parent"
                    android:hint="请输入您的学号"
                    android:id="@+id/input_id"
    
                    android:layout_marginRight="50dp"
                    android:layout_height="wrap_content">
                    <EditText
                        android:id="@+id/edit_load_zhanghao"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:textSize="20sp"
                        />
    
                </android.support.design.widget.TextInputLayout>
    
    
        </LinearLayout>
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
    
                android:orientation="horizontal">
    
                <ImageView
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_marginLeft="80dp"
                    android:layout_gravity="center"
                    android:src="@mipmap/suo"/>
                <RelativeLayout
                    android:layout_marginRight="50dp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
                <android.support.design.widget.TextInputLayout
                    app:errorEnabled="true"
                    app:counterMaxLength="10"
                    app:counterEnabled="true"
                    android:id="@+id/textinput_p"
                    android:hint="请输入您的密码"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
    
                        <EditText
                            android:id="@+id/edit_load_password"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:textSize="20dp"
                            />
    
                </android.support.design.widget.TextInputLayout>
                    <ImageButton
                        android:id="@+id/imagebutton"
                        android:layout_width="50dp"
                        android:layout_height="50dp"
                        android:background="#00000000"
                        android:layout_alignParentEnd="true"
                        android:src="@drawable/invisible" />
                    </RelativeLayout>
    
    
            </LinearLayout>
        <RelativeLayout
            android:layout_marginRight="50dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:id="@+id/checkbox_remember"
                android:text="记住密码"/>
    
        </RelativeLayout>
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="30dp"
            >
            <RadioGroup
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/load_radiogroup"
                android:gravity="center"
                android:orientation="horizontal">
    
                    <RadioButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="学生"
    
                        android:id="@+id/radiobutton_xuesheng"/>
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/radiobutton_teacher"
                    android:text="老师"/>
                    <RadioButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/radiobutton_guanliyuan"
                        android:text="管理员"/>
    
            </RadioGroup>
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_marginTop="30dp"
            android:orientation="horizontal">
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="登录"
                android:background="@drawable/button_background"
                android:textColor="#ffffffff"
    
    
                android:id="@+id/button_load"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="修改密码"
                android:textColor="#ffffffff"
                android:background="@drawable/button_background"
    
    
                android:id="@+id/button_change_password"/>
        </LinearLayout>
    
    
    
    
    </LinearLayout>
    

    说明:这里我使用了design库的TextInputLayout,觉得好看的可以参考我这篇文章
    TextInputLayout 使用及其属性

    处理登录的逻辑代码

    package com.example.database_manage.start_load;
    
    import android.annotation.SuppressLint;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.graphics.Color;
    import android.os.Build;
    import android.os.Bundle;
    import android.preference.PreferenceManager;
    import android.support.design.widget.TextInputLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.text.method.HideReturnsTransformationMethod;
    import android.text.method.PasswordTransformationMethod;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.Button;
    import android.widget.CheckBox;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.RadioGroup;
    import android.widget.Toast;
    
    import com.example.database_manage.R;
    import com.example.database_manage.administractor.Container;
    import com.example.database_manage.database.CommonDatabase;
    import com.example.database_manage.student.activity_student;
    import com.example.database_manage.teacher.activity_teacher;
    
    import static com.example.database_manage.database.MD5Demo.md5;
    
    
    /***
     * 登陆界面的配置
     */
    public class load extends AppCompatActivity {
    
        //标记是选择了学生还是管理员
        private String state = "";
        private SQLiteDatabase db ;
        private SharedPreferences pref;
        private SharedPreferences.Editor editor;
        private CheckBox rememberPass;
        private boolean isRemember ;
        private EditText edit_load_zhanghao;
        private EditText edit_load_password;
    
    
        @SuppressLint("ClickableViewAccessibility")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_load);
    
            //用于记住密码的实现
            rememberPass = findViewById(R.id.checkbox_remember);
    
            pref = PreferenceManager.getDefaultSharedPreferences(this);
    
            isRemember = pref.getBoolean("remember_password",false);
    
    
            //状态栏融为一体的方法,这里参考了郭神的博客
            if (Build.VERSION.SDK_INT >= 21) {
                View decorView = getWindow().getDecorView();
                int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
                decorView.setSystemUiVisibility(option);
                getWindow().setStatusBarColor(Color.TRANSPARENT);
            }
    
    
            //轮子TextputLayout
            final TextInputLayout textInputLayout_p = findViewById(R.id.textinput_p);
    
            final TextInputLayout textInputLayout_id = findViewById(R.id.input_id);
    
            //账号密码编辑框
            edit_load_zhanghao = findViewById(R.id.edit_load_zhanghao);
    
            edit_load_password = findViewById(R.id.edit_load_password);
            //获取数据库对象
            CommonDatabase commonDatabase = new CommonDatabase();
    
            db =commonDatabase.getSqliteObject(load.this,"test_db");
    
            //绑定组件
            final Button button_change_password = findViewById(R.id.button_change_password);
    
            RadioGroup load_radiogroup = findViewById(R.id.load_radiogroup);
    
            final ImageButton imageButton = findViewById(R.id.imagebutton);
    
            //眼睛睁开闭上
            edit_load_password.setTransformationMethod(PasswordTransformationMethod.getInstance());//初始为隐藏密文状态
    
            imageButton.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    if(event.getAction() == MotionEvent.ACTION_DOWN) //按下重新设置背景图片
    
                    {
    
                        ((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.visible));
                        edit_load_password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//显示
    
    
                    }
    
                    else if(event.getAction() == MotionEvent.ACTION_UP) //松手恢复原来图片
    
                    {
    
                        ((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.invisible));
                        edit_load_password.setTransformationMethod(PasswordTransformationMethod.getInstance());//隐藏
    
                    }
                    return false;
                }
            });
    
    
            //单选按钮监听器
            load_radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    switch (group.getCheckedRadioButtonId())
                    {
                        case R.id.radiobutton_xuesheng:
    
                        textInputLayout_id.setHint("请输入您的学号");
                            button_change_password.setVisibility(View.VISIBLE);
                            state = "student";
                            break;
                        case R.id.radiobutton_guanliyuan:
    
                            textInputLayout_id.setHint("请输入您的账号");
                            state = "guanliyuan";
                            break;
                        case R.id.radiobutton_teacher:
    
                            textInputLayout_id.setHint("请输入您的账号");
                            state = "teacher";
                            break;
                         default:
                             break;
    
                    }
                }
            });
    
            //登录按钮
            Button button_load = findViewById(R.id.button_load);
            button_load.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    //获取学生输入的账号密码
                    String account_load = edit_load_zhanghao.getText().toString();
                    
                    //由于我们在数据库中是密文存储的所以这里也要用我们写好的md5方法取转换成密文进行匹配验证
                    String password_load = md5(edit_load_password.getText().toString());
                    if(state=="guanliyuan")
                    {
                        String true_password="";
    
                        Cursor cursor = db.query("administractor", null, "account = ?", new String[]{account_load}, null, null, null);
    
                        while(cursor.moveToNext())
                        {
                            true_password =cursor.getString(cursor.getColumnIndex("password"));
                        }
    
                        if(password_load.equals(true_password))
                        {
                            isr();
                            startActivity(new Intent(load.this, Container.class));
                            Toast.makeText(load.this,"登陆成功",Toast.LENGTH_SHORT).show();
                            finish();
                        }
                        else
                        {
                            Toast.makeText(load.this,"密码错误!",Toast.LENGTH_SHORT).show();
                        }
                    }
                    else if(state.equals("student"))
                    {
    
                        //去数据库中找账号为account的数据
    
                        String true_password="";
    
                        Cursor cursor = db.query("load_account", null, "account = ?", new String[]{account_load}, null, null, null);
    
                        while(cursor.moveToNext())
                        {
                             true_password =cursor.getString(cursor.getColumnIndex("password"));
                        }
    
                        if(password_load.equals(true_password)&&true_password.equals("")==false)
                        {
                            isr();
                            Intent intent = new Intent(load.this, activity_student.class);
                            
                            intent.putExtra("student_id",account_load);
                            
                            startActivity(intent);
                            
                            Toast.makeText(load.this,"登陆成功!",Toast.LENGTH_SHORT).show();
    
                            finish();
                        }
                        else
                        {
                            Toast.makeText(load.this,"密码错误!",Toast.LENGTH_SHORT).show();
                        }
    
                    }
                    else if(state.equals("teacher"))
                    {
                        //去数据库中找账号为account的数据
                        Cursor cursor = db.query("load_teacher", null, "account = ? AND password = ?", new String[]{account_load,password_load}, null, null, null);
    
    
    
                        if(cursor.getCount()==0)
                        {
    
                            Toast.makeText(load.this,"密码错误!",Toast.LENGTH_SHORT).show();
    
                        }
                        else
                        {
                            isr();
                            
                            //登录成功转到老师界面并携带老师的教师号过去
                            Intent intent = new Intent(load.this, activity_teacher.class);
                            
                            intent.putExtra("teacher_id",edit_load_zhanghao.getText().toString());
                            
                            startActivity(intent);
                            
                            Toast.makeText(load.this,"登陆成功!",Toast.LENGTH_SHORT).show();
    
                            finish();
                        }
    
    
                    }
                    else
                    {
                        Toast.makeText(load.this,"您还没有选择任何登录类型!",Toast.LENGTH_SHORT).show();
                    }
    
    
    
                }
            });
            //点击修改按钮进入更改密码的界面
    
            button_change_password.setOnClickListener(new View.OnClickListener() {
                @SuppressLint("ClickableViewAccessibility")
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(load.this, password_change.class);
                    startActivity(intent);
    
    
    
                }
            });
            edit_load_password.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
    
                @Override
                public void afterTextChanged(Editable s) {
                    if(edit_load_password.getText().toString().equals(""))
                    {
                        textInputLayout_p.setError("不能为空!");
                    }
                    else
                    {
                        if(textInputLayout_p.getCounterMaxLength()<edit_load_password.length())
                        {
                            textInputLayout_p.setError("超出字数限制!");
                        }
                        else
                        {
                            textInputLayout_p.setErrorEnabled(false);
                        }
                    }
    
    
                }
            });
            //如果手机有记录
            if(isRemember)
            {
                edit_load_zhanghao.setText(pref.getString("account",""));
                edit_load_password.setText(pref.getString("password",""));
    
                //
                rememberPass.setChecked(true);
            }
    
    
        }
        //用于实现记住密码的方法,这里使用SharedPreference存放临时数据
        private void isr()
        {
            editor = pref.edit();
            //检查复选框是否被选中
            if(rememberPass.isChecked())
            {
                editor.putBoolean("remember_password",true);
                editor.putString("account",edit_load_zhanghao.getText().toString());
                editor.putString("password",edit_load_password.getText().toString());
            }
            else
            {
                editor.clear();
            }
            editor.apply();
        }
    
    }
    
    

    修改密码功能实现

    修改密码页面
    xml布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/b2"
        android:orientation="vertical"
        tools:context=".start_load.password_change">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_marginTop="120dp"
            android:orientation="horizontal"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="30dp"
                android:layout_marginLeft="40dp"
                android:text="身份"/>
            <RadioGroup
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/password_radiogroup"
                android:gravity="center"
    
                android:orientation="horizontal">
    
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:text="学生"
    
                    android:id="@+id/radiobutton_xuesheng_p"/>
                <RadioButton
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:id="@+id/radiobutton_teacher_p"
                    android:text="老师"/>
                
            </RadioGroup>
        </LinearLayout>
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="40dp"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="账号"
                android:textSize="30dp"
                android:layout_marginLeft="40dp"/>
    
    
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/et_c_account"
                android:hint="请输入您的账号"
                android:layout_marginLeft="60dp"
                android:layout_marginRight="20dp"/>
    
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="40dp">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="原密码"
                android:textSize="30dp"
    
                android:layout_marginLeft="40dp"/>
    
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/et_c_oldpassword"
                android:hint="请输入您的旧密码"
                android:inputType="textPassword"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="20dp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="40dp">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="新密码"
                android:textSize="30dp"
                android:layout_marginLeft="40dp"/>
            <android.support.design.widget.TextInputLayout
                app:errorEnabled="true"
                app:counterMaxLength="10"
                app:counterEnabled="true"
                android:id="@+id/textinput_newpassword"
                android:layout_marginLeft="10dp"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_height="wrap_content">
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/et_c_newpassword"
                    android:hint="请输入您的新密码"
                    android:inputType="textPassword"
                    android:layout_marginLeft="30dp"
                    android:layout_marginRight="20dp"/>
            </android.support.design.widget.TextInputLayout>
    
    
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="40dp">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="新密码"
                android:textSize="30dp"
                android:layout_marginLeft="40dp"/>
    
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/et_c_confirm_newpassword"
                android:hint="请再次确认新密码"
                android:layout_marginLeft="30dp"
                android:inputType="textPassword"
                android:layout_marginRight="20dp"/>
        </LinearLayout>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button_change_password_ok"
            android:layout_gravity="center"
            android:layout_marginTop="40dp"
            android:background="#96B8D1"
            android:textSize="30dp"
            android:text="OK"/>
    
    
    
    </LinearLayout>
    

    逻辑代码password_change.java

    package com.example.database_manage.start_load;
    
    import android.content.ContentValues;
    import android.content.Intent;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.support.design.widget.TextInputLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.RadioGroup;
    import android.widget.Toast;
    
    import com.example.database_manage.R;
    import com.example.database_manage.database.CommonDatabase;
    
    import static com.example.database_manage.database.MD5Demo.md5;
    
    
    /***
     * 用于学生/老师修改密码
     */
    
    public class password_change extends AppCompatActivity {
        private  SQLiteDatabase db;
        private  Button button_change;
        private  RadioGroup load_radiogroup;
        private  EditText edit_account;
        private  EditText edit_oldpassword ;
        private  EditText edit_newpassword ;
        private  EditText edit_confirm ;
        private  String true_password ="";
        private  String state = "";
        private  TextInputLayout textInputLayout;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.activity_password_change);
    
            initView();
    
            //当选择不同身份时,state标记选择的身份
            load_radiogroup.setOnCheckedChangeListener(
                    new RadioGroup.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(RadioGroup group, int checkedId) {
                            switch (group.getCheckedRadioButtonId())
                            {
                                case R.id.radiobutton_xuesheng_p:
    
                                    state="student";
    
                                    break;
                                case R.id.radiobutton_teacher_p:
    
                                    state = "teacher";
                                    break;
                            }
    
    
                        }
                    });
    
            //为按钮设置监听器
            button_change.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if(state.equals("student"))
                        {
                            check("load_account");
    
                        }
                        else if(state .equals("teacher"))
                        {
                            check("load_teacher");
                        }
                        else
                        {
                            Toast.makeText(password_change.this,"您还没有说明身份!",Toast.LENGTH_SHORT).show();
                        }
                }
            });
    
            //为新密码进行检查
            edit_newpassword.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
                @Override
                public void afterTextChanged(Editable s) {
                    if(textInputLayout.getCounterMaxLength()<edit_newpassword.length())
                    {
                        textInputLayout.setError("超出字数限制!");
                    }
                    else
                    {
                        textInputLayout.setErrorEnabled(false);
                    }
                }
            });
        }
    
        //绑定组件
        public void initView()
        {
            button_change = findViewById(R.id.button_change_password_ok);
    
            edit_account = findViewById(R.id.et_c_account);
    
            edit_oldpassword = findViewById(R.id.et_c_oldpassword);
    
            edit_newpassword = findViewById(R.id.et_c_newpassword);
    
            textInputLayout = findViewById(R.id.textinput_newpassword);
    
            edit_confirm = findViewById(R.id.et_c_confirm_newpassword);
    
            load_radiogroup= findViewById(R.id.password_radiogroup);
    
            db = new CommonDatabase().getSqliteObject(password_change.this,"test_db");
        }
        //检验正确性
        public  void  check(String string)
        {
            if(edit_account.getText().toString().equals("")||edit_confirm.getText().toString().equals("")||edit_newpassword.getText().toString().equals("")||edit_oldpassword.getText().toString().equals(""))
            {
                Toast.makeText(password_change.this,"不能为空!",Toast.LENGTH_SHORT).show();
            }
            else
            {
                //去找真正密码
                Cursor cursor =db.query(string,null,"account = ?",new String[]{edit_account.getText().toString()},null,null,null);
                //如果根本没这个账户
                if(cursor.getCount()==0)
                {
                    Toast.makeText(password_change.this,"没有找到该账户",Toast.LENGTH_SHORT).show();
                }
                else
                {
                    while (cursor.moveToNext())
                    {
                        true_password = cursor.getString(cursor.getColumnIndex("password"));
                    }
    
                    //如果原密码错误
                    if(!md5(edit_oldpassword.getText().toString()).equals(true_password))
                    {
                        Toast.makeText(password_change.this,"原密码错误!",Toast.LENGTH_SHORT).show();
                    }
                    else
                    {
                        //如果用户前后输入密码不同
                        if(!edit_newpassword.getText().toString().equals(edit_confirm .getText().toString()))
                        {
                            Toast.makeText(password_change.this,"前后两次输入与验证密码错误!",Toast.LENGTH_SHORT).show();
                        }
                        else
                        {
                            ContentValues values = new ContentValues();
                            values.put("password",md5(edit_newpassword.getText().toString()));
                            //更新数据库
                            db.update(string, values, "account = ? ", new String[]{edit_account.getText().toString()});
    
                            Toast.makeText(password_change.this,"修改成功!",Toast.LENGTH_SHORT).show();
    
                            startActivity(new Intent(password_change.this, load.class));
                        }
                    }
    
                }
    
    
    
            }
        }
    }
    
    

    登录和数据库准备先到这里了。图片什么的需求可以到我的github上查看获取,大部分来源于阿里巴巴矢量图标库,小部分来源于我个人。

    由于是边学安卓边做的,有些细节问题没有注意,大佬们多多指正。

    展开全文
  • jsp个人信息管理系统

    2018-03-30 14:31:05
    个人信息管理系统有四大模块:1、个人信息增删查改;2、通讯录联系人增删查改;3、个人日程安排增删查改;4、个人文件上传和下载;该系统是基于struts2框架的maven JavaWeb项目工程,是B/S系统。数据库是mysql,有...
  • 仅供个人参考 不得用于商业用途 不得用于商业用途 运输企业管理系统数据库设计 亠系统需求分析报告: 1.1背景 一方面企业的业务越来越多信息量巨大另一方面 IT产业和In ternet获得 了飞速发展计算机应用已渗透到了...
  • 分为三类用户角色学生用户:修改个人信息、课程...管理员用户:学生管理、教师管理、课程管理、选课管理、成绩管理、院系设置、奖惩信息管理、管理员操作 用的java+MySQL数据库,cs架构。附带设计报告,建表合理规范。
  • 系统功能主要包括校科研处科研管理、院系(或部门)科研管理、个人科研信息查询、校级科研项目整体信息管理。可以划分为科研信息维护、科研信息查询与统计、科研信息报表、科研信息分析、校级课题申报、审批、结题、...
  • 系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统 的主要功能有:  学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。  学生流动情况的输入,包括:转系、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,963
精华内容 1,585
关键字:

数据库个人信息管理系统