c# 实现试卷管理系统【含源码】
这是一个试题管理的系统,功能不怎么多,但是够用,可以加入试题,还有用户的身份验证登录界面,第一步配置的话一定要链接上自己的数据库,我这里用的是sqlserver
链接数据库
-- 创建数据库
CREATE DATABASE EXAM_SYSTEM
ON PRIMARY
(NAME = 'EXAM_SYSTEM',
FILENAME = 'Z:\DATA\EXAM_SYSTEM.MDF' ,
SIZE = 5MB,
MAXSIZE = 20MB,
FILEGROWTH = 20%)
LOG ON
(NAME ='EXAM_SYSTEM_LOG',
FILENAME = 'Z:\DATA\EXAM_SYSTEM_LOG. LDF',
SIZE = 5MB,
MAXSIZE = 10MB,
FILEGROWTH = 2MB)
USE EXAM_SYSTEM;
-- 试题表:question
DROP table question
CREATE TABLE question (
id INT NOT NULL PRIMARY KEY,
content VARCHAR(500) NOT NULL,
option_a VARCHAR(200) NOT NULL,
option_b VARCHAR(200) NOT NULL,
option_c VARCHAR(200) NOT NULL,
option_d VARCHAR(200) NOT NULL,
answer VARCHAR(200) NOT NULL,
score INT NOT NULL
);
INSERT INTO question(id,content,option_a,option_b,option_c,option_d,answer,score) VALUES('4','云边有个小卖部,作者是谁:','杜甫','李白','额嗡嗡','张嘉佳','张嘉佳','2');
--填充试题表
INSERT INTO question VALUES (1, '1+1=?', '2', '1', '0', '0', '2', 2);
INSERT INTO question VALUES (2, '2+2=?', '3', '4', '5', '2', '4', 2);
INSERT INTO question VALUES (3, '今天是星期几?', '星期一', '星期二', '星期三', '星期四', '星期一', 1);
-- 试卷表:paper
CREATE table paper (
id INT NOT NULL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
subject VARCHAR(50) NOT NULL,
author VARCHAR(20) NOT NULL,
created_at DATETIME NOT NULL,
status INT NOT NULL
);
-- 填充试卷表
INSERT INTO paper VALUES (1, '数学期末考试', '数学', '张三', '2021-12-30 12:00:00', 1);
INSERT INTO paper VALUES (2, '英语期末考试', '英语', '李四', '2021-12-31 13:00:00', 0);
-- 试卷-试题关系表:paper_question
CREATE TABLE paper_question (
id INT NOT NULL PRIMARY KEY,
paper_id INT NOT NULL,
question_id INT NOT NULL,
FOREIGN KEY (paper_id) REFERENCES paper(id),
FOREIGN KEY (question_id) REFERENCES question(id)
);
--填充试卷关系表
INSERT INTO paper_question VALUES (1, 1, 1);
INSERT INTO paper_question VALUES (2, 1, 2);
INSERT INTO paper_question VALUES (3, 2, 3);
-- 用户表:user
CREATE TABLE user_info(
id INT NOT NULL PRIMARY KEY,
username VARCHAR(20) NOT NULL,
password VARCHAR(20) NOT NULL,
role INT NOT NULL
);
-- 用户填充信息
INSERT INTO user_info VALUES (1, 'admin', 'admin123', 0);
INSERT INTO user_info VALUES (2, 'teacher', 'teacher123', 1);
INSERT INTO user_info VALUES (3, 'student1', 'student123', 2);
INSERT INTO user_info VALUES (4, 'student2', 'student234', 2);
INSERT INTO user_info VALUES (5, 'student3', 'student345', 2);
用sqlserver如何查看自己的链接字符串?我的方法是这样的:
string sqlConToWindows = “server=服务名;database=数据库名;Trusted_Connection=SSPI”;
这里只需要把服务名和数据库名更换成你自己的就行。
这个地方就是服务器名称
这个就是数据库名称了
然后在源代码中的 Data 文件下修改即可
如图:
运行
进入登录界面
输入账号密码会自动判定是老师还是学生或者管理员
private void LoginButton_Click(object sender, EventArgs e)
{
userName = textUserName.Text.Trim();
userPwd = textUserPwd.Text.Trim();
if (userName != "" && userPwd != "")
{
Data data = new Data();
LoginSql = $"select * from user_info where username='{userName}' and password ='{userPwd}';";
if (data.judge(LoginSql))
{
String role = (String)data.getObject(LoginSql, "role");
standing = $"{(role.Equals("0") ? admin : (role.Equals("1") ? teacher : student))}";
MessageBox.Show($"{userName}登录成功");
indexF index = new indexF();
index.tips = $"欢迎{userName}{standing}使用本系统";
index.userName = userName;
index.role = role;
this.Hide();
index.ShowDialog();
this.Dispose();
}
else {
MessageBox.Show("账号或密码错误");
}
}
else {
MessageBox.Show("账号和密码不能为空!");
}
}
缺陷
功能暂时只有添加用户、添加题库、题库查看,这三类批量导入没有实现,然后学生只能查看题库,老师只能添加题库和查看题库,管理员是多一项用户管理。
获取源码
关注
微-信-公-众-号
【云日记Journal】
发送: c#项目