使用前后端分离开发学生管理系统。使用java框架springboot、mysql、mybatis实现学生管理系统后端。使用html、css、js、vue、element-ui实现前端页面。

前后端分离是一种架构设计方式,它将前端和后端分开进行开发,使得两者之间可以独立演化。这种方式有许多优点,例如可以使开发人员更自由地分配工作,可以使前端和后端的技术栈独立,还可以使前端和后端的更新周期独立。

在这种方式下开发学生管理系统,你可以使用 Java 框架 Spring Boot 来开发后端,使用 MySQL 和 MyBatis 来存储和操作数据,使用 HTML、CSS、JS、Vue 和 Element-UI 来开发前端页面。

对于后端开发,你需要了解 Spring Boot 的基本概念和用法,包括如何创建 Spring Boot 应用、如何使用 Spring MVC 框架进行 Web 开发、如何使用 MyBatis 进行数据持久化操作等。

对于前端开发,你需要了解 HTML、CSS 和 JS 的基本用法,以及 Vue 和 Element-UI 的基本概念和用法。你还需要学习如何使用这些工具来创建响应式的 Web 页面,并与后端通过 HTTP 进行交互。

总的来说,要使用前后端分离的方式开发学生管理系统,你需要具备一定的 Web 开发基础知识,并且熟悉相关的框架和工具。

  1. 准备工作:安装 JDK、Maven、MySQL 等软件,并创建数据库和数据表。

  2. 创建 Spring Boot 项目:使用 IDEA 或其他工具创建一个新的 Spring Boot 项目。

  3. 配置 MyBatis:在项目中添加 MyBatis 依赖,并配置 MyBatis 的数据源和映射文件。

  4. 编写实体类和 DAO 接口:创建 Student 实体类和 StudentDao 接口,并编写相应的映射文件。

  5. 编写服务层和控制器:创建 StudentService 接口和 StudentController 类,并在控制器中处理 HTTP 请求。

  6. 启动服务器:运行 Spring Boot 项目,启动服务器。

  7. 创建前端项目:使用 Vue CLI 或其他工具创建一个新的 Vue 项目。

  8. 安装并引入 Element-UI:使用 npm 命令安装 Element-UI,并在 Vue 项目中引入 Element-UI。

  9. 编写前端页面:使用 HTML、CSS 和 Vue 技术编写前端页面,并使用 Element-UI 组件创建学生管理系统的用户界面。

  10. 配置前端路由:使用 Vue Router 配置前端路由,让不同的页面能够通过 URL 进行访问。

  11. 编写前端业务逻辑:使用 axios 库或其他工具进行 HTTP 请求,与后端进行交互。在 Vue 组件中编写相应的业务逻辑,实现学生管理系统的功能。

  12. 配置跨域访问:如果前端和后端的服务器地址不同,可能需要配置跨域访问。在 Spring Boot 中,可以使用 CORS 过滤器或者注解 @CrossOrigin 来实现。

  13. 发布项目:在本地调试前端和后端项目,确保功能正常。然后将前端项目打包,并将打包后的文件部署到 Web 服务器上。将后端项目打包,并使用 Java 命令行工具运行。

以上是使用前后端分离的方式开发学生管理系统的基本步骤。

后端具体代码:

