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 文件下修改即可
如图:链接字符串

运行

进入登录界面
login
输入账号密码会自动判定是老师还是学生或者管理员

   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("账号和密码不能为空!");
            }
            
        
        }

登录成功
主界面
登录失败
在这里插入图片描述
用户管理
index

缺陷

功能暂时只有添加用户、添加题库、题库查看,这三类批量导入没有实现,然后学生只能查看题库,老师只能添加题库和查看题库,管理员是多一项用户管理。

获取源码

关注
微-信-公-众-号
【云日记Journal】
发送: c#项目