录播教室预约系统(五)-用户登陆

客户端登陆界面如下:

客户端代码:

复制代码
                   Program.cs 中

                   //在全局处理函数中忽略相关消息 不添加日志
                   NetworkComms.IgnoreUnknownPacketTypes = true;

                    ConnectionInfo connInfo = new ConnectionInfo("127.0.0.1", 2539);
                 
          

                    Connection newTcpConnection = TCPConnection.GetConnection(connInfo);


                    //连接服务器完成******************************************

                    //初始化主窗口
                    MainForm mainForm = new MainForm();

                    //显示登录窗口
                    frmLogin loginForm = new frmLogin(applicationName, mainForm, newTcpConnection);

                   
                    //根据登陆窗口返回的信息,打开主窗口,或者是注册窗口
                    if (loginForm.ShowDialog() == DialogResult.OK)
                    {
                        if(loginForm.Register == 5)
                        { 

                        Application.Run(mainForm);

                        }
                        else
                        {

                          Register newRegister = new Register();

                          newRegister.Initialize(newTcpConnection);

                          Application.Run(newRegister);

                        }

                     }
复制代码

登陆窗口中的登陆按钮相关代码

复制代码
 private void btnLogin_Click(object sender, EventArgs e)
        {
            // 如果通过输入验证
            if (UserInputCheck())
            {
                try
                {
                    // 保存登录身份是否合法验证结果
                    bool isPass = false;

                    Users theUser = new Users();

                    theUser.UserID = txtLoginName.Text.Trim();
                    theUser.Password = txtUserPwd.Text.Trim(); 
                    //发送当前登陆用户的信息给服务器,并从服务器获取返回的信息
                    LoginResult loginResult = newTcpConnection.SendReceiveObject<LoginResult>("Login", "LoginResult", 5000, theUser);
                     

                    if (loginResult.Message=="登录成功")
                    {
                        //记录用户名


                        netConfiguration.UserID = theUser.UserID;

                        netConfiguration.Save();

                        //初始化主窗口中的属性

                        theUser.Department = loginResult.Department;
                        theUser.Name = loginResult.UserName;
                         
                        mainForm.InitiaLize(this.newTcpConnection, theUser);

                       
                        // 标识验证通过
                        isPass = true;
                        Register = 5;
                        this.DialogResult = DialogResult.OK;
                    }

                    // 如果未通过验证
                    if (!isPass)
                    {
                        
                        MessageBox.Show(loginResult.Message);
                    }
                }
                catch (Exception ex)
                {
                    ShowLoginLostToolTip(ex);
                }
            }
        }
复制代码

User.cs实体类代码:

 [ProtoContract]
    public class Users
    {

        #region Constructors

        public Users()
        { }


        #endregion

        #region Private Properties

        private int id = -1;
        private string userID = string.Empty;
        private string name = string.Empty;
        private string password = string.Empty;
        private string declaring = string.Empty;
        private int status = -1;
        private bool isMale = false;
        private int userLevel = -1;
        private bool enabled = false;
        private DateTime registerTime = DateTime.UtcNow;
        private DateTime lastLoginTime = DateTime.UtcNow;
        private int depID = -1;
        private string department = string.Empty;

        #endregion

        #region Public Properties

        [ProtoMember(1)]
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        [ProtoMember(2)]
        public string UserID
        {
            get { return userID; }
            set { userID = value; }
        }
        [ProtoMember(3)]
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        [ProtoMember(4)]
        public string Password
        {
            get { return password; }
            set { password = value; }
        }
        [ProtoMember(5)]
        public string Declaring
        {
            get { return declaring; }
            set { declaring = value; }
        }
        [ProtoMember(6)]
        public int Status
        {
            get { return status; }
            set { status = value; }
        }
        [ProtoMember(7)]
        public bool IsMale
        {
            get { return isMale; }
            set { isMale = value; }
        }
        [ProtoMember(8)]
        public int UserLevel
        {
            get { return userLevel; }
            set { userLevel = value; }
        }
        [ProtoMember(9)]
        public bool Enabled
        {
            get { return enabled; }
            set { enabled = value; }
        }
        [ProtoMember(10)]
        public DateTime RegisterTime
        {
            get { return registerTime; }
            set { registerTime = value; }
        }
        [ProtoMember(11)]
        public DateTime LastLoginTime
        {
            get { return lastLoginTime; }
            set { lastLoginTime = value; }
        }
        [ProtoMember(12)]
        public int DepID
        {
            get { return depID; }
            set { depID = value; }
        }
        [ProtoMember(13)]
        public string Department
        {
            get { return department; }
            set { department = value; }
        }

        #endregion




    }
Users实体类,支持Protobuf.net序列化

服务器端程序的处理代码:

 

在服务器端构造函数中声明针对登陆操作的处理器:

    //用户验证处理器

            NetworkComms.AppendGlobalIncomingPacketHandler<Users>("Login", HandleUserVerify);
复制代码
 //用户登录验证
        private void HandleUserVerify(PacketHeader header, Connection connection, Users theUser)
        {
            LoginResult loginResult = new LoginResult();

            Users currentUser = DoUsers.GetUserByID(theUser.UserID);

            string message;

            if (currentUser != null)
            {

                if (currentUser.Password == theUser.Password)
                    message = "登录成功";
                else if (currentUser.Password == "msdcmsdcmsdcmsdcmsdc")
                    message = "用户未开通,请与管理员联系";
                else if (currentUser.Password != theUser.Password)
                    message = "用户名密码不匹配";
                else
                    message = "登录不成功,原因未知";
            }
            else
            {
                message = "用户不存在";
            }



            loginResult.Message = message;
            loginResult.Department = currentUser.Department;
            loginResult.UserName = currentUser.Name;

            connection.SendObject("LoginResult", loginResult);

          

        }
