C#宿舍信息管理系统

简介

功能

1.发布公告
2.地理信息与天气信息的弹窗
3.学生信息的增删改查
4.宿舍信息的增删改查
5.管理员信息的增删改查
6.学生对宿舍物品的报修与核实
7.学生提交请假与销假
8.管理员对保修的审批
9.管理员对请假的审批

技术

1.采用C#\Winform开发的C\S系统
2.采用MD5对数据加密
3.数据库选用SQLServer
4.用户信息采用Xml来记录
5.界面使用了CSkin进行美化
6.使用了WebService获取地理位置信息与天气信息

一、需求分析:

1、功能性需求:是为了完成宿舍信息管理系统以及向其用户提供有用的功能所 需执行的动作,需要与用户进行沟通交流,核实用户需求。从软件帮助用户完成所需要的行为。2非功能性需求:作为对功能性的补充主要包括软件使用时对性能使用方面的需求,运行环境的需求。软件设计必须遵循相关标准、规范、用户界面设计的具体细节、未来可能的扩充方案等。

二、主要功能描述:

在用户登录系统,输入正确的用户名及密码,如果正确进入程序,如果输入用户名或密码错误将弹出友好界面提示。选择进入的界面学员查询自己的宿舍信息。修改密码、提交报修、申请离宿、报修成功、确认归宿、接收通知功能。宿管包括发布通知、宿舍学员的增删改查、管理报修、管理离宿情况。

三、概要设计

在这里插入图片描述

四、数据库设计

1.登陆表

在这里插入图片描述

2.成绩表

成绩表

五、详细设计

在这里插入图片描述

六、关键技术

SQL server数据库管理系统、窗体、Windows XP环境
连接数据库:static SqlConnection conn = new SqlConnection(@"Data Source=507-59;AttachDbFilename=F:\软件开发实训\WTS\WTS\school.mdf;Integrated Security=True");
登录窗口的确定:DataSet ds = DBHelper.readDB("select * from customer where name ='" + name + "' and password='" + password + "'");
读数据库:DataSet ds = DBHelper.readDB("select * from student");
数据的删除:"delete  student where no=" + no + ""
数据的修改:"update student  set  name='" + name + "',chinese='" + chinese + "',math='" + math + "',english='" + english + "'where no=" + no + ""
数据的增加:"insert into student values(" + no + ",'" + name + "'," + chinese + "," + math + "," + english + ")"
数据的统计:"select no,name,chinese,math,english,chinese+math+english as 总分 from student"

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace 宿舍管理系统
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new WFLogin());
        }
    }
}

SutdentManager.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CCWin;
using Tools;
using System.Xml;
using System.IO;

namespace 宿舍管理系统
{
    
    public partial class StudentManager : Skin_Mac
    {
        #region 字段属性
        private WFLogin Fm;//登陆的窗体
        public int Sno { get; set; }//自己的学号
        private bool isHide = true;//标记是否隐藏通知
        private bool isChecked = false;//标记报修是否选择其他
        private string Pwd;//登录的密码
        public int Dormitoryno { get; set; }//此学生的宿舍号
        private DataSet dataset;//用于数据比对
        #endregion
        
        
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="fm">登陆窗体</param>
        /// <param name="sno">学号</param>
        /// <param name="pwd">密码</param>
        public StudentManager(WFLogin fm,string sno,string pwd)
        {
            this.Fm = fm;
            this.Sno = Convert.ToInt32(sno);
            this.Pwd = pwd;
            InitializeComponent();
        }