首先,这里给出使用 Spring Boot 和 MyBatis 实现学生管理系统后端的具体代码实现。

  1. 实体类:Student 实体类表示学生,包含学号、姓名、性别和年龄等属性。
    public class Student {
        private int id;
        private String name;
        private String gender;
        private int age;
    
        // getter 和 setter 方法省略
    }
    
  2. DAO 接口:StudentDao 接口定义了对学生数据进行操作的方法,包括查询、新增、修改和删除等。
    public interface StudentDao {
        List<Student> getAll();
        Student getById(int id);
        int add(Student student);
        int update(Student student);
        int delete(int id);
    }
    
  3. 映射文件:StudentDao.xml 文件定义了对应 StudentDao 接口的 SQL 语句。
    <!-- 省略 namespace 和 mapper 标签 -->
    
    <select id="getAll" resultType="Student">
        SELECT * FROM student
    </select>
    
    <select id="getById" resultType="Student">
        SELECT * FROM student WHERE id = #{id}
    </select>
    
    <insert id="add" parameterType="Student">
        INSERT INTO student (name, gender, age) VALUES (#{name}, #{gender}, #{age})
    </insert>
    
    <update id="update" parameterType="Student">
        UPDATE student SET name = #{name}, gender = #{gender}, age = #{age} WHERE id = #{id}
    </update>
    
    <delete id="delete" parameterType="int">
        DELETE FROM student WHERE id = #{id}
    </delete>
    
  4. 服务层接口:StudentService 接口定义了对学生数据进行业务处理的方法,包括获取所有学生、查询指定学生、新增学生、修改学生和删除学生等。
    public interface StudentService {
        List<Student> getAll();
        Student getById(int id);
        void add(Student student);
        void update(Student student
        void delete(int id);
    }
  5. 服务层实现类:StudentServiceImpl 类实现了 StudentService 接口,通过调用 DAO 层的方法来实现业务逻辑。
    @Service
    public class StudentServiceImpl implements StudentService {
        @Autowired
        private StudentDao studentDao;
    
        @Override
        public List<Student> getAll() {
            return studentDao.getAll();
        }
    
        @Override
        public Student getById(int id) {
            return studentDao.getById(id);
        }
    
        @Override
        public void add(Student student) {
            studentDao.add(student);
        }
    
        @Override
        public void update(Student student) {
            studentDao.update(student);
        }
    
        @Override
        public void delete(int id) {
            studentDao.delete(id);
        }
    }
    
  6. 控制器:StudentController 类处理 HTTP 请求,并调用服务层的方法来完成学生管理系统的功能。
    @RestController
    @RequestMapping("/students")
    public class StudentController {
        @Autowired
        private StudentService studentService;
    
        @GetMapping
        public List<Student> getAll() {
            return studentService.getAll();
        }
    
        @GetMapping("/{id}")
        public Student getById(@PathVariable int id) {
            return studentService.getById(id);
        }
    
        @PostMapping
        public void add(@RequestBody Student student) {
            studentService.add(student);
        }
    
        @PutMapping
        public void update(@RequestBody Student student) {
            studentService.update(student);
        }
    
        @DeleteMapping("/{id}")
        public void delete(@PathVariable int id) {
            studentService.delete(id);
        }
    }
    

    以上是使用 Spring Boot 和 MyBatis 实现学生管理系统后端的具体代码实现。

具体前端代码实现:

这里给出使用 Vue.js 和 Element-UI 实现学生管理系统前端的具体代码实现。

  1. 安装并引入 Element-UI:
    # 安装 Element-UI
    npm install element-ui
    
    # 在 main.js 中引入 Element-UI
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    Vue.use(ElementUI)
    
  2. 编写前端页面:
    <template>
      <div class="student-list">
        <!-- 搜索栏 -->
        <el-input v-model="searchKey" placeholder="请输入搜索内容" style="width: 200px; margin-bottom: 20px;">
          <el-button slot="append" @click="search">搜索</el-button>
        </el-input>
    
        <!-- 数据表格 -->
        <el-table :data="students" border style="width: 100%">
          <!-- 表格列 -->
          <el-table-column prop="id" label="学号" width="120"></el-table-column>
          <el-table-column prop="name" label="姓名" width="120"></el-table-column>
          <el-table-column prop="gender" label="性别" width="80"></el-table-column>
          <el-table-column prop="age" label="年龄" width="80"></el-table-column>
          <el-table-column label="操作" width="180">
            <template slot-scope="scope">
              <el-button size="mini" @click="edit(scope.row)">编辑</el-button>
              <el-button size="mini" type="danger" @click="delete(scope.row.id)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
    
        <!-- 分页器 -->
        <el-pagination
          v-if="total > 0"
          :current-page="page"
          :page-sizes="[10, 20, 30]"
          :page-size="size"
          :total="total"
          layout="total, sizes, prev, pager, next, jumper"
          @current-change="pageChange"
          @size-change="sizeChange"
        ></el-pagination>
    
        <!-- 新增/编辑对话框 -->
        <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" :before-close="closeDialog">
        <el-form ref="form" :model="form" label-width="80px">
        <el-form-item label="学号" prop="id">
        <el-input v-model="form.id" disabled></el-input>
        </el-form-item>
           <el-form-item label="姓名" prop="name" :rules="[{ required: true, message: '请输入姓名', trigger: 'blur' }]">
           <el-input v-model="form.name"></el-input>
        </el-form-item>
        <el-form-item label="性别" prop="gender" :rules="[{ required: true, message: '请选择性别', trigger: 'change' }]">
           <el-radio v-model="form.gender" label="男"></el-radio>
           <el-radio v-model="form.gender" label="女"></el-radio>
        </el-form-item>
        <el-form-item label="年龄" prop="age" :rules="[{ required: true, message: '请输入年龄', trigger: 'blur' }]">
         <el-input v-model="form.age"></el-input>
        </el-form-item>
      </el-form>
    <div slot="footer" class="dialog-footer">
    <el-button @click="dialogVisible = false">取 消</el-button>
    <el-button type="primary" @click="save">确 定</el-button>
    </div>
    </el-dialog>
    
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          // 搜索关键字
          searchKey: '',
          // 分页参数
          page: 1,
          size: 10,
          total: 0,
          // 学生列表
          students: [],
          // 新增/编辑对话框参数
          dialogTitle: '新增学生',
          dialogVisible: false,
          form: {
            id: '',
            name: '',
            gender: '男',
            age: ''
          }
        }
      },
      // 在页面加载完成后获取学生列表
      mounted() {
        this.getStudents()
      },
      methods: {
        // 获取学生列表
        async getStudents() {
          const res = await this.$http.get('/students', {
            params: {
              search: this.searchKey,
              page: this.page,
              size: this.size
            }
          })
          this.students = res.data.students
          this.total = res.data.total
        },
        // 搜索
        search() {
          this.getStudents()
        },
        // 分页参数变化
        pageChange(page) {
        this.page = page
        this.getStudents()
        },
        sizeChange(size) {
        this.size = size
        this.getStudents()
        },
        // 打开新增/编辑对话框
        openDialog(student) {
        this.form = Object.assign({}, student)
        if (student) {
          this.dialogTitle = '编辑学生'
        } else {
          this.dialogTitle = '新增学生'
        }
        this.dialogVisible = true
    },
        // 关闭新增/编辑对话框
        closeDialog() {
        this.$refs.form.resetFields()
        this.form = {
        id: '',
        name: '',
        gender: '男',
        age: ''
       }
    },
        // 编辑学生
        edit(student) {
        this.openDialog(student)
        },
        // 删除学生
        async delete(id) {
        await this.$confirm('此操作将永久删除该学生, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
        })
        await this.$http.delete(/students/${id})
        this.getStudents()
        },
        // 保存学生
        async save() {
        if (this.form.id) {
          // 编辑学生
          await this.$http.put(/students/${this.form.id}, this.form)
        } else {
        // 新增学生
        await this.$http.post('/students', this.form)
       }
       this.dialogVisible = false
       this.getStudents()
       }
     }
    }
    </script>
    
    <style>
    .student-list {
      display: flex;
      flex-direction: column;
      height: 100%;
    }
    .student-list > .el-table {
      flex: 1;
    }
    </style>
    

    以上是使用 Vue.js 和 Element-UI 实现学生管理系统前端的具体代码实现。希望这些代码能够帮到你。

在实际开发中,你还需要注意以下几点:

  1. 前后端的数据交互可以使用 HTTP 协议的 GET、POST、PUT 和 DELETE 方法来实现。前端可以使用 Axios 或者 fetch API 来发送 HTTP 请求。

  2. 前端页面的布局可以使用 Element-UI 中的布局组件,如 el-row、el-col、el-card 等来实现。

  3. 前端页面的交互可以使用 Element-UI 中的交互组件,如 el-dialog、el-button、el-input、el-form 等来实现。

  4. 前端页面的样式可以使用 CSS 来调整,也可以使用 Element-UI 中的样式类来调整。

  5. 前端页面的路由可以使用 Vue Router 来实现,它能够帮助你实现单页应用。

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值