基于 AI 辅助的在线考试系统全流程开发实战
作为开发者,我们常面临需求变更频繁、交付周期紧的挑战。最近尝试利用 AI 工具生成一个完整的在线考试系统,从数据库设计到前端交互,体验了代码自动生成带来的效率变革。本文将深入剖析核心代码逻辑,展示从需求到可运行系统的技术路径。
数据库设计:自动生成的表结构与关系映射
AI 根据需求生成了 8 张核心表,每张表都包含完整的字段约束和索引设计。以下是关键表的 SQL 结构:
-- 用户表设计
CREATE TABLE `t_user` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户 ID',
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(100) NOT NULL COMMENT '密码 (MD5 加密)',
`real_name` varchar(50) NOT NULL COMMENT '真实姓名',
`id_card` varchar(20) DEFAULT NULL COMMENT '身份证号',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`role_id` bigint NOT NULL COMMENT '角色 ID(1:管理员,2:教师,3:学生)',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态 (0:禁用,1:正常)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
(`id`),
KEY `idx_username` (`username`),
KEY `idx_role_id` (`role_id`),
KEY `idx_status` (`status`)
) ENGINEInnoDB CHARSETutf8mb4 COMMENT;
`t_question` (
`id` AUTO_INCREMENT COMMENT ,
`question_type_id` COMMENT ,
`subject_id` COMMENT ,
`content` text COMMENT ,
`option_a` () COMMENT ,
`option_b` () COMMENT ,
`option_c` () COMMENT ,
`option_d` () COMMENT ,
`answer` () COMMENT ,
`score` COMMENT ,
`difficulty` tinyint COMMENT ,
`analysis` text COMMENT ,
`create_by` COMMENT ,
`create_time` datetime ,
`update_time` datetime ,
(`id`),
KEY `idx_question_type` (`question_type_id`),
KEY `idx_subject` (`subject_id`),
KEY `idx_difficulty` (`difficulty`)
) ENGINEInnoDB CHARSETutf8mb4 COMMENT;
`t_exam_record` (
`id` AUTO_INCREMENT COMMENT ,
`paper_id` COMMENT ,
`user_id` COMMENT ,
`start_time` datetime COMMENT ,
`end_time` datetime COMMENT ,
`status` tinyint COMMENT ,
`score` (,) COMMENT ,
`cheat_count` COMMENT ,
`ip_address` () COMMENT ,
(`id`),
KEY `idx_user_paper` (`user_id`,`paper_id`,`status`) COMMENT ,
KEY `idx_status` (`status`),
KEY `idx_end_time` (`end_time`)
) ENGINEInnoDB CHARSETutf8mb4 COMMENT;