        /// <summary>
        /// 窗体加载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void StudentManager_Load(object sender, EventArgs e)
        {
            //操作我的信息
            DataSet ds = DBHelper.Select("select * from StudentInfo where sno='"+Sno+"'");
            this.skinDataGridView1.DataSource = ds.Tables[0].DefaultView;
            //将宿舍号记录并赋值
            Dormitoryno = Convert.ToInt32(skinDataGridView1.Rows[0].Cells[0].Value.ToString().Trim());

            this.skinDataGridView1.Columns[0].HeaderText = "宿舍号";
            this.skinDataGridView1.Columns[1].HeaderText = "学号";
            this.skinDataGridView1.Columns[2].HeaderText = "姓名";
            this.skinDataGridView1.Columns[3].HeaderText = "性别";
            this.skinDataGridView1.Columns[4].HeaderText = "床铺号";
            this.skinDataGridView1.Columns[5].HeaderText = "入住时间";
            this.skinDataGridView1.Columns[0].Width = 83;
            this.skinDataGridView1.Columns[1].Width = 83;
            this.skinDataGridView1.Columns[2].Width = 83;
            this.skinDataGridView1.Columns[3].Width = 83;
            this.skinDataGridView1.Columns[4].Width = 83;
            this.skinDataGridView1.Columns[5].Width = 83;

            this.skinDataGridView1.Enabled = false;
            
            //操作宿舍舍友信息 根据宿舍号&性别进行查询
            DataSet ds2 = DBHelper.Select("select * from StudentInfo where dormitoryno='"
                + Dormitoryno + "' and sgender='"
                + skinDataGridView1.Rows[0].Cells[3].Value.ToString().Trim() + "'");
            this.skinDataGridView2.DataSource = ds2.Tables[0].DefaultView;
            //设置datagridview2样式
            this.skinDataGridView2.Columns[0].HeaderText = "宿舍号";
            this.skinDataGridView2.Columns[1].HeaderText = "学号";
            this.skinDataGridView2.Columns[2].HeaderText = "姓名";
            this.skinDataGridView2.Columns[3].HeaderText = "性别";
            this.skinDataGridView2.Columns[4].HeaderText = "床铺号";
            this.skinDataGridView2.Columns[5].HeaderText = "入住时间";
            this.skinDataGridView2.Columns[0].Width = 84;
            this.skinDataGridView2.Columns[1].Width = 84;
            this.skinDataGridView2.Columns[2].Width = 84;
            this.skinDataGridView2.Columns[3].Width = 84;
            this.skinDataGridView2.Columns[4].Width = 84;
            this.skinDataGridView2.Columns[5].Width = 84;


            #region  通知栏代码
            XmlDocument doc = new XmlDocument();
            doc.Load("事物表.xml");
            XmlElement Users = doc.DocumentElement;

            XmlNode xnl = Users.SelectSingleNode("/Users/manager[@no='1234']");
            this.label1.Text = xnl.InnerText;
            #endregion

            dataset = DBHelper.Select("select * from DormSum where dormitoryno='" + Dormitoryno + "'");

            this.Text += this.skinDataGridView1.Rows[0].Cells[2].Value.ToString();
            this.skinTabControl1.SelectedIndex = 0;
        }

        
        #region 事件
        
        //不让datagridview被选中的代码
        private void skinDataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            this.skinDataGridView1.ClearSelection();
        }

        //通知按钮
        private void btnUpOrDown_Click(object sender, EventArgs e)
        {
            if (isHide)
            {
                skinGroupBox1.Hide();
                btnUpOrDown.Text = "查看通知";
            }
            else if (!isHide)
            {
                skinGroupBox1.Show();
                btnUpOrDown.Text = "我知道了";
            }
            isHide = !isHide;
        }

        //控制报修 其他内容的代码
        private void skinCheckBox8_CheckedChanged(object sender, EventArgs e)
        {
            isChecked = !isChecked;
            if (isChecked)
            {
                txtAreaQue.Enabled = true;
            }
            else
            {
                txtAreaQue.Enabled = false;
            }

        }

        //关闭窗口时关闭程序
        private void StudentManager_FormClosed(object sender, FormClosedEventArgs e)
        {
            Fm.Close();
        }

        //提交报修的方法
        private void btnSubmit_Click(object sender, EventArgs e)
        {
            //如果任何项都没有选择,就返回
            if (cb1.Checked == false && cb2.Checked == false && cb3.Checked == false && cb4.Checked == false && cb5.Checked == false && cb6.Checked == false && cb7.Checked == false && cb8.Checked == false)
            {
                MessageBoxEx.Show("选择您要修理的项!");
                return;
            }

            dataset = DBHelper.Select("select * from DormSum where dormitoryno='" + Dormitoryno + "'");
            if (dataset.Tables[0].Rows[0][4].ToString() == "无修理项")
            {
                string fixItem = "";
                string things = "";
                fixItem += cb1.Checked ? cb1.Text + " " : "";
                fixItem += cb2.Checked ? cb2.Text + " " : "";
                fixItem += cb3.Checked ? cb3.Text + " " : "";
                fixItem += cb4.Checked ? cb4.Text + " " : "";
                fixItem += cb5.Checked ? cb5.Text + " " : "";
                fixItem += cb6.Checked ? cb6.Text + " " : "";
                fixItem += cb7.Checked ? cb7.Text : "";

                if (cb8.Checked == true)
                {
                    things = txtAreaQue.Text.Trim();
                }

                if (DBHelper.Update("update DormSum set isfix='已提交',fixItem='" + fixItem
                    + "',things='" + things + "' where dormitoryno='" + Dormitoryno + "'"))
                {
                    MessageBoxEx.Show("提交成功!");

                    #region 重置按钮
                    cb1.Checked = false;
                    cb2.Checked = false;
                    cb3.Checked = false;
                    cb4.Checked = false;
                    cb5.Checked = false;
                    cb6.Checked = false;
                    cb7.Checked = false;
                    cb8.Checked = false;
                    txtAreaQue.Text = "请填写您的问题。。。";
                    #endregion
                }
            }
            else if (dataset.Tables[0].Rows[0][4].ToString() == "已提交" || dataset.Tables[0].Rows[0][4].ToString() == "维修中")
            {
                MessageBoxEx.Show("您的宿舍已经提交了请求,请等待。。");
            }
            else
            {
                MessageBoxEx.Show("发生未知错误!");

            }
        }

