私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
序文:
先月はjavafxとmysqlデータベースを勉強したので、学生管理システムを書きました。 先月は復習していたり、やるべきことがあったので、かなり忙しかったので、このプロジェクトページは更新していませんでした。内容は比較的単純なので、この点に興味のある学生に役立つことを願っています。
🥰个人主页:ハートc
🤓文章专题:javafx+mysql管理システム
👐欢迎大家点赞👍 收藏😽
目次
ログイン インターフェイスとプロンプト ウィンドウ (otherView):
(ここでは、いくつかの MVC フレームワーク構造を使用しています。コードの量はそれほど多くありませんが、この方法で記述すると、コードがより簡潔で理解しやすく、高度に構造化されると思います)
ログインインターフェイスについて(ログインインターフェイスについて、テキスト入力ボックスについていくつかの判断を書きました--)データベースの判定は正しく、一部の非 null 判定--)
(これらのページはどれも似ていると思ったので、ここでは生徒を追加するためのインターフェイスのみを示します)
メイン ウィンドウに関しては、静的ステージをメイン ステージとして定義し、start メソッドのステージ値を静的ステージに割り当てました。このステージを設定する目的は、ログイン インターフェイスなど、私が作成した他のメソッドを統合することです。メソッド内のシーンは静的ステージに配置されるため、コードが実行されるとき、私のページは常にメインステージを使用でき、インターフェイスが乱雑に表示されることもありません。
- public class endView extends Application {
-
- public static Stage stage;
- public static student student0;
- public static course course0;
- public static score score0;
- @Override
- public void start(Stage stage) {
- endView.stage=stage;//这里将主舞台赋值给静态舞台
- stage.setTitle("学生管理系统");
- stage.setResizable(false);
- otherView.login();
- endView.stage.show();
- }
-
- public static void main(String[] args) {
- launch(args);
- }
-
- }
- //设置登录界面
- public static void login() {
- //创建网格面板
- GridPane gp=new GridPane();
- gp.setVgap(10);
- gp.setHgap(10);
- //创建标签
- Label idL=new Label("id");
- Label passwordL=new Label("密码");
- //创建输入框
- TextField tf=new TextField();
- PasswordField pf=new PasswordField();
- tf.setPromptText("请输入您的id号");
- pf.setPromptText("请输入6位数密码");
- //创建单选按钮
- RadioButton stuB=new RadioButton("学生");
- RadioButton teaB=new RadioButton("管理员");
- //创建单选按钮组
- ToggleGroup tg=new ToggleGroup();
- stuB.setToggleGroup(tg);
- teaB.setToggleGroup(tg);
-
- //创建单行面板
- HBox hBox1=new HBox();
- hBox1.setAlignment(Pos.CENTER);
- hBox1.setSpacing(10);
- hBox1.getChildren().addAll(stuB,teaB);
- //创建登录注册按钮
- Button loginB=new Button("登录");
-
- //给单选按钮组添加监听事件
- tg.selectedToggleProperty().addListener(((observableValue, toggle, t1) -> {
- if(t1.equals(stuB)){
- idL.setText("id");
- }else if(t1.equals(teaB)){
- idL.setText("姓名");
-
- }
- }));
-
- loginB.setOnAction(actionEvent -> {
- // 如果内容不为空
- try {
- String idS=tf.getText().trim();
- String passwordS=pf.getText().trim();
- Toggle selectedToggle = tg.getSelectedToggle(); // 获取选中的单选按钮
- if (selectedToggle != null && selectedToggle.equals(stuB)) { // 检查选中的按钮是否为学生按钮
- if (studentDao.login(idS,passwordS)) {
- studentView.stu_login(Integer.parseInt(idS));
- }else if((idS.isEmpty()||passwordS.isEmpty())){
- tipJframe("id或密码不能为空");
- }else{
- tipJframe("id或密码输入错误");
- }
- }
- else if(selectedToggle !=null && selectedToggle.equals(teaB)){
- if(judgeDao.magLogin(idS,passwordS)){
- magView.mag_login();
- }else if((idS.isEmpty()||passwordS.isEmpty())){
- tipJframe("姓名或密码不可为空");
- }else {
- tipJframe("姓名或密码输入错误");
- }
- }else {
- tipJframe("你是什么人");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
-
- HBox hBox2=new HBox();
- hBox2.setAlignment(Pos.CENTER);
- hBox2.setSpacing(10);
- hBox2.getChildren().add(loginB);
- //将节点添加到面板当中
- gp.add(idL,0,0);
- gp.add(passwordL,0,1);
- gp.add(tf,1,0);
- gp.add(pf,1,1);
- gp.add(hBox1,1,2);
- gp.add(hBox2,1,3);
- gp.setAlignment(Pos.BASELINE_LEFT);
- //设置面板内边距
- gp.setPadding(new Insets(40,20,10,70));
- //设置面板垂直间距
- gp.setVgap(16);
- Scene scene=new Scene(gp,360,240);
- endView.stage.setScene(scene);
-
- }
- //增加弹出界面
- public static void tipJframe(String str){
- Label label=new Label(str);
- Button rebackB=new Button("返回");
- VBox vBox=new VBox(label,rebackB);
- vBox.setSpacing(10);
- vBox.setAlignment(Pos.CENTER);
- Scene scene=new Scene(vBox,150,100);
- Stage stage1=new Stage();
- stage1.setScene(scene);
- stage1.setTitle("提示");
- stage1.show();
- rebackB.setOnAction(actionEvent -> {
- stage1.close();
- });
-
- }
以下に私が書いた 3 つのインターフェースを示します。上の学生ログインの図と比較すると、合計 3 つのメソッドに対応します。もちろん、後の 2 つのメソッド (スコア クエリと情報クエリ) は、最初の stu_login メソッドに配置されます。ボタンモニターの動作と機能
- //学生登录后界面
- public static void stu_login(int stu_Id){
- Label label=new Label("学生查询系统");
- Button informationB=new Button("个人信息");
- Button gradeB=new Button("成绩查询");
- Button returnLogin=new Button("返回登录");
-
- //设置按钮字体颜色
- informationB.setTextFill(Color.BLUE);
- gradeB.setTextFill(Color.BLUE);
- returnLogin.setTextFill(Color.BLUE);
-
- //设置字体样式
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 20);
- label.setFont(font);
- informationB.setFont(font);
- gradeB.setFont(font);
- returnLogin.setFont(font);
-
- //为按钮添加监听事件
- //信息查询
- informationB.setOnAction(actionEvent -> {
- try {
- informationInquire(stu_Id);
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
- //成绩查询
- gradeB.setOnAction(actionEvent -> {
- try {
- gradeInquire(stu_Id);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- //返回登录
- returnLogin.setOnAction(actionEvent -> otherView.login());
-
- //添加竖直方向面板
- VBox vBox=new VBox(20,label,informationB,gradeB,returnLogin);
- vBox.setAlignment(Pos.CENTER);
- Scene scene=new Scene(vBox,400,300);
- endView.stage.setScene(scene);
-
- }
- //学生信息查询
- public static void informationInquire(int stu_Id) throws Exception {
- //调用inquiry的返回值student
- student student= studentDao.returnStudent(stu_Id);
- Label idL=new Label("学号:"+student.getStu_id());
- Label classL=new Label("班级:"+student.getStu_class());
- Label nameL=new Label("姓名:"+student.getStu_name());
- Label genderL=new Label("性别:"+student.getStu_gender());
- Label birthL=new Label("出生日期:"+student.getStu_birth());
- Label majorL=new Label("专业:"+student.getStu_major());
- //设置字体样式
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 20);
- idL.setFont(font);
- classL.setFont(font);
- nameL.setFont(font);
- genderL.setFont(font);
- birthL.setFont(font);
- majorL.setFont(font);
-
- Button backB=new Button("返回");
- backB.setOnAction(actionEvent -> {
- stu_login(stu_Id);
- });
-
- VBox vBox=new VBox(10);
- vBox.getChildren().addAll(idL,classL,nameL,genderL,birthL,majorL,backB);
- vBox.setAlignment(Pos.CENTER);
- vBox.setSpacing(10);
- Scene scene=new Scene(vBox,360,340);
- endView.stage.setScene(scene);
-
- }
- //学生成绩查询
- public static void gradeInquire(int stu_Id) throws Exception {
- int grade=studentDao.gradeOneself(stu_Id);
- Label gradeL=new Label("您的总学分为:"+grade);
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 20);
- gradeL.setFont(font);
- VBox vBox=new VBox();
- vBox.setAlignment(Pos.CENTER);
- vBox.setPadding(new Insets(0,0,20,0));
- Button back=new Button("返回");
- back.setMinWidth(50);
- back.setMinHeight(30);
- back.setOnAction(actionEvent -> {
- stu_login(stu_Id);
- });
- vBox.getChildren().addAll(gradeL,back);
- Scene scene=new Scene(vBox,340,150);
- endView.stage.setScene(scene);
- }
ユーティリティ:
- private static final String URL = "jdbc:mysql:///studentMs";
- private static final String USER = "root";
- private static final String PASSWORD = "123321";
-
- //获取连接对象
- public static Connection getCon() {
- try {
- return DriverManager.getConnection(URL, USER, PASSWORD);
- } catch (SQLException e) {
- e.printStackTrace();
- return null;
- }
-
- }
-
- //关闭资源
- public static void close(ResultSet rs, PreparedStatement ps, Connection con) {
-
- try {
- if (rs != null) {
- rs.close();
- }
- if (ps != null) {
- ps.close();
- }
- if (con != null) {
- con.close();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
-
- }
-
- //执行mysql
- public static boolean exeUpdate(String sql, Object... params) {
- //获取连接对象
- Connection con = getCon();
- PreparedStatement ps = null;
- try {
- //获取编译对象
- ps = con.prepareStatement(sql);
- //判断参数是否为空
- if (Objects.nonNull(params)) {
- for (int i = 0; i < params.length; i++) {
- //实现占位赋值
- ps.setObject(i + 1, params[i]);
- }
- }
- //执行更新
- return ps.executeUpdate() > 0;
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- close(null, ps, con);
- }
- return false;
- }
学生道*:
その上StudentDao のすべてのステートメントではなく、学生のログインに関する jdbc ステートメントのみが表示されます。、これはアイデアをより明確にするために書かれたもので、非常に単純だと思われる場合は、以下の全体のコードをご覧ください。
- //学生登录判断
- public static boolean login(String idStr, String passwordStr) throws Exception {
-
- String sql = "select * from student where stuID =? and stuPassword=?";
- PreparedStatement ps = utilDao.getCon().prepareStatement(sql);
- ps.setString(1,idStr);
- ps.setString(2, passwordStr);
- ResultSet rs = ps.executeQuery();
-
- if (rs.next()) {
- utilDao.close(rs,ps, utilDao.getCon());
- return true;
- } else {
- utilDao.close(rs,ps,utilDao.getCon());
- return false;
- }
-
-
- }
-
- //学生查询自己成绩
- public static Integer gradeOneself(int stu_id) throws Exception {
- String sql = "SELECT SUM(credit) AS gradesum FROM score WHERE stuID=?";
-
- try (Connection connection =utilDao.getCon();
- PreparedStatement ps = connection.prepareStatement(sql)) {
-
- ps.setInt(1, stu_id);
- try (ResultSet rs = ps.executeQuery()) {
- if (rs.next()) {
- int gradesum = rs.getInt("gradesum");
- return gradesum;
- } else {
- // 如果没有查询到结果,可以返回 null 或者其他合适的值
- return null;
- }
- }
- }
- }
-
- //返回学生信息
- public static student returnStudent(int stu_id)throws Exception{
-
- student student=new student();
- String sql="select stuID,stuClass,stuName,stuSex,stuBirth,stuMajor,stuPassword from student where stuID=?";
- PreparedStatement ps=utilDao.getCon().prepareStatement(sql);
- //过滤其他的只留下ID为1的学生
- ps.setString(1,String.valueOf(stu_id));
- ResultSet rs=ps.executeQuery();
- if(rs.next()){
- student.setStu_id(rs.getInt("stuID"));
- student.setStu_class(rs.getString("stuClass"));
- student.setStu_name(rs.getString("stuName"));
- student.setStu_gender(rs.getString("stuSex"));
- student.setStu_birth(rs.getString("stuBirth"));
- student.setStu_major(rs.getString("stuMajor"));
- student.setStu_password(rs.getString("stuPassword"));
- }
- rs.close();
- ps.close();
- return student;
- }
---これは学生ログイン用のコードです---
以下は、管理者設定のインターフェースメソッドで、ページ表示の最初の4つの管理者ログインに対応する、合計4つのメソッドがあります。createTableViewメソッドについては、私が作成して使用しました。テーブルビューのコードの一部に、student などのオブジェクトを追加するだけなので、インターフェイスを作成する他の 4 つのメソッドは特に気にする必要はありません。ページ表示の最初の 4 つの管理者ログインは、インターフェイスの作成に使用されます。1 つはログイン後のインターフェイス メソッドであり、最後の 3 つはログイン後のパネルの最初の 3 つのボタンのアクション監視によって呼び出されるメソッドです。ログイン。
- //管理员登录界面
- public static void mag_login(){
- Label magL=new Label("管理员查询系统");
- VBox vBox=new VBox();
- vBox.setAlignment(Pos.CENTER);
- vBox.setSpacing(30);
- Button informationB= new Button("查询学生信息");
- Button courseB=new Button("查看课程");
- Button gradeB=new Button("查看学生成绩");
- Button rebackB=new Button("返回登录界面");
- rebackB.setOnAction(actionEvent -> {
- otherView.login();
- });
- informationB.setOnAction(actionEvent -> {
- try {
- magStudent();
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
-
- courseB.setOnAction(actionEvent -> {
- try {
- magCourse();
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
- gradeB.setOnAction(actionEvent -> {
- try {
- magScore();
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
- rebackB.setOnAction(actionEvent -> {
- try {
- otherView.login();
- } catch (Exception e) {
- e.printStackTrace();
- }
- });
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 20);
- magL.setFont(font);
- informationB.setFont(font);
- courseB.setFont(font);
- gradeB.setFont(font);
- rebackB.setFont(font);
- magL.setTextFill(Color.BLACK);
- informationB.setTextFill(Color.BLUE);
- courseB.setTextFill(Color.BLUE);
- gradeB.setTextFill(Color.BLUE);
- rebackB.setTextFill(Color.BLUE);
- vBox.getChildren().addAll(magL,informationB,courseB,gradeB,rebackB);
- Scene scene=new Scene(vBox,360,400);
- endView.stage.setScene(scene);
-
-
- }
-
- //管理员查看学生信息界面
- public static void magStudent() throws Exception {
- BorderPane bp=new BorderPane();
-
- TableView<student> tableView = createTableView1();
-
- Label studentL=new Label("学生信息管理");
- Button addB=new Button("添加学生");
- Button updateB=new Button("修改学生");
- Button deleteB=new Button("删除学生");
- Button backB=new Button("返回");
- addB.setOnAction(actionEvent -> {
- try {
- studentUtil.studentAdd();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- updateB.setOnAction(actionEvent -> {
- try {
- studentUtil.studentUpdate();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- deleteB.setOnAction(actionEvent -> {
- try {
- studentUtil.studentDelete();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- backB.setOnAction(actionEvent -> {
- mag_login();
- });
-
- addB.setMinWidth(70);
- updateB.setMinWidth(70);
- deleteB.setMinWidth(70);
- addB.setMinHeight(35);
- updateB.setMinHeight(35);
- deleteB.setMinHeight(35);
- addB.setTextFill(Color.INDIANRED);
- updateB.setTextFill(Color.INDIANRED);
- deleteB.setTextFill(Color.INDIANRED);
- backB.setTextFill(Color.INDIANRED);
- addB.setBorder(Border.stroke(Color.LIGHTPINK));
- updateB.setBorder(Border.stroke(Color.LIGHTPINK));
- deleteB.setBorder(Border.stroke(Color.LIGHTPINK));
- backB.setBorder(Border.stroke(Color.LIGHTPINK));
- backB.setOnAction(actionEvent -> {
- mag_login();
- });
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 20);
- studentL.setFont(font);
- studentL.setTextFill(Color.RED);
-
- VBox vBox=new VBox();
- vBox.getChildren().addAll(studentL,addB,updateB,deleteB,backB);
- vBox.setAlignment(Pos.CENTER);
- vBox.setSpacing(20);
- vBox.setPadding(new Insets(50));
-
- BorderPane bp1=new BorderPane();
- bp1.setTop(vBox);
- BorderPane bp2=new BorderPane();
- bp2.setRight(tableView);
-
- // 获取学生列表,将集合转换成ObservableList
- ArrayList<student> students = studentDao.initStudent();
- // 将学生列表转换为ObservableList
- ObservableList<student> stuObs = FXCollections.observableArrayList(students);
- // 将 ObservableList 设置为 TableView 的数据源
- tableView.setItems(stuObs);
-
-
- bp.setLeft(bp1);
- bp.setCenter(bp2);
-
- Scene scene = new Scene(bp, 650, 350);
- endView.stage.setScene(scene);
-
- }
- //绑定学生面板
- public static TableView<student> createTableView1() {
-
- TableView<student> tableView = new TableView<>();
-
- TableColumn<student, Integer> idCol = new TableColumn<>("ID");
- idCol.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getStu_id()).asObject());
-
- TableColumn<student, String> classCol = new TableColumn<>("班级");
- classCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getStu_class()));
-
- TableColumn<student, String> nameCol = new TableColumn<>("姓名");
- nameCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getStu_name()));
-
- TableColumn<student, String> sexCol = new TableColumn<>("性别");
- sexCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getStu_gender()));
-
- TableColumn<student, String> birthCol = new TableColumn<>("出生日期");
- birthCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getStu_birth()));
-
- TableColumn<student, String> majorCol = new TableColumn<>("所在班级");
- majorCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getStu_major()));
-
- // 添加其他表格列...
-
- tableView.getColumns().addAll(idCol, classCol, nameCol,sexCol,birthCol,majorCol);
-
- return tableView;
- }
-
- //管理员查看课程界面
- public static void magCourse() throws Exception {
- //创建面板
- BorderPane bp=new BorderPane();
- //创建第二面板
- TableView<course> tableView = createTableView2();
-
- Label studentL=new Label("学生课程管理");
- Button addB=new Button("添加课程");
- Button updateB=new Button("修改课程");
- Button deleteB=new Button("删除课程");
- Button backB=new Button("返回");
- addB.setOnAction(actionEvent -> {
- try {
- courseUtil.courseAdd();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- updateB.setOnAction(actionEvent -> {
- courseUtil.courseUpdate();
- });
- deleteB.setOnAction(actionEvent -> {
- courseUtil.courseDelete();
- });
- backB.setOnAction(actionEvent -> {
- mag_login();
- });
-
- addB.setMinWidth(70);
- updateB.setMinWidth(70);
- deleteB.setMinWidth(70);
- addB.setMinHeight(35);
- updateB.setMinHeight(35);
- deleteB.setMinHeight(35);
- addB.setTextFill(Color.INDIANRED);
- updateB.setTextFill(Color.INDIANRED);
- deleteB.setTextFill(Color.INDIANRED);
- backB.setTextFill(Color.INDIANRED);
- addB.setBorder(Border.stroke(Color.LIGHTPINK));
- updateB.setBorder(Border.stroke(Color.LIGHTPINK));
- deleteB.setBorder(Border.stroke(Color.LIGHTPINK));
- backB.setBorder(Border.stroke(Color.LIGHTPINK));
-
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 20);
- studentL.setFont(font);
- studentL.setTextFill(Color.RED);
-
- VBox vBox=new VBox();
- vBox.getChildren().addAll(studentL,addB,updateB,deleteB,backB);
- vBox.setAlignment(Pos.CENTER);
- vBox.setSpacing(20);
- vBox.setPadding(new Insets(50));
-
- BorderPane bp1=new BorderPane();
- bp1.setTop(vBox);
- BorderPane bp2=new BorderPane();
- bp2.setRight(tableView);
-
- // 获取学生列表
- ArrayList<course> courses = courseDao.initCourse();
- // 将学生列表转换为ObservableList
- ObservableList<course> stuObs = FXCollections.observableArrayList(courses);
- // 将 ObservableList 设置为 TableView 的数据源
- tableView.setItems(stuObs);
-
- bp.setLeft(bp1);
- bp.setCenter(bp2);
- Scene scene = new Scene(bp, 700, 350);
- endView.stage.setScene(scene);
-
- }
- //绑定课程面板
- public static TableView<course> createTableView2() {
-
- TableView<course> tableView = new TableView<>();
-
- TableColumn<course, Integer> idCol = new TableColumn<>("课程号");
- idCol.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getCou_id()).asObject());
-
- TableColumn<course, String> majorCol = new TableColumn<>("所属专业");
- majorCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getCou_major()));
-
- TableColumn<course, String> nameCol = new TableColumn<>("课程名称");
- nameCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getCou_name()));
-
- TableColumn<course, String> typeCol = new TableColumn<>("课程类型");
- typeCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getCou_type()));
-
- TableColumn<course, String> beginCol = new TableColumn<>("开课学期");
- beginCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getCou_beginTime()));
-
- TableColumn<course, Integer> studyCol = new TableColumn<>("学时数");
- studyCol.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getCou_studyTime()).asObject());
-
- TableColumn<course, Integer> scoreCol = new TableColumn<>("学分");
- scoreCol.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getCou_score()).asObject());
-
-
- tableView.getColumns().addAll(idCol, majorCol, nameCol,typeCol,beginCol,studyCol,scoreCol);
-
- return tableView;
- }
-
- //管理员查看学生成绩界面
- public static void magScore() throws Exception {
- BorderPane bp=new BorderPane();
- TableView<score> tableView = createTableView3();
-
- Label studentL=new Label("学生成绩管理");
- Button addB=new Button("添加成绩");
- Button updateB=new Button("修改成绩");
- Button deleteB=new Button("删除成绩");
- Button rebackB=new Button("返回");
- addB.setOnAction(actionEvent -> {
- scoreUtil.scoreAdd();
- });
- updateB.setOnAction(actionEvent -> {
- scoreUtil.scoreUpdate();
- });
-
- deleteB.setOnAction(actionEvent -> {
- scoreUtil.scoreDelete();
- });
- rebackB.setOnAction(actionEvent -> {
- mag_login();
- });
-
-
- addB.setMinWidth(70);
- updateB.setMinWidth(70);
- deleteB.setMinWidth(70);
- addB.setMinHeight(35);
- updateB.setMinHeight(35);
- deleteB.setMinHeight(35);
- addB.setTextFill(Color.INDIANRED);
- updateB.setTextFill(Color.INDIANRED);
- deleteB.setTextFill(Color.INDIANRED);
- rebackB.setTextFill(Color.INDIANRED);
- addB.setBorder(Border.stroke(Color.LIGHTPINK));
- updateB.setBorder(Border.stroke(Color.LIGHTPINK));
- deleteB.setBorder(Border.stroke(Color.LIGHTPINK));
- rebackB.setBorder(Border.stroke(Color.LIGHTPINK));
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 20);
- studentL.setFont(font);
- studentL.setTextFill(Color.RED);
-
- VBox vBox=new VBox();
- vBox.getChildren().addAll(studentL,addB,updateB,deleteB,rebackB);
- vBox.setAlignment(Pos.CENTER);
- vBox.setSpacing(10);
- vBox.setPadding(new Insets(40));
-
- BorderPane bp1=new BorderPane();
- bp1.setTop(vBox);
- BorderPane bp2=new BorderPane();
- bp2.setRight(tableView);
-
- // 获取学生列表
- ArrayList<score> scores = scoreDao.initScore();
- // 将学生列表转换为ObservableList
- ObservableList<score> stuObs = FXCollections.observableArrayList(scores);
- // 将 ObservableList 设置为 TableView 的数据源
- tableView.setItems(stuObs);
-
- bp.setLeft(bp1);
- bp.setCenter(bp2);
-
- Scene scene = new Scene(bp, 450, 300);
- endView.stage.setScene(scene);
-
- }
- //绑定成绩面板
- public static TableView<score> createTableView3() {
-
- TableView<score> tableView = new TableView<>();
-
- TableColumn<score, Integer> stuCol = new TableColumn<>("学号");
- stuCol.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getScore_id()).asObject());
-
- TableColumn<score, Integer> idCol = new TableColumn<>("课程号");
- idCol.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getScore_cid()).asObject());
-
- TableColumn<score, String> studyCol = new TableColumn<>("学数");
- studyCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getSocre_score()));
-
- TableColumn<score, String> scoreCol = new TableColumn<>("学分");
- scoreCol.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getScore_credit()));
-
- tableView.getColumns().addAll(stuCol,idCol,studyCol,scoreCol);
-
- return tableView;
- }
- }
管理者ツールクラスは、操作ページで生徒の追加、生徒の変更、生徒の削除、コースの追加...を行うために使用されます。
学生(学生使用率):
- //添加学生信息
- public static void studentAdd() throws Exception {
- //添加面板
- GridPane gp=new GridPane();
- Label idL=new Label("学号");
- Label classL=new Label("班级");
- Label nameL=new Label("姓名");
- Label sexL=new Label("性别");
- Label birthL=new Label("出生日期");
- Label majorL=new Label("所在专业");
- Label passwordL=new Label("密码");
- //添加按钮
- Button admitB=new Button("提交");
- Button backB=new Button("返回");
- //设置字体样式
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 15);
- idL.setFont(font);
- classL.setFont(font);
- nameL.setFont(font);
- sexL.setFont(font);
- birthL.setFont(font);
- majorL.setFont(font);
- //添加输入框
- TextField idT=new TextField(String.valueOf(judgeDao.maxID()+1));
- TextField classT=new TextField();
- TextField nameT=new TextField();
- TextField sexT=new TextField();
- TextField birthT=new TextField();
- TextField majorT=new TextField();
- TextField passwordT=new TextField();
- //将组件添加到面板当中
- gp.add(idL,0,0);
- gp.add(idT,1,0);
- gp.add(classL,0,1);
- gp.add(classT,1,1);
- gp.add(nameL,0,2);
- gp.add(nameT,1,2);
- gp.add(sexL,0,3);
- gp.add(sexT,1,3);
- gp.add(birthL,0,4);
- gp.add(birthT,1,4);
- gp.add(majorL,0,5);
- gp.add(majorT,1,5);
- gp.add(passwordL,0,6);
- gp.add(passwordT,1,6);
- gp.add(admitB,0,7);
- gp.add(backB,1,7);
- //设置面板样式
- gp.setPadding(new Insets(30));
- gp.setVgap(20);
- gp.setHgap(10);
- Scene scene=new Scene(gp,300,400);
- Stage stage=new Stage();
- stage.setScene(scene);
- stage.setTitle("添加学生信息");
- stage.show();
- backB.setOnAction(actionEvent -> {
- try {
- stage.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- //给提交按钮添加监听事件
- admitB.setOnAction(actionEvent -> {
- try {
- // 获取文本框中的内容并去除首尾空白
- String id = idT.getText().trim();
- String clazz = classT.getText().trim();
- String name = nameT.getText().trim();
- String sex = sexT.getText().trim();
- String birth = birthT.getText().trim();
- String major = majorT.getText().trim();
- String password = passwordT.getText().trim();
-
- // 首先进行基本的非空验证,如果有任何一个字段为空,则不进行添加操作
- if (id.isEmpty() || clazz.isEmpty() || name.isEmpty() || sex.isEmpty() || birth.isEmpty() || major.isEmpty() || password.isEmpty()) {
- otherView.tipJframe("字段不能为空");
- return;
- }else if(!((sex.equals("男")||sex.equals("女")))){
- otherView.tipJframe("请输入正常性别");
- return;
- }else if(!judgeUtil.isValidDate(birth)){
- otherView.tipJframe("日期格式不正确,请重新输入");
- return;
- }else if(!clazz.equals(judgeUtil.isClass(id))){
- otherView.tipJframe("班级格式不正确,请重新输入");
- return;
- }else if(!password.equals(judgeUtil.isPassword(id))){
- otherView.tipJframe("密码格式错误,请重新输入");
- return;
- }
- int studentId = Integer.parseInt(id);
-
- // 调用Dao层方法尝试添加学生信息
- if (studentDao.addStudent(studentId, clazz, name, sex, birth, major, password)) {
- // 添加成功后的操作
- studentDao.initStudent();
- magView.magStudent();
- otherView.tipJframe("添加成功");
- }else {
- otherView.tipJframe("添加失败");
- }
- } catch (Exception e) {
- // 捕获其他异常并打印堆栈信息
- e.printStackTrace();
- otherView.tipJframe("操作失败:" + e.getMessage()); // 提示操作失败,并显示具体的异常信息
- }
- });
-
- }
- //修改学生信息
- public static void studentUpdate(){
-
- //创建第一个面板
- GridPane gp = new GridPane();
- Label idl = new Label("ID");
- TextField idt = new TextField();
-
- //创建第一个界面的按钮
- Button admitb = new Button("提交");
- Button backb = new Button("返回");
-
- gp.add(idl,0,0);
- gp.add(idt,1,0);
- gp.add(admitb,0,1);
- gp.add(backb,0,2);
- gp.setHgap(20);
- gp.setVgap(10);
- gp.setAlignment(Pos.CENTER);
- Scene scene=new Scene(gp,240,140);
- //创建第一个舞台
- Stage stage=new Stage();
- stage.setScene(scene);
- stage.setResizable(false);
- stage.setTitle("修改学生信息");
- stage.show();
- backb.setOnAction(actionEvent -> {
- try {
- stage.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
-
- // 创建第二个舞台
- Stage stage1 = new Stage();
-
- //创建只能存储一个字符的字符串
- final int[] id = new int[1];
- final String[] clas = new String[1];
- final String[] names = new String[1];
- final String[] sexs = new String[1];
- final String[] births = new String[1];
- final String[] majors = new String[1];
- final String[] passwords=new String[1];
-
- GridPane gp1=new GridPane();
- Label idL=new Label("学号");
- Label classL=new Label("班级");
- Label nameL=new Label("姓名");
- Label sexL=new Label("性别");
- Label birthL=new Label("出生日期");
- Label majorL=new Label("所在专业");
- Label passwordL=new Label("密码");
-
- Button admitB=new Button("提交");
- Button rebackB=new Button("返回");
- rebackB.setOnAction(actionEvent -> {
- stage1.close();
- });
-
- //创建显示信息文本框
- TextField idT=new TextField(String.valueOf(id[0]));
- TextField classT=new TextField(clas[0]);
- TextField nameT=new TextField(names[0]);
- TextField sexT=new TextField(sexs[0]);
- TextField birthT=new TextField(births[0]);
- TextField majorT=new TextField(majors[0]);
- TextField passwordT=new TextField(passwords[0]);
-
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 15);
- idL.setFont(font);
- classL.setFont(font);
- nameL.setFont(font);
- sexL.setFont(font);
- birthL.setFont(font);
- majorL.setFont(font);
-
-
- gp1.add(idL,0,0);
- gp1.add(idT,1,0);
- gp1.add(classL,0,1);
- gp1.add(classT,1,1);
- gp1.add(nameL,0,2);
- gp1.add(nameT,1,2);
- gp1.add(sexL,0,3);
- gp1.add(sexT,1,3);
- gp1.add(birthL,0,4);
- gp1.add(birthT,1,4);
- gp1.add(majorL,0,5);
- gp1.add(majorT,1,5);
- gp1.add(passwordL,0,6);
- gp1.add(passwordT,1,6);
- gp1.add(admitB,0,7);
- gp1.add(rebackB,1,7);
-
- gp1.setPadding(new Insets(30));
- gp1.setVgap(20);
- gp1.setHgap(10);
- Scene scene1=new Scene(gp1,300,400);
- stage1.setScene(scene1);
- stage1.setResizable(false);
- stage1.setTitle("修改学生信息");
- stage1.close();
-
- //第一个界面的提交按钮
- admitb.setOnAction(actionEvent -> {
- String idText = idt.getText().trim();
- if (!idText.isEmpty()) {
- try {
- if (studentDao.isStudent(Integer.parseInt(idText))) {
- endView.student0=studentDao.returnStudent(Integer.parseInt(idText));
- id[0] = endView.student0.getStu_id();
- clas[0] = endView.student0.getStu_class();
- names[0] = endView.student0.getStu_name();
- sexs[0] = endView.student0.getStu_gender();
- births[0] = endView.student0.getStu_birth();
- majors[0] = endView.student0.getStu_major();
- passwords[0]=endView.student0.getStu_password();
-
- // 将值设置到文本框中
- idT.setText(String.valueOf(id[0]));
- classT.setText(clas[0]);
- nameT.setText(names[0]);
- sexT.setText(sexs[0]);
- birthT.setText(births[0]);
- majorT.setText(majors[0]);
- passwordT.setText(passwords[0]);
-
- // 显示舞台
- stage1.show();
- } else {
- otherView.tipJframe("不存在该学生");
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- } else {
- otherView.tipJframe("ID不能为空");
- }
- });
-
- //第二个界面的提交按钮
- admitB.setOnAction(actionEvent -> {
- try {
- String idd = idT.getText().trim();
- String clazz = classT.getText().trim();
- String name = nameT.getText().trim();
- String sex = sexT.getText().trim();
- String birth = birthT.getText().trim();
- String major = majorT.getText().trim();
- String password=passwordT.getText().trim();
-
- // 首先进行基本的非空验证,如果有任何一个字段为空,则不进行添加操作
- if (idd.isEmpty() || clazz.isEmpty() || name.isEmpty() || sex.isEmpty() || birth.isEmpty() || major.isEmpty()) {
- otherView.tipJframe("所有字段不能为空");
- return;
- }else if(!((sex.equals("男")||sex.equals("女")))){
- otherView.tipJframe("请输入正常性别");
- return;
- }else if(!judgeUtil.isValidDate(birth)){
- otherView.tipJframe("日期格式不正确,请重新输入");
- return;
- }else if(!clazz.equals(judgeUtil.isClass(idd))){
- otherView.tipJframe("班级格式不正确,请重新输入");
- return;
- }else if(!password.equals(judgeUtil.isPassword(idd))){
- otherView.tipJframe("密码格式错误,请重新输入");
- return;
- }
- int studentId = Integer.parseInt(idd);
- //判断如果学号发生改变,则进行添加学生操作,否者进行修改操作
- //如果发生修改
- if(id[0]!=Integer.valueOf(idT.getText().trim())){
- if (studentDao.addStudent(studentId, clazz, name, sex, birth, major,password)) {
- // 添加成功后的操作
- if(studentDao.deleteStudent(id[0])){
- studentDao.initStudent();
- magView.magStudent();
- otherView.tipJframe("修改成功");
- }
- } else {
- otherView.tipJframe("修改失败");
- }
- }
- //如果没有发生修改,那么进行修改操作
- else {
- if (studentDao.updateStudent(studentId, clazz, name, sex, birth, major,password)) {
- // 添加成功后的操作
- studentDao.initStudent();
- magView.magStudent();
- otherView.tipJframe("修改成功");
- } else {
- otherView.tipJframe("修改失败");
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- otherView.tipJframe("操作失败:" + e.getMessage());
- }
- });
-
- }
- //删除学生信息
- public static void studentDelete(){
- GridPane gp = new GridPane();
- Label idL = new Label("ID");
- TextField idT = new TextField();
- Button admitB = new Button("提交");
- Button backB = new Button("返回");
-
- // 将按钮事件处理移到这里,确保在点击按钮时获取最新的文本框内容
-
- gp.add(idL, 0, 0);
- gp.add(idT, 1, 0);
- gp.add(admitB, 0, 1);
- gp.add(backB, 1, 1);
- gp.setAlignment(Pos.CENTER);
- gp.setHgap(10);
- gp.setVgap(30);
- //创建一个删除学生的界面舞台
- Stage stage = new Stage();
- Scene scene = new Scene(gp, 240, 100);
- stage.setScene(scene);
- stage.setTitle("删除学生信息");
- stage.setResizable(false);
- stage.show();
- //如果舞台退出,则界面关闭
- backB.setOnAction(actionEvent -> {
- try {
- stage.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- //对按钮添加点击事件
- admitB.setOnAction(actionEvent -> {
- String ids = idT.getText().trim();
- if (!ids.isEmpty()) {
- try {
- int id = Integer.parseInt(ids);
- if (studentDao.isStudent(id)) {
- if (studentDao.deleteStudent(id)) {
- otherView.tipJframe("学生删除成功");
- //更新数据库信息
- studentDao.initStudent();
- //更新面板信息
- magView.magStudent();
- } else {
- otherView.tipJframe("学生删除失败");
- }
- } else {
- otherView.tipJframe("未找到该学生");
- }
- } catch (NumberFormatException e) {
- otherView.tipJframe("请输入有效的数字ID");
- } catch (Exception e) {
- e.printStackTrace();
- otherView.tipJframe("数据库操作失败");
- }
- } else {
- otherView.tipJframe("请输入学生ID");
- }
- });
-
- }
-
コース(コース利用時間):
-
- //添加课程
- public static void courseAdd() throws Exception {
- //创建面板
- GridPane gp=new GridPane();
- Label cIDL=new Label("课程号");
- Label cMajorL=new Label("所属专业");
- Label cNameL=new Label("课程名称");
- Label cTypeL=new Label("课程类型");
- Label cBeginL=new Label("开课学期");
- Label cStudyL=new Label("学时数");
- Label cCreditL=new Label("学分");
- //创建按钮
- Button admitB=new Button("提交");
- Button backB=new Button("返回");
- //创建字体样式
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 15);
- cIDL.setFont(font);
- cMajorL.setFont(font);
- cNameL.setFont(font);
- cTypeL.setFont(font);
- cBeginL.setFont(font);
- cStudyL.setFont(font);
- cCreditL.setFont(font);
- //创建文本输入框
- TextField cIDT=new TextField(String.valueOf(judgeDao.maxcID()+1));
- TextField cMajorT=new TextField();
- TextField cNameT=new TextField();
- TextField cTypeT=new TextField();
- TextField cBeginT=new TextField();
- TextField cStudyT=new TextField();
- TextField cCreditT=new TextField();
- //将节点添加到面板当中
- gp.add(cIDL,0,0);
- gp.add(cIDT,1,0);
- gp.add(cMajorL,0,1);
- gp.add(cMajorT,1,1);
- gp.add(cNameL,0,2);
- gp.add(cNameT,1,2);
- gp.add(cTypeL,0,3);
- gp.add(cTypeT,1,3);
- gp.add(cBeginL,0,4);
- gp.add(cBeginT,1,4);
- gp.add(cStudyL,0,5);
- gp.add(cStudyT,1,5);
- gp.add(cCreditL,0,6);
- gp.add(cCreditT,1,6);
- gp.add(admitB,0,7);
- gp.add(backB,1,7);
- //设置面板
- gp.setPadding(new Insets(30));
- gp.setVgap(20);
- gp.setHgap(10);
- Scene scene=new Scene(gp,350,400);
- Stage stage=new Stage();
- stage.setResizable(false);
- stage.setTitle("添加课程");
- stage.setScene(scene);
- stage.show();
- backB.setOnAction(actionEvent -> {
- try {
- stage.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- admitB.setOnAction(actionEvent -> {
- try {
- // 获取文本框中的内容并去除首尾空白
- String id = cIDT.getText().trim();
- String major = cMajorT.getText().trim();
- String name = cNameT.getText().trim();
- String type = cTypeT.getText().trim();
- String begin = cBeginT.getText().trim();
- String study = cStudyT.getText().trim();
- String credit = cCreditT.getText().trim();
-
- // 首先进行基本的非空验证,如果有任何一个字段为空,则不进行添加操作
- if ((id.isEmpty() || major.isEmpty() || name.isEmpty() || type.isEmpty() || begin.isEmpty() || study.isEmpty() || credit.isEmpty())) {
- otherView.tipJframe("字段不能为空");
- return;
- }
- // 尝试将id和password转换为整数,如果格式不正确会抛出NumberFormatException
- int cId = Integer.parseInt(id);
- int studytime=Integer.parseInt(study);
- int creditt=Integer.parseInt(credit);
-
- if (courseDao.addCourse(cId, major, name, type, begin, studytime, creditt)) {
- // 添加成功后的操作
- courseDao.initCourse();
- magView.magCourse();
- otherView.tipJframe("课程添加成功");
- } else {
- otherView.tipJframe("课程添加失败");
- }
- } catch (Exception e) {
- // 捕获其他异常并打印堆栈信息
- e.printStackTrace();
- otherView.tipJframe("操作失败:" + e.getMessage());
- }
- });
-
- }
- //修改课程
- public static void courseUpdate(){
- //创建第一个面板
- GridPane gp = new GridPane();
- Label idl = new Label("cID");
- TextField idt = new TextField();
- //创建第一个界面的按钮
- Button admitb = new Button("提交");
- Button backB = new Button("返回");
-
- gp.add(idl,0,0);
- gp.add(idt,1,0);
- gp.add(admitb,0,1);
- gp.add(backB,0,2);
- gp.setHgap(20);
- gp.setVgap(10);
- gp.setAlignment(Pos.CENTER);
- Scene scene=new Scene(gp,250,140);
- Stage stage=new Stage();
- stage.setTitle("修改课程");
- stage.setScene(scene);
- stage.show();
- backB.setOnAction(actionEvent -> {
- try {
- stage.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
-
- //第二个舞台
- Stage stage1 = new Stage();
-
- //创建只能存储一个字符串的数组
- final int[] id = new int[1];
- final String[] major = new String[1];
- final String[] name = new String[1];
- final String[] type = new String[1];
- final String[] begin = new String[1];
- final int[] studytime = new int[1];
- final int[] credit = new int[1];
-
- // 创建显示信息文本框
- TextField idT = new TextField(String.valueOf(id[0]));
- TextField majorT = new TextField(major[0]);
- TextField nameT = new TextField(name[0]);
- TextField typeT = new TextField(type[0]);
- TextField beginT = new TextField(begin[0]);
- TextField studyTime = new TextField(String.valueOf(studytime[0]));
- TextField creditT = new TextField(String.valueOf(credit[0]));
-
- //创建第二个面板
- GridPane gp1=new GridPane();
- Label cID=new Label("课程号");
- Label cMajor=new Label("所属专业");
- Label cName=new Label("课程名称");
- Label cType=new Label("课程类型");
- Label cBegin=new Label("开课学期");
- Label cStudy=new Label("学时数");
- Label cCredit=new Label("学分");
-
- Button admitB=new Button("提交");
- Button rebackB=new Button("返回");
- rebackB.setOnAction(actionEvent -> {
- try {
- stage1.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- //创建字体样式
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 15);
- cID.setFont(font);
- cMajor.setFont(font);
- cName.setFont(font);
- cType.setFont(font);
- cBegin.setFont(font);
- cStudy.setFont(font);
- cCredit.setFont(font);
-
-
- gp1.add(cID,0,0);
- gp1.add(idT,1,0);
- gp1.add(cMajor,0,1);
- gp1.add(majorT,1,1);
- gp1.add(cName,0,2);
- gp1.add(nameT,1,2);
- gp1.add(cType,0,3);
- gp1.add(typeT,1,3);
- gp1.add(cBegin,0,4);
- gp1.add(beginT,1,4);
- gp1.add(cStudy,0,5);
- gp1.add(studyTime,1,5);
- gp1.add(cCredit,0,6);
- gp1.add(creditT,1,6);
- gp1.add(admitB,0,7);
- gp1.add(rebackB,1,7);
-
- gp1.setPadding(new Insets(30));
- gp1.setVgap(20);
- gp1.setHgap(10);
- Scene scene1=new Scene(gp1,300,400);
- stage1.setScene(scene1);
- stage1.setTitle("修改课程");
- stage1.setResizable(false);
- stage1.close();
-
- String idText = idt.getText().trim();
- //创建第一个按钮的点击事件
- admitb.setOnAction(actionEvent -> {
-
- if (idText.isEmpty()) {
- otherView.tipJframe("id不能为空");
- }
- else {
- try {
- if (courseDao.isCourse(Integer.parseInt(idText))) {
- endView.course0 = courseDao.returnCourse(Integer.parseInt(idText));
- //给数组字符串赋值
- id[0] = endView.course0.getCou_id();
- major[0] = endView.course0.getCou_major();
- name[0] = endView.course0.getCou_name();
- type[0] = endView.course0.getCou_type();
- begin[0] = endView.course0.getCou_beginTime();
- studytime[0] = endView.course0.getCou_studyTime();
- credit[0] = endView.course0.getCou_score();
-
- // 更新界面元素,确保在JavaFX应用线程上更新
- Platform.runLater(() -> {
- idT.setText(String.valueOf(id[0]));
- majorT.setText(major[0]);
- nameT.setText(name[0]);
- typeT.setText(type[0]);
- beginT.setText(begin[0]);
- studyTime.setText(String.valueOf(studytime[0]));
- creditT.setText(String.valueOf(credit[0]));
- });
- // 显示舞台
- stage1.show();
- } else {
- otherView.tipJframe("不存在该课程");
- }
- } catch (Exception e) {
- otherView.tipJframe("发生异常: " + e.getMessage());
- }
- }
- });
- //创建第二个面板的按钮的点击事件
- admitB.setOnAction(actionEvent -> {
- try {
- // 获取文本框中的内容并去除首尾空白
- String ids = idT.getText().trim();
- String majors = majorT.getText().trim();
- String names = nameT.getText().trim();
- String types = typeT.getText().trim();
- String begins = beginT.getText().trim();
- String studys = studyTime.getText().trim();
- String credits = creditT.getText().trim();
-
- // 首先进行基本的非空验证,如果有任何一个字段为空,则不进行添加操作
- if (ids.isEmpty() || majors.isEmpty() || names.isEmpty() || types.isEmpty() || begins.isEmpty() || studys.isEmpty() || credits.isEmpty()) {
- otherView.tipJframe("字段不能为空");
- return;
- }
- int cId = Integer.parseInt(ids);
- int study=Integer.parseInt(studys);
- int creditt=Integer.parseInt(credits);
-
- if(!(id[0]==Integer.valueOf(idText))){
- if(courseDao.addCourse(cId, majors, names, types, begins, study, creditt)){
- courseDao.deleteCourse(id[0]);
- courseDao.initCourse();
- magView.magCourse();
- otherView.tipJframe("课程修改成功");
- }else {
- // 添加失败的提示
- otherView.tipJframe("课程修改失败");
- }
- }else if(id[0]==Integer.valueOf(idText)){
- // 调用Dao层方法尝试添加学生信息
- if (courseDao.updateCourse(cId, majors, names, types, begins, study, creditt)) {
- // 添加成功后的操作
- courseDao.initCourse();
- magView.magCourse();
- otherView.tipJframe("课程修改成功");
- } else {
- // 添加失败的提示
- otherView.tipJframe("课程修改失败");
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- otherView.tipJframe("操作失败:" + e.getMessage()); // 提示操作失败,并显示具体的异常信息
- }
- });
-
-
- }
- //删除课程
- public static void courseDelete(){
- GridPane gp = new GridPane();
- Label idL = new Label("ID");
- TextField idT = new TextField();
- Button admitB = new Button("提交");
- Button backB = new Button("返回");
-
- gp.add(idL, 0, 0);
- gp.add(idT, 1, 0);
- gp.add(admitB, 0, 1);
- gp.add(backB, 1, 1);
- gp.setAlignment(Pos.CENTER);
- gp.setHgap(10);
- gp.setVgap(30);
-
- Stage stage = new Stage();
- Scene scene = new Scene(gp, 240, 100);
- stage.setTitle("删除课程");
- stage.setScene(scene);
- stage.show();
- backB.setOnAction(actionEvent -> {
- try {
- stage.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
-
- // 将按钮事件处理移到这里,确保在点击按钮时获取最新的文本框内容
- admitB.setOnAction(actionEvent -> {
- String ids = idT.getText().trim(); // 获取文本框内容
- if (!ids.isEmpty()) {
- try {
- int id = Integer.parseInt(ids);
- if (courseDao.isCourse(id)) {
- if (courseDao.deleteCourse(id)) {
- otherView.tipJframe("课程删除成功");
- courseDao.initCourse(); // 更新数据
- magView.magCourse(); // 刷新界面信息
- } else {
- otherView.tipJframe("课程删除失败");
- }
- } else {
- otherView.tipJframe("未找到该课程");
- }
- } catch (Exception e) {
- e.printStackTrace();
- otherView.tipJframe("数据库操作失败");
- }
- } else {
- otherView.tipJframe("请输入课程ID");
- }
- });
-
- }
スコア(scoreUtil):
- //添加成绩
- public static void scoreAdd(){
- GridPane gp=new GridPane();
- Label sID=new Label("学号");
- Label sCID=new Label("课程号");
- Label sStudy=new Label("成绩");
- Label sCredit=new Label("学分");
-
- Button admitB=new Button("提交");
- Button rebackB=new Button("返回");
-
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 15);
- sID.setFont(font);
- sCID.setFont(font);
- sStudy.setFont(font);
- sCredit.setFont(font);
-
- TextField sIDT=new TextField();
- TextField scIDT=new TextField();
- TextField sStudyT=new TextField();
- TextField sCreditT=new TextField();
-
- gp.add(sID,0,0);
- gp.add(sIDT,1,0);
- gp.add(sCID,0,1);
- gp.add(scIDT,1,1);
- gp.add(sStudy,0,2);
- gp.add(sStudyT,1,2);
- gp.add(sCredit,0,3);
- gp.add(sCreditT,1,3);
- gp.add(admitB,0,7);
- gp.add(rebackB,1,7);
-
- gp.setPadding(new Insets(30));
- gp.setVgap(20);
- gp.setHgap(10);
- Scene scene=new Scene(gp,280,300);
- Stage stage1=new Stage();
- stage1.setScene(scene);
- stage1.setTitle("添加分数");
- stage1.show();
- rebackB.setOnAction(actionEvent -> {
- try {
- stage1.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- admitB.setOnAction(actionEvent -> {
- try {
- // 获取文本框中的内容并去除首尾空白
- String id = sIDT.getText().trim();
- String cid = scIDT.getText().trim();
- String study = sStudyT.getText().trim();
- String credit = sCreditT.getText().trim();
-
- // 首先进行基本的非空验证,如果有任何一个字段为空,则不进行添加操作
- if ((id.isEmpty() || cid.isEmpty() || study.isEmpty() || credit.isEmpty())) {
- otherView.tipJframe("字段不能为空");
- return;
- }else if(!studentDao.isStudent(Integer.parseInt(id))){
- otherView.tipJframe("不存在该学生");
- return;
- }else if(!courseDao.isCourse(Integer.parseInt(cid))){
- otherView.tipJframe("不存在该课程");
- return;
- }
- int Id=Integer.parseInt(id);
- int cId = Integer.parseInt(cid);
- if (scoreDao.addScore(Id, cId, study, credit)&&scoreDao.isScore(Id,cId)) {
- scoreDao.initScore();
- magView.magScore();
- otherView.tipJframe("成绩添加成功");
- } else {
- // 添加失败的提示
- otherView.tipJframe("成绩添加失败");
- }
- } catch (NumberFormatException e) {
- otherView.tipJframe("ID格式错误,请输入有效的整数");
- } catch (Exception e) {
- // 捕获其他异常并打印堆栈信息
- e.printStackTrace();
- otherView.tipJframe("操作失败:" + e.getMessage());
- }
- });
-
- }
- //修改成绩
- public static void scoreUpdate(){
- GridPane gp=new GridPane();
-
- Label idl = new Label("ID");
- Label cidl=new Label("cID");
- TextField idt = new TextField();
- TextField cidt=new TextField();
-
- Button admitb = new Button("提交");
- Button backB=new Button("返回");
-
- gp.add(idl,0,0);
- gp.add(idt,1,0);
- gp.add(cidl,0,1);
- gp.add(cidt,1,1);
- gp.add(admitb,0,2);
- gp.add(backB,1,2);
- gp.setHgap(10);
- gp.setVgap(20);
- gp.setAlignment(Pos.CENTER);
- Scene scene=new Scene(gp,300,240);
- //创建第一个舞台
- Stage stage=new Stage();
- stage.setScene(scene);
- stage.setResizable(false);
- stage.setTitle("修改分数");
- stage.show();
- backB.setOnAction(actionEvent -> {
- stage.close();
- });
-
- //创建第二个面板
- GridPane gp1 = new GridPane();
-
- final int[] id = new int[1];
- final int[] cid = new int[1];
-
- TextField sIDT=new TextField(String.valueOf(id[0]));
- TextField scIDT=new TextField(String.valueOf(cid[0]));
- TextField sStudyT=new TextField();
- TextField sCreditT=new TextField();
-
- Label sID=new Label("学号");
- Label sCID=new Label("课程号");
- Label sStudy=new Label("成绩");
- Label sCredit=new Label("学分");
-
- Button admitB=new Button("提交");
- Button rebackB=new Button("返回");
-
- Font font = Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 15);
- sID.setFont(font);
- sCID.setFont(font);
- sStudy.setFont(font);
- sCredit.setFont(font);
-
- gp1.add(sID,0,0);
- gp1.add(sIDT,1,0);
- gp1.add(sCID,0,1);
- gp1.add(scIDT,1,1);
- gp1.add(sStudy,0,2);
- gp1.add(sStudyT,1,2);
- gp1.add(sCredit,0,3);
- gp1.add(sCreditT,1,3);
- gp1.add(admitB,0,7);
- gp1.add(rebackB,1,7);
-
- gp1.setPadding(new Insets(30));
- gp1.setVgap(20);
- gp1.setHgap(10);
- Scene scene1=new Scene(gp1,280,300);
- //创建第二个舞台
- Stage stage1 = new Stage();
- stage1.setScene(scene1);
- stage1.setTitle("修改分数");
- stage1.setResizable(false);
- stage1.close();
- rebackB.setOnAction(actionEvent -> {
- try {
- stage1.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
-
- // 登录按钮的事件处理器
- admitb.setOnAction(actionEvent -> {
- String idText = idt.getText().trim();
- String cidText = cidt.getText().trim();
-
- if (!(idText.isEmpty() || cidText.isEmpty())) {
- try {
- if (judgeUtil.isDigits(idText) && judgeUtil.isDigits(cidText)) {
- if (scoreDao.isScore(Integer.parseInt(idText), Integer.parseInt(cidText))) {
- endView.score0 = scoreDao.returnScore(Integer.parseInt(idText),Integer.parseInt(cidText));
- id[0] = endView.score0.getScore_id();
- cid[0] = endView.score0.getScore_cid();
-
- // 更新TextField显示
- sIDT.setText(String.valueOf(id[0]));
- scIDT.setText(String.valueOf(cid[0]));
-
- // 显示舞台
- stage1.show();
- stage.close();
- } else if (!studentDao.isStudent(Integer.parseInt(idText))) {
- otherView.tipJframe("不存在该学生");
- } else if (!courseDao.isCourse(Integer.parseInt(cidText))) {
- otherView.tipJframe("不存在该课程");
- } else {
- otherView.tipJframe("信息输入错误");
- }
- } else {
- otherView.tipJframe("格式错误");
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- } else {
- otherView.tipJframe("id不能为空");
- }
- });
- //第二个按钮点击事件
- admitB.setOnAction(actionEvent -> {
- try {
- // 获取文本框中的内容并去除首尾空白
- String ids = sIDT.getText().trim();
- String cids = scIDT.getText().trim();
- String studys = sStudyT.getText().trim();
- String credits = sCredit.getText().trim();
-
- // 首先进行基本的非空验证,如果有任何一个字段为空,则不进行添加操作
- if (ids.isEmpty() || cids.isEmpty() || studys.isEmpty() || credits.isEmpty()) {
- otherView.tipJframe("字段不能为空");
- return;
- }
- // 尝试将id和password转换为整数,如果格式不正确会抛出NumberFormatException
- int Id=Integer.parseInt(ids);
- int cId = Integer.parseInt(cids);
- // 调用Dao层方法尝试添加学生信息
- if (scoreDao.updateScore(Id, cId, studys, credits)) {
- // 添加成功后的操作
- scoreDao.initScore();
- magView.magScore();
- otherView.tipJframe("成绩添加成功");
- } else {
- otherView.tipJframe("成绩添加失败");
- }
- } catch (NumberFormatException e) {
- otherView.tipJframe("ID格式错误,请输入有效的整数");
- } catch (Exception e) {
- e.printStackTrace();
- otherView.tipJframe("操作失败:" + e.getMessage());
- }
- });
-
- }
- //删除成绩
- public static void scoreDelete(){
- GridPane gp = new GridPane();
- Label idL = new Label("ID");
- Label cidL=new Label("cID");
- TextField idT = new TextField();
- TextField cidT=new TextField();
- Button admitB = new Button("提交");
- Button backB = new Button("返回");
-
- gp.add(idL, 0, 0);
- gp.add(idT, 1, 0);
- gp.add(cidL,0,1);
- gp.add(cidT,1,1);
- gp.add(admitB, 0, 2);
- gp.add(backB, 1, 2);
- gp.setAlignment(Pos.CENTER);
- gp.setHgap(10);
- gp.setVgap(30);
-
- Stage stage = new Stage();
- Scene scene = new Scene(gp, 240, 200);
- stage.setScene(scene);
- stage.setTitle("删除分数");
- stage.show();
- backB.setOnAction(actionEvent -> {
- try {
- stage.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- });
- // 将按钮事件处理移到这里,确保在点击按钮时获取最新的文本框内容
- admitB.setOnAction(actionEvent -> {
- String ids = idT.getText().trim();
- String cids=cidT.getText().trim();
- if (!ids.isEmpty()) {
- try {
- int id = Integer.parseInt(ids);
- int cid=Integer.parseInt(cids);
- if (studentDao.isStudent(id)) {
- if (scoreDao.deleteScore(id,cid)) {
- otherView.tipJframe("课程删除成功");
- scoreDao.initScore();
- magView.magScore();
- } else {
- otherView.tipJframe("课程删除失败");
- }
- } else {
- otherView.tipJframe("未找到该课程");
- }
- } catch (NumberFormatException e) {
- otherView.tipJframe("请输入有效的数字ID");
- } catch (Exception e) {
- e.printStackTrace();
- otherView.tipJframe("数据库操作失败");
- }
- } else {
- otherView.tipJframe("请输入课程ID");
- }
- });
-
-
- }
判定ツールクラス(judgeUtil):
このツールクラスは、データを追加するときにいくつかのテキストボックスの文字列を判断するために使用されます。上記の 3 つのユーティリティで使用されます。
- //判断日期格式
- public static boolean isValidDate(String dateStr) {
- try {
- DateTimeFormatter.ofPattern("yyyy-MM-dd").parse(dateStr);
- return true;
- } catch (DateTimeParseException e) {
- return false;
- }
- }
- //判断班级格式
- public static String isClass(String s){
- String numberString = s;
- int numberOfCharsToTake = 6; // 指定你想截取的字符数量
- String prefix = numberString.substring(0, numberOfCharsToTake);
- return prefix;
- }
- //判断密码格式
- public static String isPassword(String s){
- String numberString = s;
- int numberOfCharsToTake = 6; // 指定你想截取的字符数量从末尾开始
- int startIndex = numberString.length() - numberOfCharsToTake;
- String suffix = numberString.substring(startIndex);
- return suffix;
- }
- //判断字符串是否为数字
- public static boolean isDigits(String str) {
- return str.matches("\d+");
- }
ユーティリティ:
Connection、close、exeupdateはよく使うので、ここでは3つのメソッドを直接書きます。
- private static final String URL = "jdbc:mysql:///studentMs";
- private static final String USER = "root";
- private static final String PASSWORD = "123321";
-
- //获取连接对象
- public static Connection getCon() {
- try {
- return DriverManager.getConnection(URL, USER, PASSWORD);
- } catch (SQLException e) {
- e.printStackTrace();
- return null;
- }
-
- }
-
- //关闭资源
- public static void close(ResultSet rs, PreparedStatement ps, Connection con) {
-
- try {
- if (rs != null) {
- rs.close();
- }
- if (ps != null) {
- ps.close();
- }
- if (con != null) {
- con.close();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
-
- }
-
- //执行mysql
- public static boolean exeUpdate(String sql, Object... params) {
- //获取连接对象
- Connection con = getCon();
- PreparedStatement ps = null;
- try {
- //获取编译对象
- ps = con.prepareStatement(sql);
- //判断参数是否为空
- if (Objects.nonNull(params)) {
- for (int i = 0; i < params.length; i++) {
- //实现占位赋值
- ps.setObject(i + 1, params[i]);
- }
- }
- //执行更新
- return ps.executeUpdate() > 0;
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- close(null, ps, con);
- }
- return false;
- }
学生道*:
以下のstudentDaoは管理者のインターフェース操作のみに関連しています
- //返回学生信息
- public static student returnStudent(int stu_id)throws Exception{
-
- student student=new student();
- String sql="select stuID,stuClass,stuName,stuSex,stuBirth,stuMajor,stuPassword from student where stuID=?";
- PreparedStatement ps=utilDao.getCon().prepareStatement(sql);
- //过滤其他的只留下ID为1的学生
- ps.setString(1,String.valueOf(stu_id));
- ResultSet rs=ps.executeQuery();
- if(rs.next()){
- student.setStu_id(rs.getInt("stuID"));
- student.setStu_class(rs.getString("stuClass"));
- student.setStu_name(rs.getString("stuName"));
- student.setStu_gender(rs.getString("stuSex"));
- student.setStu_birth(rs.getString("stuBirth"));
- student.setStu_major(rs.getString("stuMajor"));
- student.setStu_password(rs.getString("stuPassword"));
- }
- rs.close();
- ps.close();
- return student;
- }
-
- //判断是否存在该学生
- public static boolean isStudent(int stu_id) throws SQLException {
- String sql="select stuID,stuClass,stuName,stuSex,stuBirth,stuMajor from student where stuID=?";
- PreparedStatement ps=utilDao.getCon().prepareStatement(sql);
- //过滤其他的只留下ID为1的学生
- ps.setString(1,String.valueOf(stu_id));
- ResultSet rs=ps.executeQuery();
- if(rs.next()){
- return true;
- }
- else {
- return false;
- }
- }
-
- // 学生类信息初始化
- public static ArrayList<student> initStudent() throws Exception {
- ArrayList<student> students = new ArrayList<>();
- String sql = "select * from student order by stuID asc";
- PreparedStatement ps = utilDao.getCon().prepareStatement(sql);
- ResultSet rs = ps.executeQuery();
-
- // 使用 while 循环遍历 ResultSet 中的所有行
- while (rs.next()) {
- student student = new student();
- student.setStu_id(rs.getInt("stuID"));
- student.setStu_class(rs.getString("stuClass"));
- student.setStu_name(rs.getString("stuName"));
- student.setStu_gender(rs.getString("stuSex"));
- student.setStu_birth(rs.getString("stuBirth"));
- student.setStu_major(rs.getString("stuMajor"));
- students.add(student);
- }
-
- // 关闭资源
- rs.close();
- ps.close();
- return students;
- }
- //添加学生
- public static boolean addStudent(int stuId,String stuClass,String stuName, String stuSex, String stuBirth, String stuMajor,String stuPassword)throws Exception{
- String sql="insert into student(stuID,stuClass,stuName,stuSex,stuBirth,stuMajor,stuPassword )values (?,?,?,?,?,?,?) ";
- return utilDao.exeUpdate(sql,stuId,stuClass,stuName,stuSex,stuBirth,stuMajor,stuPassword);
- }
- //修改学生
- public static boolean updateStudent(int stuId,String stuClass,String stuName, String stuSex, String stuBirth, String stuMajor,String stuPassword)throws Exception{
- String sql="update student set stuID=?,stuClass=?,stuName=?,stuSex=?,stuBirth=?,stuMajor=?,stuPassword=?";
- return utilDao.exeUpdate(sql,stuId,stuClass,stuName,stuSex,stuBirth,stuMajor,stuPassword);
- }
- //删除学生
- public static boolean deleteStudent(int stuId){
- String sql="delete from student where stuID=?";
- return utilDao.exeUpdate(sql,stuId);
- }
コース道:
- //返回课程
- public static course returnCourse(int cID)throws Exception{
-
- course course=new course();
- String sql="select cID,cMajor,cName,cType,cStartTerm,cPeriod,cCredit from course where cID=?";
- PreparedStatement ps=utilDao.getCon().prepareStatement(sql);
- //过滤其他的只留下ID为1的学生
- ps.setString(1,String.valueOf(cID));
- ResultSet rs=ps.executeQuery();
- if(rs.next()){
- course.setCou_id(rs.getInt("cID"));
- course.setCou_major(rs.getString("cMajor"));
- course.setCou_name(rs.getString("cName"));
- course.setCou_type(rs.getString("cType"));
- course.setCou_beginTime(rs.getString("cStartTerm"));
- course.setCou_studyTime(rs.getInt("cPeriod"));
- course.setCou_score(rs.getInt("cCredit"));
- }
- rs.close();
- ps.close();
- return course;
- }
- //判断是否存在该课程
- public static boolean isCourse(int cID) throws Exception {
- String sql="select cID,cMajor,cName,cType,cStartTerm,cPeriod,cCredit from course where cID=?";
- PreparedStatement ps=utilDao.getCon().prepareStatement(sql);
- //过滤其他的只留下ID为1的学生
- ps.setInt(1,cID);
- ResultSet rs=ps.executeQuery();
- if(rs.next()){
- return true;
- } else {
- return false;
- }
- }
-
- // 学生类集合课程初始化
- public static ArrayList<course> initCourse() throws Exception {
- ArrayList<course> courses = new ArrayList<>();
- String sql = "select * from course order by cID asc";
- PreparedStatement ps = utilDao.getCon().prepareStatement(sql);
- ResultSet rs = ps.executeQuery();
-
- // 使用 while 循环遍历 ResultSet 中的所有行
- while (rs.next()) {
- course course = new course();
- course.setCou_id(rs.getInt("cID"));
- course.setCou_major(rs.getString("cMajor"));
- course.setCou_name(rs.getString("cName"));
- course.setCou_type(rs.getString("cType"));
- course.setCou_beginTime(rs.getString("cStartTerm"));
- course.setCou_studyTime(rs.getInt("cPeriod"));
- course.setCou_score(rs.getInt("cCredit"));
-
- courses.add(course);
- }
-
- // 关闭资源
- rs.close();
- ps.close();
- return courses;
- }
- //增加课程
- public static boolean addCourse(int cID, String cMajor, String cName, String cType, String cStartTerm, int cPeriod, int cCredit){
- String sql="insert into course(cID,cMajor,cName,cType,cStartTerm,cPeriod,cCredit)values (?,?,?,?,?,?,?) ";
- return utilDao.exeUpdate(sql,cID,cMajor,cName,cType,cStartTerm,cPeriod,cCredit);
-
- }
- //修改课程
- public static boolean updateCourse(int cID, String cMajor, String cName, String cType, String cStartTerm, int cPeriod, int cCredit){
- String sql="update course set cID=?,cMajor=?,cName=?,cType=?,cStartTerm=?,cPeriod=?,cCredit=? ";
- return utilDao.exeUpdate(sql,cID,cMajor,cName,cType,cStartTerm,cPeriod,cCredit);
-
- }
- //删除课程
- public static boolean deleteCourse(int cID){
- String sql="delete from course where cID=?";
- return utilDao.exeUpdate(sql,cID);
- }
スコアダオ:
- //判断是否存在该成绩
- public static boolean isScore(int stu_id,int cid) throws SQLException {
- String sql="select * from score where stuID=? and cID=?";
- PreparedStatement ps=utilDao.getCon().prepareStatement(sql);
- //过滤其他的只留下ID为1的学生
- ps.setString(1,String.valueOf(stu_id));
- ps.setString(2,String.valueOf(cid));
- ResultSet rs=ps.executeQuery();
- if(rs.next()){
- return true;
- }
- return false;
- }
-
- // 学生类成绩初始化
- public static ArrayList<score> initScore() throws Exception {
- ArrayList<score> scores = new ArrayList<>();
- String sql = "select * from score order by stuID asc ";
- PreparedStatement ps = utilDao.getCon().prepareStatement(sql);
- ResultSet rs = ps.executeQuery();
-
- // 使用 while 循环遍历 ResultSet 中的所有行
- while (rs.next()) {
- score score = new score();
- score.setScore_id(rs.getInt("stuID"));
- score.setScore_cid(rs.getInt("cID"));
- score.setSocre_score(rs.getString("score"));
- score.setScore_credit(rs.getString("credit"));
- scores.add(score);
- }
-
- // 关闭资源
- rs.close();
- ps.close();
- return scores;
- }
-
- //返回学生成绩
- public static score returnScore(int stuID,int cID)throws Exception{
- score score=new score();
- String sql="select * from score where stuID=? and cID=? ";
- PreparedStatement ps=utilDao.getCon().prepareStatement(sql);
- //过滤其他的只留下ID为1的学生
- ps.setString(1,String.valueOf(stuID));
- ps.setString(2,String.valueOf(cID));
- ResultSet rs=ps.executeQuery();
- while (rs.next()){
- score.setScore_id(rs.getInt("stuID"));
- score.setScore_cid(rs.getInt("cID"));
- score.setSocre_score(rs.getString("score"));
- score.setScore_credit(rs.getString("credit"));
- }
- rs.close();
- ps.close();
- return score;
- }
-
- //增加成绩
- public static boolean addScore(int stuID,int cID,String score,String credit){
- String sql="insert into score(stuID,cID,score,credit)values (?,?,?,?) ";
- return utilDao.exeUpdate(sql,stuID,cID,score,credit);
- }
- //修改成绩
- public static boolean updateScore(int stuID,int cID,String score,String credit){
- String sql="update score set stuID=?,cID=?,score=?,credit=? ";
- return utilDao.exeUpdate(sql,stuID,cID,score,credit);
- }
- //删除成绩
- public static boolean deleteScore(int stuID,int cID){
- String sql="delete from score where stuID=? and cID=?";
- return utilDao.exeUpdate(sql,stuID,cID);
- }
審査員Dao:
- //找出最大学生id
- public static int maxID() throws Exception {
- String sql = "select max(stuID) as maxId from student";
- PreparedStatement ps = utilDao.getCon().prepareStatement(sql);
- ResultSet rs = ps.executeQuery();
- // 默认值或者根据需求设定初始值
- int maxId = 0;
- //如果存在
- if (rs.next()) {
- maxId = rs.getInt("maxId"); // 从结果集中获取名为 maxId 的列的值
- }
- return maxId;
-
- }
- //找出最大课程id
- public static int maxcID()throws Exception{
- String sql = "select max(cID) as maxId from course";
- PreparedStatement ps = utilDao.getCon().prepareStatement(sql);
- ResultSet rs = ps.executeQuery();
-
- int maxId = 0; // 默认值或者根据需求设定初始值
- if (rs.next()) {
- maxId = rs.getInt("maxId"); // 从结果集中获取名为 maxId 的列的值
- }
- return maxId;
- }
- //判断是否为管理员
- public static boolean magLogin(String name,String password)throws Exception{
- String sql="select * from manager where name=? and password=?";
- PreparedStatement ps=utilDao.getCon().prepareStatement(sql);
- ps.setString(1,name);
- ps.setString(2,password);
- ResultSet rs=ps.executeQuery();
-
- if (rs.next()) {
- utilDao.close(rs,ps,utilDao.getCon());
- return true;
- } else {
- utilDao.close(rs,ps,utilDao.getCon());
- return false;
- }
-
- }
- public class student {
-
- private int stu_id;
- private String stu_class;
- private String stu_name;
- private String stu_gender;
- private String stu_birth;
- private String stu_major;
- private String stu_password;
-
- public student() {
- }
-
- public int getStu_id() {
- return stu_id;
- }
-
- public void setStu_id(int stu_id) {
- this.stu_id = stu_id;
- }
-
- public String getStu_class() {
- return stu_class;
- }
-
- public void setStu_class(String stu_class) {
- this.stu_class = stu_class;
- }
-
- public String getStu_name() {
- return stu_name;
- }
-
- public void setStu_name(String stu_name) {
- this.stu_name = stu_name;
- }
-
- public String getStu_gender() {
- return stu_gender;
- }
-
- public void setStu_gender(String stu_gender) {
- this.stu_gender = stu_gender;
- }
-
- public String getStu_birth() {
- return stu_birth;
- }
-
- public void setStu_birth(String stu_birth) {
- this.stu_birth = stu_birth;
- }
-
- public String getStu_major() {
- return stu_major;
- }
-
- public void setStu_major(String stu_major) {
- this.stu_major = stu_major;
- }
-
- public String getStu_password() {
- return stu_password;
- }
-
- public void setStu_password(String stu_password) {
- this.stu_password = stu_password;
- }
- public class course {
-
- private int cou_id;
- private String cou_major;
- private String cou_name;
- private String cou_type;
- private String cou_beginTime;
- private int cou_studyTime;
- private int cou_score;
-
- public course() {
- }
-
- public int getCou_id() {
- return cou_id;
- }
- public void setCou_id(int cou_id) {
- this.cou_id = cou_id;
- }
-
- public String getCou_major() {
- return cou_major;
- }
-
- public void setCou_major(String cou_major) {
- this.cou_major = cou_major;
- }
-
- public String getCou_name() {
- return cou_name;
- }
-
- public void setCou_name(String cou_name) {
- this.cou_name = cou_name;
- }
-
- public String getCou_type() {
- return cou_type;
- }
-
- public void setCou_type(String cou_type) {
- this.cou_type = cou_type;
- }
-
- public String getCou_beginTime() {
- return cou_beginTime;
- }
-
- public void setCou_beginTime(String cou_beginTime) {
- this.cou_beginTime = cou_beginTime;
- }
-
- public int getCou_studyTime() {
- return cou_studyTime;
- }
-
- public void setCou_studyTime(int cou_studyTime) {
- this.cou_studyTime = cou_studyTime;
- }
-
- public void setCou_score(int cou_score) {
- this.cou_score = cou_score;
- }
-
- public int getCou_score() {
- return cou_score;
- }
- private int score_id;
- private int score_cid;
- private String socre_score;
- private String score_credit;
-
- public score() {
- }
-
- public int getScore_id() {
- return score_id;
- }
-
- public String getSocre_score() {
- return socre_score;
- }
-
- public void setSocre_score(String socre_score) {
- this.socre_score = socre_score;
- }
-
- public String getScore_credit() {
- return score_credit;
- }
-
- public void setScore_credit(String score_credit) {
- this.score_credit = score_credit;
- }
-
- public void setScore_id(int score_id) {
- this.score_id = score_id;
- }
-
- public int getScore_cid() {
- return score_cid;
- }
私のコードの共有はここで終了しました。ご覧いただきありがとうございます。私のコード構造は比較的大きいため、studentDao を除いて、ここでコードを再表示します。 、他はすべて同じなので表示されません。
StudentDao(完全):
- //学生登录判断
- public static boolean login(String idStr, String passwordStr) throws Exception {
-
- String sql = "select * from student where stuID =? and stuPassword=?";
- PreparedStatement ps = utilDao.getCon().prepareStatement(sql);
- ps.setString(1,idStr);
- ps.setString(2, passwordStr);
- ResultSet rs = ps.executeQuery();
-
- if (rs.next()) {
- utilDao.close(rs,ps, utilDao.getCon());
- return true;
- } else {
- utilDao.close(rs,ps,utilDao.getCon());
- return false;
- }
-
-
- }
-
- //学生查询自己成绩
- public static Integer gradeOneself(int stu_id) throws Exception {
- String sql = "SELECT SUM(credit) AS gradesum FROM score WHERE stuID=?";
-
- try (Connection connection =utilDao.getCon();
- PreparedStatement ps = connection.prepareStatement(sql)) {
-
- ps.setInt(1, stu_id);
- try (ResultSet rs = ps.executeQuery()) {
- if (rs.next()) {
- int gradesum = rs.getInt("gradesum");
- return gradesum;
- } else {
- // 如果没有查询到结果,可以返回 null 或者其他合适的值
- return null;
- }
- }
- }
- }
-
- //返回学生信息
- public static student returnStudent(int stu_id)throws Exception{
-
- student student=new student();
- String sql="select stuID,stuClass,stuName,stuSex,stuBirth,stuMajor,stuPassword from student where stuID=?";
- PreparedStatement ps=utilDao.getCon().prepareStatement(sql);
- //过滤其他的只留下ID为1的学生
- ps.setString(1,String.valueOf(stu_id));
- ResultSet rs=ps.executeQuery();
- if(rs.next()){
- student.setStu_id(rs.getInt("stuID"));
- student.setStu_class(rs.getString("stuClass"));
- student.setStu_name(rs.getString("stuName"));
- student.setStu_gender(rs.getString("stuSex"));
- student.setStu_birth(rs.getString("stuBirth"));
- student.setStu_major(rs.getString("stuMajor"));
- student.setStu_password(rs.getString("stuPassword"));
- }
- rs.close();
- ps.close();
- return student;
- }
-
- //判断是否存在该学生
- public static boolean isStudent(int stu_id) throws SQLException {
- String sql="select stuID,stuClass,stuName,stuSex,stuBirth,stuMajor from student where stuID=?";
- PreparedStatement ps=utilDao.getCon().prepareStatement(sql);
- //过滤其他的只留下ID为1的学生
- ps.setString(1,String.valueOf(stu_id));
- ResultSet rs=ps.executeQuery();
- if(rs.next()){
- return true;
- }
- else {
- return false;
- }
- }
-
- // 学生类信息初始化
- public static ArrayList<student> initStudent() throws Exception {
- ArrayList<student> students = new ArrayList<>();
- String sql = "select * from student order by stuID asc";
- PreparedStatement ps = utilDao.getCon().prepareStatement(sql);
- ResultSet rs = ps.executeQuery();
-
- // 使用 while 循环遍历 ResultSet 中的所有行
- while (rs.next()) {
- student student = new student();
- student.setStu_id(rs.getInt("stuID"));
- student.setStu_class(rs.getString("stuClass"));
- student.setStu_name(rs.getString("stuName"));
- student.setStu_gender(rs.getString("stuSex"));
- student.setStu_birth(rs.getString("stuBirth"));
- student.setStu_major(rs.getString("stuMajor"));
- students.add(student);
- }
-
- // 关闭资源
- rs.close();
- ps.close();
- return students;
- }
- //添加学生
- public static boolean addStudent(int stuId,String stuClass,String stuName, String stuSex, String stuBirth, String stuMajor,String stuPassword)throws Exception{
- String sql="insert into student(stuID,stuClass,stuName,stuSex,stuBirth,stuMajor,stuPassword )values (?,?,?,?,?,?,?) ";
- return utilDao.exeUpdate(sql,stuId,stuClass,stuName,stuSex,stuBirth,stuMajor,stuPassword);
- }
- //修改学生
- public static boolean updateStudent(int stuId,String stuClass,String stuName, String stuSex, String stuBirth, String stuMajor,String stuPassword)throws Exception{
- String sql="update student set stuID=?,stuClass=?,stuName=?,stuSex=?,stuBirth=?,stuMajor=?,stuPassword=?";
- return utilDao.exeUpdate(sql,stuId,stuClass,stuName,stuSex,stuBirth,stuMajor,stuPassword);
- }
- //删除学生
- public static boolean deleteStudent(int stuId){
- String sql="delete from student where stuID=?";
- return utilDao.exeUpdate(sql,stuId);
- }
ご覧いただきありがとうございます。何かわからないことがあれば、メッセージを残してください。