精华内容
下载资源
问答
  • java学生管理系统

    万次阅读 多人点赞 2019-04-06 17:11:00
    2019.4.6 16:49,已经在电脑前坐了将近五个小时的我将个人第一个java优化系统调试完成,五个小时,只是将已经写好的系统进行优化,起初开始优化的时候觉得这简直是个无底洞,要考虑的东西太多太细(忽然想起一位...

    以下记录来自一个菜鸟,请大佬们见谅

    2019.4.6 16:49,已经在电脑前坐了将近五个小时的我将个人第一个java优化系统调试完成,五个小时,只是将已经写好的系统进行优化,起初开始优化的时候觉得这简直是个无底洞,要考虑的东西太多太细(忽然想起一位java老师曾说过,“永远不要相信你的用户都是正常人”,言外之意就是要考虑到用户各种各样稀奇古怪的操作),而且不同类之间的分工很难协调,初步估算工程量比我原本写出系统的量还大,在这五个小时大脑周围一直有几个声音围着我转:“睡一会吧”、“去##的**系统”、“这##是人干的事吗”。但当最后一个javac stuSystem.java后没有报错,所有的一切都变成了一个声音:“值得!”

    以下附上(1)第一次实现功能的代码
    (2)优化后的代码

    (1)

    import java.util.Scanner;
    class  Student {
    	String num;
    	String name;
    	String gender;
    	byte age;
    	byte grade;
    	
    }
    
    class main{
    	public static void main(String[] args ){
    		System.out.println("欢迎使用学生信息管理系统");
    		Student stu[] =  new Student[10];
    		int dataIndex = 0;
    		Scanner scanner = new Scanner(System.in);
    		while(true){
    		
    		System.out.println("请选择操作");
    		System.out.println("0:退出系统");
    		System.out.println("1:输入学生信息");
    		System.out.println("2:查询学生信息");
    		System.out.println("3:修改学生信息");
    		System.out.println("4:删除学生信息");
    		//int opIndex = scan.nextInt();
    		int opIndex = scanner.nextInt();
    		
    		switch(opIndex){
    		case 0:
    			System.exit(0);///退出系统
    			
    		case 1:
    		Scanner scan = new Scanner(System.in);
    			Student stud = new Student();
    			System.out.println("请输入学生的学号");
    			stud.num = scan.next() ;///重点:scanner 的使用
    		
    			System.out.println("请输入学生的姓名");
    			stud.name = scan.next() ;///加括号
    		
    			System.out.println("请输入学生的性别");
    			stud.gender = scan.next() ;
    		
    			System.out.println("请输入学生的年龄");
    			stud.age = scan.nextByte() ;
    		
    			System.out.println("请输入学生的成绩");
    			stud.grade = scan.nextByte() ;
    				stu[dataIndex] = stud;
    				dataIndex++; 
    				break;
    				
    		case 2:
    				
    				System.out.println("请输入要查询学生的姓名");
    				Scanner sc = new Scanner(System.in);
    				String nam = sc.next();
    				int numb = -1;
    				for(int i = 0; i <dataIndex ; i++){
    				if(stu[i].name .equals(nam)){
    					numb = i;
    				}
    				
    				}
    				if(numb >=0){
    				System.out.println("该学生的学号为:" + stu[numb].num);
    				System.out.println("该学生的性别为:" + stu[numb].gender);	
    				System.out.println("该学生的年龄为:" + stu[numb].age);
    				System.out.println("该学生的成绩为:" + stu[numb].grade);
    				}
    				
    				else{
    					System.out.println("不存在该学生!!");
    				}
    				break;
    		case 3:
    				System.out.println("请输入要修改信息学生的姓名");
    				Scanner sc1 = new Scanner(System.in);//sc不能重复定义
    				String nam1 = sc1.next();///nam不能重复定义
    				int numb1 = -1;
    				for(int i = 0; i <dataIndex ; i++){
    				if(stu[i].name .equals(nam1)){
    					numb1 = i;
    				}		
    		}
    				if(numb1 >= 0){
    				System.out.println("请输入学生的学号");
    				stu[numb1].num = sc1.next() ;
    		
    				System.out.println("请输入学生的姓名");
    				stu[numb1].name = sc1.next() ;
    		
    				System.out.println("请输入学生的性别");
    				stu[numb1].gender = sc1.next() ;
    		
    				System.out.println("请输入学生的年龄");
    				stu[numb1].age = sc1.nextByte() ;
    		
    				System.out.println("请输入学生的成绩");
    				stu[numb1].grade = sc1.nextByte() ;
    				}
    				else{
    					System.out.println("不存在该学生!!");
    				}
    				break;
    				
    		case 4:
    				System.out.println("请输入要删除信息学生的姓名");
    				Scanner sc2 = new Scanner(System.in);
    				String nam2 = sc2.next();
    				int numb2 = -1;
    				for(int i = 0; i <dataIndex ; i++){
    				if(stu[i].name .equals(nam2)){
    					numb2 = i;
    				}	
    				if(numb2 >= 0){
    					for(i= numb2;i<dataIndex;i++){
    						stu[i] = stu[i+1];
    					}
    					dataIndex --;
    				}
    				else{
    					System.out.println("不存在该学生!!");
    				}
    			
    		}
    		
    	}
    	///数组的增长
    	if(dataIndex == stu.length){
    		Student newstu[] = new Student[stu.length + stu.length>>1];
    		for(int i = 0;i < stu.length ;i++){
    			newstu[i] = stu[i];	
    		}
    		stu = newstu;
    		
    	}
    	
    	
    	
    	
    }
    	}
    }
    
    
    
    ///成员变量和局部变量
    
    /*****************************************
    设计思路
    1、输入:
    (1)无限循环输入
    (2)根据用户操作停止输入
    (3)输入时先输入到一个对象中然后赋值给数组
    (4)注意要用一个index来记录该输入第几个数组了
    (5)用函数来进行输入等操作
    输入时在主函数里定义一个成员变量
    2、查询:
    (1)遍历数组再遍历对象
    
    3、修改学生信息
    (1)
    
    4、删除学生信息
    (1)进行覆盖
    
    问题:
    (1)其他类里的局部变量怎么引入到main里?
    是不是可以直接在其他class里给main里的变量赋值?否
    
    
    
    
    
    *****************************************/
    
    
    

    (2)

    import java.util.Scanner;
    
    class Student{
    	Student(){
    		
    	}
    	Student (String stuNo, String stuName, String gender, byte age, int score){
    		this.stuNo   = stuNo;
    		
    		this.stuName = stuName;
    		
    		this.gender  = gender;
    		
    		this.age     =  age;
    		
    		this.score   =  score;
    		
    	}
    	
    	String stuNo;
    	
    	String stuName;
    	
    	String gender;
    	
    	byte   age;
    	
    	int    score;
    }
    
    class StuData{
    	
    	Student stuArray[] = new Student[10];
    	int dataindex = 0;
    	
    	void insertStu(Student stu){
    		if(dataindex == stuArray.length){
    			Student newArray[] = new Student[stuArray.length + (stuArray.length >> 1)];
    			for(int i = 0; i<dataindex; i++){
    				newArray[i] = stuArray[i];
    			}
    			stuArray = newArray;///赋值时不用加[]
    		}
    		stuArray[dataindex] = stu;
    		dataindex++;
    		
    	}
    	
    	Student checkStuNo(String stuNo){
    		for(int i = 0; i < dataindex; i++){
    			if(stuArray[i].stuNo.equals(stuNo)) ///.equals
    			{
    				return stuArray[i]; 
    			}
    		}
    		return null;
    	}
    	
    	void delateStu(String stuNo){///错误:找不到符号 有可能是大小写的问题,只要双击不论大小写只要拼写相同就变绿
    		boolean flag = false;
    		for(int i = 0; i < dataindex; i++){
    			if (stuArray[i].stuNo.equals(stuNo)){
    				stuArray[i] = stuArray[i + 1];
    				flag = true;
    			}
    		}
    		if(flag){
    				dataindex--;
    			}
    		
    	}
    	
    	void updateStu(Student stu){
    		for(int i = 0; i < dataindex; i++){
    			if(stuArray[i].stuNo.equals(stu.stuNo)){
    				stuArray[i] = stu;
    			}
    		}
    	}
    	
    	void printStu(Student stu){
    		System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    		System.out.print("学生编号 " + stu.stuNo + "  ");
    		System.out.print("学生姓名 " + stu.stuName + "  ");
    		System.out.print("学生性别 " + stu.gender + "  ");
    		System.out.print("学生年龄 " + stu.age + "  ");
    		System.out.println("学生成绩 " + stu.score + "  ");
    		System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    	}
    	
    	void printAllstuInf(){
    		for(int i  = 0; i < dataindex; i++){
    			printStu(stuArray[i]);
    		}
    		
    	}
    }
    
    
    class StuSys{
    	StuData stud = new StuData();
    	
    	void insertStu(Scanner scanner){
    		System.out.println("请输入学生的学号 姓名 性别 年龄 成绩(输入出用空格分开):");
    		String stuNo    = scanner.next();
    		String stuName  = scanner.next();
    		String gender   = scanner.next();
    		byte   age		= scanner.nextByte();
    		int    score	= scanner.nextInt();
    		int    i 		= 0;
    		
    		if(stud.checkStuNo(stuNo) == null){
    			Student stu = new Student(stuNo, stuName, gender, age, score);
    			stud.insertStu(stu);
    			System.out.println("学生信息添加成功!!!");
    		}
    		else{
    			System.out.println("您输入的学生编号已存在,请选择下一步操作");
    			System.out.println("1、继续添加  2、退出系统");
    			i = scanner.nextInt();
    			if(i == 1){
    				insertStu(scanner); ///递归
    			}
    			else if(i == 2){
    				System.exit(0);
    			}
    			
    			else{
    				System.out.println("您输入的数据不合规!!!");
    			}
    		}
    	}
    	
    	void delateStu(Scanner scan){
    		int i = 0;///可以重复使用i吗
    		System.out.println("请输入要删除学生的编号:");
    		String stuNo = scan.next();
    		if(stud.checkStuNo(stuNo) != null){
    			stud.delateStu(stuNo);
    			System.out.println("学成信息删除成功!!!");
    		}
    		else {
    			System.out.println("您输入的学号不存在,请选择下一步操作");
    			System.out.println("1、继续删除 2、退出系统");
    			if(i == 1){
    				delateStu(scan); 
    			}
    			else if(i == 2) {
    				System.exit(0);
    			}
    			else{
    				System.out.println("您输入的数据不合规!!!");
    			}
    		}
    	}
    	
    	void updateStu(Scanner scanner){
    		int i = 0;
    		System.out.println("请输入要修改的学生的编号:");
    		String stuNo = scanner.next();
    		Student stu = new Student();
    		///非要等与null吗??调试后的总结:1不能直接= new student 因为构造方法里没有student() (无参数的构造方法)
    		///解决方法:加一个无参的构造方法
    		if(stud.checkStuNo(stuNo) != null){
    			System.out.println("请输入学生的姓名 性别 年龄 成绩 (输入时用空格分开)");
    			stu.stuNo     = stuNo;
    			stu.stuName  = scanner.next();
    			stu.gender	 = scanner.next();
    			stu.age		 = scanner.nextByte();
    			stu.score	 = scanner.nextInt();
    			stud.updateStu(stu);
    			System.out.println("学生信息修改成功!!!");
    		}
    		else{
    			System.out.println("您输入的学生编号不存在,请选择下一步操作");
    			System.out.println("1、继续修改  2、退出系统");
    			i = scanner.nextInt();
    			if(i == 1){
    				insertStu(scanner); 
    			}
    			else if(i == 2){
    				System.exit(0);
    			}
    			
    			else{
    				
    				System.out.println("您输入的数据不合规!!!");
    			}
    			
    		}
    	}
    	
    	void showStuInfo(Scanner scanner){
    		int i = 0;
    		Student stu = new Student();
    		System.out.println("请输入查看学生的编号");
    		String stuNo = scanner.next();
    		if((stu = stud.checkStuNo(stuNo)) != null){
    			stud.printStu(stu);
    		}
    		else{
    			System.out.println("您输入的学号不存在,请选择下一步操作");
    			System.out.println("1、继续查看 2、退出系统");
    			i = scanner.nextInt();
    			if(i == 1){
    				showStuInfo(scanner); 
    			}
    			
    			else if(i == 2){
    				System.exit(0);
    			}
    			
    			else{
    				System.out.println("您输入的数据不合规!!!");
    			}
    		}
    	}
    	void showAllStuInfo(){
    		stud.printAllstuInf();
    	}
    }
    
    class Main{
    	public static void main(String[] strs){
    		System.out.println("欢迎使用tyrantfor的学生管理系统");
    		
    		Scanner scan = new Scanner(System.in);
    		
    		Main main = new Main();
    		
    		StuSys s1 = new StuSys();
    		
    		while(true){
    			main.showMenu();
    			switch(scan.nextInt()){
    				case 0:
    				System.exit(0);
    				
    				case 1:
    				s1.insertStu(scan);
    				break;
    				
    				case 2:
    				s1.delateStu(scan);
    				break;
    				
    				case 3:
    				s1.updateStu(scan);
    				break;
    				
    				case 4:
    				s1.showStuInfo(scan);
    				break;
    				
    				case 5:
    				s1.showAllStuInfo();
    				break;
    				
    				default:
    				
    				System.out.println("输入数据不合规!!!");
    			}
    		}
    	}
    	
    	void showMenu(){
    		System.out.println("请选择操作:\n\n");
    		
    		System.out.println("1:增加学生信息");
    		System.out.println("2:删除学生信息");
    		System.out.println("3:修改学生信息");
    		System.out.println("4:根据学号查看学生信息");
    		System.out.println("5:查看所有学生信息");
    		System.out.println("0:退出系统");
    	}
    }
    
    
    
    
    
    
    
    
    
    
    
    
    展开全文
  • Java基础——学生管理系统

    千次阅读 多人点赞 2019-05-13 17:28:14
    学生管理系统的主界面的代码编写 C. 学生管理系统的查看所有学生的代码编写 D. 学生管理系统的添加学生的代码编写 E. 学生管理系统的删除学生的代码编写 F. 学生管理系统的修改学生的代码编写 代码: 学生类:...
    1. 用内存存储学生信息。(采用集合的方式)
      步骤:
      A. 定义学生类
      B. 学生管理系统的主界面的代码编写
      C. 学生管理系统的查看所有学生的代码编写
      D. 学生管理系统的添加学生的代码编写
      E. 学生管理系统的删除学生的代码编写
      F. 学生管理系统的修改学生的代码编写

    代码:
    学生类:Student.java

    public class Student {
        private String id;
        private String name;
        private String age;
        private String address;
    
        public Student(){}
    
        public Student(String id, String name, String age, String address) {
            this.id = id;
            this.name = name;
            this.age = age;
            this.address = address;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }
    
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class StudentManage {
        public static void main(String[] args) {
            ArrayList<Student> array = new ArrayList<Student>();
    
            while(true) {   //停止的另一种方式,设置标志位flag = true  while(flag)
                System.out.println("-------------------欢迎来到学生管理系统------------------------");
                System.out.println("------              1. 查看所有学生                      -----");
                System.out.println("------              2. 添加学生                          -----");
                System.out.println("------              3. 删除学生                          -----");
                System.out.println("------              4. 修改学生                          -----");
                System.out.println("------              5. 退出                              -----");
                System.out.println("--------------------------------------------------------------");
                System.out.print("请输入您的选择:");
                Scanner sc = new Scanner(System.in);
                String choice = sc.nextLine();
                switch (choice) {
                    case "1":
                        //查看所有学生
                        findAllStudent(array);
                        System.out.println();
                        break;
                    case "2":
                        //添加学生
                        addStudent(array);
                        System.out.println();
                        break;
                    case "3":
                        deleteStudent(array);
                        System.out.println();
                        break;
                    case "4":
                        updateStudent(array);
                        System.out.println();
                        break;
                    case "5":
    
                    default:
                        // System.out.println("------              5. 退出                              -----");
                        System.out.println("                     感谢您的使用                               ");
                        //flag = false;
                        System.exit(0);
                        break;
                }
            }
        }
    
        //查看所有学生
        public static void findAllStudent(ArrayList<Student> array){
            if(array.size() == 0){
                System.out.println("无学生信息,请重新选择");
                return;
            }
            System.out.println();
            System.out.println("学号\t\t\t\t姓名\t\t\t\t年龄\t\t\t\t居住地");
            System.out.println("-------------------------------------------------------------------------");
            for(int x = 0; x < array.size(); x++)
            {
                Student s = array.get(x);
                System.out.println(s.getId()+"\t\t\t\t" + s.getName() + "\t\t\t\t" + s.getAge() + "\t\t\t\t" + s.getAddress());
            }
            System.out.println("-------------------------------------------------------------------------");
        }
    
        //添加学生
        public static void addStudent(ArrayList<Student> array)
        {
            Scanner in = new Scanner(System.in);
            String id ="";
    
            while(true) {
                System.out.print("输入学号:");
                id = in.nextLine();
                int x;
                boolean flag = false;
                for(x = 0; x < array.size(); x++ )
                {
                    Student s = array.get(x);
                    if(id.equals(s.getId())) {
                        flag = true;
                        break;
                    }
                }
                if(flag){
                    System.out.println("学号被占用,请重新输入");
                }
                else{
                    break;
                }
    
            }
            System.out.print("输入姓名:");
            String name = in.nextLine();
            System.out.print("输入年龄:");
            String age = in.nextLine();
            System.out.print("输入地址:");
            String address = in.nextLine();
    
            //创建学生对象
            Student s = new Student(id,name,age,address);
            /*
            Student s = new Student();
            s.setId(id);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
            */
            array.add(s);
            System.out.println("添加学生成功");
        }
    
        //删除学生
        public static void deleteStudent(ArrayList<Student> array){
            //思路:根据学号删除。先遍历学生列表查看学生是否存在
            Scanner in = new Scanner(System.in);
            System.out.print("输入要删除学生的学号:");
            String id = in.nextLine();
    
            int index = -1;
            for(int x = 0; x < array.size(); x++){
                Student s = array.get(x);
                if(id.equals(s.getId())){
                    index = x;
                    break;
                }
            }
            if(index == -1){
                System.out.print("该学生信息不存在,是否继续当前删除操作(Yes or No):");
                String choice = in.nextLine();
                if(choice.equalsIgnoreCase("Yes")){
                    deleteStudent(array);
                }else if(choice.equalsIgnoreCase("No"))
                {
                    return;
                }
                else{
                    System.out.println("输入信息有误,返回主界面");
                    return;
                }
            }else
            {
                array.remove(index);
                System.out.println("删除学生成功");
            }
    
        }
    
        //修改学生信息
        public static void updateStudent(ArrayList<Student> array){
            //输入学号查找学生是否存在
            Scanner in = new Scanner(System.in);
            System.out.print("输入要更新学生的学号:");
            String id = in.nextLine();
    
            int index = -1;
            for(int x = 0; x < array.size(); x++){
                Student s = array.get(x);
                if(id.equals(s.getId())){
                    index = x;
                    break;
                }
            }
            if(index == -1){
                System.out.print("该学生信息不存在,是否继续当前更新操作(Yes or No):");
                String choice = in.nextLine();
                if(choice.equalsIgnoreCase("Yes")){
                    updateStudent(array);
                }else if(choice.equalsIgnoreCase("No"))
                {
                    return;
                }
                else{
                    System.out.println("输入信息有误,返回主界面");
                    return;
                }
            }else
            {
                Student s = array.get(index);
                boolean flag = true;
                System.out.println("-----选择更新学生信息选项------");
                System.out.println("--      1. 姓名         --");
                System.out.println("--      2. 年龄         --");
                System.out.println("--      3. 地址         --");
                System.out.println("--      4. 返回主界面    --");
                System.out.println("--------------------------");
                while(flag) {
                    System.out.print("请输入您的选择:");
                    Scanner sc = new Scanner(System.in);
                    String choice = sc.nextLine();
                    switch (choice) {
                        case "1":
                            System.out.print("输入修改姓名:");
                            String name = in.nextLine();
                            s.setName(name);
                            System.out.print("继续更新操作(Yes or No):");
                            String a = in.nextLine();
                            if(a.equalsIgnoreCase("Yes"))
                                break;
                            else if(a.equalsIgnoreCase("No")){
                                array.set(index,s);
                                System.out.println("更新操作完成,返回主界面");
                                return;
                            }
                            else{
                                System.out.println("输入信息有误,返回主界面");
                                return;
                            }
                        case "2":
                            System.out.print("输入修改年龄:");
                            String age = in.nextLine();
                            s.setAge(age);
                            System.out.print("继续更新操作(Yes or No):");
                            String b = in.nextLine();
                            if(b.equalsIgnoreCase("Yes"))
                                break;
                            else if(b.equalsIgnoreCase("No")){
                                array.set(index,s);
                                System.out.println("更新操作完成,返回主界面");
                                return;
                            }
                            else{
                                System.out.println("输入信息有误,返回主界面");
                                return;
                            }
    
                        case "3":
                            System.out.print("输入修改地址:");
                            String address = in.nextLine();
                            s.setAddress(address);
                            System.out.print("继续更新操作(Yes or No):");
                            String c = in.nextLine();
                            if(c.equalsIgnoreCase("Yes"))
                                break;
                            else if(c.equalsIgnoreCase("No")){
                                array.set(index,s);
                                System.out.println("更新操作完成,返回主界面");
                                return;
                            }
                            else{
                                System.out.println("输入信息有误,返回主界面");
                                return;
                        }
                        case "4":
                            array.set(index,s);
                            System.out.println("修改信息完成。");
                            return;
                        default:
                            System.out.println("输入信息有误。返回主界面");
                            return;
                    }
                }
            }
        }
    }
    
    

    无信息,查看信息时:
    在这里插入图片描述

    添加学生:
    在这里插入图片描述
    在这里插入图片描述
    在查看信息:
    在这里插入图片描述
    删除学生:
    在这里插入图片描述
    修改学生:
    在这里插入图片描述
    在这里插入图片描述

    退出:
    在这里插入图片描述

    1. 文本存储学生信息

    学生类:

    public class Student {
        private String id;
        private String name;
        private String age;
        private String address;
    
        public Student(){}
    
        public Student(String id, String name, String age, String address) {
            this.id = id;
            this.name = name;
            this.age = age;
            this.address = address;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }
    

    思路:
    在这里插入图片描述

    (1)输出流:将集合中的内容输出到文本文件中
    集合写入文本文件:
    需求:键盘录入学生信息(学号,姓名,年龄,居住地)存入集合。然后遍历集合把每一个学生信息存入文本文件(每一个学生信息为一行数据,自己定义分割标记)

    分析:
    A. 定义学生类
    B. 创建集合对象
    C. 写方法实现键盘录入学生信息,并把学生对象作为元素添加集合
    D. 创建输出缓冲流对象
    E. 遍历集合,得到每一个学生信息,并把学生信息按照一定的格式写入文本文件。(123456,wang,22,wuhan)
    F. 释放资源

    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    
    public class WriteDemo {
        public static void main(String[] args) throws IOException {
            ArrayList<Student> array = new ArrayList<Student>();
            Student s1 = new Student("123456","wang","22","wuhan");
            Student s2 = new Student("123457","zhang","28","beijing");
            Student s3 = new Student("123458","lisi","20","wixi");
            array.add(s1);
            array.add(s2);
            array.add(s3);
    
            BufferedWriter bw = new BufferedWriter(new FileWriter("array.txt"));
    
            for(int x = 0; x < array.size(); x++)
            {
                Student s = array.get(x);
                StringBuilder sb = new StringBuilder();
                sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress());
                bw.write(sb.toString());
                bw.newLine();
                bw.flush();
            }
            bw.close();
        }
    }
    

    (2)输入流:从文本文件中读取信息到集合中

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    
    public class ReaderDemo {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new FileReader("array.txt"));
    
            ArrayList<Student> array = new ArrayList<Student>();
    
            String line;
            while((line = br.readLine())!= null){
                String[] strArray = line.split(",");
    
                Student s = new Student(strArray[0],strArray[1],strArray[2],strArray[3]);
                array.add(s);
            }
            br.close();
    
    
            System.out.println("学号\t\t姓名\t年龄\t居住地");
            for(int x = 0; x < array.size(); x++)
            {
                Student s = array.get(x);
                System.out.println(s.getId() + "\t\t" + s.getName() + "\t" + s.getAge() + "\t\t" + s.getAddress());
            }
        }
    }
    
    

    IO版本代码如下所示:
    代码:
    注意:一定要先在本项目下创建文件Student.txt,要不然会报错找不到文件

    import java.io.*;
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class StudentManage {
        public static void main(String[] args) throws IOException {
            String fileName = "Student.txt";
    
            while(true) {
                System.out.println("-------------------欢迎来到学生管理系统------------------------");
                System.out.println("------              1. 查看所有学生                      -----");
                System.out.println("------              2. 添加学生                          -----");
                System.out.println("------              3. 删除学生                          -----");
                System.out.println("------              4. 修改学生                          -----");
                System.out.println("------              5. 退出                              -----");
                System.out.println("--------------------------------------------------------------");
                System.out.print("请输入您的选择:");
                Scanner sc = new Scanner(System.in);
                String choice = sc.nextLine();
                switch (choice) {
                    case "1":
                        //查看所有学生
                        findAllStudent(fileName);
                        System.out.println();
                        break;
                    case "2":
                        //添加学生
                        addStudent(fileName);
                        System.out.println();
                        break;
                    case "3":
                        deleteStudent(fileName);
                        System.out.println();
                        break;
                    case "4":
                        updateStudent(fileName);
                        System.out.println();
                        break;
                    case "5":
    
                    default:
                        // System.out.println("------              5. 退出                              -----");
                        System.out.println("                     感谢您的使用                               ");
                        //flag = false;
                        System.exit(0);
                        break;
                }
            }
        }
    
        //IO输入流:读文件
        public static void readData(String fileName, ArrayList<Student> array) throws IOException {
            //创建输入缓冲流对象
            BufferedReader br = new BufferedReader(new FileReader(fileName));
    
            String line;
            while((line = br.readLine()) != null){
                String[] datas = line.split(",");
                Student s = new Student(datas[0],datas[1],datas[2],datas[3]);
                array.add(s);
            }
            br.close();
        }
    
        //IO输出流:写文件
        public static void writeData(String fileName, ArrayList<Student> array) throws IOException {
            //创建输入缓冲流对象
            BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
    
            for(int x = 0; x < array.size(); x++)
            {
                Student s = array.get(x);
                StringBuilder sb = new StringBuilder();
                sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress());
    
                bw.write(sb.toString());
                bw.newLine();
                bw.flush();
            }
    
            bw.close();
        }
    
    
    
        //查看所有学生
        public static void findAllStudent(String fileName) throws IOException {
            ArrayList<Student> array = new ArrayList<Student>();
            readData(fileName,array);
    
            if(array.size() == 0){
                System.out.println("无学生信息,请重新选择");
                return;
            }
            System.out.println();
            System.out.println("学号\t\t\t\t姓名\t\t\t\t年龄\t\t\t\t居住地");
            System.out.println("-------------------------------------------------------------------------");
            for(int x = 0; x < array.size(); x++)
            {
                Student s = array.get(x);
                System.out.println(s.getId()+"\t\t\t\t" + s.getName() + "\t\t\t\t" + s.getAge() + "\t\t\t\t" + s.getAddress());
            }
            System.out.println("-------------------------------------------------------------------------");
        }
    
        //添加学生
        public static void addStudent(String fileName) throws IOException {
            ArrayList<Student> array = new ArrayList<Student>();
            readData(fileName,array);
    
            Scanner in = new Scanner(System.in);
            String id ="";
    
            while(true) {
                System.out.print("输入学号:");
                id = in.nextLine();
                int x;
                boolean flag = false;
                for(x = 0; x < array.size(); x++ )
                {
                    Student s = array.get(x);
                    if(id.equals(s.getId())) {
                        flag = true;
                        break;
                    }
                }
                if(flag){
                    System.out.println("学号被占用,请重新输入");
                }
                else{
                    break;
                }
    
            }
            System.out.print("输入姓名:");
            String name = in.nextLine();
            System.out.print("输入年龄:");
            String age = in.nextLine();
            System.out.print("输入地址:");
            String address = in.nextLine();
    
            //创建学生对象
            Student s = new Student(id,name,age,address);
            /*
            Student s = new Student();
            s.setId(id);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
            */
            array.add(s);
            writeData(fileName, array);
            System.out.println("添加学生成功");
        }
    
        //删除学生
        public static void deleteStudent(String fileName) throws IOException {
            ArrayList<Student> array = new ArrayList<>();
    
            readData(fileName,array);
            //思路:根据学号删除。先遍历学生列表查看学生是否存在
            Scanner in = new Scanner(System.in);
            System.out.print("输入要删除学生的学号:");
            String id = in.nextLine();
    
            int index = -1;
            for(int x = 0; x < array.size(); x++){
                Student s = array.get(x);
                if(id.equals(s.getId())){
                    index = x;
                    break;
                }
            }
            if(index == -1){
                System.out.print("该学生信息不存在,是否继续当前删除操作(Yes or No):");
                String choice = in.nextLine();
                if(choice.equalsIgnoreCase("Yes")){
                    deleteStudent(fileName);
                }else if(choice.equalsIgnoreCase("No"))
                {
                    return;
                }
                else{
                    System.out.println("输入信息有误,返回主界面");
                    return;
                }
            }else
            {
                array.remove(index);
                writeData(fileName,array);
                System.out.println("删除学生成功");
            }
    
        }
    
        //修改学生信息
        public static void updateStudent(String fileName) throws IOException {
            ArrayList<Student> array = new ArrayList<Student>();
            readData(fileName,array);
    
            //输入学号查找学生是否存在
            Scanner in = new Scanner(System.in);
            System.out.print("输入要更新学生的学号:");
            String id = in.nextLine();
    
            int index = -1;
            for(int x = 0; x < array.size(); x++){
                Student s = array.get(x);
                if(id.equals(s.getId())){
                    index = x;
                    break;
                }
            }
            if(index == -1){
                System.out.print("该学生信息不存在,是否继续当前更新操作(Yes or No):");
                String choice = in.nextLine();
                if(choice.equalsIgnoreCase("Yes")){
                    updateStudent(fileName);
                }else if(choice.equalsIgnoreCase("No"))
                {
                    return;
                }
                else{
                    System.out.println("输入信息有误,返回主界面");
                    return;
                }
            }else
            {
                Student s = array.get(index);
                boolean flag = true;
                System.out.println("-----选择更新学生信息选项------");
                System.out.println("--      1. 姓名         --");
                System.out.println("--      2. 年龄         --");
                System.out.println("--      3. 地址         --");
                System.out.println("--      4. 返回主界面    --");
                System.out.println("--------------------------");
                while(flag) {
                    System.out.print("请输入您的选择:");
                    Scanner sc = new Scanner(System.in);
                    String choice = sc.nextLine();
                    switch (choice) {
                        case "1":
                            System.out.print("输入修改姓名:");
                            String name = in.nextLine();
                            s.setName(name);
                            System.out.print("继续更新操作(Yes or No):");
                            String a = in.nextLine();
                            if(a.equalsIgnoreCase("Yes"))
                                break;
                            else if(a.equalsIgnoreCase("No")){
                                array.set(index,s);
                                writeData(fileName,array);
                                System.out.println("更新操作完成,返回主界面");
                                return;
                            }
                            else{
                                System.out.println("输入信息有误,返回主界面");
                                return;
                            }
                        case "2":
                            System.out.print("输入修改年龄:");
                            String age = in.nextLine();
                            s.setAge(age);
                            System.out.print("继续更新操作(Yes or No):");
                            String b = in.nextLine();
                            if(b.equalsIgnoreCase("Yes"))
                                break;
                            else if(b.equalsIgnoreCase("No")){
                                array.set(index,s);
                                writeData(fileName,array);
                                System.out.println("更新操作完成,返回主界面");
                                return;
                            }
                            else{
                                System.out.println("输入信息有误,返回主界面");
                                return;
                            }
    
                        case "3":
                            System.out.print("输入修改地址:");
                            String address = in.nextLine();
                            s.setAddress(address);
                            System.out.print("继续更新操作(Yes or No):");
                            String c = in.nextLine();
                            if(c.equalsIgnoreCase("Yes"))
                                break;
                            else if(c.equalsIgnoreCase("No")){
                                array.set(index,s);
                                writeData(fileName,array);
                                System.out.println("更新操作完成,返回主界面");
                                return;
                            }
                            else{
                                System.out.println("输入信息有误,返回主界面");
                                return;
                            }
                        case "4":
                            array.set(index,s);
                            writeData(fileName,array);
                            System.out.println("修改信息完成。");
                            return;
                        default:
                            System.out.println("输入信息有误。返回主界面");
                            return;
                    }
                }
            }
        }
    }
    
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • Java——学生管理系统

    千次阅读 多人点赞 2018-08-24 20:11:11
    学生管理系统 基于前面学的ArrayList集合做的一个简单的学生管理系统,后期会对这个系统逐步优化,欢迎大家提建议 package StudentManager; import java.util.ArrayList; import java.util.Scanner; /* * 学生...

    学生管理系统

    基于前面学的ArrayList集合做的一个简单的学生管理系统,后期会对这个系统逐步优化,欢迎大家提建议

    package StudentManager;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    /*
     * 学生管理系统的测试类
     * 
     * 步骤:
     *      1.定义学生类
     *      2.学生管理系统的主界面
     *      3.学生管理系统的查看学生信息方法
     *      4.学生管理系统的添加学生信息方法
     *      5.学生管理系统的删除学生信息方法
     *      6.学生管理系统的修改学生信息方法
     */
    public class StudentManagerTest {
        public static void main(String[] args) {
            //创建集合对象
            ArrayList<Student> array = new ArrayList<Student>();
    
            while(true){
                //学生管理系统的主界面
                System.out.println("------欢迎进入学生管理系统------");
                System.out.println("1.查看所有学生信息");
                System.out.println("2.添加学生信息");
                System.out.println("3.删除学生信息");
                System.out.println("4.修改学生信息");
                System.out.println("5.退出");
    
                //从键盘输入学生信息
                Scanner sc = new Scanner(System.in);
    
                //选择操作
                System.out.println("请输入您的选择:");
                int choice = sc.nextInt();
    
                switch(choice){
                case 1:
                    //查看所有学生信息
                    findAllStudent(array);
                    break;
                case 2:
                    //添加学生信息
                    addStudent(array);
                    break;
                case 3:
                    //删除学生信息
                    removeStudent(array);
                    break;
                case 4:
                    //修改学生信息
                    updateStudent(array);
                    break;
                case 5:
                    //退出
                    System.out.println("谢谢使用");
                    System.exit(0);//系统退出
                default:
                    System.out.println("您输入的操作有误,请重新输入!");
                    break;
                } 
            }
        }
    
        //查看学生信息的方法
        public static void findAllStudent(ArrayList<Student> array){
            //创建学生类对象
            Student student = new Student();
    
            if(array.size()==0){
                System.out.println("非常抱歉,当前没有学生信息可供查看!");
            }else{
                System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"家庭住址");
                for(int i=0;i<array.size();i++){
                    student = array.get(i);
                    System.out.println(student.getId()+"\t"+student.getName()+"\t"+student.getAge()+"\t"+student.getAddress());
    
                }
            }
        }
    
        //添加学生信息的方法
        public static void addStudent(ArrayList<Student> array){
            //创建键盘输入对象
            Scanner sc = new Scanner(System.in);
    
            String id;
            while(true){
                System.out.println("请输入学生学号:");
                id = sc.nextLine();
    
                //判断学号是否重复
                boolean flag = false;
                for(int i=0;i<array.size();i++){
                    Student student = array.get(i);
                    if(student.getId().equals(id)){
                        flag = true;
                        break;
                        //System.out.println("您输入的学号已存在,请重新输入!");
                    }  
                }
                if(flag){
                    System.out.println("您输入的学号已存在,请重新输入!");
                }else{
                    break;
                }
            }
    
            System.out.println("请输入学生姓名:");
            String name = sc.nextLine();
    
            System.out.println("请输入学生年龄:");
            String age = sc.nextLine();
    
            System.out.println("请输入学生家庭住址:");
            String address = sc.nextLine();
    
            //创建学生类对象
            Student student = new Student();
            student.setId(id);
            student.setName(name);
            student.setAge(age);
            student.setAddress(address);
    
            //添加到集合中
            array.add(student);
    
            System.out.println("添加学生成功!");
        }
    
        //删除学生信息方法
        public static void removeStudent(ArrayList<Student> array){
            //创建键盘输入对象
            Scanner sc = new Scanner(System.in);
    
            System.out.println("请输入要删除的学生学号:");
            String id = sc.nextLine();
    
            int index = -1;
    
            for(int i=0;i<array.size();i++){
                Student student = array.get(i);
                if(student.getId().equals(id)){
                    index = i;
                    break;
                }
            }
            if(index==-1){
                System.out.println("非常抱歉,您要删除的学生不存在,请重新输入!");
            }else{
                array.remove(index);
                System.out.println("删除学生成功!");
            } 
        }
    
        //修改学生信息方法
        public static void updateStudent(ArrayList<Student> array){
            //创建键盘输入对象
            Scanner sc = new Scanner(System.in);
    
            System.out.println("请输入需要修改学生的学号:");
            String id = sc.nextLine();
    
            int index = -1;
            for(int i=0;i<array.size();i++){
                Student student = array.get(i);
                if(student.getId().equals(id)){
                    index = i;
                    break;
                }
            }
            if(index==-1){
                System.out.println("非常抱歉,您要修改的学生信息不存在,请重新输入!");
            }else{
                //创建学生类对象
                Student student = new Student();
    
                System.out.println("请输入新的学生姓名:");
                String name = sc.nextLine();
    
                System.out.println("请输入新的学生年龄:");
                String age = sc.nextLine();
    
                System.out.println("请输入新的学生家庭住址:");
                String address = sc.nextLine();
    
                student.setId(id);
                student.setName(name);
                student.setAge(age);
                student.setAddress(address);
    
                //修改后的学生信息添加到集合中
                array.set(index,student);
    
                System.out.println("恭喜修改成功!");
            }
        }
    }
    
    
    ----------
    
    package StudentManager;
    /*
     * 学生类
     */
    public class Student {
        //学号
        private String id;
        //姓名
        private String name;
        //年龄
        private String age;
        //家庭住址
        private String address;
    
        public Student() {
    
        }
    
        public Student(String id, String name, String age, String address) {
            this.id = id;
            this.name = name;
            this.age = age;
            this.address = address;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }
    
    
    展开全文
  • Java 图形界面开发--图文并茂建立学生管理系统

    万次阅读 多人点赞 2016-03-19 19:52:28
     这是本人在学习java图形界面开发阶段一步一步实现的超级简易的学生管理系统。虽然说不入大神法眼,但这确实是费了自己不少心血。对于我这样的菜鸟来说,考虑不周到,一不小心就Exception,然后就是自己调呀调。在...

      (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客)

    图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作。

    关注微信公众号(文强的技术小屋),学习更多技术知识,一起遨游知识海洋~

           这是本人在学习java图形界面开发阶段一步一步实现的超级简易的学生管理系统。虽然说不入大神法眼,但这确实是费了自己不少心血。对于我这样的菜鸟来说,考虑不周到,一不小心就Exception,然后就是自己调呀调。在此分享出来希望对和我一样的菜鸟有帮助。

           该程序使用的数据库为SQL server,如果不太懂怎么使用java操作SQL server数据库的可以看看我的这篇博客,希望可以帮到大家。

    Java程序操作数据库SQLserver详解  

     

    Java程序完整代码下载地址见:

    http://download.csdn.net/detail/qq_25827845/9766699

     

    步骤一:静态登录界面的实现。

    代码如下:

     

    /**
     * 功能:学生成绩管理系统
     * 步骤1、登录界面的静态实现
     * author:ywq
     */
    import java.awt.*;
    import javax.swing.*;
    public class Login extends JFrame{
    	//定义组件
    	JPanel jp1,jp2,jp3;//面板
    	JLabel jlb1,jlb2;//标签
    	JButton jb1,jb2;//按钮
    	JTextField jtf;//文本
    	JPasswordField jpf;//密码
    	public static void main(String[] args) {
    		Login win=new Login();
    	}
    	
    	//构造函数
    	public Login(){
    		//创建面板
    		jp1=new JPanel();
    		jp2=new JPanel();
    		jp3=new JPanel();
    		//创建标签
    		jlb1=new JLabel("用户名");
    		jlb2=new JLabel("密    码");
    		//创建按钮
    		jb1=new JButton("登录");
    		jb2=new JButton("重置");
    		//创建文本框
    		jtf=new JTextField(10);
    		//创建密码框
    		jpf=new JPasswordField(10);
    		
    		//设置布局管理
    		this.setLayout(new GridLayout(3, 1));//网格式布局
    		
    		//加入各个组件
    		jp1.add(jlb1);
    		jp1.add(jtf);
    		
    		jp2.add(jlb2);
    		jp2.add(jpf);
    		
    		jp3.add(jb1);
    		jp3.add(jb2);
    		
    		//加入到JFrame
    		this.add(jp1);
    		this.add(jp2);
    		this.add(jp3);
    		
    		//设置窗体
    		this.setTitle("用户登录");//窗体标签
    		this.setSize(300, 150);//窗体大小
    		this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出关闭JFrame
    		this.setVisible(true);//显示窗体
    		
    		//锁定窗体
    		this.setResizable(false);
    	}
    }
    


    运行界面如图所示:

     

    本静态界面的实现,使用了网格布局,3行1列,在每一行中放入了一个JPanel面板,每个面板上又分别放入所需的组件,整体构成了一个静态的登录界面。

     

    步骤二:添加监听,并且进行验证用户名和密码。

     

    代码如下:

    /*
     * 功能:学生成绩管理系统
     * 步骤1:登录界面的静态实现
     * 步骤2:添加对各个组件的监听。
     * 步骤3:对用户名和密码进行验证。
     * author:ywq
     */
    package com.package_1;
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class Login extends JFrame implements ActionListener {
    
    	//定义组件
    	JButton jb1,jb2=null;
    	JRadioButton jrb1,jrb2=null;
    	JPanel jp1,jp2,jp3,jp4=null;
    	JTextField jtf=null;
    	JLabel jlb1,jlb2,jlb3=null;
    	JPasswordField jpf=null;
    	ButtonGroup bg=null;
    		
    	//设定用户名和密码
    	final String stu_name="6";
    	final String stu_pwd="1";
    	final String tea_name="5";
    	final String tea_pwd="1";
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Login  ms=new Login();
    	}
    	public Login()
    	{
    		 //创建组件
    		jb1=new JButton("登录");
    		jb2=new JButton("重置");
    		//设置监听
    		jb1.addActionListener(this);
    		jb2.addActionListener(this);
    		
    		jrb1=new JRadioButton("教师");
    		jrb2=new JRadioButton("学生");
    		bg=new ButtonGroup();
    		bg.add(jrb1);
    		bg.add(jrb2);
    		jrb2.setSelected(true);
    		
    		jp1=new JPanel();
    		jp2=new JPanel();
    		jp3=new JPanel();
    		jp4=new JPanel();				
    		
    		jlb1=new JLabel("用户名:");
    		jlb2=new JLabel("密    码:");
    		jlb3=new JLabel("权    限:");
    		
    		jtf=new JTextField(10);
    		jpf=new JPasswordField(10);
    		//加入到JPanel中
    		jp1.add(jlb1);
    		jp1.add(jtf);
    		
    		jp2.add(jlb2);
    		jp2.add(jpf);
    		
    		jp3.add(jlb3);
    		jp3.add(jrb1);
    		jp3.add(jrb2);
    		
    		jp4.add(jb1);
    		jp4.add(jb2);
    		
    		//加入JFrame中
    		this.add(jp1);
    		this.add(jp2);
    		this.add(jp3);
    		this.add(jp4);
    		//设置布局管理器
    		this.setLayout(new GridLayout(4,1));
    		//给窗口设置标题
    		this.setTitle("学生成绩管理系统");
    		//设置窗体大小
    		this.setSize(300,200);
    		//设置窗体初始位置
    		this.setLocation(200, 150);
    		//设置当关闭窗口时,保证JVM也退出
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		//显示窗体
    		this.setVisible(true);
    		this.setResizable(true);
    		
    	}
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		
    		if(e.getActionCommand()=="登录")
    		{
    			//如果选中教师登录
    			if(jrb1.isSelected())
    			{
                      tealogin();
    			}else if(jrb2.isSelected()) //学生在登录系统
    			{
                      stulogin();
    			}
    			
    		}else if(e.getActionCommand()=="重置")
    		{
                      clear();
    		}			
    		
    	}
    	
    	 //学生登录判断方法
    	public void stulogin()
    	{
    		if(stu_name.equals(jtf.getText())&&stu_pwd.equals(jpf.getText()))
    		{
    //			System.out.println("登录成功");
    			JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
    			clear();
    		}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
    		{
    			JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    		}else if(jtf.getText().isEmpty())
    		{
    			JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
    		}else if(jpf.getText().isEmpty())
    		{
    			JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    		}else
    		{
    			JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
    		    //清空输入框
    			clear();
    		}
    	}
    	//教师登录判断方法
    	public void tealogin()
    	{
    		if(tea_name.equals(jtf.getText())&&tea_pwd.equals(jpf.getText()))
    		{
    //			System.out.println("登录成功");
    			 JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
    			 clear();
    		}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
    		{
    			JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    		}else if(jtf.getText().isEmpty())
    		{
    			JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
    		}else if(jpf.getText().isEmpty())
    		{
    			JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    		}else
    		{
    			JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
    		    //清空输入框
    			clear();
    		}
    	}
    	//清空文本框和密码框
    	public	void clear()
    	{
    		jtf.setText("");
    		jpf.setText("");
    	}
    		
    }

     

     

    运行界面如下所示:

    本程序加入了对各个组件的监听,首先implements  ActionListener接口,然后注册监听。在ActionPerformance方法中进行相应的处理事件。

    当点击登录按钮时,首先判断是哪个权限的用户在进行登录,分别调用taelogin()和stulogin()方法来进行验证。在验证方法中,对文本框和密码框的内容进行一个判断,分别弹出不同的提示信息。

     

     

    步骤三:

    (1)程序连接数据库来进行用户名和密码的验证!!!

    (2)验证成功后进行界面的切换!!!

    代码如下:

    /*
     * 功能:学生成绩管理系统
     * 步骤1、登录界面的静态实现
     * 步骤2:实现界面的切换
     * 步骤3:使用数据库来验证用户名和密码
     * author:ywq
     */
    package com.package_2;
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.*;
    
    public class login extends JFrame implements ActionListener {
    
    	//定义登录界面的组件
    	JButton jb1,jb2,jb3=null;
    	JRadioButton jrb1,jrb2=null;
    	JPanel jp1,jp2,jp3,jp4=null;
    	JTextField jtf=null;
    	JLabel jlb1,jlb2,jlb3=null;
    	JPasswordField jpf=null;
    	ButtonGroup bg=null;
    		
    	//设定用户名和密码
    	static String userword;
    	static String pwd;
    	
    	static Connection ct=null;
    	PreparedStatement ps=null;
    	ResultSet rs=null;
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		login  ms=new login();
    		
    		
    		try {
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    			ct=DriverManager.getConnection("jdbc:odbc:ywq");
    		} catch (Exception e) {
    			
    			e.printStackTrace();
    		}
    						
    	}
    	//构造函数
    	public login()
    	{
    		 //创建组件
    		jb1=new JButton("登录");
    		jb2=new JButton("重置");
    		jb3=new JButton("退出");
    		//设置监听
    		jb1.addActionListener(this);
    		jb2.addActionListener(this);
    		jb3.addActionListener(this);
    		//以上三个按钮的监听统一放在了actionPerformance()中
    		//监听也可以是下边这种方式
    //		jb3.addActionListener(new ActionListener()
    //		{
    //
    //			@Override
    //			public void actionPerformed(ActionEvent e) {
    //				// TODO Auto-generated method stub				
    //				System.exit(0);
    //			}
    //			
    //		});
    		
    		jrb1=new JRadioButton("教师");
    		jrb2=new JRadioButton("学生");
    		bg=new ButtonGroup();
    		bg.add(jrb1);
    		bg.add(jrb2);
    		jrb2.setSelected(true);
    		
    		jp1=new JPanel();
    		jp2=new JPanel();
    		jp3=new JPanel();
    		jp4=new JPanel();				
    		
    		jlb1=new JLabel("用户名:");
    		jlb2=new JLabel("密    码:");
    		jlb3=new JLabel("权    限:");
    		
    		jtf=new JTextField(10);
    		jpf=new JPasswordField(10);
    		//加入到JPanel中
    		jp1.add(jlb1);
    		jp1.add(jtf);
    		
    		jp2.add(jlb2);
    		jp2.add(jpf);
    		
    		jp3.add(jlb3);
    		jp3.add(jrb1);
    		jp3.add(jrb2);
    		
    		jp4.add(jb1);
    		jp4.add(jb2);
    		jp4.add(jb3);
    		
    		//加入JFrame中
    		this.add(jp1);
    		this.add(jp2);
    		this.add(jp3);
    		this.add(jp4);
    		//设置布局管理器
    		this.setLayout(new GridLayout(4,1));
    		//给窗口设置标题
    		this.setTitle("学生成绩管理系统");
    		//设置窗体大小
    		this.setSize(300,200);
    		//设置窗体初始位置
    		this.setLocation(200, 150);
    		//设置当关闭窗口时,保证JVM也退出
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		//显示窗体
    		this.setVisible(true);
    		this.setResizable(true);
    		
    	}
    	@Override
    	public void actionPerformed(ActionEvent e) {
    
    		if(e.getActionCommand()=="退出")
    		{
    			System.exit(0);
    		}else if(e.getActionCommand()=="登录")
    		{
    			//如果选中教师登录
    			if(jrb1.isSelected())
    			{
    				//创建火箭车
    				try {
    					ps=ct.prepareStatement("select * from info where 权限=? ");
    					//给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
    					ps.setString(1, "教师");					
    					//ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
    					rs=ps.executeQuery();
    					//循环取出
    					while(rs.next()){
    						//将教师的用户名和密码取出
    						 userword=rs.getString(2);
    						 pwd=rs.getString(3);
    						System.out.println("成功获取到密码和用户名from数据库");
    						System.out.println(userword+"\t"+pwd+"\t");	
    					}
    				} catch (SQLException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}
    				//从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
    				tealogin();
    			}else if(jrb2.isSelected()) //学生在登录系统
    			{
    				//创建火箭车
    				try {
    					ps=ct.prepareStatement("select * from info where 权限=? ");
    					//给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
    					ps.setString(1, "学生");
    					//ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
    					rs=ps.executeQuery();
    					//循环取出
    					while(rs.next()){
    						//将学生的用户名和密码取出
    						 userword=rs.getString(2);
    						 pwd=rs.getString(3);
    						System.out.println("成功获取到密码和用户名from数据库");
    						System.out.println(userword+"\t"+pwd+"\t");	
    					}
    				} catch (SQLException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}
    				//从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
    			    stulogin();
    			}
    			
    		}else if(e.getActionCommand()=="重置")
    		{
    			clear();
    		}			
    		
    	}
    		
    	
    //清空文本框和密码框
    	public	void clear()
    		{
    			jtf.setText("");
    			jpf.setText("");
    		}
    //学生登录判断方法
    	public void stulogin()
    		{
    			if(userword.equals(jtf.getText())&&pwd.equals(jpf.getText()))
    			{
    //				System.out.println("登录成功");
    				JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
    				clear();
    				//关闭当前界面
    				 dispose();
    				 //创建一个新界面
    				 UI ui=new UI();
    			}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
    			 {
    				JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    			 }else if(jtf.getText().isEmpty())
    			{
    				JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
    			}else if(jpf.getText().isEmpty())
    			{
    				JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    			}else
    			{
    				JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
    				 //清空输入框
    				clear();
    				}
    			}
    			
    	//教师登录判断方法
    	public void tealogin()
    		{
    			if(userword.equals(jtf.getText())&&pwd.equals(jpf.getText()))
    			{
    //				System.out.println("登录成功");
    				 JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
    				 clear();	
    				//关闭当前界面
    				 dispose();
    				 //创建一个新界面,适用于教师来管理学生
    				 UI ui=new UI();					 					
    			}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
    			{
    				JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    			}else if(jtf.getText().isEmpty())
    			{
    				JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
    			}else if(jpf.getText().isEmpty())
    			{
    				JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    			}else
    			{
    				JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
    			    //清空输入框
    				clear();
    			}
    		}
    
    
    		
    }

    首先建立相应的数据库,如图所示:

    (注意:下边就是该数据库中表的建表语句!!!!)

    在程序中,首先是在主函数中(1)加载数据库驱动 。(2)建立连接

    此处有问题,可参考博客 http://blog.csdn.net/qq_25827845/article/details/50836362

    在进行验证时,通过建立“火箭车”将所需的SQL语句发送到数据库,并且查询得到相应的数据。利用此数据和用户输入的用户名和密码进行验证。当验证成功时,即进行界面的跳转。

     

    页面跳转关键部分:

    (1)调用dispose()方法关闭当前界面

    (2)重新new一个新界面,比如本例中的new UI();其中,UI是另一个完整的界面。

    如此实现了界面的切换。

     

    UI界面的代码如下:

    package com.package_2;
    
    import java.awt.*;
    import java.awt.event.*;
    
    import javax.swing.*;
    
    public class UI extends JFrame implements ActionListener
    {
    
    	     //定义组件
    		JButton jb1,jb2=null;
    		JPanel jp1,jp2,jp3=null;
    		JLabel jlb1,jlb2,jlb3,jlb4=null;
    		
    		public static void main(String[] args) {
    			// TODO Auto-generated method stub
    //			UI  ui=new UI();
    		}
    		
    	    //构造函数
    		public  UI()    //不能申明为void!!!!!否则弹不出新界面
    		{
    			//创建组件
    			jb1=new JButton("课程管理");
    			jb2=new JButton("成绩查询");
    			
    			jp1=new JPanel();
    			jp2=new JPanel();
    			jp3=new JPanel();
    			
    			jlb1=new JLabel("姓名");
    			jlb2=new JLabel("学号");
    			jlb3=new JLabel("最新公告:");
    			jlb4=new JLabel("我校举行六十周年校庆的通知");
    			
    			jp1.add(jlb1);
    			jp1.add(jlb2);
    			
    			jp2.add(jb1);
    			jp2.add(jlb3);
    			
    			jp3.add(jb2);
    			jp3.add(jlb4);
    			
    			
    			this.add(jp1);
    			this.add(jp2);
    			this.add(jp3);
    			
    			//设置布局管理器
    			this.setLayout(new GridLayout(3,3,50,50));
    			this.setTitle("学生成绩管理系统");
    			this.setSize(400,300);
    			this.setLocation(200, 200);		
    			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			this.setVisible(true);
    
    }
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    			
    		}
    }
    


    以上程序的执行结果如图所示:

     

     

     

     

     

    步骤4:

    (1)程序连接数据库来进行用户名和密码的验证!!!

    (2)验证成功后进行界面的切换!!!【对步骤三的代码进行一定的优化】

    代码如下:Login.java

     

    /*
     * 功能:学生成绩管理系统
     * 步骤1、登录界面的静态实现
     * 步骤2:实现界面的切换
     * 步骤3:使用数据库来验证用户名和密码
     * 步骤4:对代码进行优化。增加专门用来与数据库进行连接的类
     * author:ywq
     */
    package com.package_5;
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.*;
    
    public class Login extends JFrame implements ActionListener {
    
    	//定义登录界面的组件
    	JButton jb1,jb2,jb3=null;
    	JRadioButton jrb1,jrb2=null;
    	JPanel jp1,jp2,jp3,jp4=null;
    	JTextField jtf=null;
    	JLabel jlb1,jlb2,jlb3=null;
    	JPasswordField jpf=null;
    	ButtonGroup bg=null;	
    	
    	//菜单项
    	JMenuBar jmb=null;	
    	JMenu jm=null;
    	JMenuItem jmi1,jmi2=null;
    	
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Login  ms=new Login();
    		
    						
    	}
    	//构造函数
    	public Login()
    	{
    		 //创建组件
    		jb1=new JButton("登录");
    		jb2=new JButton("重置");
    		jb3=new JButton("退出");
    		//设置监听
    		jb1.addActionListener(this);
    		jb2.addActionListener(this);
    		jb3.addActionListener(this);
    		
    		jmb=new JMenuBar(); //JMenuBar指菜单栏
    		jm=new JMenu("选项"); //JMenu是菜单栏中的选项栏
    		jmi1=new JMenuItem("开始"); //JMenuItem指选项栏中的选项
    		jmi2=new JMenuItem("退出系统");
    		jm.add(jmi1);
    		jm.add(jmi2);
    		jmb.add(jm);
    		
    		
    		jrb1=new JRadioButton("教师",true);
    		jrb2=new JRadioButton("学生");
    		bg=new ButtonGroup();
    		bg.add(jrb1);
    		bg.add(jrb2);
    //		jrb2.setSelected(true);
    		
    		jp1=new JPanel();
    		jp2=new JPanel();
    		jp3=new JPanel();
    		jp4=new JPanel();				
    		
    		jlb1=new JLabel("用户名:");
    		jlb2=new JLabel("密    码:");
    		jlb3=new JLabel("权    限:");
    		
    		jtf=new JTextField(10);
    		jpf=new JPasswordField(10);
    		//加入到JPanel中
    		jp1.add(jlb1);
    		jp1.add(jtf);
    		
    		jp2.add(jlb2);
    		jp2.add(jpf);
    		
    		jp3.add(jlb3);
    		jp3.add(jrb1);
    		jp3.add(jrb2);
    		
    		jp4.add(jb1);
    		jp4.add(jb2);
    		jp4.add(jb3);
    		
    		//加入JFrame中
    		this.setJMenuBar(jmb);
    		this.add(jp1);
    		this.add(jp2);
    		this.add(jp3);
    		this.add(jp4);
    		//设置布局管理器
    		this.setLayout(new GridLayout(4,1));
    		//给窗口设置标题
    		this.setTitle("学生成绩管理系统");
    		//设置窗体大小
    		this.setSize(300,250);
    		//设置窗体初始位置
    		this.setLocation(200, 150);
    		//设置当关闭窗口时,保证JVM也退出
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		//显示窗体
    		this.setVisible(true);
    		this.setResizable(true);
    		
    	}
    	@Override
    	public void actionPerformed(ActionEvent e) {
    
    		if(e.getActionCommand()=="退出")
    		{
    			System.exit(0);
    		}else if(e.getActionCommand()=="登录")
    		{
    			//当点击登录按钮时,首先与数据库建立连接
    			GetSQL.ConnectSQL();
    			//如果选中教师登录
    			if(jrb1.isSelected())
    			{
    				GetSQL.sqlquery("教师");
    				//从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
    				this.tealogin();
    			}else if(jrb2.isSelected()) //学生在登录系统
    			{
    				GetSQL.sqlquery("学生");
    				//从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
    			    this.stulogin();
    			}
    			
    		}else if(e.getActionCommand()=="重置")
    		{
    			this.clear();
    		}			
    		
    	}
    				
    		//清空文本框和密码框
    	public	void clear()
    		{
    			jtf.setText("");
    			jpf.setText("");
    		}
    		    //学生登录判断方法
    			public void stulogin()
    			{
    				if(GetSQL.userword.equals(jtf.getText())&&GetSQL.pwd.equals(jpf.getText()))
    				{
    //					System.out.println("登录成功");
    					JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
    					this.clear();
    					//关闭当前界面
    					 dispose();
    					 //创建一个新界面
    					 Stu_UI ui=new Stu_UI();
    				}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else if(jtf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else if(jpf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else
    				{
    					JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
    				    //清空输入框
    					this.clear();
    				}
    			}
    			
    			//教师登录判断方法
    			public void tealogin()
    			{
    				if(GetSQL.userword.equals(jtf.getText())&&GetSQL.pwd.equals(jpf.getText()))
    				{
    //					System.out.println("登录成功");
    					 JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
    					 this.clear();	
    					//关闭当前界面
    					 dispose();
    					 //创建一个新界面,适用于教师来管理学生
    					Teacher t=new Teacher();				 					
    				}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else if(jtf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else if(jpf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else
    				{
    					JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
    				    //清空输入框
    					this.clear();
    				}
    			}
    		
    }
    
    

     

    SQL.java 负责与数据库建立连接,包括俩方法。一个是连接数据库方法,一个是查询方法。可进一步扩展。

    package com.package_5;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    //写一个类,用来与数据库建立连接,并且查询数据
    class GetSQL
    {
    	//设定用户名和密码
    		static String userword;
    		static String pwd;
    		
    		static Connection ct=null;
    		static PreparedStatement ps=null;
    		static ResultSet rs=null;
    	
    	//用于连接数据库的方法,可用于子类的继承
    	public static void ConnectSQL()
    	{
    		try {
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    			ct=DriverManager.getConnection("jdbc:odbc:ywq");
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    	//用于向数据库进行查询的方法
    	public static void sqlquery(String s)
    	{
    		//创建火箭车
    		try {			
    			ps=ct.prepareStatement("select * from info where 权限=? ");
    			//给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
    			ps.setString(1, s);					
    			//ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
    			rs=ps.executeQuery();
    			//循环取出
    			while(rs.next()){
    				//将教师的用户名和密码取出
    				 userword=rs.getString(2);
    				 pwd=rs.getString(3);
    				System.out.println("成功获取到密码和用户名from数据库");
    				System.out.println(userword+"\t"+pwd+"\t");	
    			}
    		} catch (Exception e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    	}
    }

    Stu_UI.java  学生登录成功后跳转的界面

     

    package com.package_5;
    
    import java.awt.*;
    import java.awt.event.*;
    
    import javax.swing.*;
    
    public class Stu_UI extends JFrame implements ActionListener
    {
    
    	     //定义组件
    		JButton jb1,jb2=null;
    		JPanel jp1,jp2,jp3=null;
    		JLabel jlb1,jlb2,jlb3,jlb4=null;
    		
    //		public static void main(String[] args) {
    //			// TODO Auto-generated method stub
    //			Stu_UI  ui=new Stu_UI();
    //		}	
    	    //构造函数
    		public  Stu_UI()    //不能申明为void!!!!!否则弹不出新界面
    		{
    			//创建组件
    			jb1=new JButton("课程管理");
    			jb2=new JButton("成绩查询");
    			
    			jp1=new JPanel();
    			jp2=new JPanel();
    			jp3=new JPanel();
    			
    			jlb1=new JLabel("姓名");
    			jlb2=new JLabel("学号");
    			jlb3=new JLabel("最新公告:");
    			jlb4=new JLabel("我校举行六十周年校庆的通知");
    			
    			jp1.add(jlb1);
    			jp1.add(jlb2);
    			
    			jp2.add(jb1);
    			jp2.add(jlb3);
    			
    			jp3.add(jb2);
    			jp3.add(jlb4);
    			
    			
    			this.add(jp1);
    			this.add(jp2);
    			this.add(jp3);
    			
    			//设置布局管理器
    			this.setLayout(new GridLayout(3,3,50,50));
    			this.setTitle("学生成绩管理系统");
    			this.setSize(400,300);
    			this.setLocation(200, 200);		
    			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			this.setVisible(true);
    
    }
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    			
    		}
    }
    


    Teacher.java 教师登录成功后跳转的界面。

    package com.package_5;
    
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class Teacher extends JFrame implements ActionListener{
         
    	//定义组件
    	JLabel jl2=null;
    	JTextField jtf=null;
    	JButton jb=null;
    	JPanel jp1,jp2=null;
    	JTable jtable=null;
    	
    	String name=null;
    	String num=null;
    
    	static Connection ct=null;
    	PreparedStatement ps=null;
    	ResultSet rs=null;
    	
    //	public static void main(String[] args) {
    //		// TODO Auto-generated method stub
    //		Teacher t=new Teacher();
    //		
    //		try {
    //			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //			ct=DriverManager.getConnection("jdbc:odbc:ywq");
    //		} catch (Exception e) {
    //			
    //			e.printStackTrace();
    //		}
    //		
    //	}	
    	
    	
    	//构造函数
    	public Teacher()
    	{
    		//创建组件
    		jl2=new JLabel("请输入学号:");
    		jtf=new JTextField(10);
    		jb=new JButton("查询");
    		//设置监听
    		jb.addActionListener(this);
    		//设置表格
    		final Object[] columnNames = {"姓名","学号"};
    		Object[][] rowData = {
    				{"小明","2015110512"},
    				{"小","2015110"},
    				{"小红","2015110511"}
    		};
    		jtable=new JTable(rowData, columnNames);		
    		
    		jp1=new JPanel();
    		jp2=new JPanel();
    
    		jp1.add(jl2);
    		jp1.add(jtf);
    		jp1.add(jb);
    		jp2.add(jtable);
    		
    		this.add(jp1);
    		this.add(jp2);
    		
    		this.setLayout(new GridLayout(2,3));
    		this.setTitle("学生成绩管理系统—教师");
    		this.setSize(500,400);
    		this.setLocation(200, 200);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setVisible(true);
    		
    		
    	}
    
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		
    		if(e.getActionCommand()=="查询")
    		{
    			//JOptionPane.showMessageDialog(null,"查询成功!","提示消息",JOptionPane.WARNING_MESSAGE);
    			//创建火箭车
    			try {
    				ps=ct.prepareStatement("select * from info where xuehao=? ");
    				//给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
    				ps.setString(1, jtf.getText());					
    				//ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
    				rs=ps.executeQuery();
    				//循环取出
    				if(rs.next())
    				{
    					 name=rs.getString(5);
    					System.out.println("查询成功from数据库");
    					System.out.println(name+"\t");	
    					JOptionPane.showMessageDialog(null,"查询成功!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else
    				{
    					System.out.println("查询失败");
    					JOptionPane.showMessageDialog(null,"查询失败!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}
    //				while(rs.next()){
    //					//将教师的用户名和密码取出
    					 num=rs.getString(4);
    //					 name=rs.getString(5);
    //					System.out.println("查询成功from数据库");
    //					System.out.println(name+"\t");	
    //				}
    			} catch (SQLException e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
    		
    			
    		}
    		
    	}	
    }
    
    

     

    步骤5:

    优化数据库验证条件,使用不同的表来进行查询。

    教师界面增加查询功能。

     

    代码如下:Login6.java

    /*
     * 功能:学生成绩管理系统
     * 步骤1、登录界面的静态实现
     * 步骤2:实现界面的切换
     * 步骤3:使用数据库来验证用户名和密码
     * 步骤4:对代码进行优化。增加专门用来与数据库进行连接的类
     * 步骤5:优化代码,增加判断条件。
     * 步骤6:使用数据库进行查询时,优化查询方法和判断条件。数据库的表中可有多个数据。引入不同的表来查询。
     * 步骤7:教师界面实现了查询某个学生信息和某教师信息的功能。
     * author:ywq
     */
    package com.package_7;
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.*;
    
    public class Login6 extends JFrame implements ActionListener {
    
    	//定义登录界面的组件
    	JButton jb1,jb2,jb3=null;
    	JRadioButton jrb1,jrb2=null;
    	JPanel jp1,jp2,jp3,jp4=null;
        JTextField jtf=null;
    	JLabel jlb1,jlb2,jlb3=null;
    	JPasswordField jpf=null;
    	ButtonGroup bg=null;	
    	
    	//菜单项
    	JMenuBar jmb=null;	
    	JMenu jm=null;
    	JMenuItem jmi1,jmi2=null;
    	
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Login6  ms=new Login6();
    		
    						
    	}
    	//构造函数
    	public Login6()
    	{
    		 //创建组件
    		jb1=new JButton("登录");
    		jb2=new JButton("重置");
    		jb3=new JButton("退出");
    		//设置监听
    		jb1.addActionListener(this);
    		jb2.addActionListener(this);
    		jb3.addActionListener(this);
    		
    		jmb=new JMenuBar(); //JMenuBar指菜单栏
    		jm=new JMenu("选项"); //JMenu是菜单栏中的选项栏
    		jmi1=new JMenuItem("开始"); //JMenuItem指选项栏中的选项
    		jmi2=new JMenuItem("退出系统");
    		jm.add(jmi1);
    		jm.add(jmi2);
    		jmb.add(jm);
    		
    		
    		jrb1=new JRadioButton("教师",true);
    		jrb2=new JRadioButton("学生");
    		bg=new ButtonGroup();
    		bg.add(jrb1);
    		bg.add(jrb2);
    //		jrb2.setSelected(true);
    		
    		jp1=new JPanel();
    		jp2=new JPanel();
    		jp3=new JPanel();
    		jp4=new JPanel();				
    		
    		jlb1=new JLabel("用户名:");
    		jlb2=new JLabel("密    码:");
    		jlb3=new JLabel("权    限:");
    		
    		jtf=new JTextField(10);
    		jpf=new JPasswordField(10);
    		//加入到JPanel中
    		jp1.add(jlb1);
    		jp1.add(jtf);
    		
    		jp2.add(jlb2);
    		jp2.add(jpf);
    		
    		jp3.add(jlb3);
    		jp3.add(jrb1);
    		jp3.add(jrb2);
    		
    		jp4.add(jb1);
    		jp4.add(jb2);
    		jp4.add(jb3);
    		
    		//加入JFrame中
    		this.setJMenuBar(jmb);
    		this.add(jp1);
    		this.add(jp2);
    		this.add(jp3);
    		this.add(jp4);
    		//设置布局管理器
    		this.setLayout(new GridLayout(4,1));
    		//给窗口设置标题
    		this.setTitle("学生成绩管理系统");
    		//设置窗体大小
    		this.setSize(300,250);
    		//设置窗体初始位置
    		this.setLocation(200, 150);
    		//设置当关闭窗口时,保证JVM也退出
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		//显示窗体
    		this.setVisible(true);
    		this.setResizable(true);
    		
    	}
    	@Override
    	public void actionPerformed(ActionEvent e) {
    
    		if(e.getActionCommand()=="退出")
    		{
    			System.exit(0);
    		}else if(e.getActionCommand()=="登录")
    		{
    			if(!jtf.getText().isEmpty() && !jpf.getText().isEmpty())
    			{
    				//当点击登录按钮时,首先与数据库建立连接
    				GetSQL.ConnectSQL();
    				//如果选中教师登录
    				if(jrb1.isSelected())
    				{
    					GetSQL.querytea("教师",jtf.getText());
    					//首先判断是否存在该用户,即是否得到了密码
    					if(GetSQL.pwd ==null)
    					{
                             this.clear();
    					}else
    					{
    						//调用登录方法
    						this.tealogin();
    					}
    				}else if(jrb2.isSelected()) //学生在登录系统
    				{
    					GetSQL.querystu("学生",jtf.getText());
    					//首先判断是否存在该用户,即是否得到了密码
    					if(GetSQL.pwd ==null)
    					{
                             this.clear();
    					}else
    					{
    						//调用登录方法
    						this.stulogin();
    					}
    				   
    				}
    			}else if(jtf.getText().isEmpty())
    			{
    				JOptionPane.showMessageDialog(null,"请输入用户名","提示消息",JOptionPane.WARNING_MESSAGE);
    			    this.clear();
    			}else if(jpf.getText().isEmpty())	
    			{
    				JOptionPane.showMessageDialog(null,"请输入密码","提示消息",JOptionPane.WARNING_MESSAGE);
    			    this.clear();
    			}
    		}else if(e.getActionCommand()=="重置")
    		{
    			this.clear();
    		}			
    		
    	}
    				
    		//清空文本框和密码框
    	public	void clear()
    		{
    			jtf.setText("");
    			jpf.setText("");
    		}
    		    //学生登录判断方法
    			public void stulogin()
    			{
    				if(GetSQL.pwd.equals(jpf.getText()))
    				{
    //					System.out.println("登录成功");
    					JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
    					this.clear();
    					//关闭当前界面
    					 dispose();
    					 //创建一个新界面
    					 Stu_UI6 ui=new Stu_UI6();
    				}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else if(jtf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else if(jpf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else
    				{
    					JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
    				    //清空输入框
    					this.clear();
    				}
    			}
    			
    			//教师登录判断方法
    			public void tealogin()
    			{
    				if(GetSQL.pwd.equals(jpf.getText()))
    				{
    //					System.out.println("登录成功");
    					 JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
    					 this.clear();	
    					//关闭当前界面
    					 dispose();
    					 //创建一个新界面,适用于教师来管理学生
    					Teacher6 t=new Teacher6();				 					
    				}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else if(jtf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else if(jpf.getText().isEmpty())
    				{
    					JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
    				}else
    				{
    					JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
    				    //清空输入框
    					this.clear();
    				}
    			}
    		
    }
    

    SQL.java

    /*
     * 功能:用来和数据库SQLserver进行连接,以及相应的查询方法。
     */
    package com.package_7;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import javax.swing.JOptionPane;
    
    //写一个类,用来与数据库建立连接,并且查询数据
    class GetSQL {
    	// 设定用户名和密码
    	static String userword;
    	static String pwd;
    	
    	static String english;
    	static String num;
    	static String name;
    	static String chinese;
    	static String zhengzhi;
    	static String math;
    	
    	static String age;
    	static String salary;
    	static String sex;
    	static String zhicheng;
    	static String teanum;
    	static String teaname;
    
    	static Connection ct = null;
    	static PreparedStatement ps = null;
    	static ResultSet rs = null;
    
    	// 用于连接数据库的方法,可用于子类的继承
    	public static void ConnectSQL() {
    		try {
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    			ct = DriverManager.getConnection("jdbc:odbc:ywq");
    			System.out.println("The SQL is connected");
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    
    	// 用于向数据库进行查询的方法
    	public static void querystu(String s,String username) {
    		// 创建火箭车
    		try {
    			ps = ct.prepareStatement("select * from info where 权限=? and 用户名=? ");
    			// 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
    			ps.setString(1, s);
    			ps.setString(2, username);
    			// ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
    			rs = ps.executeQuery();
    			// 循环取出
    			if (rs.next()) {
    				// 将教师的用户名和密码取出
    				userword = rs.getString(2);
    				pwd = rs.getString(3);
    				System.out.println("成功获取到密码和用户名from数据库");
    				System.out.println(userword + "\t" + pwd + "\t");
    			}else
    			{
    				JOptionPane.showMessageDialog(null, "没有此用户,请重新输入!", "提示消息", JOptionPane.WARNING_MESSAGE);
    			}
    		} catch (Exception e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    	}
    	//在教师表中进行查询
    	public static void querytea(String s,String name ) {
    		// 创建火箭车
    		try {
    			ps = ct.prepareStatement("select * from info_tea where 权限=? and 用户名=? ");
    			// 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
    			ps.setString(1, s);
    			ps.setString(2, name);
    			// ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
    			rs = ps.executeQuery();
    			// 循环取出
    			if (rs.next()) {
    				// 将教师的用户名和密码取出
    				userword = rs.getString(2);
    				pwd = rs.getString(3);
    				System.out.println("成功获取到密码和用户名from数据库");
    				System.out.println(userword + "\t" + pwd + "\t");
    			}else
    			{
    				JOptionPane.showMessageDialog(null, "没有此用户,请重新输入!", "提示消息", JOptionPane.WARNING_MESSAGE);
    			}
    		} catch (Exception e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    	}
    
    	//从数据库中根据学号或者教工号来查询数据,并且填入表格。
    	public static void getdatastu(String s) {
    		// 创建火箭车
    		try {
    			ps = ct.prepareStatement("select * from info where 学号 =? ");
    			// 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
    			ps.setString(1, s);
    			// ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
    			rs = ps.executeQuery();
    			if(rs.next())	
    			{
    				// 将教师的用户名和密码取出
    				num = rs.getString(4);
    				name = rs.getString(5);
    				math = rs.getString(6);
    				chinese = rs.getString(7);
    				english = rs.getString(8);
    				zhengzhi = rs.getString(9);
    			}else
    			{
    				JOptionPane.showMessageDialog(null, "沒有此学生,请重新输入", "提示消息", JOptionPane.WARNING_MESSAGE);
    			}
    	
    		} catch (Exception e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    	}
    	public static void getdatatea(String s) {
    		// 创建火箭车
    		try {
    			ps = ct.prepareStatement("select * from info_tea where 教师编号号 =? ");
    			// 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
    			ps.setString(1, s);
    			// ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
    			rs = ps.executeQuery();
    			if(rs.next())	
    			{
    				// 将教师的用户名和密码取出
    				teanum = rs.getString(4);
    				teaname = rs.getString(5);
    				sex = rs.getString(6);
    				salary = rs.getString(7);
    				zhicheng = rs.getString(8);
    				age = rs.getString(9);
    			}else
    			{
    				JOptionPane.showMessageDialog(null, "沒有此教师,请重新输入", "提示消息", JOptionPane.WARNING_MESSAGE);
    			}
    	
    		} catch (Exception e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    	}
    	
    }


    Stu_UI6.java

    /*
     * 功能:学生登录成功界面。
     * 
     */
    package com.package_7;
    
    import java.awt.*;
    import java.awt.event.*;
    
    import javax.swing.*;
    
    public class Stu_UI6 extends JFrame implements ActionListener
    {
    
    	     //定义组件
    		JButton jb1,jb2=null;
    		JPanel jp1,jp2,jp3=null;
    		JLabel jlb1,jlb2,jlb3,jlb4=null;
    		
    //		public static void main(String[] args) {
    //			// TODO Auto-generated method stub
    //			Stu_UI6  ui=new Stu_UI6();
    //		}	
    	    //构造函数
    		public  Stu_UI6()    //不能申明为void!!!!!否则弹不出新界面
    		{
    			//创建组件
    			jb1=new JButton("课程管理");
    			jb2=new JButton("成绩查询");
    			
    			jp1=new JPanel();
    			jp2=new JPanel();
    			jp3=new JPanel();
    			
    			jlb1=new JLabel("姓名");
    			jlb2=new JLabel("学号");
    			jlb3=new JLabel("最新公告:");
    			jlb4=new JLabel("我校举行六十周年校庆的通知");
    			
    			jp1.add(jlb1);
    			jp1.add(jlb2);
    			
    			jp2.add(jb1);
    			jp2.add(jlb3);
    			
    			jp3.add(jb2);
    			jp3.add(jlb4);
    			
    			
    			this.add(jp1);
    			this.add(jp2);
    			this.add(jp3);
    			
    			//设置布局管理器
    			this.setLayout(new GridLayout(3,3,50,50));
    			this.setTitle("学生成绩管理系统");
    			this.setSize(400,300);
    			this.setLocation(200, 200);		
    			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			this.setVisible(true);
    
    }
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    			
    		}
    }
    

    Teacher.java

     

    /*
     * 功能:实现了查询学生和老师的信息,并且显示在表格中的功能。
     */
    
    package com.package_7;
    
    import javax.swing.*;
    import javax.swing.table.DefaultTableModel;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class Teacher6 extends JFrame implements ActionListener {
    
    	// 定义组件
    	JLabel jl2,jl,jl3,jl4 = null;
    	JTextField jtf,jtf2 = null;
    	JButton jb,jb2 = null;
    	JPanel jp1, jp2,jp3,jp4,jp5,jp6 = null;
    
    	DefaultTableModel model,model2 = null;
    	JTable table,table2 = null;
    	JScrollPane jsp,jsp2 = null;
    
    //	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    //		Teacher6 t = new Teacher6();
    //	}
    
    	// 构造函数
    	public Teacher6() {
    		// 创建组件		
    		jl = new JLabel("请输入学号:");
    		jl2=new JLabel("请输入教工号:");	
    		
    		jl3=new JLabel("学生信息表:");
    		jl4=new JLabel("教师信息表:");
    		
    		jtf = new JTextField(10);
    		jtf2 = new JTextField(10);
    		jb = new JButton("查询1");
    		jb2 = new JButton("查询2");
    		// 设置监听
    		jb.addActionListener(this);
    		jb2.addActionListener(this);
    		// 设置表格1
    		String[] colnames = { "姓名", "学号", "数学", "语文", "英语", "政治" };
    		model = new DefaultTableModel(colnames, 3);
    		table = new JTable(model);
    		jsp = new JScrollPane(table);
    		//设置表格2
    		String[] col = { "姓名", "教工号", "性别", "工资", "职称", "年龄" };
    		model2 = new DefaultTableModel(col, 3);
    		table2 = new JTable(model2);
    		jsp2 = new JScrollPane(table2);
    		
    
    		jp1 = new JPanel();
    		jp2 = new JPanel();
    		jp3 = new JPanel();
    		jp4 = new JPanel();
    		jp5 = new JPanel();
    		jp6 = new JPanel();
    		jp5.setLayout(new BorderLayout());
    		jp6.setLayout(new BorderLayout());
    
    		jp1.add(jl);
    		jp1.add(jtf);
    		jp1.add(jb);
    		jp1.setLayout(new FlowLayout(FlowLayout.LEFT));
    		jp1.setPreferredSize(new Dimension(20,20));
    		
    		jp3.add(jl2);
    		jp3.add(jtf2);
    		jp3.add(jb2);
    		jp3.setLayout(new FlowLayout(FlowLayout.LEFT));
    
    		jp2.add(jsp);
    		jp4.add(jsp2);
    		
    		jp5.add(jl3,BorderLayout.SOUTH);
    		jp6.add(jl4,BorderLayout.SOUTH);
    
    		this.add(jp1);
    		this.add(jp5);
    		this.add(jp2);
    		this.add(jp3);
    		this.add(jp6);
    		this.add(jp4);
    		
    		this.setLayout(new GridLayout(6, 1));
    		this.setTitle("学生成绩管理系统—教师");
    		this.setSize(500, 500);
    		this.setLocation(150, 150);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setVisible(true);
    		this.setResizable(false);
    		
    
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    
    		if (e.getActionCommand().equals("查询1")  &&!jtf.getText().isEmpty()) {						
    			// 当点击查询按钮1时,首先与数据库建立连接
    			GetSQL.ConnectSQL();
    			GetSQL.getdatastu(jtf.getText());
    			jtf.setText("");
    //			System.out.println(GetSQL.english);
    //			System.out.println(GetSQL.chinese);
    			// 将数据填入表格	
    			table.setValueAt(GetSQL.name, 0, 0);
    			table.setValueAt(GetSQL.num, 0, 1);
    			table.setValueAt(GetSQL.math, 0, 2);
    			table.setValueAt(GetSQL.chinese, 0, 3);
    			table.setValueAt(GetSQL.english, 0, 4);
    			table.setValueAt(GetSQL.zhengzhi, 0, 5);				
    				
    		}else if (e.getActionCommand().equals("查询2")  &&!jtf2.getText().isEmpty())
    		{
    			// 当点击查询按钮1时,首先与数据库建立连接
    			GetSQL.ConnectSQL();
    			GetSQL.getdatatea(jtf2.getText());
    			jtf2.setText("");
    
    			// 将数据填入表格				
    			table2.setValueAt(GetSQL.teaname, 0, 0);
    			table2.setValueAt(GetSQL.teanum, 0, 1);
    			table2.setValueAt(GetSQL.sex, 0, 2);
    			table2.setValueAt(GetSQL.salary, 0, 3);
    			table2.setValueAt(GetSQL.zhicheng, 0, 4);
    			table2.setValueAt(GetSQL.age, 0, 5);
    		}else
    		{
    			JOptionPane.showMessageDialog(null , "请输入要查询的编号","提示消息",JOptionPane.WARNING_MESSAGE);
    		}
    
    	}
    }
    
    

    其中,数据库数据如图所示:

    此处是分别建立了两张表,表结构更加复杂一点,博主在当时没有保存下来,后续补了一份sql文件,需要的可以加群366533258获取sql文件。2019.01.02

     

    在前面的数据库查询中,使用了

    ps=ct.prepareStatement("select * from info where 权限=? ");

    这条语句,是依次将数据库中的权限“学生”或者"教师"的数据全部取出来,进行判断时,会产生错误。因为其将最后一个数据复制给了username和password。

     

    改进方法:

    ps = ct.prepareStatement("select * from info where 权限=? and 用户名=? "); 

    此条语句按照jtf.getText()来进行查询,如果查到此用户名则判断密码是否正确。否则将弹出“用户名不存在的提示”,较好的解决了查询问题。

    如图所示:

     

    教师登录成功界面,如图:

     

    在此系统中,可以对数据库中学生表和教师表中的信息进行查询,按照提示,可输入学号和教工号来实现。

    如图所示:

     

    说说经验之谈,在构建表格的时候,列名怎么也不出现。

    查阅资料后发现,只有将JTable加入到JScrollPane中才会显示列名。代码如下:

    // 设置表格1
            String[] colnames = { "姓名", "学号", "数学", "语文", "英语", "政治" };

            model = new DefaultTableModel(colnames, 3);

            table = new JTable(model);

            jsp = new JScrollPane(table);

    然后将JScrollPane添加进一个JPanel中,实现了表格的设置。

     

    至于点击查询按钮所进行的查询工作就和前面大同小异了。当输入的学号或者教工号不存在时,会给出一个提示。如图所示:



    总结:

    简易信息管理系统适合新手学Java图形界面开发。

    1、登录界面可以进行登录操作。有俩种权限选择。分别跳转到不同的界面。

    2、使用了事件监听、Java操作SQLserver数据库等知识。

    3、图形化界面中使用了JTable等组件,将查询结果显示在表格中。

     

    其实,在这个简单的程序中,至少我可以看出可以使用单例模式和门面模式。

    Java设计模式—门面模式(带案例分析)                    

    Java图形界面开发—简易登录注册小程序

     


     如果大家想直接使用本文中创建的模板,那么只需要将最后一步的各个Java文件copy出来即是一个完整的Java程序(当然你还需要一份数据库的建表sql文件),希望能够帮助更多正在学习图形界面开发的小伙伴~

    如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以加群 366533258 交流讨论哈~

     

    关注微信公众号(文强的技术小屋),学习更多技术知识,一起遨游知识海洋~

     

    展开全文
  • Java+学生信息管理系统+GUI+文件

    万次阅读 多人点赞 2019-07-05 20:10:03
    系统可实现学生信息的增加,删除,修改,查询,并将学生信息存储在文件中 其中, 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以...
  • Java实现学生管理系统

    2021-01-21 17:04:32
    针对目前所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下: 添加学生:通过键盘录入学生信息,添加到集合中 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除 修改学生:通过键盘...
  • 一个基于JAVA学生管理系统,由于本人是刚开始学习JAVA,所以这是一个很基础的程序,如果有不对的地方,还请大家批评指正。 一.系统界面 一个很简单的系统界面,主要由添加学生、删除学生、修改学生、查看学生、...
  • JAVA 实现简单的学生成绩管理系统

    万次阅读 多人点赞 2018-04-15 10:27:23
    2.掌握简单的信息管理系统的设计与实现。二、实验环境实验建议在安装了以下软件的计算机上完成:1.Windows xp/win7/win8/win10操作系统2.JDK 1.6以上版本3.Eclipse或NetBeans IDE或EditPlus或其它开发工具三、实验...
  • java web 学生成绩管理系统

    千次阅读 2020-06-09 11:29:41
    学生管理【修改、删除、查询】 课程管理【添加新课程、修改、删除、查询】 分配课程【查询已分配的课程信息】 老师 课程管理【查询、查询课程对应的学生】 ...
  • java实现学生管理系统MVC结构

    千次阅读 2020-04-06 22:57:50
    java实现学生管理系统实现学生管理系统展示效果 实现学生管理系统 最近写了一个学生系统的代码 可实现增删改查的功能.第一次写,只是个弟弟 ,有错误希望可以提出 互相进步 展示效果 采用了MVC结果,这样控制器...
  • java实现简单学生信息管理系统

    万次阅读 多人点赞 2018-11-10 14:53:08
    ** ## java实现简单学生信息管理系统(6步) ** 1、首先定义一个学生信息主体类 package project; public class Stu_class { String name; String stu_id; String sex; String phone_num; int age; public ...
  • Java简单学生管理系统

    千次阅读 多人点赞 2018-08-18 00:38:42
    简单的学生信息管理系统,通过键盘选择操作进行添加学生(学号,姓名,性别,年龄,成绩)的信息,通过数组存储,同时可以进行查询某个或全体学生信息,修改学生信息,删除学生信息的操作。 到手了需求先来分析一下...
  • 实现原理:将学生对象存入集合中...二、创建管理系统的接口(interface MangerStore) 管理系统接口中分别定义五个抽象方法: 1.添加学生方法 boolean addStudent(Student student); 2.查找学生方法 Student fin...
  • java课程设计 学生管理系统

    千次阅读 2019-01-18 00:22:00
    java课程设计 学生管理系统 学生成绩管理系统 可实现功能 学生管理系统 查询学生信息:姓名、学号、性别、出生年月日。(学号自动生成且唯一) 查询学生成绩:每个人都有数学、Java与体育与选修课 查询...
  • 学生管理系统 上一次使用的集合只能对学生信息进行临时存储,关闭程序时数据就会消失,这次新增了文件存储,达到对学生信息的永久记录,首先在上次代码的基础上,增加了两个方法,一个是从学生文件读取信息到集合中...
  • 这段时间回顾了下jsp的知识,简单写了个学生管理系统,大概功能有: 1、学生管理、用户管理、学院管理、个人信息 2、权限划分上,实现了不同角色不同权限:普通用户、学生只有浏览权限,管理员可以增删改查 文章目录...
  • hello,大家好,你们的王小白来更新...这些就是这个学生信息管理系统中的部分可视化截图,由于代码过长,此篇先放登陆界面的GUI的设计代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; imp...
  • 学生管理系统包括:学生信息登录、注册、删除、添加、查询等功能。最关键的也就是查询系统的实现。至于界面的设计前端事情我们不管。 下面是效果图。 界面效果实在一般,不会前端设计,也不想copy,将就看吧。...
  • 创建Java项目 - 学生信息管理系统(MySQL版)V1.0 2、在项目里创建文件夹 在项目根目录创建help、images、lib三个文件夹 3、在lib里添加MySQL数据库驱动程序包 将驱动程序包拷贝到lib目录 作为库添加到项目里...
  • 学生信息管理系统Java+JSP+MySQL)

    万次阅读 多人点赞 2019-01-27 22:34:46
    本篇博客展示的学生信息管理系统Java+JSP+MySQL)仅包含对学生信息的增删改查操作,前端页面仅略作修饰; 本篇博客以代码展示为主,具体功能实现的详细步骤请返回目录阅读其他章节内容; 本篇博客展示的代码与...
  • 这篇文章是一个Java新手写的一个相对来说比较简单的程序,只要掌握基本Java中图形界面设计(GUI)和Java(MYSQL)数据库(基本上看书和一些教学视频就能懂),让你清晰明了的看懂这个程序,由于是一个新手所写,有...
  • 一,项目功能描述 ... 二,技术选型 java+MySQL+jsp ...3.由于这是一个为学生信息管理系统所作的登录页面,学生信息将会存储在数据库中,所以我们将管理员的信息也存入数据库之中。 三,界面预览 ...
  • 一、准备工作 1、下载学生选课管理系统源代码:https://pan.baidu.com/s/17bgsJkYXwVmnVAAC1AEk6Q,提取码:unwn 2、准备centos系统环境,参考centos的安装步骤 3、为虚拟机准备项目运行环境(至少安装maven、jdk、...
  • Java+gui+mysql实现学生管理系统

    千次阅读 热门讨论 2021-01-23 00:36:31
    Java+gui+mysql实现学生管理系统 ​ 学完JavaSE和数据库部分就可以动手做一个简单的学生管理系统,其实也就是涉及到一些简单的数据库增删查改的内容,学艺不精项目中有些功能可能不是很完善,内容有点多看完可能需要点...
  • Java 学生信息管理系统实训

    千次阅读 2020-07-10 15:53:42
    java 学生信息系统第三次实训 一、先在项目的下的包里建一个Impl子包,在包内在创建CollegeDao、StastusDao、StudentDao、UserDao的四个数据访问接口类实现类 接着创建了测试类,分别进行了测试: StatusDaoImpl实现...
  • 基于java+mysql 实现的学生信息管理系统

    万次阅读 多人点赞 2019-07-15 15:14:43
    引言:Java实现学生信息管理系统,主要有一种是GUI图形界面实现,另一种是控制台输出,还有java web实现的,(基于Maven)甚至用SSM框架实现,springboot等都是可以的,但底层语言都是用的Java 语言,如果有需要类似...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,701
精华内容 7,080
关键字:

java学生管理系统基本步骤

java 订阅