        //重置按钮
        private void btnReset_Click(object sender, EventArgs e)
        {
            cb1.Checked = false;
            cb2.Checked = false;
            cb3.Checked = false;
            cb4.Checked = false;
            cb5.Checked = false;
            cb6.Checked = false;
            cb7.Checked = false;
            cb8.Checked = false;
            txtAreaQue.Text = "请填写您的问题。。。";
        }

        //退出按钮
        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //注销按钮
        private void 注销ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Fm.ReLogin();
            Fm.Show();
            this.Dispose();
        }

        private void 更改密码ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            new UpdataPwd(Sno, Pwd, "student").ShowDialog();
        }

        private void btnFix_Click(object sender, EventArgs e)
        {
            dataset = DBHelper.Select("select * from DormSum where dormitoryno='" + Dormitoryno + "'");
            if (dataset.Tables[0].Rows[0][4].ToString() == "否")
            {
                MessageBoxEx.Show("您的宿舍还没有提交修理内容!");
                return;
            }
            new WFDormSch(Dormitoryno).ShowDialog();
        }

        //提交离宿
        private void btnDate_Click(object sender, EventArgs e)
        {
            System.DateTime dt = dateTimePicker1.Value.Date;
            System.DateTime dt2 = dateTimePicker2.Value.Date;
            if (dt.CompareTo(dt2) > 0)
            {
                MessageBoxEx.Show("日期有误!");
                return;
            }
            XmlDocument doc = new XmlDocument();
            doc.Load("事物表.xml");
            XmlElement Users = doc.DocumentElement;

            if (Users.SelectSingleNode("/Users/student[sno='" + Sno + "']") != null)
            {
                MessageBoxEx.Show("您还有假期未消除!");
                return;
            }

            XmlElement student = doc.CreateElement("student");
            XmlElement sno = doc.CreateElement("sno");
            XmlElement leavetime = doc.CreateElement("leavetime");
            XmlElement arrivetime = doc.CreateElement("arrivetime");
            XmlElement state = doc.CreateElement("state");

            Users.AppendChild(student);
            student.AppendChild(sno);
            student.AppendChild(leavetime);
            student.AppendChild(arrivetime);
            student.AppendChild(state);

            sno.InnerText = Sno.ToString();
            leavetime.InnerText = dt.Date.ToString();
            arrivetime.InnerText = dt2.Date.ToString();
            state.InnerText = "未消假";

            doc.Save("事物表.xml");
            MessageBoxEx.Show("申请成功!");
        }

        //查看自己请假信息
        private void btnHld_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("事物表.xml");
            XmlElement Users = doc.DocumentElement;

            if (Users.SelectSingleNode("/Users/student[sno='" + Sno + "']") == null)
            {
                MessageBoxEx.Show("您已经没有请假信息!");
                return;
            }
            new WFHld(Sno).ShowDialog();
        }
        #endregion


    }
}


七、程序截图

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

七、联系与交流

q:969060742 完整代码、sql、程序资源

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 15:10:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 15:10:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 15:10:04       87 阅读
  4. Python语言-面向对象

    2024-03-25 15:10:04       96 阅读

热门阅读

  1. L2-022 重排链表(25分) c++代码

    2024-03-25 15:10:04       48 阅读
  2. 最全Hive面试题2024年(2万字详解)

    2024-03-25 15:10:04       47 阅读
  3. linux内核原理-原子变量,自旋锁,互斥锁

    2024-03-25 15:10:04       38 阅读
  4. 随笔录-- Redis 5 种基本数据类型

    2024-03-25 15:10:04       37 阅读
  5. kingbaseESV8常用语句

    2024-03-25 15:10:04       35 阅读
  6. gethostbyname()域名解析到IP

    2024-03-25 15:10:04       41 阅读
  7. IP 报头和以太网报头

    2024-03-25 15:10:04       36 阅读