当前位置: 首页 > news >正文

(详细文档!)java swing学生信息管理系统 +mysql

第一章:系统功能分析

1.1、系统简介与开发背景

学生信息管理系统是在信息化时代,特别是在教育领域中产生的。随着学校规模的不断扩大和信息化技术的不断发展,传统的纸质档案管理方式已经无法满足学校对学生信息管理的需求,因此需要开发一种电子化的管理系统来提高学生信息管理的效率和准确性。

该系统的出现还有以下几个方面的原因:

教育体制改革的推进:随着教育体制改革的不断深入,学校需要更加高效、准确地管理学生信息,以便更好地服务于学生和教师。

信息化技术的发展:信息技术的发展为开发学生信息管理系统提供了技术保障。例如,数据库技术可以用于存储和检索学生信息,网络技术可以用于实现远程访问和管理,人工智能技术可以用于提高学生信息管理的智能化水平。

学校管理的需求:学校管理需要一个能够快速、准确地处理大量学生信息的系统,以便更好地为学生和教师提供服务,同时也可以提高学校的管理效率和办学水平。

总之,学生信息管理系统的出现是教育体制改革和信息化技术发展的必然结果,它的出现为学校管理带来了很大的便利,同时也提高了学校对学生信息管理的效率和准确性。

1.2、功能分析

学生管理模块:

(1)增删改查学生信息,当学生还有学习的学员时,不能删除学生信息;

(2)按学生查询选择课程信息,支持名称模糊查询;

学员管理模块:

(1)增删改查学员信息;

(2)按学员名查询学员信息,支持学员名模糊查询和分页显示;

总体来说,学生管理系统通过对学生和学员信息的管理,实现了对学生的全面监管与管理。同时,该系统还具有高效智能的数据管理和分析功能,可以提高管理效率,同时也为各方提供了更加精准的信息支持。

1.3、功能模块图及简要说明

  管理员新增学生信息时填写对应的信息,如姓名、课程号等。后台代码将在页面创建的信息提交到控制层进行数据验证,如果信息填写符合规则且数据唯一,则该数据将存储到本地数据库中,否则添加失败。管理员进行登录时首先点击跳转到管理员登录界面按钮,输入相应的信息点击登录。登录界面流程图如图4-1所示,添加学生功能流程图如图4-2所示。

 

图4-1 登录界面流程图

                                

4-2 添加学生功能流程图

管理员修改学生职位信息时可以从快速搜索区,输入学生名称进行查询。按要求填写信息后保存,第一条数据为新添加的数据;管理员修改部门信息时,依次填写好对应的信息,后台代码将信息提交到控制层进行数据验证,验证通过则修改成功,数据存储到本地数据库里,否则失败。职位修改功能流程图如图4-3所示,添加部门功能流程图如图4-4所示。

        ​​​​​​​        ​​​​​​​        ​​​​​​​

   4-3 学生信息修改流程图

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

4-4 添加学生功能流程图

学生信息管理系统的主要模块包括增加、删除、修改和查询等操作,以下是这些操作的简单描述:

增加模块:该模块允许管理员将新的学生信息添加到系统中。这通常涉及到填写一个包含各种字段(例如姓名、性别、出生日期、学号、班级等)的表单。系统将检查输入的数据是否有效,例如,学号是否唯一,然后将其添加到数据库中。

删除模块:在此模块中,管理员可以选择并删除系统中的学生信息。例如,当一个学生转学或退学时,管理员可能需要从系统中删除他们的记录。

修改模块:此模块允许管理员更新系统中已有的学生信息。例如,如果学生的家庭地址发生变化,管理员可以通过此模块更新学生的家庭地址信息。在修改数据时,管理员需要确保数据的完整性和准确性。

查询模块:此模块允许管理员和学生查询系统中的学生信息。管理员可以查看学生的全部信息,而学生通常只能查看与他们自己相关的信息,例如他们的成绩、等。

第二章:概要设计

2.1、数据库设计

2.1.1  创建表单

