基于C#窗体应用实现的的方言管理系统

目录
1 系统综述 2
1.1 系统使用说明 3
1.1.1 系统界面 3
1.2 软件功能 10
1.2.1 管理员功能 10
1.2.2 用户功能 11
1.2.3 功能结构图 11
2 数据库设计说明 12
2.1 数据字典 12
3 概念模型(E-R图) 14
4 关键代码 14
4.1 多线程,播放背景音乐 15
4.2 登录代码:判断是否登录,若登录,则判断为管理员或用户,显示首页,若未登录,则显示登录页面。 15
4.3 上传头像,并显示图片 16
4.4 清理面板控件,动态生成控件,动态绑定事件,使用匿名函数向事件函数传值 18
4.5 在子窗口关闭的同时,刷新父窗口 20
4.6 判断用户是否做过该试卷,若做过,则以红色绿色显示该题用户答案正确与否,若无做过,则实现点击单选按钮,改变题号颜色,标志该题已做过,同时记录用户答案。 22
4.7 获取下拉框中选项的selectIndex并且对应到相应的数据库中的字段 26
4.8 导入excel 26
4.9 实现获取上级下拉框中的选项,加载相应的选项并显示在下级下拉框中 27
4.10 修改密码,实现原密码验证,两次输入密码相同,并不可为空 30
5 系统测试报告 31
5.1 系统编写过程存在的问题: 31
多线程循环播放背景音乐 31
动态生成控件 31
事件绑定 31
5.2 如何解决: 31
通过查阅资料 31
单步运行调试 31
5.3 最后的系统存在哪些不足: 31
限制性:题库的导入文件格式限制为 xls,显得有些局限 31
缺陷: 31
(1)登录界面没有“记住密码”这项功能 31
(2)没办法显示用户做完一道题的分数以及测试的计时 31
建议: 31
(1)再添加一个控件,能够使得用户可以设置为每做完一道题自动跳到下一道题,方便用户做题 32
(2)按顺序摆放控件,以使可以通过TAB键跳到下一空格,方便用户填写资料 32
(3)按下“退出登录”控件时,添加提示“确认要退出吗”窗口,以避免用户由于不小心的原因按了退出所造成的麻烦 32
(4)登录之后可以直接跳转到主页面 32
6 项目心得 32
1.2软件功能
1.2.1管理员功能
查看
点击左上角导航“查看”,即可进入查看试题、用户资料,查看用户分数界面,对用户数据进行查看和修改。
修改试题
点击左上角导航“查看”,在下拉框选择查看试题,进入试题,对需要修改的试题进行修改并保存。
创建试卷
点击左上角导航“创建试卷”,即可进入创建试卷界面(见图4 创建试卷)点击“导入试卷”,选择需要导入的试卷excel表,下拉框“所属方言类别”内选择对应方言,点击“提交”,完成试卷的创建。
修改资料
点击左上角导航“修改资料”,即可进入资料编辑界面。
创建方言类别
点击左上角导航“查看”,在下拉框选择查看“方言类别”,进入方言类别界面,点击“新增”按钮,输入需要新增的类别名称,点击“确定”,完成方言类别的创建。
修改密码
点击左上角导航“修改资料”,进入资料编辑界面,点击“修改密码”,即可进入修改密码界面,进行密码的修改,按“确认”保存新密码。
退出登陆
点击左上角导航“退出登陆”,即可退出系统。
1.2.2用户功能
选择方言语种
点击左上角导航“查看”,在下拉框选择查看方言语种,即可进入选择方言语种。
选择试卷
点击对应方言类型的查看试卷,即可选择进入试题。
做试卷
进入相应类别的试卷界面后,点击一套试卷按钮,即可进入考试阶段。
修改用户资料
点击左上角导航“修改资料”,即可进入资料编辑界面。
修改密码
点击左上角导航“修改资料”,进入资料编辑界面,点击“修改密码”,即可进入修改密码界面,进行密码的修改,按“确认”保存新密码。
退出登陆
点击左上角导航“退出登陆”,即可退出系统。

using System.Text.RegularExpressions;
using System.Security.Cryptography;

namespace Common
{
    public class Utility
    {
        //通用类,检查数据输入是否规范
        ///检查手机号码是否规范
        public static bool CheckMobilePhone(string phone)
        {
            bool check = true;
            //if (phone != "")
            //{
            //    if (phone.Length != 11 || !Regex.IsMatch(phone,
            //        @"13[0123456789]\d{8} |15[0123456789]\d{8} |18{0123456789}\d{8}"))
            //    {
            //        check = false;
            //    }
            //}
            return check;
        }

        ///检查email格式是否规范
        public static bool CheckEmail(string email)
        {
            bool check = true;
            if (email != "")
            {
                if (!Regex.IsMatch(email,
                    @"(\w)*@(\w)*\.(\w)*"))
                {
                    check = false;
                }
            }
            return check;
        }

        ///检查qq格式是否规范
        public static bool CheckQQ(string qq)
        {
            bool check = true;
            //if (qq != "")
            //{
            //    if (!Regex.IsMatch(qq,
            //        @"^[1-9])*[1-9][0-9]*$"))
            //    {
            //        check = false;
            //    }
            //}
            return check;
        }

        ///检查电话号码格式是否规范
        public static bool CheckPhone(string phone)
        {
            bool check = true;
            if (phone != "")
            {
                if (!Regex.IsMatch(phone,
                    @"^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$"))
                {
                    check = false;
                }
            }
            return check;
        }

        public static bool CheckNumber(string number)
        {
            bool check = true;
            if (number != "")
            {
                if (!Regex.IsMatch(number, @"^\d{11}$"))
                {
                    check = false;
                }
            }
            return check;
        }

        public static string Encrypt(string password)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] data = System.Text.Encoding.Default.GetBytes(password);
            byte[] md5data = md5.ComputeHash(data);
            md5.Clear();
            string str = "";
            for (int i = 0; i < md5data.Length - 1; i++)
            {
                str += md5data[i].ToString("x").PadLeft(2,'0');
            }

            return str;
        }
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/129744190