JavaFX项目——学生管理系统以及项目的打包 Maven+Mybatis

(简易版)

一、建库建表

在这里插入图片描述

在这里插入图片描述

Table student

用于记录学生的基本信息

在这里插入图片描述

Table stu_classes

用于记录学生的选课信息

在这里插入图片描述

Table stuscore

用于记录学生的成绩

在这里插入图片描述

Table teacher_course

用于记录老师的信息

在这里插入图片描述

下面是该库的sql文件:

	SET FOREIGN_KEY_CHECKS=0;
	
	DROP TABLE IF EXISTS `student`;
	CREATE TABLE `student` (
	  `stunum` int(11) NOT NULL,
	  `name` varchar(225) DEFAULT NULL,
	  `age` int(11) DEFAULT NULL,
	  `email` varchar(225) DEFAULT NULL,
	  `username` varchar(225) NOT NULL,
	  `password` varchar(225) NOT NULL,
	  PRIMARY KEY (`stunum`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8;
	
	INSERT INTO `student` VALUES ('1', 'wht', '19', '120@qq.com', 'wht', '123');
	INSERT INTO `student` VALUES ('2', '张三', '18', '121@qq.com', 'zhangsan', '123123');
	INSERT INTO `student` VALUES ('3', '李四', '18', '122.@qq.com', 'lisi', '111');
	INSERT INTO `student` VALUES ('4', '王五', '19', '123@qq.com', 'wangwu', 'ww123');
	INSERT INTO `student` VALUES ('5', 'testStu1', '19', '124@qq.com', '111', '111');
	INSERT INTO `student` VALUES ('6', 'testStu2', '20', '125@qq.com', '123', '123');
	INSERT INTO `student` VALUES ('20190428', '吴昊天', '19', '1207052431@qq.com', 'wht666', 'wht0428');
	
	
	DROP TABLE IF EXISTS `stuscore`;
	CREATE TABLE `stuscore` (
	  `stunum` int(11) NOT NULL DEFAULT '0',
	  `mathscore` int(11) DEFAULT NULL,
	  `computerscore` int(11) DEFAULT NULL,
	  `Englishscore` int(11) DEFAULT NULL,
	  `selfcourseA` int(11) DEFAULT NULL,
	  `selfcourseB` int(11) DEFAULT NULL,
	  PRIMARY KEY (`stunum`),
	  CONSTRAINT `stunum` FOREIGN KEY (`stunum`) REFERENCES `student` (`stunum`) ON DELETE CASCADE ON UPDATE CASCADE
	) ENGINE=InnoDB DEFAULT CHARSET=utf8;
	
	
	INSERT INTO `stuscore` VALUES ('1', '100', '100', '100', '0', '0');
	INSERT INTO `stuscore` VALUES ('2', '94', '93', '92', '0', '0');
	INSERT INTO `stuscore` VALUES ('3', '89', '88', '87', '0', '0');
	INSERT INTO `stuscore` VALUES ('4', '100', '83', '82', '0', '0');
	INSERT INTO `stuscore` VALUES ('5', '68', '75', '82', '0', '0');
	INSERT INTO `stuscore` VALUES ('6', '61', '78', '78', '0', '0');
	INSERT INTO `stuscore` VALUES ('20190428', null, null, null, '97', '0');
	
	DROP TABLE IF EXISTS `stu_classes`;
	CREATE TABLE `stu_classes` (
	  `stunum` int(11) NOT NULL DEFAULT '0',
	  `mathclass` varchar(255) DEFAULT NULL,
	  `computerclass` varchar(255) DEFAULT NULL,
	  `Englishclass` varchar(255) DEFAULT NULL,
	  `classA` varchar(255) DEFAULT NULL,
	  `classB` varchar(255) DEFAULT NULL,
	  PRIMARY KEY (`stunum`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8;
	
	
	INSERT INTO `stu_classes` VALUES ('1', '00132', '00134', '00145', '00155', '00187');
	INSERT INTO `stu_classes` VALUES ('2', '00132', '00134', '00145', '00166', '00155');
	INSERT INTO `stu_classes` VALUES ('3', '00132', '00134', '00145', '00155', '00187');
	INSERT INTO `stu_classes` VALUES ('4', '00132', '00134', '00145', '00157', '00155');
	INSERT INTO `stu_classes` VALUES ('5', '00132', '00134', '00145', '', '');
	INSERT INTO `stu_classes` VALUES ('6', '00132', '00134', '00145', '', '');
	INSERT INTO `stu_classes` VALUES ('20190428', '00132', '00134', '00155', '00166', '00155');
	
	
	DROP TABLE IF EXISTS `teacher_course`;
	CREATE TABLE `teacher_course` (
	  `tchnum` int(11) NOT NULL DEFAULT '0',
	  `tchpsw` varchar(255) NOT NULL,
	  `teacher` varchar(255) NOT NULL DEFAULT '',
	  `course` varchar(255) NOT NULL,
	  `classcode` varchar(255) NOT NULL,
	  PRIMARY KEY (`tchnum`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8;
	
	
	INSERT INTO `teacher_course` VALUES ('110', 'wang', '王**', 'math', '00132');
	INSERT INTO `teacher_course` VALUES ('120', 'li', '李**', 'computer', '00134');
	INSERT INTO `teacher_course` VALUES ('130', 'jin', '金**', 'English', '00145');
	INSERT INTO `teacher_course` VALUES ('140', 'wu', '吴**', 'physics', '00166');
	INSERT INTO `teacher_course` VALUES ('150', 'huang', '黄**', 'chinese', '00157');
	INSERT INTO `teacher_course` VALUES ('160', 'zhang', '张**', 'health', '00155');
	INSERT INTO `teacher_course` VALUES ('170', 'yang', '杨**', 'filmapp', '00187');

二、项目结构

Package dao

存放对数据库操作的接口以及mapper映射文件

Package model

存放实体类以及模型类

Package utils

存放自定义工具类——用于返回Sqlsession类型

dKrtsA.png

Package viewAndcontroller

存放所有的fxml类型界面文件、css样式文件、图片以及控制器类

par

Class Main

主类

Package java.resources

存放数据库属性配置文件、所有的界面FXML文件、css样式文件以及图片,便于Maven在compile时将这些文件编译到target的classes目录下。

需要手动将image目录拷贝到target目录下

pom.xml

在该文件中加入mybatis、mysql驱动等依赖jar包

Directory META-INF

JavaFx Application 构件的属性
用于将本项目打包成exe可运行文件。

三、项目测试

登录界面

在这里插入图片描述

注册界面

在这里插入图片描述

登录功能

登录学生界面

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

登录老师界面

在这里插入图片描述

注册功能测试

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

当输入不合理或者输入已注册过的学号或用户名时,给出错误提示窗口

学生选课功能测试

在这里插入图片描述

在这里插入图片描述

学生的成绩面板课程发生变化

在这里插入图片描述
选课必须为两门

老师修改成绩功能测试

在这里插入图片描述

在这里插入图片描述
学生的成绩面板已成功改变

在这里插入图片描述

当输入小于0或者大于100时给出提示窗口

四、项目的打包

打包可执行jar包

由于本项目采用Maven管理,因此很容易进行打包。
在idea的右侧打开Maven菜单点击Package操作即可打包可执行jar包到target目录下。
但是此情况打包的jar包是不包含项目所依赖包的,于是需要导入以下插件,将依赖包一同打包。

	<plugins>
	      <plugin>
	        <artifactId>maven-assembly-plugin</artifactId>
	        <configuration>
	          <archive>
	            <manifest>
	              <mainClass>com.allen.capturewebdata.Main</mainClass>
	            </manifest>
	          </archive>
	          <descriptorRefs>
	            <descriptorRef>jar-with-dependencies</descriptorRef>
	          </descriptorRefs>
	        </configuration> 
	</plugin>

点击右侧Maven菜单中插件中的: assembly:assembly,即可在target目录下生成一个"**-jar-with-dependencies.jar"的jar包

在这里插入图片描述

转化成可执行的exe文件

–>文件打开项目结构–>点击构件
添加一个JavaFx Application构件

在这里插入图片描述

点击Create Manifest… 生成META-INF目录
在这里插入图片描述

接下来添加主类

在这里插入图片描述

然后右击右侧依赖包选择置于 Output Root
点击应用、确定

最后选择构建->编译 Artifacts…->Rebuild

成功在项目的out目录下生成了构件目录

在这里插入图片描述

以下为可执行的exe文件(图标可以根据需要更改)
在这里插入图片描述

五、附上具体代码

Main


	package cn.zjnu.address;
	
	import cn.zjnu.address.dao.Stu_ClassesDao;
	import cn.zjnu.address.dao.StudentDao;
	import cn.zjnu.address.dao.StuscoreDao;
	import cn.zjnu.address.dao.Teacher_CourseDao;
	import cn.zjnu.address.model.*;
	import cn.zjnu.address.utils.MyBatisUtils;
	import cn.zjnu.address.viewAndcontroller.*;
	import javafx.application.Application;
	import javafx.collections.FXCollections;
	import javafx.collections.ObservableList;
	import javafx.fxml.FXMLLoader;
	import javafx.scene.Scene;
	import javafx.scene.control.TabPane;
	import javafx.scene.image.Image;
	import javafx.scene.layout.AnchorPane;
	import javafx.scene.layout.BorderPane;
	import javafx.scene.layout.GridPane;
	import javafx.stage.Modality;
	import javafx.stage.Stage;
	import javafx.stage.StageStyle;
	import org.apache.ibatis.session.SqlSession;
	
	import java.io.IOException;
	import java.util.ArrayList;
	import java.util.HashMap;
	import java.util.List;
	import java.util.Map;
	
	public class Main extends Application {
	    private Stage primaryStage;
	    private BorderPane rootLayout;
	    private String username;
	    private Integer tchnum=0;
	    private ObservableList<ClassStuInfo> studentData = FXCollections.observableArrayList();
	
	    public List<ClassStuInfo> getStudentData(Integer tchnum){
	        String course;
	        String classcode;
	        Integer score = 0;
	        List<Integer> idlist = new ArrayList<>();
	        List<ClassStuInfo> listInfo = new ArrayList<>();
	        Map<Integer,String> map = new HashMap<>();
	        SqlSession sqlSession = MyBatisUtils.getSqlSession();
	        Teacher_CourseDao dao = sqlSession.getMapper(Teacher_CourseDao.class);
	        Teacher_Course teacher_course = new Teacher_Course();
	        teacher_course = dao.selectBytchnum(tchnum);
	
	        if(teacher_course != null){
	            course = teacher_course.getCourse();
	            classcode = teacher_course.getClasscode();
	            Stu_ClassesDao dao1 = sqlSession.getMapper(Stu_ClassesDao.class);
	            List<Stu_Classes> stu_classes = dao1.selectByclasscode(classcode);
	            for(Stu_Classes stu:stu_classes){
	                idlist.add(stu.getStunum());
	                if(stu.getClassA().equals(classcode)){
	                    map.put(stu.getStunum(),"selfcourseA");
	                }else if(stu.getClassB().equals(classcode)){
	                    map.put(stu.getStunum(),"selfcourseB");
	                }else if(stu.getMathclass().equals(classcode)){
	                    map.put(stu.getStunum(),"mathscore");
	                }else if(stu.getComputerclass().equals(classcode)){
	                    map.put(stu.getStunum(),"computerscore");
	                }else if(stu.getEnglishclass().equals(classcode)){
	                    map.put(stu.getStunum(),"Englishscore");
	                }
	            }
	            StudentDao dao2 = sqlSession.getMapper(StudentDao.class);
	            List<StuInfo> stuInfos = dao2.selectById(idlist);
	            StuscoreDao dao3 = sqlSession.getMapper(StuscoreDao.class);
	            for(StuInfo stuInfo:stuInfos){
	                score = 0;
	                Stuscore stuscore = dao3.selectScore(stuInfo.getStunum());
	                String temp = map.get(stuInfo.getStunum());
	                System.out.println(temp);
	                if("mathscore".equals(temp)){
	                    score = stuscore.getMathscore();
	                } else if("computerscore".equals(temp)){
	                    score = stuscore.getComputerscore();
	                } else if("Englishscore".equals(temp)){
	                    score = stuscore.getEnglishscore();
	                } else if("selfcourseA".equals(temp)){
	                    score = stuscore.getSelfcourseA();
	                } else if("selfcourseB".equals(temp)){
	                    score = stuscore.getSelfcourseB();
	                }
	                course = teacher_course.getCourse();
	                if("physics".equals(course)){
	                    course = "大学物理";
	                } else if ("chinese".equals(course)){
	                    course = "汉语词汇与文化";
	                } else if ("health".equals(course)){
	                    course = "大学生卫生保健";
	                } else if ("filmapp".equals(course)){
	                    course = "影视鉴赏";
	                }
	                if(score != null && course != null){
	                    listInfo.add(new ClassStuInfo(stuInfo.getStunum(),stuInfo.getName(),score,stuInfo.getEmail(),course,classcode));
	                } else if(score ==null && course != null){
	                    listInfo.add(new ClassStuInfo(stuInfo.getStunum(),stuInfo.getName(),0,stuInfo.getEmail(),course,classcode));
	                } else if(course == null && score != null){
	                    listInfo.add(new ClassStuInfo(stuInfo.getStunum(),stuInfo.getName(),0,stuInfo.getEmail(),"null",classcode));
	                }
	            }
	            sqlSession.close();
	            System.out.println(listInfo);
	        }
	        return listInfo;
	    }
	
	    public void setStudentData(List<ClassStuInfo> list){
	        for(int i = 0; i < list.size(); i++){
	            this.studentData.add(list.get(i));
	        }
	    }
	
	    public ObservableList<ClassStuInfo> getStudentData() {
	        return studentData;
	    }
	
	    public String getUsername() {
	        return username;
	    }
	
	    @Override
	    public void start(Stage primaryStage) throws Exception {
	        this.primaryStage = primaryStage;
	        this.primaryStage.setTitle("StuInfoSystem");
	        this.primaryStage.getIcons().add(new Image("images/picture.png"));
	        initRootLayout();
	
	        showLoginView();
	    }
	
	    public void showLoginView() {
	        try {
	            // Load person overview.
	            FXMLLoader loader = new FXMLLoader();
	            loader.setLocation(getClass().getResource("/LogView.fxml"));
	            GridPane LoginView = (GridPane) loader.load();
	            rootLayout.setCenter(LoginView);
	
	            LoginViewController controller = loader.getController();
	            controller.setMain(this);
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    }
	
	    public void initRootLayout() {
	        try {
	            // Load root layout from fxml file.
	            FXMLLoader loader = new FXMLLoader();
	            loader.setLocation(getClass().getResource("/Root.fxml"));
	            rootLayout = (BorderPane) loader.load();
	            // Show the scene containing the root layout.
	            Scene scene = new Scene(rootLayout);
	            primaryStage.setScene(scene);
	            primaryStage.setResizable(false);
	            primaryStage.show();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    }
	
	    public boolean showUserRegister(){
	        try {
	            // Load the fxml file and create a new stage for the popup dialog.
	            FXMLLoader loader = new FXMLLoader();
	            loader.setLocation(getClass().getResource("/UserRegisterView.fxml"));
	            GridPane page = (GridPane) loader.load();
	
	            // Create the dialog Stage.
	            Stage dialogStage = new Stage();
	            dialogStage.setTitle("Register");
	            dialogStage.initModality(Modality.WINDOW_MODAL);
	            dialogStage.initOwner(primaryStage);
	            Scene scene = new Scene(page);
	            dialogStage.setScene(scene);
	
	            UserRegisterViewController controller = loader.getController();
	            controller.setDialogStage(dialogStage);
	
	            dialogStage.showAndWait();
	
	            return controller.isOkClicked();
	        } catch (IOException e) {
	            e.printStackTrace();
	            return false;
	        }
	    }
	
	    public void showStudentView(String username){
	        try {
	            this.username = username;
	            FXMLLoader loader = new FXMLLoader();
	            loader.setLocation(getClass().getResource("/StudentView.fxml"));
	            TabPane tabPane = (TabPane)loader.load();
	
	            this.primaryStage.close();
	            Stage dialogStage = new Stage();
	            dialogStage.getIcons().add(new Image("images/picture.png"));
	            dialogStage.initStyle(StageStyle.UNIFIED);
	            dialogStage.setTitle("学生界面");
	            dialogStage.initModality(Modality.WINDOW_MODAL);
	            dialogStage.initOwner(primaryStage);
	            Scene scene = new Scene(tabPane);
	            dialogStage.setScene(scene);
	
	            StudentViewController controller = loader.getController();
	            controller.setMain(this);
	            controller.setDialogStage(dialogStage);
	            controller.setInfoText(username);
	
	            controller.setCourse(username);
	            controller.setScore(Integer.parseInt(controller.getStunumview().getText()));
	
	            controller.chooseCourse();
	            dialogStage.showAndWait();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    }
	
	    public void showTeacherView(Integer tchnum){
	        try {
	            this.tchnum = tchnum;
	            FXMLLoader loader = new FXMLLoader();
	            loader.setLocation(getClass().getResource("/TeacherView.fxml"));
	            AnchorPane stuOverview = (AnchorPane) loader.load();
	
	            this.primaryStage.close();
	            Stage dialogStage = new Stage();
	            dialogStage.getIcons().add(new Image("images/picture.png"));
	            dialogStage.setTitle("Info");
	            dialogStage.initModality(Modality.WINDOW_MODAL);
	            dialogStage.initOwner(primaryStage);
	            Scene scene = new Scene(stuOverview);
	            dialogStage.setScene(scene);
	            TeacherViewController controller = loader.getController();
	            controller.setMain(this);
	            controller.setDialogStage(dialogStage);
	            dialogStage.showAndWait();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    }
	
	    public Integer showEditStuScoreView(Integer stunum, String course){
	        try {
	            Integer stunumber = stunum;
	            String coursename = course;
	            FXMLLoader loader = new FXMLLoader();
	            loader.setLocation(getClass().getResource("/EditStuscoreView.fxml"));
	            AnchorPane editview = (AnchorPane) loader.load();
	            Stage dialogStage = new Stage();
	            dialogStage.setTitle("Register");
	            dialogStage.initModality(Modality.WINDOW_MODAL);
	            dialogStage.initOwner(primaryStage);
	            Scene scene = new Scene(editview);
	            dialogStage.setScene(scene);
	
	            EditStuscoreViewController controller = loader.getController();
	            controller.setDialogStage(dialogStage);
	            controller.setStunum(stunum);
	            controller.setCourse(course);
	            dialogStage.showAndWait();
	            return controller.getScore();
	        } catch (IOException e) {
	            e.printStackTrace();
	            return 0;
	        }
	    }
	
	    public static void main(String[] args) {
	        launch(args);
	    }
	}

Package model

ClassStuInfo


	package cn.zjnu.address.model;
	
	import javafx.beans.property.IntegerProperty;
	import javafx.beans.property.SimpleIntegerProperty;
	import javafx.beans.property.SimpleStringProperty;
	import javafx.beans.property.StringProperty;
	
	public class ClassStuInfo {
	    private IntegerProperty stunumber;
	    private StringProperty stuname;
	    private IntegerProperty score;
	    private StringProperty email;
	    private StringProperty course;
	    private StringProperty classcode;
	
	    public ClassStuInfo(){
	    }
	
	    public ClassStuInfo(Integer stunumber, String stuname, Integer score, String email, String course) {
	        this.stunumber = new SimpleIntegerProperty(stunumber);
	        this.stuname = new SimpleStringProperty(stuname);
	        this.score = new SimpleIntegerProperty(score);
	        this.email = new SimpleStringProperty(email);
	        this.course = new SimpleStringProperty(course);
	    }
	
	    public ClassStuInfo(Integer stunumber, String stuname, Integer score, String email, String course, String classcode) {
	        this.stunumber = new SimpleIntegerProperty(stunumber);
	        this.stuname = new SimpleStringProperty(stuname);
	        this.score = new SimpleIntegerProperty(score);
	        this.email = new SimpleStringProperty(email);
	        this.course = new SimpleStringProperty(course);
	        this.classcode = new SimpleStringProperty(classcode);
	    }
	
	    public int getStunumber() {
	        return stunumber.get();
	    }
	
	    public IntegerProperty stunumberProperty() {
	        return stunumber;
	    }
	
	    public void setStunumber(int stunumber) {
	        this.stunumber.set(stunumber);
	    }
	
	    public String getStuname() {
	        return stuname.get();
	    }
	
	    public StringProperty stunameProperty() {
	        return stuname;
	    }
	
	    public void setStuname(String stuname) {
	        this.stuname.set(stuname);
	    }
	
	    public int getScore() {
	        return score.get();
	    }
	
	    public IntegerProperty scoreProperty() {
	        return score;
	    }
	
	    public void setScore(int score) {
	        this.score.set(score);
	    }
	
	    public String getEmail() {
	        return email.get();
	    }
	
	    public StringProperty emailProperty() {
	        return email;
	    }
	
	    public void setEmail(String email) {
	        this.email.set(email);
	    }
	
	    public String getCourse() {
	        return course.get();
	    }
	
	    public StringProperty courseProperty() {
	        return course;
	    }
	
	    public void setCourse(String course) {
	        this.course.set(course);
	    }
	
	    public String getClasscode() {
	        return classcode.get();
	    }
	
	    public StringProperty classcodeProperty() {
	        return classcode;
	    }
	
	    public void setClasscode(String classcode) {
	        this.classcode.set(classcode);
	    }
	
	    @Override
	    public String toString() {
	        return "ClassStuInfo{" +
	                "stunumber=" + stunumber +
	                ", stuname=" + stuname +
	                ", score=" + score +
	                ", email=" + email +
	                ", course=" + course +
	                ", classcode=" + classcode +
	                '}';
	    }
	}

course


	package cn.zjnu.address.model;
	
	public class course {
	    private String course;
	
	    public String getCourse() {
	        return course;
	    }
	
	    public void setCourse(String course) {
	        this.course = course;
	    }
	}

Stu_Classes


	package cn.zjnu.address.model;
	
	public class Stu_Classes {
	    private Integer stunum;
	    private String mathclass;
	    private String computerclass;
	    private String Englishclass;
	    private String classA;
	    private String classB;
	
	    public Integer getStunum() {
	        return stunum;
	    }
	
	    public void setStunum(Integer stunum) {
	        this.stunum = stunum;
	    }
	
	    public String getMathclass() {
	        return mathclass;
	    }
	
	    public void setMathclass(String mathclass) {
	        this.mathclass = mathclass;
	    }
	
	    public String getComputerclass() {
	        return computerclass;
	    }
	
	    public void setComputerclass(String computerclass) {
	        this.computerclass = computerclass;
	    }
	
	    public String getEnglishclass() {
	        return Englishclass;
	    }
	
	    public void setEnglishclass(String englishclass) {
	        Englishclass = englishclass;
	    }
	
	    public String getClassA() {
	        return classA;
	    }
	
	    public void setClassA(String classA) {
	        this.classA = classA;
	    }
	
	    public String getClassB() {
	        return classB;
	    }
	
	    public void setClassB(String classB) {
	        this.classB = classB;
	    }
	
	    @Override
	    public String toString() {
	        return "Stu_Classes{" +
	                "stunum=" + stunum +
	                ", mathclass='" + mathclass + '\'' +
	                ", computerclass='" + computerclass + '\'' +
	                ", Englishclass='" + Englishclass + '\'' +
	                ", classA='" + classA + '\'' +
	                ", classB='" + classB + '\'' +
	                '}';
	    }
	}

Student


	package cn.zjnu.address.model;
	
	public class Student {
	    private Integer stunum;
	    private String name;
	    private Integer age;
	    private String email;
	    private String username;
	    private String password;
	
	    public Integer getStunum() {
	        return stunum;
	    }
	
	    public void setStunum(Integer stunum) {
	        this.stunum = stunum;
	    }
	
	    public String getName() {
	        return name;
	    }
	
	    public void setName(String name) {
	        this.name = name;
	    }
	
	    public Integer getAge() {
	        return age;
	    }
	
	    public void setAge(Integer age) {
	        this.age = age;
	    }
	
	    public String getEmail() {
	        return email;
	    }
	
	    public void setEmail(String email) {
	        this.email = email;
	    }
	
	    public String getUsername() {
	        return username;
	    }
	
	    public void setUsername(String username) {
	        this.username = username;
	    }
	
	    public String getPassword() {
	        return password;
	    }
	
	    public void setPassword(String password) {
	        this.password = password;
	    }
	
	    @Override
	    public String toString() {
	        return "Student{" +
	                "stunum=" + stunum +
	                ", name='" + name + '\'' +
	                ", age=" + age +
	                ", email='" + email + '\'' +
	                ", username='" + username + '\'' +
	                ", password='" + password + '\'' +
	                '}';
	    }
	}

StuInfo


	package cn.zjnu.address.model;
	
	public class StuInfo {
	    private Integer stunum;
	    private String name;
	    private String email;
	    private String username;
	
	    public Integer getStunum() {
	        return stunum;
	    }
	
	    public void setStunum(Integer stunum) {
	        this.stunum = stunum;
	    }
	
	    public String getName() {
	        return name;
	    }
	
	    public void setName(String name) {
	        this.name = name;
	    }
	
	    public String getEmail() {
	        return email;
	    }
	
	    public void setEmail(String email) {
	        this.email = email;
	    }
	
	    public String getUsername() {
	        return username;
	    }
	
	    public void setUsername(String username) {
	        this.username = username;
	    }
	
	    @Override
	    public String toString() {
	        return "StuInfo{" +
	                "stunum=" + stunum +
	                ", name='" + name + '\'' +
	                ", email='" + email + '\'' +
	                ", username='" + username + '\'' +
	                '}';
	    }
	}

Stuscore


	package cn.zjnu.address.model;
	
	public class Stuscore {
	    private Integer stunum;
	    private Integer mathscore;
	    private Integer computerscore;
	    private Integer Englishscore;
	    private Integer selfcourseA;
	    private Integer selfcourseB;
	
	    public Integer getStunum() {
	        return stunum;
	    }
	
	    public void setStunum(Integer stunum) {
	        this.stunum = stunum;
	    }
	
	    public Integer getMathscore() {
	        return mathscore;
	    }
	
	    public void setMathscore(Integer mathscore) {
	        this.mathscore = mathscore;
	    }
	
	    public Integer getComputerscore() {
	        return computerscore;
	    }
	
	    public void setComputerscore(Integer computerscore) {
	        this.computerscore = computerscore;
	    }
	
	    public Integer getEnglishscore() {
	        return Englishscore;
	    }
	
	    public void setEnglishscore(Integer englishscore) {
	        Englishscore = englishscore;
	    }
	
	    public Integer getSelfcourseA() {
	        return selfcourseA;
	    }
	
	    public void setSelfcourseA(Integer selfcourseA) {
	        this.selfcourseA = selfcourseA;
	    }
	
	    public Integer getSelfcourseB() {
	        return selfcourseB;
	    }
	
	    public void setSelfcourseB(Integer selfcourseB) {
	        this.selfcourseB = selfcourseB;
	    }
	
	    @Override
	    public String toString() {
	        return "Stuscore{" +
	                "stunum=" + stunum +
	                ", mathscore=" + mathscore +
	                ", computerscore=" + computerscore +
	                ", Englishscore=" + Englishscore +
	                ", selfcourseA=" + selfcourseA +
	                ", selfcourseB=" + selfcourseB +
	                '}';
	    }
	}

Teacher_Course


	package cn.zjnu.address.model;
	
	public class Teacher_Course {
	    private Integer tchnum;
	    private String tchpsw;
	    private String teacher;
	    private String course;
	    private String classcode;
	
	    public Integer getTchnum() {
	        return tchnum;
	    }
	
	    public void setTchnum(Integer tchnum) {
	        this.tchnum = tchnum;
	    }
	
	    public String getTchpsw() {
	        return tchpsw;
	    }
	
	    public void setTchpsw(String tchpsw) {
	        this.tchpsw = tchpsw;
	    }
	
	    public String getTeacher() {
	        return teacher;
	    }
	
	    public void setTeacher(String teacher) {
	        this.teacher = teacher;
	    }
	
	    public String getCourse() {
	        return course;
	    }
	
	    public void setCourse(String course) {
	        this.course = course;
	    }
	
	    public String getClasscode() {
	        return classcode;
	    }
	
	    public void setClasscode(String classcode) {
	        this.classcode = classcode;
	    }
	
	    @Override
	    public String toString() {
	        return "Teacher_Course{" +
	                "tchnum=" + tchnum +
	                ", tchpsw='" + tchpsw + '\'' +
	                ", teacher='" + teacher + '\'' +
	                ", course='" + course + '\'' +
	                ", classcode='" + classcode + '\'' +
	                '}';
	    }
	}

Package dao

interface courseDao


	package cn.zjnu.address.dao;
	
	import cn.zjnu.address.model.course;
	
	public interface courseDao {
	    course selectcourseA(String username);
	    course selectcourseB(String username);
	}

courseDao.xml


	<?xml version="1.0" encoding="UTF-8" ?>
	<!DOCTYPE mapper
	        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
	<mapper namespace="cn.zjnu.address.dao.courseDao">
	    <select id="selectcourseA" resultType="cn.zjnu.address.model.course">
	        select t.course from teacher_course t
	            join stu_classes s
	            on s.classA = t.classcode
	            where s.stunum=(select stunum from student where username=#{username})
	    </select>
	    <select id="selectcourseB" resultType="cn.zjnu.address.model.course">
	        select t.course from teacher_course t
	            join stu_classes s
	            on s.classB = t.classcode
	            where s.stunum=(select stunum from student where username=#{username})
	    </select>
	</mapper>

interface Stu_ClassesDao


	package cn.zjnu.address.dao;
	
	import cn.zjnu.address.model.Stu_Classes;
	import org.apache.ibatis.annotations.Param;
	
	import java.util.List;
	
	public interface Stu_ClassesDao {
	    int registerInsert(Stu_Classes stu);
	    int updateCourseA(@Param("stunum")Integer stunum,@Param("classcode") String classcode);
	    int updateCourseB(@Param("stunum")Integer stunum,@Param("classcode") String classcode);
	    List<Stu_Classes> selectByclasscode(String classcode);
	    Stu_Classes selectByclasscode2(@Param("stunum") Integer stunum,@Param("classcode") String classcode);
	}

Stu_ClassesDao.xml


	<?xml version="1.0" encoding="UTF-8" ?>
	<!DOCTYPE mapper
	        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
	<mapper namespace="cn.zjnu.address.dao.Stu_ClassesDao">
	    <insert id="registerInsert">
	        insert into stu_classes values(#{stunum},#{mathclass},#{computerclass},#{Englishclass},#{classA},#{classB})
	    </insert>
	    <update id="updateCourseA">
	        update stu_classes set classA=#{classcode} where stunum=#{stunum}
	    </update>
	    <update id="updateCourseB">
	        update stu_classes set classB=#{classcode} where stunum=#{stunum}
	    </update>
	    <select id="selectByclasscode" resultType="cn.zjnu.address.model.Stu_Classes">
	        select * from stu_classes where mathclass=#{classcode} or computerclass=#{classcode}
	        or Englishclass=#{classcode} or classA=#{classcode} or classB=#{classcode}
	    </select>
	    <select id="selectByclasscode2" resultType="cn.zjnu.address.model.Stu_Classes">
	        select * from stu_classes where (mathclass=#{classcode} or computerclass=#{classcode}
	        or Englishclass=#{classcode} or classA=#{classcode} or classB=#{classcode}) and stunum=#{stunum}
	    </select>
	</mapper>
      

interface StudentDao


	package cn.zjnu.address.dao;
	
	import cn.zjnu.address.model.StuInfo;
	import cn.zjnu.address.model.Student;
	import cn.zjnu.address.model.Stuscore;
	import org.apache.ibatis.annotations.Param;
	
	import java.util.List;
	
	public interface StudentDao {
	    List<Student> selectAll();
	    Student Loginselect(@Param("username") String username, @Param("password")String password);
	    Student Registerselectstunum(@Param("stunum") Integer stunum);
	    Student Registerselectusername(@Param("username") String username);
	    int UserRegister(Student student);
	    StuInfo selectInfo(String username);
	    List<StuInfo> selectById(List<Integer> idlist);
	}

StudentDao.xml


	<?xml version="1.0" encoding="UTF-8" ?>
	<!DOCTYPE mapper
	        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
	<mapper namespace="cn.zjnu.address.dao.StudentDao">
	    <select id="selectAll" resultType="cn.zjnu.address.model.Student">
	        select * from student
	    </select>
	    <select id="Loginselect" resultType="cn.zjnu.address.model.Student">
	        select username, password from student where username=#{username} and password=#{password}
	    </select>
	    <select id="Registerselectstunum" resultType="cn.zjnu.address.model.Student">
	        select * from student where stunum=#{stunum}
	    </select>
	    <select id="Registerselectusername" resultType="cn.zjnu.address.model.Student">
	        select * from student where username=#{username}
	    </select>
	    <select id="selectInfo" resultType="cn.zjnu.address.model.StuInfo">
	        select stunum,name,email,username from student where username=#{username}
	    </select>
	    <insert id="UserRegister">
	        insert into student values(#{stunum},#{name},#{age},#{email},#{username},#{password})
	    </insert>
	    <select id="selectById" resultType="cn.zjnu.address.model.StuInfo">
	        select * from student where stunum in
	        <foreach collection="list" item="stunum" open="(" close=")" separator=",">
	            #{stunum}
	        </foreach>
	    </select>
	</mapper>
      

interface StuscoreDao


	package cn.zjnu.address.dao;
	
	import cn.zjnu.address.model.Stuscore;
	import org.apache.ibatis.annotations.Param;
	
	public interface StuscoreDao {
	    int insertStuscore(Stuscore stuscore);
	    Stuscore selectScore(Integer stunum);
	    int chooseUpdate(@Param("stunum") Integer stunum);
	    int updateScore(@Param("stunum") Integer stunum, @Param("course") String course, @Param("score") Integer score);
	}

StuscoreDao.xml


	<?xml version="1.0" encoding="UTF-8" ?>
	<!DOCTYPE mapper
	        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
	<mapper namespace="cn.zjnu.address.dao.StuscoreDao">
	    <insert id="insertStuscore">
	        insert into stuscore values(#{stunum},#{mathscore},#{computerscore},#{Englishscore},#{selfcourseA},#{selfcourseB})
	    </insert>
	    <select id="selectScore" resultType="cn.zjnu.address.model.Stuscore">
	        select * from stuscore where stunum=#{stunum}
	    </select>
	    <update id="chooseUpdate">
	        update stuscore set selfcourseA=0, selfcourseB=0 where stunum=#{stunum}
	    </update>
	    <update id="updateScore">
	        update stuscore set ${course}=#{score} where stunum=#{stunum}
	    </update>
	</mapper>
     

interface Teacher_CourseDao


	package cn.zjnu.address.dao;
	
	import cn.zjnu.address.model.Teacher_Course;
	import org.apache.ibatis.annotations.Param;
	
	public interface Teacher_CourseDao {
	    Teacher_Course loginselect(@Param("tchnum") Integer tchnum, @Param("tchpsw")String tchpsw);
	    Teacher_Course selectCourse(String course);
	    Teacher_Course selectBytchnum(Integer tchnum);
	}

Teacher_CourseDao.xml


	<?xml version="1.0" encoding="UTF-8" ?>
	<!DOCTYPE mapper
	        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
	<mapper namespace="cn.zjnu.address.dao.Teacher_CourseDao">
	    <select id="loginselect" resultType="cn.zjnu.address.model.Teacher_Course">
	        select tchnum, tchpsw from teacher_course where tchnum=#{tchnum} and tchpsw=#{tchpsw}
	    </select>
	    <select id="selectCourse" resultType="cn.zjnu.address.model.Teacher_Course">
	        select * from teacher_course where course=#{course}
	    </select>
	    <select id="selectBytchnum" resultType="cn.zjnu.address.model.Teacher_Course">
	        select * from teacher_course where tchnum=#{tchnum}
	    </select>
	</mapper>
      

Package utils

MyBatisUtils


	package cn.zjnu.address.utils;
	
	import org.apache.ibatis.io.Resources;
	import org.apache.ibatis.session.SqlSession;
	import org.apache.ibatis.session.SqlSessionFactory;
	import org.apache.ibatis.session.SqlSessionFactoryBuilder;
	
	import java.io.IOException;
	import java.io.InputStream;
	
	public class MyBatisUtils {
	
	    private static SqlSessionFactory factory = null;
	    static {
	        String config = "mybatis.xml";
	        try {
	            InputStream in = Resources.getResourceAsStream(config);
	            factory = new SqlSessionFactoryBuilder().build(in);
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    }
	
	    public static SqlSession getSqlSession(){
	        SqlSession sqlSession = null;
	        if(factory != null){
	            sqlSession= factory.openSession();
	        }
	        return sqlSession;
	    }
	}

Package viewAndcontroller

LoginViewController


	package cn.zjnu.address.viewAndcontroller;
	
	
	import cn.zjnu.address.Main;
	import cn.zjnu.address.dao.StudentDao;
	import cn.zjnu.address.dao.Teacher_CourseDao;
	import cn.zjnu.address.model.ClassStuInfo;
	import cn.zjnu.address.model.Student;
	import cn.zjnu.address.model.Teacher_Course;
	import cn.zjnu.address.utils.MyBatisUtils;
	import javafx.fxml.FXML;
	import javafx.scene.control.Button;
	import javafx.scene.control.CheckBox;
	import javafx.scene.control.Label;
	import javafx.scene.control.TextField;
	import javafx.scene.layout.GridPane;
	import javafx.scene.layout.HBox;
	import javafx.scene.text.Text;
	import org.apache.ibatis.session.SqlSession;
	
	import java.util.List;
	
	
	public class LoginViewController {
	    @FXML
	    private GridPane grid;
	    @FXML
	    private Label welcome;
	    @FXML
	    private Label usename;
	    @FXML
	    private Label passwsd;
	    @FXML
	    private TextField userTextField;
	    @FXML
	    private TextField pwdTextField;
	    @FXML
	    private Button btn;
	    @FXML
	    private Button btn2;
	    @FXML
	    private HBox hbBtn;
	    @FXML
	    private Text actiontarget;
	    @FXML
	    private CheckBox loginchoose;
	
	    private Main main;
	
	    @FXML
	    public void handleLogin() {
	        if(!loginchoose.isSelected()){
	            String username = userTextField.getText();
	            String password = pwdTextField.getText();
	            SqlSession sqlSession = MyBatisUtils.getSqlSession();
	            StudentDao dao = sqlSession.getMapper(StudentDao.class);
	            Student student = new Student();
	            student = dao.Loginselect(username, password);
	            sqlSession.close();
	            if (student != null) {
	                actiontarget.setText("登陆成功!");
	                main.showStudentView(username);
	            } else {
	                actiontarget.setText("登陆失败!");
	            }
	        }else {
	            Integer tchnum = Integer.parseInt(userTextField.getText());
	            String  tchpsw = pwdTextField.getText();
	            SqlSession sqlSession = MyBatisUtils.getSqlSession();
	            Teacher_CourseDao dao = sqlSession.getMapper(Teacher_CourseDao.class);
	            Teacher_Course teacher_course = dao.loginselect(tchnum,tchpsw);
	            sqlSession.close();
	            if(teacher_course != null){
	                actiontarget.setText("登陆成功!");
	                List<ClassStuInfo> list = main.getStudentData(tchnum);
	                main.setStudentData(list);
	                main.showTeacherView(tchnum);
	            } else {
	                actiontarget.setText("登陆失败!");
	            }
	        }
	    }
	
	    @FXML
	    public void handleRegister() {
	        boolean okClicked = main.showUserRegister();
	    }
	
	    public void setMain(Main main){
	        this.main = main;
	    }
	}

StudentViewController


	package cn.zjnu.address.viewAndcontroller;
	
	import cn.zjnu.address.Main;
	import cn.zjnu.address.dao.*;
	import cn.zjnu.address.model.*;
	import cn.zjnu.address.utils.MyBatisUtils;
	import javafx.fxml.FXML;
	import javafx.scene.control.Alert;
	import javafx.scene.control.Button;
	import javafx.scene.control.CheckBox;
	import javafx.scene.control.Label;
	import javafx.scene.text.Text;
	import javafx.stage.Stage;
	import org.apache.ibatis.session.SqlSession;
	
	import java.util.ArrayList;
	import java.util.List;
	
	
	public class StudentViewController {
	    @FXML
	    private Text stunumview;
	    @FXML
	    private Text nameview;
	    @FXML
	    private Text emailview;
	    @FXML
	    private Text username;
	    @FXML
	    private Text mathscore;
	    @FXML
	    private Text computerscore;
	    @FXML
	    private Text Englishscore;
	    @FXML
	    private Text selfcourseA;
	    @FXML
	    private Text selfcourseB;
	    @FXML
	    private CheckBox physics;
	    @FXML
	    private CheckBox chinese;
	    @FXML
	    private CheckBox health;
	    @FXML
	    private CheckBox filmapp;
	    @FXML
	    private Button okchoose;
	    @FXML
	    private Label courseA;
	    @FXML
	    private Label courseB;
	
	    private Stage dialogStage;
	
	    private Main main;
	
	    public Text getStunumview() {
	        return stunumview;
	    }
	
	    private Integer choosecount = 0;
	
	    public void setMain(Main main){
	        this.main = main;
	    }
	
	    public void setCourseA(String courseA) {
	        this.courseA.setText(courseA);
	    }
	
	    public void setCourseB(String courseB) {
	        this.courseB.setText(courseB);
	    }
	
	    public void setStunumview(Text stunumview) {
	        this.stunumview = stunumview;
	    }
	
	    public void setDialogStage(Stage dialogStage){
	        this.dialogStage = dialogStage;
	    }
	
	    public void setInfoText(String user){
	        SqlSession sqlSession = MyBatisUtils.getSqlSession();
	        StudentDao dao = sqlSession.getMapper(StudentDao.class);
	        StuInfo stuInfo = new StuInfo();
	        stuInfo = dao.selectInfo(user);
	        stunumview.setText(Integer.toString(stuInfo.getStunum()));
	        username.setText(stuInfo.getUsername());
	        nameview.setText(stuInfo.getName());
	        emailview.setText(stuInfo.getEmail());
	        sqlSession.close();
	    }
	
	    public void setScore(Integer stunum){
	        SqlSession sqlSession = MyBatisUtils.getSqlSession();
	        StuscoreDao dao = sqlSession.getMapper(StuscoreDao.class);
	        Stuscore stuscore = new Stuscore();
	        stuscore = dao.selectScore(stunum);
	        sqlSession.close();
	        if(stuscore.getMathscore() != null){
	            mathscore.setText(Integer.toString(stuscore.getMathscore()));
	        }else{
	            mathscore.setText("NULL");
	        }
	        if(stuscore.getComputerscore() != null){
	            computerscore.setText(Integer.toString(stuscore.getComputerscore()));
	        }else{
	            computerscore.setText("NULL");
	        }
	        if(stuscore.getEnglishscore() != null){
	            Englishscore.setText(Integer.toString(stuscore.getEnglishscore()));
	        }else{
	            Englishscore.setText("NULL");
	        }
	        if(stuscore.getSelfcourseA() != null){
	            selfcourseA.setText(Integer.toString(stuscore.getSelfcourseA()));
	        }else{
	            selfcourseA.setText("NULL");
	        }
	        if(stuscore.getSelfcourseB() != null){
	            selfcourseB.setText(Integer.toString(stuscore.getSelfcourseB()));
	        }else{
	            selfcourseB.setText("NULL");
	        }
	    }
	
	    public String getClasscode(){
	        return null;
	    }
	
	    public void setCourse(String username){
	        SqlSession sqlSession = MyBatisUtils.getSqlSession();
	        courseDao dao = sqlSession.getMapper(courseDao.class);
	        course cA = dao.selectcourseA(username);
	        course cB = dao.selectcourseB(username);
	        String courseA = "";
	        String courseB = "";
	        if(cA != null){
	            courseA = cA.getCourse();
	        }else{
	            courseA = "null";
	        }
	        if(cB != null){
	            courseB = cB.getCourse();
	        }else{
	            courseB = "null";
	        }
	        this.setCourseA(this.changetochinese(courseA));
	        this.setCourseB(this.changetochinese(courseB));
	    }
	
	    private String changetochinese(String course){
	        if("physics".equals(course)){
	            course = "大学物理";
	        } else if ("chinese".equals(course)){
	            course = "汉语词汇与文化";
	        } else if ("health".equals(course)){
	            course = "大学生卫生保健";
	        } else if ("filmapp".equals(course)){
	            course = "影视鉴赏";
	        }
	        return course;
	    }
	    @FXML
	    public void chooseCourse() {
	
	        this.choosecount = 0;
	
	        List<String> list = new ArrayList<>();
	        List<String> list1 = new ArrayList<>();
	        if (this.physics.isSelected()) {
	            this.choosecount++;
	            list.add("physics");
	            list1.add("大学物理");
	        }
	        if (this.chinese.isSelected()) {
	            this.choosecount++;
	            list.add("chinese");
	            list1.add("汉语词汇与文化");
	        }
	        if (this.health.isSelected()) {
	            this.choosecount++;
	            list.add("health");
	            list1.add("大学生卫生保健");
	        }
	        if (this.filmapp.isSelected()) {
	            this.choosecount++;
	            list.add("filmapp");
	            list1.add("影视鉴赏");
	        }
	            if (this.choosecount > 2) {
	                Alert alert = new Alert(Alert.AlertType.WARNING);
	                alert.setTitle("spill over");
	                alert.setHeaderText("Look, a Warning Dialog");
	                alert.setContentText("you can only choose two courses!");
	                alert.showAndWait();
	            } else if (choosecount == 2) {
	                okchoose.setText("选课成功!");
	                this.setCourseA(list1.get(0));
	                this.setCourseB(list1.get(1));
	                SqlSession sqlSession = MyBatisUtils.getSqlSession();
	                Teacher_CourseDao dao = sqlSession.getMapper(Teacher_CourseDao.class);
	                Teacher_Course temp = new Teacher_Course();
	                Teacher_Course temp1 = new Teacher_Course();
	                temp = dao.selectCourse(list.get(0));
	                temp1 = dao.selectCourse(list.get(1));
	
	                StudentDao dao1 = sqlSession.getMapper(StudentDao.class);
	                StuInfo stu = new StuInfo();
	                stu = dao1.selectInfo(main.getUsername());
	
	                Stu_ClassesDao dao2 = sqlSession.getMapper(Stu_ClassesDao.class);
	                int num = dao2.updateCourseA(stu.getStunum(),temp.getClasscode());
	                int num1 = dao2.updateCourseB(stu.getStunum(),temp1.getClasscode());
	                StuscoreDao dao3 = sqlSession.getMapper(StuscoreDao.class);
	                int num2 = dao3.chooseUpdate(stu.getStunum());
	                sqlSession.commit();
	                sqlSession.close();
	            }
	    }
	
	}

UserRegisterViewController


	package cn.zjnu.address.viewAndcontroller;
	
	import cn.zjnu.address.dao.Stu_ClassesDao;
	import cn.zjnu.address.dao.StudentDao;
	import cn.zjnu.address.dao.StuscoreDao;
	import cn.zjnu.address.model.Stu_Classes;
	import cn.zjnu.address.model.Student;
	import cn.zjnu.address.model.Stuscore;
	import cn.zjnu.address.utils.MyBatisUtils;
	import javafx.fxml.FXML;
	import javafx.scene.control.Alert;
	import javafx.scene.control.TextField;
	import javafx.stage.Stage;
	import org.apache.ibatis.session.SqlSession;
	
	
	public class UserRegisterViewController {
	    @FXML
	    private TextField stunumField;
	    @FXML
	    private TextField nameField;
	    @FXML
	    private TextField ageField;
	    @FXML
	    private TextField emailField;
	    @FXML
	    private TextField usernameField;
	    @FXML
	    private TextField passwordField;
	
	    private Stage dialogStage;
	    private Student student;
	    private boolean okClicked = false;
	
	    private void initialize(){
	    }
	
	    public void setDialogStage(Stage dialogStage){
	        this.dialogStage = dialogStage;
	    }
	
	    public UserRegisterViewController() {
	    }
	
	    public boolean isOkClicked() {
	        return okClicked;
	    }
	
	    public Student getStudent(){
	        return this.student;
	    }
	
	    @FXML
	    private void handleOk() {
	        if (isInputValid()) {
	            Integer stunum = Integer.parseInt(stunumField.getText());
	            String name = nameField.getText();
	            Integer age = Integer.parseInt(ageField.getText());
	            String email = emailField.getText();
	            String username = usernameField.getText();
	            String password = passwordField.getText();
	            Student student1 = new Student();
	            student1.setStunum(stunum);
	            student1.setName(name);
	            student1.setAge(age);
	            student1.setEmail(email);
	            student1.setUsername(username);
	            student1.setPassword(password);
	
	            Stu_Classes stu = new Stu_Classes();
	            stu.setStunum(stunum);
	            stu.setMathclass("00132");
	            stu.setComputerclass("00134");
	            stu.setEnglishclass("00155");
	            stu.setClassA("null");
	            stu.setClassB("null");
	
	            Stuscore stuscore = new Stuscore();
	            stuscore.setStunum(stunum);
	            SqlSession sqlSession = MyBatisUtils.getSqlSession();
	            StudentDao dao = sqlSession.getMapper(StudentDao.class);
	            int num = dao.UserRegister(student1);
	            StuscoreDao dao1 = sqlSession.getMapper(StuscoreDao.class);
	            int num1 = dao1.insertStuscore(stuscore);
	            Stu_ClassesDao dao2 = sqlSession.getMapper(Stu_ClassesDao.class);
	            int num2 =  dao2.registerInsert(stu);
	            sqlSession.commit();
	            sqlSession.close();
	            okClicked = true;
	            dialogStage.close();
	        }
	    }
	    @FXML
	    private void handleCancel() {
	        dialogStage.close();
	    }
	
	    private boolean isInputValid() {
	        String errorMessage = "";
	
	        if (stunumField.getText() == null || stunumField.getText().length() == 0) {
	            errorMessage += "No valid student number!\n";
	        }
	        if (nameField.getText() == null || nameField.getText().length() == 0) {
	            errorMessage += "No valid name!\n";
	        }
	        if (ageField.getText() == null || ageField.getText().length() == 0) {
	            errorMessage += "No valid age!\n";
	        }
	        if (emailField.getText() == null || emailField.getText().length() == 0) {
	            errorMessage += "No valid email name!\n";
	        }
	        if (usernameField.getText() == null || usernameField.getText().length() == 0) {
	            errorMessage += "No valid username!\n";
	        }
	        if (passwordField.getText() == null || passwordField.getText().length() == 0) {
	            errorMessage += "No valid password!\n";
	        }
	            try {
	                Integer.parseInt(ageField.getText());
	                Integer.parseInt(stunumField.getText());
	
	                    SqlSession sqlSession = MyBatisUtils.getSqlSession();
	                    StudentDao dao = sqlSession.getMapper(StudentDao.class);
	                    Student student1 = dao.Registerselectstunum(Integer.parseInt(stunumField.getText()));
	                    sqlSession.close();
	                    if(student1 != null){
	                        errorMessage += "stunum registered..\n";
	                    }
	
	
	                    SqlSession sqlSession2 = MyBatisUtils.getSqlSession();
	                    StudentDao dao2 = sqlSession2.getMapper(StudentDao.class);
	                    Student student2 = dao2.Registerselectusername(usernameField.getText());
	                    sqlSession2.close();
	                    if(student2 != null){
	                        errorMessage += "stunum registered..\n";
	                    }
	
	            } catch (NumberFormatException e) {
	                errorMessage += "No valid age or student number (must be an integer)!\n";
	            }
	
	        if (errorMessage.length() == 0) {
	            return true;
	        } else {
	            Alert alert = new Alert(Alert.AlertType.WARNING);
	            alert.setTitle("Warning Dialog");
	            alert.setHeaderText("Look, a Warning Dialog");
	            alert.setContentText(errorMessage);
	            alert.showAndWait();
	            return false;
	        }
	    }
	}

TeacherViewController

	package cn.zjnu.address.viewAndcontroller;
	
	import cn.zjnu.address.Main;
	import cn.zjnu.address.dao.Stu_ClassesDao;
	import cn.zjnu.address.model.ClassStuInfo;
	import cn.zjnu.address.model.Stu_Classes;
	import cn.zjnu.address.utils.MyBatisUtils;
	import javafx.fxml.FXML;
	import javafx.scene.control.Alert;
	import javafx.scene.control.Label;
	import javafx.scene.control.TableColumn;
	import javafx.scene.control.TableView;
	import javafx.stage.Stage;
	import org.apache.ibatis.session.SqlSession;
	
	public class TeacherViewController {
	    @FXML
	    private TableView<ClassStuInfo> ClassStuInfoTable;
	    @FXML
	    private TableColumn<ClassStuInfo,String> stunameColumn;
	    @FXML
	    private Label stunumberLabel;
	    @FXML
	    private Label stunameLabel;
	    @FXML
	    private Label scoreLabel;
	    @FXML
	    private Label emailLabel;
	    @FXML
	    private Label courseLabel;
	    @FXML
	    private Label classcodeLabel;
	
	    private Main main;
	
	    private Stage dialogStage;
	
	    public void setDialogStage(Stage dialogStage) {
	        this.dialogStage = dialogStage;
	    }
	
	    @FXML
	    private void initialize() {
	        stunameColumn.setCellValueFactory(cellData -> cellData.getValue().stunameProperty());
	        showStuDetails(null);
	        ClassStuInfoTable.getSelectionModel().selectedItemProperty().addListener(
	                (observable,oldValue,newValue) ->showStuDetails(newValue));
	    }
	
	    public void setMain(Main main) {
	        this.main = main;
	        ClassStuInfoTable.setItems(main.getStudentData());
	    }
	
	    private void showStuDetails(ClassStuInfo stu){
	        if(stu!=null){
	            stunumberLabel.setText(Integer.toString(stu.getStunumber()));
	            stunameLabel.setText(stu.getStuname());
	            scoreLabel.setText(Integer.toString(stu.getScore()));
	            emailLabel.setText(stu.getEmail());
	            courseLabel.setText(stu.getCourse());
	            classcodeLabel.setText(stu.getClasscode());
	        } else {
	            stunumberLabel.setText("");
	            stunameLabel.setText("");
	            scoreLabel.setText("");
	            emailLabel.setText("");
	            courseLabel.setText("");
	            classcodeLabel.setText("");
	        }
	    }
	    @FXML
	    private void editStuscore() {
	        ClassStuInfo selectedInfo = ClassStuInfoTable.getSelectionModel().getSelectedItem();
	        String course = courseLabel.getText();
	        String classcode = classcodeLabel.getText();
	        System.out.println(course);
	        if (selectedInfo != null) {
	            if ("math".equals(course)) {
	                course = "mathscore";
	            } else if ("computer".equals(course)) {
	                course = "computerscore";
	            } else if ("English".equals(course)) {
	                course = "Englishscore";
	            }
	
	            SqlSession sqlSession = MyBatisUtils.getSqlSession();
	
	            Stu_ClassesDao dao1 = sqlSession.getMapper(Stu_ClassesDao.class);
	            Stu_Classes stu = dao1.selectByclasscode2(Integer.parseInt(stunumberLabel.getText()),classcode);
	                if (stu.getClassA().equals(classcode)) {
	                    course = "selfcourseA";
	                } else if (stu.getClassB().equals(classcode)) {
	                    course = "selfcourseB";
	                } else if (stu.getMathclass().equals(classcode)) {
	                    course =  "mathscore";
	                } else if (stu.getComputerclass().equals(classcode)) {
	                    course = "computerscore";
	                } else if (stu.getEnglishclass().equals(classcode)) {
	                    course =  "Englishscore";
	                }
	            Integer okclick = 0;
	            if(course != null){
	                    okclick = main.showEditStuScoreView(Integer.parseInt(stunumberLabel.getText()), course);
	                }
	                if (okclick >= 0 && okclick <= 100) {
	                   showStuDetails(selectedInfo);
	                   scoreLabel.setText(Integer.toString(okclick));
	                }
	        } else {
	            Alert alert = new Alert(Alert.AlertType.WARNING);
	            alert.setTitle("No Selection");
	            alert.setHeaderText("No Studnent Selected");
	            alert.setContentText("Please select a student");
	            alert.showAndWait();
	        }
	    }
	
	}

EditStuscoreViewController


	package cn.zjnu.address.viewAndcontroller;
	
	import cn.zjnu.address.dao.StuscoreDao;
	import cn.zjnu.address.utils.MyBatisUtils;
	import javafx.fxml.FXML;
	import javafx.scene.control.Alert;
	import javafx.scene.control.Button;
	import javafx.scene.control.TextField;
	import javafx.stage.Stage;
	import org.apache.ibatis.session.SqlSession;
	
	public class EditStuscoreViewController {
	    @FXML
	    private TextField score;
	    @FXML
	    private Button ok;
	    @FXML
	    private Button cancel;
	
	    private Stage dialogStage;
	
	    private Integer stunum;
	
	    private String course;
	
	    public Integer getStunum() {
	        return stunum;
	    }
	
	    public void setStunum(Integer stunum) {
	        this.stunum = stunum;
	    }
	
	    public String getCourse() {
	        return course;
	    }
	
	    public void setCourse(String course) {
	        this.course = course;
	    }
	
	    public Integer getScore() {
	        return Integer.parseInt(score.getText());
	    }
	
	    private Boolean okclike = false;
	
	    public Boolean isOkclike() {
	        return okclike;
	    }
	
	    public void setDialogStage(Stage dialogStage){
	        this.dialogStage = dialogStage;
	    }
	
	    @FXML
	    private void EditCancel() {
	        dialogStage.close();
	    }
	
	    @FXML
	    private void okClike(){
	        if(stunum != null && course !=null){
	            this.update();
	        }
	    }
	
	    private void update(){
	        SqlSession sqlSession = MyBatisUtils.getSqlSession();
	        StuscoreDao dao = sqlSession.getMapper(StuscoreDao.class);
	        Integer s = this.getScore();
	        int num = 0;
	        if(s>=0 && s<=100){
	            num = dao.updateScore(stunum,course,s);
	        }else{
	            Alert alert = new Alert(Alert.AlertType.WARNING);
	            alert.setTitle("value spliting");
	            alert.setHeaderText("Digital crossing!");
	            alert.setContentText("Please put in a proper value..");
	            alert.showAndWait();
	        }
	        sqlSession.commit();
	        sqlSession.close();
	        if(num == 1){
	            okclike = true;
	        }
	        dialogStage.close();
	    }
	}
  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: JavaFX是一个基于Java的图形化用户界面框架,而MyBatis是一个Java持久化框架。将JavaFX项目整合MyBatis,可以实现数据持久化以及与数据库的交互。 首先,我们需要在JavaFX项目中引入MyBatis的依赖库。可以通过Maven或Gradle将MyBatis添加到项目的依赖中,确保可以在项目中使用MyBatis的功能。 接下来,我们需要配置MyBatis的相关配置文件。在项目的资源文件夹中,创建一个名为mybatis-config.xml的文件。在该文件中,我们可以配置数据库连接信息、Mapper映射文件的路径、加载插件等。可以参考MyBatis的官方文档来了解如何正确配置。 然后,在JavaFX项目中创建和管理数据库连接的类。可以使用MyBatis提供的DataSource或直接使用JDBC来连接数据库。在这个类中,可以加载MyBatis的配置文件,并创建一个全局的SqlSessionFactory对象,用于创建SqlSession。 接下来,我们需要编写Mapper接口和对应的Mapper映射文件。Mapper接口定义了对数据库进行操作的方法,而Mapper映射文件则定义了SQL语句和参数的映射关系。通过使用MyBatis的注解或XML配置的方式,将Mapper接口和Mapper映射文件进行关联。 最后,在JavaFX项目中通过调用SqlSession对象的方法来执行数据库操作。根据Mapper接口的定义,可以直接调用对应的方法来进行数据库查询、插入、更新等操作。MyBatis会自动将Java对象和数据库的记录进行映射,简化了数据库操作的代码。 总结起来,将JavaFX项目整合MyBatis,需要引入MyBatis的依赖库,配置MyBatis的配置文件,创建和管理数据库连接的类,编写Mapper接口和对应的映射文件,最后通过调用SqlSession对象的方法来执行数据库操作。这样,就实现了JavaFX项目与数据库的整合,实现了数据的持久化和交互。 ### 回答2: JavaFX项目整合MyBatis可以通过以下几个步骤完成: 1. 导入相关依赖:首先,在项目的pom.xml文件中添加MyBatisJavaFX相关的依赖。可以使用Maven来管理依赖。在<dependencies>标签中添加如下依赖: ``` <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-typehandlers-jsr310</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>11.0.2</version> </dependency> ``` 2. 配置MyBatis:在项目中创建一个mybatis-config.xml文件,并在文件中配置MyBatis的相关信息,如数据库连接信息、映射文件路径等。可以使用MyBatis提供的MapperScannerConfigurer来自动扫描并注册Mapper接口。 3. 创建数据访问对象(DAO):在项目中创建对应的数据访问对象接口,使用MyBatis的注解或XML文件来编写SQL语句。可以使用@Mapper注解来标识接口为Mapper接口,使用@Select、@Insert等注解来编写SQL语句。 4. 注入数据访问对象:在JavaFX的Controller类中通过@Autowired或@Resource注解将DAO对象注入到Controller中。 5. 在JavaFX中使用MyBatis:在JavaFX的界面交互逻辑中,通过调用注入的数据访问对象的方法来进行数据库操作,如查询数据、插入数据等。 综上所述,整合JavaFX项目MyBatis主要需要导入相关依赖、配置MyBatis、创建数据访问对象接口、注入数据访问对象,并在JavaFX中调用数据访问对象来完成数据库操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

num_xiaotian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值