复制代码
 [ProtoContract]
    public class LoginResult
    {
        [ProtoMember(1)]
        public string Message { get; set; }

        [ProtoMember(2)]
        public string Department { get; set; }

        [ProtoMember(3)]

        public string UserName { get; set; }

        public LoginResult() { }

        public LoginResult(string message)
        {
            this.Message = message;
        }

        public LoginResult(string message,string department)
        {
            this.Message = message;
            this.Department = department;
        }

        public LoginResult(string message, string department,string userName)
        {
            this.Message = message;
            this.Department = department;
            this.UserName = userName;
        }

    }
LoginResult契约类

 

DoUsers类中相关方法

复制代码
   public static Users GetUserByID(string userID)
        {
            using (IDataReader reader = DBUsers.GetOneByUserID(userID))
            {
                
                Users theUser = PopulateFromReader(reader);

                return theUser;

             
            }

        }
复制代码
复制代码
   private static Users PopulateFromReader(IDataReader reader)
        {
            Users Users = new Users();
            if (reader.Read())
            {
                Users.Id = Convert.ToInt32(reader["Id"]);
                Users.UserID = reader["UserID"].ToString();
                Users.Name = reader["Name"].ToString();
                Users.Password = reader["Password"].ToString();
                Users.Declaring = reader["Declaring"].ToString();
                Users.Status = Convert.ToInt32(reader["Status"]);
                Users.IsMale = Convert.ToBoolean(reader["IsMale"]);
                Users.UserLevel = Convert.ToInt32(reader["UserLevel"]);
                Users.Enabled = Convert.ToBoolean(reader["Enabled"]);
                Users.RegisterTime = Convert.ToDateTime(reader["RegisterTime"]);
                Users.LastLoginTime = Convert.ToDateTime(reader["LastLoginTime"]);
                Users.DepID = Convert.ToInt32(reader["DepID"]);
                Users.Department = reader["Department"].ToString();

            }
            return Users;
        }
复制代码

 

DBUsers类中相关方法

复制代码
  //根据UserID获取记录

        public static IDataReader GetOneByUserID(string userID)
        {
            SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "Users_SelectOneByUserID", 1);
        
            sph.DefineSqlParameter("@UserID", SqlDbType.NVarChar, 200, ParameterDirection.Input, userID);
            return sph.ExecuteReader();

        }
复制代码

数据库中相关的存储过程

复制代码
CREATE PROCEDURE [dbo].Users_SelectOneByUserID
 

@UserID  nvarchar(100)

AS


SELECT
        [Id],
        [UserID],
        [Name],
        [Password],
        [Declaring],
        [Status],
        [IsMale],
        [UserLevel],
        [Enabled],
        [RegisterTime],
        [LastLoginTime],
        [DepID],
        [Department]
        
FROM
        [dbo].[Users]
        
WHERE
        UserID=@UserID
复制代码

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
精品录播教室建设系统设计应考虑以下功能: 1. 视频录制功能:系统应具备视频录制功能,能够对教师的授课过程进行录制,并保存为高质量的视频文件。录制功能应支持多种视频格式和分辨率的选择。 2. 编辑和剪辑功能:系统应提供视频编辑和剪辑功能,使教师能够对录制的视频进行剪辑和编辑,去除冗余内容,添加必要的标注、字幕或图像等,以提高教学效果。 3. 多媒体资源管理:系统应具备多媒体资源管理功能,能够对教学资源进行分类、标签化管理,便于教师和学生查找和使用。这包括课件、教材、实验演示等多种形式的教学资源。 4. 视频上传和存储功能:系统应支持教师将录制好的视频上传到服务器进行存储,并提供稳定的存储空间,确保视频的安全性和可靠性。 5. 视频播放和回放功能:系统应具备视频播放和回放功能,学生可以根据自己的学习进度和需求,自由选择观看已录制的视频课程,并能够根据需要进行快进、快退、暂停等操作。 6. 学习反馈和互动功能:系统应支持学生在观看视频过程中进行互动和学习反馈,例如提问、讨论、在线答题等功能,以促进学生的参与度和学习效果。 7. 数据统计和分析功能:系统应能够对学生的学习行为和学习进度进行统计和分析,生成相关报告和分析结果,为教师提供参考,以便调整教学策略和提高教学效果。 8. 用户管理和权限控制:系统应具备用户管理和权限控制功能,包括教师、学生、管理员等多个用户角色的管理,并能够根据角色设置不同的权限和访问限制。 9. 设备兼容性和网络稳定性:系统应具备良好的设备兼容性,能够在不同的设备上稳定运行,同时要求网络稳定,以确保视频的流畅播放和上传下载。 10. 安全性和隐私保护:系统应具备良好的安全性和隐私保护机制,保证教师和学生的个人信息和教学资源的安全性,防止未经授权的访问和不当使用。 以上是精品录播教室建设系统设计实现的一些基本功能,具体的系统设计还需要根据学校的实际需求和资源情况进行定制化设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值