CREATE TABLE `admin` (

  `Aid` int(11) NOT NULL,

  `Aname` varchar(30) NOT NULL,

  `Apwd` varchar(10) NOT NULL,

  PRIMARY KEY (`Aid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;  PRIMARY KEY (`id`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = CREATE TABLE `course` (

  `Cnum` int(11) NOT NULL AUTO_INCREMENT,

  `Cno` int(11) NOT NULL,

  `Cname` varchar(20) NOT NULL,

  `Ctime` int(11) NOT NULL,

  `Ccredit` int(11) NOT NULL,

  PRIMARY KEY (`Cnum`,`Cno`),

  KEY `Cname` (`Cname`),

  KEY `Cno` (`Cno`)

CREATE TABLE `score` (

  `Sno` int(11) NOT NULL,

  `Sname` varchar(20) NOT NULL,

  `Cno` int(11) NOT NULL,

  `Cname` varchar(20) DEFAULT NULL,

  `Sscore` decimal(10,0) DEFAULT '0',

  `Rescore` decimal(10,0) DEFAULT '0',

  PRIMARY KEY (`Sno`,`Cno`),

  KEY `Cname` (`Cname`),

  KEY `Cno` (`Cno`),

  KEY `Sname` (`Sname`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------

-- Table structure for user_train_re   //学生,用户联系表

-- ----------------------------

CREATE TABLE `student` (

  `Sno` int(11) NOT NULL,

  `Sname` varchar(30) NOT NULL,

  `Sgender` char(2) NOT NULL,

  `Sage` int(11) NOT NULL,

  `Sbirthday` datetime DEFAULT '1999-01-01 00:00:00' ON UPDATE CURRENT_TIMESTAMP,

  `Sclass` varchar(10) NOT NULL,

  `Smajor` varchar(20) NOT NULL,

  `Sdept` varchar(20) NOT NULL,

  `Spwd` varchar(10) NOT NULL DEFAULT '123',

  PRIMARY KEY (`Sno`),

  KEY `Sname` (`Sname`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.2、后台管理界面设计

2.1  管理员登陆界面图

2.2  管理员功能界面

2.3  学生信息管理界面图

2.4  课程信息管理界面图

2.5  课程添加管理界面图

2.6  学生成绩管理界面图

2.8  添加学生信息管理界面图

2.9  添加学生成绩管理界面图

2.10  删除成绩管理界面图

2.11  课程管理页面图

第三章:详细设计

3.1.2数据库配置文件

package com.system.utils;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class DB {

        // 数据库地址

        private String Driver_name = "jdbc:mysql://localhost:3306/student_a?serverTimezone=Asia/Shanghai&useSSL=false";

        // 数据库用户名

        private String USER = "root"; // 这里需要修改为自己的用户名和密码

        // 数据库密码

        private String PASS = "123456";

        // 数据库连接

        public static Connection con;

        // 构造方法

        public DB() {

                 try {

                         // 加载驱动

                         Class.forName("com.mysql.cj.jdbc.Driver"); // 这个驱动是mysql8版本的

                         // 获取连接

                        con = DriverManager.getConnection(Driver_name, USER, PASS);

                 } catch (Exception e) {

                         e.printStackTrace();

                 }

        }

        // 获取连接

        public static Connection getConnection() {

                 if (con == null) {

                         new DB();

                 }

                 return con;

        }

        // 释放连接

        public static void close(ResultSet resultSet, Statement statement, Connection connection) {

                 if (resultSet != null) {

                         try {

                                  resultSet.close();

                         } catch (SQLException e) {

                                  e.printStackTrace();

                         }

                 }

                 if (statement != null) {

                         try {

                                  statement.close();

                         } catch (SQLException e) {

                                  e.printStackTrace();

                         }

                 }

                 if (connection != null) {

                         try {

                                  connection.close();

                         } catch (SQLException e) {

                                  e.printStackTrace();

                         }

                 }

        }

        // 释放连接

        public static void close(Statement statement, Connection connection) {

                 if (statement != null) {

                         try {

                                  statement.close();

                         } catch (SQLException e) {

                                  e.printStackTrace();

                         }

                 }

                 if (connection != null) {

                         try {

                                  connection.close();

                         } catch (SQLException e) {

                                  e.printStackTrace();

                         }

                 }

        }

        // 释放连接

        public static void close(Connection connection) {

                 if (connection != null) {

                         try {

                                  connection.close();

                         } catch (SQLException e) {

                                  e.printStackTrace();

                         }

                 }

        }

}

StudentDao:

package com.system.dao;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import com.system.entity.Student;

import com.system.utils.DB;

public class StudentDao {

       Connection conn = null;

       DB dataBase = new DB();

       //学生登录

       public boolean LoginCheck(String Sno, String Spwd) throws SQLException {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     ResultSet rs = null;

                     stat = conn.createStatement();

                     String sql = "SELECT * FROM student WHERE Sno ='"+Sno+"' and Spwd = '"+Spwd+"'";

                     rs = stat.executeQuery(sql);

                     if (rs.next()){

                            return true;

                     }else{

                            return false;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return false;

       }

      

       //注册

       public boolean Register(String Sno ,String Spwd) throws SQLException {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     ResultSet rs = null;

                     stat = conn.createStatement();

                     String sql = "SELECT * FROM student WHERE Sno ='" + Sno + "' ";

                     rs = stat.executeQuery(sql);

                     if (rs.next()){

                            return false;

                     }else{

                            sql = "INSERT INTO student VALUES ('" + Sno + "', '" + Spwd + "')";

                            stat.executeUpdate(sql);

                     }           

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return true;

       }

      

       //返回学生信息对象

       public List<Student> res() throws Exception {

              List<Student> students = new ArrayList<>();

              Student student;

              conn = dataBase.getConnection();

              Statement stat = null;

              ResultSet rs = null;

              stat = conn.createStatement();

              String sql = "SELECT * FROM student";

              rs = stat.executeQuery(sql);

              while (true) {

            if ( rs.next() ) {

                            student = new Student();

                student.setSno( rs.getInt("Sno") );

                student.setName( rs.getString("Sname") );

                student.setGender( rs.getString("Sgender") );

                student.setAge( rs.getInt("Sage") );

                student.setClas( rs.getString("Sclass") );

                student.setMajor(rs.getString("Smajor"));

                student.setDept( rs.getString("Sdept") );

                students.add(student);

            }else

                break;

        }

              conn.close();

              return students;

       }

      

}

3.1.3 StudentAdd

public void actionPerformed(ActionEvent e) {

String sno = snoField.getText();

String sname = snameField.getText();

String sage = sageField.getText();

String sclass = sclassField.getText();

String smajor = smajorField.getText();

String sdept = sdeptField.getText();

String sex = (String) comboBox.getSelectedItem();

if (sno.equals("") || sname.equals("") || sage.equals("") || sclass.equals("") || smajor.equals("")

|| sdept.equals("") || sex.equals("")) {

JOptionPane.showMessageDialog(null, "信息不完整,请填写完整!");

} else {

UserDao userDao = new UserDao();

try {

boolean istrue = userDao.insert(sno, sname, sex, sage, sclass, smajor, sdept);

if (istrue) {

JOptionPane.showMessageDialog(null, "学生信息录入成功!");

} else{

JOptionPane.showMessageDialog(null, "学生录入失败,此学号已存在!");

}

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

}

});

btnNewButton.setFont(new Font("微软雅黑", Font.BOLD, 14));

btnNewButton.setBounds(201, 427, 93, 30);

panel.add(btnNewButton);

JButton btnNewButton_1 = new JButton("重置");

btnNewButton_1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

snoField.setText("");

snameField.setText("");

sageField.setText("");

sclassField.setText("");

smajorField.setText("");

sdeptField.setText("");

}

});

btnNewButton_1.setFont(new Font("微软雅黑", Font.BOLD, 14));

btnNewButton_1.setBounds(390, 427, 93, 30);

panel.add(btnNewButton_1);

String[] a = new String[] { "男", "女" };

comboBox = new JComboBox(a);

comboBox.setBounds(267, 381, 194, 27);

panel.add(comboBox);

}

}

CourseDao:

package com.system.dao;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import com.system.entity.Course;

import com.system.utils.DB;

public class CourseDao {

       Connection conn = null;

       DB dataBase = new DB();

      

       // 按照课程号进行查询

       public Course selectByCno(int cno) throws SQLException {

              conn = dataBase.getConnection();

              Statement stat = null;

              ResultSet rs = null;

              String sql = "SELECT * FROM course where Cno = " + cno;

              stat = conn.createStatement();

              rs = stat.executeQuery(sql);

              Course course = new Course();

              while (true) {

                     if (rs.next()) {

                            course.setCnum(rs.getString("Cnum"));

                            course.setCno(rs.getString("Cno"));

                            course.setCname(rs.getString("Cname"));

                            course.setCcredit(rs.getString("Ccredit"));

                            course.setCtime(rs.getString("Ctime"));

                     } else

                            break;

              }

              conn.close();

              return course;

       }

       //课程信息

       public List<Course> courseRes() throws Exception {

              List<Course> courses = new ArrayList<>();

              Course course;

              conn = dataBase.getConnection();

              Statement stat = null;

              ResultSet rs = null;

              stat = conn.createStatement();

              String sql = "SELECT * FROM course";

              rs = stat.executeQuery(sql);

              while (true) {

            if ( rs.next() ) {

                            course = new Course();

                course.setCnum( rs.getString("Cnum") );

                course.setCno( rs.getString("Cno") );

                course.setCname( rs.getString("Cname") );

                course.setCcredit( rs.getString("Ccredit") );

                course.setCtime( rs.getString("Ctime") );

                courses.add(course);

            }else

                break;

        }

              conn.close();

              return courses;

       }

      

       //增加课程

       public boolean insert(String cno, String cname, String ccredit, String ctime) throws SQLException {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     String sql = "SELECT * FROM course WHERE cno = '"+cno+"'";

                     if ( stat.executeQuery(sql).next() ) {

                            return false;

                     }

                     sql = "INSERT INTO course (cno,cname,ccredit,ctime)"

                             + " VALUES ( '"+cno+"','"+cname+"', '"+ccredit+"' ,'"+ctime+"')";

                     if ( stat.executeUpdate(sql)==1 ){

                            return true;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return false;

       }

      

       //ɾ删除课程

       public boolean delete(String cno) throws SQLException  {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     String sql = "DELETE FROM course WHERE cno = '"+cno+"' ";        

                     if ( stat.executeUpdate(sql)==1 ){

                            return true;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return false;

       }

      

       //查询课程

       public Course select(String cno) throws SQLException  {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     ResultSet rs = null;

                     Course course = null;

                     String sql = "SELECT * FROM course WHERE cno = '"+cno+"' ";        

                     rs = stat.executeQuery(sql);

                     if ( rs.next() ){                  

                            course = new Course();

                            course.setCno( rs.getString("Cno") );

                            course.setCname( rs.getString("Cname") );

                            course.setCcredit( rs.getString("Ccredit") );

                            course.setCtime( rs.getString("Ctime") );

                            return course;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return null;

       }

      

       //更新课程

       public boolean update(String cno, String cname, String ccredit, String ctime) throws SQLException  {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     String sql = "UPDATE course SET Cno = '"+cno+"', Cname = '"+cname+"', Ccredit = '"+ccredit+"', Ctime = '"+ctime+"' "

                                   + "WHERE Cno = '"+cno+"' ";            

                     if ( stat.executeUpdate(sql)==1 ){

                            return true;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return false;

       }

      

      

}

UserDAO

package com.system.dao;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import com.system.entity.Student;

import com.system.utils.DB;

public class UserDao {

       Connection conn = null;

       DB dataBase = new DB();

       //管理员登录

       public boolean LoginCheck(String id, String pwd) throws SQLException {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     ResultSet rs = null;

                     stat = conn.createStatement();

                     String sql = "SELECT * FROM admin WHERE Aid ='" + id + "' and Apwd = '" + pwd + "'";

                     rs = stat.executeQuery(sql);

                     if (rs.next()){

                            return true;

                     }else{

                            return false;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return false;

       }

      

       //管理员注册

       public boolean Register(String id, String name ,String pwd) throws SQLException {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     ResultSet rs = null;

                     stat = conn.createStatement();

                     String sql = "SELECT * FROM admin WHERE Aid ='" + id + "' and Apwd = '" + pwd + "'";

                     rs = stat.executeQuery(sql);

                     if (rs.next()){

                            return false;

                     }else{

                            sql = "INSERT INTO admin VALUES ('" + id + "','" + name + "','" + pwd + "')";

                            stat.executeUpdate(sql);

                     }           

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return true;

       }

      

       //返回学生信息对象列表

       public List<Student> res() throws Exception {

              List<Student> students = new ArrayList<>();

              Student student;

              conn = dataBase.getConnection();

              Statement stat = null;

              ResultSet rs = null;

              stat = conn.createStatement();

              String sql = "SELECT * FROM student";

              rs = stat.executeQuery(sql);

              while (true) {

            if ( rs.next() ) {

                            student = new Student();

                student.setSno( rs.getInt("Sno") );

                student.setName( rs.getString("Sname") );

                student.setGender( rs.getString("Sgender") );

                student.setAge( rs.getInt("Sage") );

                student.setClas( rs.getString("Sclass") );

                student.setMajor(rs.getString("Smajor"));

                student.setDept( rs.getString("Sdept") );

                students.add(student);

            }else

                break;

        }

              conn.close();

              return students;

       }

      

       //返回指定学生的信息

       public List<Student> Select(String sno, String name) throws Exception {

              List<Student> students = new ArrayList<>();

              Student student;

              conn = dataBase.getConnection();

              Statement stat = null;

              ResultSet rs = null;

              stat = conn.createStatement();

              String sql = "SELECT * FROM student WHERE Sno ='"+sno+"' OR Sname = '"+name+"'";

              rs = stat.executeQuery(sql);

              while (true) {

            if ( rs.next() ) {

                            student = new Student();

                student.setSno( rs.getInt("Sno") );

                student.setName( rs.getString("Sname") );

                student.setGender( rs.getString("Sgender") );

                student.setAge( rs.getInt("Sage") );

                student.setClas( rs.getString("Sclass") );

                student.setMajor(rs.getString("Smajor"));

                student.setDept( rs.getString("Sdept") );

                students.add(student);

            }else

                break;

        }

              conn.close();

              return students;

       }

      

       //录入学生信息

       public boolean insert(String sno, String name, String gender, String age, String clas , String major, String dept) throws SQLException {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     String sql = "INSERT INTO student (sno,sname,sgender,sage,sclass,smajor,sdept)"

                                   + " VALUES ( '"+sno+"','"+name+"', '"+gender+"' ,'"+age+"' ,'"+clas+"' ,'"+major+"' ,'"+dept+"')";

                     if (stat.executeUpdate(sql) == 1) {

                            return true;

                     }

              } catch (Exception e) {

              }

              conn.close();

              return false;

       }

      

       //删除学生信息

       public boolean delete(String sno) throws SQLException  {

              int key = Integer.parseInt(sno);

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     String sql = "DELETE FROM student WHERE sno = " + key;

                     System.out.println(sql);

                     if ( stat.executeUpdate(sql)==1 ){

                            return true;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return false;

       }

      

       //根据学号查询单个学生

       public Student select(String sno) throws SQLException {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     ResultSet rs = null;

                     Student stu = null;

                     String sql = "SELECT * FROM student WHERE sno = '"+sno+"' ";         

                     rs = stat.executeQuery(sql);

                     if ( rs.next() ){                  

                            stu = new Student();

                            stu.setSno( rs.getInt("Sno") );

                            stu.setName( rs.getString("Sname") );

                            stu.setGender( rs.getString("Sgender") );

                            stu.setAge( rs.getInt("Sage") );

                            stu.setClas( rs.getString("Sclass") );

                            stu.setMajor(rs.getString("Smajor"));

                            stu.setDept( rs.getString("Sdept") );

                            return stu;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return null;

       }

      

       //更新学生信息

       public boolean update(String sno, String name, String gender, String age, String clas , String major, String dept) throws SQLException  {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     String sql = "UPDATE student SET sno = '"+sno+"', sname = '"+name+"', sgender = '"+gender+"', sage = '"+age+"',"

                                   + "sclass = '"+clas+"', smajor = '"+major+"', sdept = '"+dept+"' WHERE sno = '"+sno+"' ";          

                     if ( stat.executeUpdate(sql)==1 ){

                            return true;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return false;

       }

      

}

3.1.4  SCOREdao

package com.system.dao;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import com.system.entity.Score;

import com.system.utils.DB;

public class ScoreDao {

       Connection conn = null;

       DB dataBase = new DB();

      

       //成绩信息

       public List<Score> scoreRes(String key) throws Exception {

              List<Score> scores = new ArrayList<>();

              int k = 0;

              if (!key.equals("")) {

                     k = Integer.parseInt(key);

              }

              Score score;

              conn = dataBase.getConnection();

              Statement stat = null;

              ResultSet rs = null;

              stat = conn.createStatement();

              String sql = "SELECT * FROM score";

              if (!key.equals("")) {

                     sql = sql + " where Sno = " + k;

              }

              rs = stat.executeQuery(sql);

              while (true) {

            if ( rs.next() ) {

                            score = new Score();

                score.setSno( rs.getString("Sno") );

                score.setSname( rs.getString("Sname") );

                score.setCno( rs.getString("Cno") );

                score.setCname( rs.getString("Cname") );

                score.setSscore( rs.getString("Sscore") );

                score.setRescore( rs.getString("Rescore") );

                scores.add(score);

            }else

                break;

        }

              conn.close();

              return scores;

       }

      

       //某个学生的所有成绩

       public List<Score> scoreOwnRes(String id) throws Exception {

              List<Score> scores = new ArrayList<>();

              Score score;

              conn = dataBase.getConnection();

              Statement stat = null;

              ResultSet rs = null;

              stat = conn.createStatement();

             String sql = "SELECT * FROM score WHERE sno = '"+id+"'";

              rs = stat.executeQuery(sql);

              while (true) {

            if ( rs.next() ) {

                            score = new Score();

                score.setSno( rs.getString("Sno") );

                score.setSname( rs.getString("Sname") );

                score.setCno( rs.getString("Cno") );

                score.setCname( rs.getString("Cname") );

                score.setSscore( rs.getString("Sscore") );

                score.setRescore( rs.getString("Rescore") );

                scores.add(score);

            }else

                break;

        }

              conn.close();

              return scores;

       }

      

       //录入成绩

       public boolean insert(String sno, String cno, String sscore) throws SQLException {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     String sql = "SELECT Sname FROM student WHERE sno = '"+sno+"' ";

                     String sql_2 = "SELECT cname FROM course WHERE cno = '"+cno+"' ";            

                     ResultSet rs = null;

                     ResultSet rs_2 = null;

                     String sname =null;

                     String cname = null;

                     rs = stat.executeQuery(sql);

                     if(rs.next())

                            sname = rs.getString("Sname");

                     rs_2 = stat.executeQuery(sql_2);

                     if ( rs_2.next() )

                            cname = rs_2.getString("Cname");

                     else {

                            return false;

                     }

                     String sql_3 = "INSERT INTO score (sno,sname,cno,cname,sscore) VALUES ( '"+sno+"', '"+sname+"','"+cno+"', '"+cname+"','"+sscore+"' )";

                     if ( stat.executeUpdate(sql_3)==1 ){

                            return true;

                     }

              } catch (Exception e) {

              }

              conn.close();

              return false;

       }

      

       //删除成绩

       public boolean delete(String sno, String cno) throws SQLException  {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     String sql = "DELETE FROM score WHERE sno = '"+sno+"' AND cno = '"+cno+"' ";        

                     if ( stat.executeUpdate(sql)==1 ){

                            return true;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return false;

       }

      

       //查询成绩

       public Score select(String sno, String cno) throws SQLException {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     ResultSet rs = null;

                     Score sc = null;

                     String sql = "SELECT * FROM score WHERE sno = '"+sno+"' AND cno = '"+cno+"'";         

                     rs = stat.executeQuery(sql);

                     if ( rs.next() ){                  

                            sc = new Score();

                            sc.setSno( rs.getString("Sno") );

                            sc.setSname( rs.getString("Sname") );

                            sc.setCno( rs.getString("Cno") );

                            sc.setCname( rs.getString("Cname") );

                            sc.setSscore( rs.getString("Sscore") );

                            sc.setRescore(rs.getString("Rescore"));

                            return sc;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return null;

       }

      

       //删除某门课程的成绩

       public boolean update(String sno, String cno, String sscore, String rescore) throws SQLException  {

              try {

                     conn = dataBase.getConnection();

                     Statement stat = null;

                     stat = conn.createStatement();

                     String sql = "UPDATE score SET Sscore = '"+sscore+"', Rescore = '"+rescore+"'  WHERE sno = '"+sno+"' AND cno ='"+cno+"' ";      

                     if ( stat.executeUpdate(sql)==1 ){

                            return true;

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

              conn.close();

              return false;

       }

      

      

}

第四章:个人总结

学生管理系统是一个以信息技术为基础,对学生数据进行集中收集、处理和存储的综合性系统。它能够有效地提高学校管理学生的效率和精确性,同时能够更好地发掘学生数据中隐藏的信息,为学校的各项决策提供可靠的数据支持。

在设计和实现学生管理系统时,应以数据库为中心,利用各种编程语言和技术对系统进行开发。系统的基本架构应分为前端和后端两个部分,前端负责数据的录入、数据的展示以及简单的数据处理,而后端则负责数据的处理、存储和保护。

在实现系统时,应注重系统的可维护性和可扩展性。对于可维护性,要尽可能地减少代码的复杂性,增加注释,同时要进行有效的异常处理,以帮助维护人员快速定位问题并进行修复。对于可扩展性,要采用模块化的开发方式,将各个功能模块化,这样在需要增加新的功能时,只需要增加新的模块即可,不需要对整个系统进行重构。

同时,系统的安全性也是必须要考虑的一个问题。要采用各种安全措施,如数据加密、身份验证等,以保护学生数据的安全,防止数据泄露。

在实现学生管理系统之后,需要进行充分的测试,包括单元测试、集成测试和系统测试。只有经过严格的测试,才能够保证系统的稳定性和可靠性。

最后,系统的维护和更新也是必须要考虑的一个问题。要定期对系统进行检查和更新,以保证系统的正常运行。同时,也要考虑数据的备份和恢复,以防止数据丢失。

总之,学生管理系统是一个复杂的系统,需要综合考虑多方面的因素,包括功能、架构、数据库设计、界面设计、安全性、测试和维护等。只有对这些方面进行全面的考虑和实现,才能够开发出一套高效、可靠的学生管理系统ZT276899

相关文章:

(详细文档!)java swing学生信息管理系统 +mysql

第一章&#xff1a;系统功能分析 1.1、系统简介与开发背景 学生信息管理系统是在信息化时代&#xff0c;特别是在教育领域中产生的。随着学校规模的不断扩大和信息化技术的不断发展&#xff0c;传统的纸质档案管理方式已经无法满足学校对学生信息管理的需求&#xff0c;因此需…...

OSG开发笔记(三十三):同时观察物体不同角度的多视图从相机技术

​若该文为原创文章&#xff0c;未经允许不得转载 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/143932273 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 长沙红胖子Qt…...

[极客大挑战 2019]BabySQL--详细解析

信息搜集 进入界面&#xff1a; 输入用户名为admin&#xff0c;密码随便输一个&#xff1a; 发现是GET传参&#xff0c;有username和password两个传参点。 我们测试一下password点位能不能注入&#xff1a; 单引号闭合报错&#xff0c;根据报错信息&#xff0c;我们可以判断…...

Java的字符串操作(二)(代码示例)

1. 字符串的定义 // 直接赋值方式定义字符串 String str1 "Hello World";// 使用new关键字定义字符串 String str2 new String("Hello World");// 可以通过打印对象的哈希码来查看是否是同一个对象&#xff08;在一定程度上反映引用情况&#xff09; Sy…...

2024-2025 ICPC, NERC, Southern and Volga Russian Regional Contest(ABCGJLN)

文章目录 N. Fixing the Expression思路code J. Waiting for...思路code C. DIY思路code L. Bridge Renovation思路code A. Bonus Project思路code G. Guess One Character思路code B. Make It Equal思路code N. Fixing the Expression 思路 签到题&#xff0c;只改变中间的字…...

SpringBoot(9)-Dubbo+Zookeeper

目录 一、了解分布式系统 二、RPC 三、Dubbo 四、SpringBootDubboZookeeper 4.1 框架搭建 4.2 实现RPC 一、了解分布式系统 分布式系统&#xff1a;由一组通过网络进行通信&#xff0c;为了完成共同的任务而协调工作的计算机节点组成的系统 二、RPC RPC&#xff1a;远程…...

现代密码学

概论 计算机安全的最核心三个关键目标&#xff08;指标&#xff09;/为&#xff1a;保密性 Confidentiality、完整性 Integrity、可用性 Availability &#xff0c;三者称为 CIA三元组 数据保密性&#xff1a;确保隐私或是秘密信息不向非授权者泄漏&#xff0c;也不被非授权者使…...

websocket是什么?

一、定义 Websocket是一种在单个TCP连接上进行全双工通信的协议&#xff0c;它允许服务器主动向客户端推送数据&#xff0c;而不需要客户端不断的轮询服务器来获取数据 与http协议不同&#xff0c;http是一种无状态的&#xff0c;请求&#xff0c;响应模式的协议(单向通信)&a…...

idea怎么打开两个窗口,运行两个项目

今天在开发项目的时候&#xff0c;前端希望运行一下以前的项目&#xff0c;于是就需要开两个 idea 窗口&#xff0c;运行两个项目 这里记录一下如何设置&#xff1a;首先依次点击&#xff1a; File -> Settings -> Appearance & Behavior ->System Settings 看到如…...

aws服务--机密数据存储KMS(1)介绍和使用

在AWS(Amazon Web Services)中存储机密数据时,安全性和合规性是最重要的考虑因素。AWS 提供了多个服务和工具,帮助用户确保数据的安全性、机密性以及合规性。AWS Secrets Manager、KMS(Key Management Service)是推荐的存储机密数据的AWS服务和最佳实践。这里先看KMS。 …...

怎么编译OpenWrt镜像?-基于Widora开发板

1.准备相应的环境&#xff0c;我使用的环境是VMware16ubuntu20.04&#xff0c;如图1所示安装编译所需的依赖包&#xff1b; sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-…...

Android opencv使用Core.hconcat 进行图像拼接

Android 集成OpenCV-CSDN博客 import org.opencv.android.Utils; import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; import android.graphics.Bitmap; import android.graphics.BitmapFactor…...

小杨的N字矩阵c++

题目描述 小杨想要构造一个m*m 的 N 字矩阵&#xff08; m为奇数&#xff09;&#xff0c;这个矩阵的从左上角到右下角的对角线、第1 列和第m 列都 是半角加号 &#xff0c;其余都是半角减号 - 。例如&#xff0c;一个 5*5 的 N 字矩阵如下&#xff1a; --- -- -- -- --- 请…...

C 语言面向对象

面向对象的基本特性&#xff1a;封装&#xff0c;继承&#xff0c;多态 1.0 面向过程概念 当我们在编写程序时&#xff0c;通常采用以下步骤&#xff1a; 1. 将问题的解法分解成若干步骤 2. 使用函数分别实现这些步骤 3. 依次调用这些函数 这种编程风格的被称作 面向过程…...

初试无监督学习 - K均值聚类算法

文章目录 1. K均值聚类算法概述2. k均值聚类算法演示2.1 准备工作2.2 生成聚类用的样本数据集2.3 初始化KMeans模型对象&#xff0c;并指定类别数量2.4 用样本数据训练模型2.5 用训练好的模型生成预测结果2.6 输出预测结果2.7 可视化预测结果 3. 实战小结 1. K均值聚类算法概述…...

部署实战(二)--修改jar中的文件并重新打包成jar文件

一.jar文件 JAR 文件就是 Java Archive &#xff08; Java 档案文件&#xff09;&#xff0c;它是 Java 的一种文档格式JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中&#xff0c;多出了一个META-INF/MANIFEST.MF 文件META-INF/MANIFEST.MF 文件在生成 JAR 文件的时候…...

C++中的原子操作:原子性、内存顺序、性能优化与原子变量赋值

一、原子操作与原子性 原子操作&#xff08;atomic operation&#xff09;是并发编程中的一个核心概念&#xff0c;指的是在多线程环境中&#xff0c;一个操作一旦开始&#xff0c;就不会被其他线程的操作打断&#xff0c;直至该操作完成。这种不可分割的特性保证了操作的原子…...

【JavaEE初阶】多线程初阶下部

文章目录 前言一、volatile关键字volatile 能保证内存可见性 二、wait 和 notify2.1 wait()方法2.2 notify()方法2.3 notifyAll()方法2.4 wait 和 sleep 的对比&#xff08;面试题&#xff09; 三、多线程案例单例模式 四、总结-保证线程安全的思路五、对比线程和进程总结 前言…...

数据结构(Java版)第二期:包装类和泛型

目录 一、包装类 1.1. 基本类型和对应的包装类 1.2. 装箱和拆箱 1.3. 自动装箱和自动拆箱 二、泛型的概念 三、引出泛型 3.1. 语法规则 3.2. 泛型的优点 四、类型擦除 4.1. 擦除的机制 五、泛型的上界 5.1. 泛型的上界的定义 5.2. 语法规则 六、泛型方法 6.1…...

[原创](Modern C++)现在C++的关键性概念: 通俗易懂的解释“多态“与“虚函数“的内在关系

常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共23年] 职业生涯: 21年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse、C Bui…...

python操作Elasticsearch

使用elasticsearch 6.x版本&#xff0c;操作es数据。 #! -*- coding:utf-8 -* import timefrom elasticsearch import Elasticsearch, helpersclass EstUtil:_instance Nonedef __new__(cls, *args, **kwargs):if not cls._instance:cls._instance super(EstUtil, cls).__ne…...

【数据分享】2024年我国省市县三级的住宿服务设施数量(8类住宿设施/Excel/Shp格式)

宾馆酒店、旅馆招待所等住宿服务设施的配置情况是一个城市公共基础设施完善程度的重要体现&#xff0c;一个城市住宿服务设施种类越丰富&#xff0c;数量越多&#xff0c;通常能表示这个城市的公共服务水平越高&#xff01; 本次我们为大家带来的是我国各省份、各地级市、各区…...

从尾到头打印链表 剑指offer

题目描述 输入一个链表的头节点&#xff0c;从尾到头反过来打印出每个节点的值。 链表节点定义如下&#xff1a; struct ListNode {int m_nKey;ListNode*m_pNext; }; 代码实现 栈实现&#xff1a; 递归实现&#xff1a; 但是用递归实现可能存在的问题&#xff1a;...

【测试工具JMeter篇】JMeter性能测试入门级教程(二)出炉,测试君请各位收藏了!!!

上篇文章&#xff1a;CSDN 我们介绍了JMeter的一些原理介绍&#xff0c;以及安装配置和启动流程&#xff0c;本文我们就来讲讲JMeter如何使用。 一、JMeter目录结构组成 1. 根目录 Jmeter安装包解压后的根目录如下图&#xff1a; 1.1 backups目录&#xff1a;脚本备份目录&am…...

【JavaEE】Servlet:表白墙

文章目录 一、前端二、前置知识三、代码1、后端2、前端3、总结 四、存入数据库1、引入 mysql 的依赖&#xff0c;mysql 驱动包2、创建数据库数据表3、调整上述后端代码3.1 封装数据库操作&#xff0c;和数据库建立连接3.2 调整后端代码 一、前端 <!DOCTYPE html> <ht…...

WPF中如何让Textbox显示为一条直线

由于Textbox直接使用是一条直线 设置如下代码 可以让Textbox变为直线输入 <Style TargetType"TextBox"x:Key"UsernameTextBoxStyle"><Setter Property"Template"><Setter.Value><ControlTemplate TargetType"{x:Typ…...

多维数组与特殊矩阵:存储与压缩

多维数组与特殊矩阵&#xff1a;存储与压缩 一、多维数组的存储 &#xff08;一&#xff09;基本概念 多维数组是线性表的推广&#xff0c;例如二维数组可以看作是元素为一维数组的线性表&#xff0c;三维数组可以看作是元素为二维数组的线性表&#xff0c;以此类推。在内存…...

第三讲 架构详解:“隐语”可信隐私计算开源框架

目录 隐语架构 隐语架构拆解 产品层 算法层 计算层 资源层 互联互通 跨域管控 本文主要是记录参加隐语开源社区推出的第四期隐私计算实训营学习到的相关内容。 隐语架构 隐语架构拆解 产品层 产品定位&#xff1a; 通过可视化产品&#xff0c;降低终端用户的体验和演…...

springboot项目使用maven打包,第三方jar问题

springboot项目使用maven package打包为可执行jar后&#xff0c;第三方jar会被打包进去吗&#xff1f; 答案是肯定的。做了实验如下&#xff1a; 第三方jar的项目结构及jar包结构如下&#xff1a;&#xff08;该第三方jar采用的是maven工程&#xff0c;打包为普通jar&#xf…...

突破内存限制:Mac Mini M2 服务器化实践指南

本篇文章&#xff0c;我们聊聊如何使用 Mac Mini M2 来实现比上篇文章性价比更高的内存服务器使用&#xff0c;分享背后的一些小的思考。 希望对有类似需求的你有帮助。 写在前面 在上文《ThinkPad Redis&#xff1a;构建亿级数据毫秒级查询的平民方案》中&#xff0c;我们…...

【Linux】Linux系统电源状态

前言 本文主要介绍Linux系统电源状态。 Linux内核代码声明如下&#xff0c;位于kernel/power/suspend.c。 参考链接 Linux系统电源状态 在Linux操作系统中&#xff0c;将电源划分为如下几个状态&#xff1a; ACPI StateLinux StateDescriptionS0On(on)WorkingS1Standby(sta…...

《用Python画蔡徐坤:艺术与编程的结合》

简介 大家好&#xff01;今天带来一篇有趣的Python编程项目&#xff0c;用代码画出知名偶像蔡徐坤的形象。这个项目使用了Python的turtle库&#xff0c;通过简单的几何图形和精心设计的代码来展示艺术与编程的结合。 以下是完整的代码和效果介绍&#xff0c;快来试试看吧&…...

ARM(安谋) China处理器

0 Preface/Foreword 0.1 参考博客 Cortex-M23/M33与STAR-MC1星辰处理器 ARM China&#xff0c;2018年4月established&#xff0c;独立运行。 1 处理器类型 1.1 周易AIPU 1.2 STAR-MC1&#xff08;星辰处理器&#xff09; STAT-MC1&#xff0c;主要为满足AIOT应用性能、功…...

硬中断关闭后的堆栈抓取方法

一、背景 性能和稳定性是一个计算机工程里的一个永恒的主题。其中尤其稳定性这块的问题发现和问题分析及问题解决就依赖合适的对系统的观测的手段&#xff0c;帮助我们发现问题&#xff0c;识别问题原因最后才能解决问题。稳定性问题里尤其底层问题里&#xff0c;除了panic问题…...

电影风格城市夜景旅拍Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 电影风格城市夜景旅拍通过 Lightroom 调色&#xff0c;将城市夜晚的景色打造出如同电影画面般的质感和氛围。以独特的色彩和光影处理&#xff0c;展现出城市夜景的魅力与神秘。 预设信息 调色风格&#xff1a;电影风格预设适合类型&#xff1a;人像&#xff0c;街拍…...

基于FPGA的2FSK调制-串口收发-带tb仿真文件-实际上板验证成功

基于FPGA的2FSK调制 前言一、2FSK储备知识二、代码分析1.模块分析2.波形分析 总结 前言 设计实现连续相位 2FSK 调制器&#xff0c;2FSK 的两个频率为:fI15KHz&#xff0c;f23KHz&#xff0c;波特率为 1500 bps,比特0映射为f 载波&#xff0c;比特1映射为 载波。 1&#xff09…...

【Python】构建事件驱动架构:用Python实现实时应用的高效系统

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 事件驱动架构(Event-Driven Architecture,EDA)是一种基于事件流动进行系统设计的模式,广泛应用于游戏开发、实时监控和分布式系统中。它通过解耦事件的生产者和消费者,提升系统的可扩展性和灵活性。本文章从…...

安装 Docker(使用国内源)

一、安装Docker-ce 1、下载阿里云的repo源 [rootlocalhost ~]# yum install yum-utils -y && yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && yum makecache # 尝试列出 docker-ce 的版本 [rootlocalh…...

001 MATLAB介绍

前言&#xff1a; 软件获取渠道有很多&#xff0c;难点也就是百度网盘下载慢&#xff1b; 线上版本每月有时间限制。 01 MATLAB介绍 性质&#xff1a; MATLAB即Matrix Laboratory 矩阵实验室的意思&#xff0c;是功能强大的计算机高级语言, 已广泛应用于各学科研究部门、…...

vscode利用ofExtensions插件可以调试单进程Openfoam,但是不能调试mpi多进程案例

问题&#xff1a; 准备调试流固耦合案例&#xff0c;包括流体和固体的&#xff0c;但是用ofextensions插件。但是流体的话使用的是域分解方法&#xff0c;将大的单元分成了小的单元用mpi并行处理&#xff0c;里面的program必须输入"/usr/bin/mpirun", // 这里改为使…...

2022年计算机网络408考研真题解析

第一题&#xff1a; 解析&#xff1a;网络体系结构-数据链路层 在ISO网络参考模型中&#xff0c;运输层&#xff0c;网络层和数据链路层都实现了流量的控制功能&#xff0c;其中运输层实现的是端到端的流量控制&#xff0c;网络层实现的是整个网络的流量控制&#xff0c;数据链…...

React-useEffect的使用

useEffect react提供的一个常用hook&#xff0c;用于在函数组件中执行副作用操作&#xff0c;比如数据获取、订阅或手动更改DOM。 基本用法&#xff1a; 接受2个参数&#xff1a; 一个包含命令式代码的函数&#xff08;副作用函数&#xff09;。一个依赖项数组&#xff0c;用…...

python学习笔记(10)算法(3)列表

一、列表 列表&#xff08;list&#xff09;是一个抽象的数据结构概念&#xff0c;它表示元素的有序集合&#xff0c;支持元素访问、修改、添加、删除和遍历 等操作&#xff0c;无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表&#…...

嵌入式系统与单片机工作原理详解

随着现代科技的发展&#xff0c;嵌入式系统已经深入到我们日常生活中的方方面面。无论是智能家居、汽车电子&#xff0c;还是工业控制、医疗设备&#xff0c;都离不开嵌入式系统的支持。而单片机作为嵌入式系统的核心组件&#xff0c;是实现这些功能的关键之一。本文将详细介绍…...

Spark SQL 之 QueryStage

ExchangeQueryStageExec ExchangeQueryStageExec 分为两种...

Flink Standalone 集群模式安装部署教程

目录 一、前言 二、环境准备 三、安装步骤 1. 下载并安装 Flink 4. 配置 Flink 5. 配置环境变量 6. 启动 Flink 集群 7. 访问 Flink Web 界面 四、简单测试 五、常见问题和解决办法 1. 启动失败&#xff0c;无法连接到 TaskManager 2. Web 界面无法访问 六、总结 …...

【运维】 使用 shell 脚本实现类似 jumpserver 效果实现远程登录linux 服务器

实现效果 通过序号选择登录&#xff1a; 配置证书登录 配置证书登录可以免去每次都输入密码的麻烦。详见另一篇博文&#xff1a; 【ssh】使用秘钥对&#xff08;公钥/私钥&#xff09;登录linux主机以及原理介绍 自动登录脚本 直接复用以下脚本即可&#xff0c;在 server…...

根据实验试要求,打通隧道连接服务器上的数据库,前端进行数据调用。

1.背景介绍 数据库布置在了工大实验试K80服务器上&#xff0c;本地属于外网无法直接访问校园内网。需要打通隧道&#xff0c;通过堡垒机进行服务器的访问。获取到数据库数据进行前端展示。 2.打通隧道 访问指令&#xff1a; 我选择使用Xshell打通隧道。优点&#xff1a;凭证…...

ubuntu 安装 docker 记录

本文假设系统为 Ubuntu&#xff0c;从 16.04 到 24.04&#xff0c;且通过 APT 命令安装。理论上也其他 Debian 系的操作系统。 WSL 也一样。 感觉 Docker 官方在强推 Docker Desktop&#xff0c;搜索 Docker 安装文档&#xff0c;一不小心就被导航到了 Docker Desktop 的安装页…...

46.坑王驾到第十期:vscode 无法使用 tsc 命令

点赞收藏加关注&#xff0c;你也能住大别墅&#xff01; 一、问题重现 上一篇帖子记录了我昨天在mac上安装typescript及调试的过程。今天打开vscode准备开干的时候&#xff0c;发现tsc命令又无法使用了&#xff0c;然后按照昨天的方法重新安装调试后又能用了&#xff0c;但是关…...