小明(学生):最近我们学院要开发一个实习生管理系统,听说你很擅长编程,能不能跟我聊聊这个系统怎么设计?
小李(程序员):当然可以!首先我们需要明确需求。这个系统主要用来管理实习信息,包括学生、企业、岗位等内容。
小明:那我们先从数据库开始吧,你觉得需要哪些表呢?
小李:好的。我们可以设计几个核心表:`students` 存储学生信息,`companies` 存储企业信息,`positions` 存储岗位信息,以及 `internships` 表记录具体的实习情况。
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
major VARCHAR(50),
email VARCHAR(100)
);
CREATE TABLE companies (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
address VARCHAR(200)
);
CREATE TABLE positions (
id INT PRIMARY KEY AUTO_INCREMENT,
company_id INT,
title VARCHAR(100),
description TEXT,
FOREIGN KEY (company_id) REFERENCES companies(id)
);
CREATE TABLE internships (
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
position_id INT,
start_date DATE,
end_date DATE,
status ENUM('pending', 'approved', 'rejected'),
FOREIGN KEY (student_id) REFERENCES students(id),
FOREIGN KEY (position_id) REFERENCES positions(id)
);
小明:听起来不错!接下来是怎么处理数据呢?
小李:后端可以用 Python 的 Flask 框架。比如,创建一个 API 来查询所有实习生的信息:
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/api/interns', methods=['GET'])
def get_interns():
# 这里假设我们已经连接到数据库
interns = [
{"id": 1, "name": "张三", "major": "计算机科学"},
{"id": 2, "name": "李四", "major": "软件工程"}
]
return jsonify(interns)
小明:那前端界面呢?
小李:可以使用 React 构建一个简单的表格展示页面。这里是一个示例组件:
import React, { useEffect, useState } from 'react';
function InternTable() {
const [interns, setInterns] = useState([]);
useEffect(() => {
fetch('/api/interns')
.then(response => response.json())
.then(data => setInterns(data));
}, []);
return (
ID | Name | Major |
---|---|---|
{intern.id} | {intern.name} | {intern.major} |
);
}
小明:原来如此,感觉这个系统既实用又有趣!谢谢你,小李。
小李:不客气!希望你们学院的项目能顺利完成。