C#宿舍信息管理系统

news2024/9/23 12:12:23

简介

功能

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、程序资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1542948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python每日分析练习:电商平台用户行为数据洞察

模拟电商平台进行数据分析。数据分析最重要的是分析思路&#xff0c;工具是辅助&#xff0c;企业案例都是基于实际案例简单模拟后给出&#xff0c;只有通过实际的练习才能提高我们对数据的敏感度和分析能力&#xff0c;每天一个分析练习场景&#xff0c;一起打怪升级 场景与分…

(bug2总结)-mysql 字段为varchar,用int去查的时候可能会多返回数据

场景&#xff1a;表结构和数据如下图 查询语句如下 总结&#xff1a; mysql 字段为varchar,用int去查的时候可能会多返回数据。mysql版本为5.7.4

R语言迅速计算多基因评分(PRS)

Polygenic Risk Scores in R 最朴素的理解PRS&#xff1a; GWAS分析结果中&#xff0c;有每个SNP的beta值、se值、P值&#xff0c;因为GWAS分析中将SNP变为0-1-2编码&#xff0c;所以这些显著的SNP的beta值&#xff0c;就可以用于预测。 比如&#xff1a;GWAS分析中&#xf…

疲劳检测YOLOV8

疲劳检测YOLOV8&#xff0c;只需要OPENCV&#xff0c;采用YOLOV8训练得到PT模型&#xff0c;然后转换成ONNX&#xff0c;OPENCV调用&#xff0c;支持C/PYTHON/ANDROID开发疲劳检测YOLOV8

加速新能源汽车产品迭代:融合前沿科技的重要性

新能源汽车新质生产力提升咨询方案 一、新能源汽车企业行业目前发展现状及特点&#xff1a; 1、快速增长 2、技术迭代快 3、竞争加剧 二、新能源汽车企业发展新质生产力面临的痛点&#xff1a; 1、技术创新压力巨大 2、市场竞争激烈 3、供应链稳定性欠缺 4、成本控制压…

【等保测评机构】天津等保测评机构公司名单看这里!

天津等保测评机构公司名单看这里&#xff01; 1、天津市兴先道科技有限公司 2、恒利德&#xff08;天津&#xff09;科技有限公司 3、中国民航大学&#xff08;信息安全测评中心&#xff09; 4、天津恒御科技有限公司 5、天津联信达软件技术有限公司 6、佰运俐&#xff0…

Java Day16 Servlet(二)

Servlet 1、继承结构2、ServletConfig对象3 、ServletContext3.1 获得路径3.2 域对象相关API 4、HttpServletRequest4.1 获得请求行和请求头相关api4.2 请求中键值对相关api 1、继承结构 顶级Servlet接口 //初始化void init(ServletConfig var1) throws ServletException; //…

【Redis】数据类型、事务执行、内存淘汰策略

目录 数据类型 Redis事务执行步骤 步骤&#xff1a; redis内存淘汰策略 设置内存淘汰策略 1.设置配置文件 2.通过命令设置 数据类型 官网解释 Understand Redis data types | Redis 首先&#xff0c;Redis 的所有键都是字符串,常用的数据类型有 5 种&#xff1a;Strin…

ArkTS编写的HarmonyOS原生聊天UI框架

简介 ChatUI&#xff0c;是一个ArkTS编写的HarmonyOS原生聊天UI框架&#xff0c;提供了开箱即用的聊天对话组件。 下载安装 ohpm install changwei/chatuiOpenHarmony ohpm 环境配置等更多内容&#xff0c;请参考如何安装 OpenHarmony ohpm 包 接口和属性列表 接口列表 接…

算法系列--动态规划--子序列(1)

&#x1f495;"深思熟虑的结果往往就是说不清楚。"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;算法系列–动态规划–子序列(2) 今天带来的是算法系列--动态规划--子序列(1),是子序列问题的开篇!带大家初识子序列问题 一.什么是子序列问题 我们…

【Burpsuite抓取APP、小程序数据包教程】

文章目录 一、抓取APP数据包1、burpsuite设置2、逍遥模拟器设置3、抓包即可 二、抓取小程序数据包1.bp设置代理端口2.利用火狐插件foxyproxy设置代理3.访问连接http://burp下载证书4.浏览器导入证书5.设置Proxifier6.配置代理规则7.进入小程序抓包 总结 一、抓取APP数据包 1、…

openGauss学习笔记-250 openGauss性能调优-使用Plan Hint进行调优-Join方式的Hint

文章目录 openGauss学习笔记-250 openGauss性能调优-使用Plan Hint进行调优-Join方式的Hint250.1 功能描述250.2 语法格式250.3 参数说明250.4 示例 openGauss学习笔记-250 openGauss性能调优-使用Plan Hint进行调优-Join方式的Hint 250.1 功能描述 指明Join使用的方法&#…

Intel被喷惨的大小核CPU终于有救,12、13代也沾了光

2021年 Intel 将混合架构引入 PC &#xff0c;至今也没能让所有用户接受这一改动。 虽然 PE 核心设计 帮助我们更好理解鸡兔同笼问题 带来了额外的多线程性能提升&#xff0c;但对于游戏玩家们可就不那么友好了。 关了吧觉得亏&#xff0c;不关吧又要时不时担心大核偷懒、小核…

【数据结构取经之路】队列循环队列

目录 引言 队列的性质 队列的基本操作 初始化 判空 销毁 队列的长度 插入 删除 返回队头元素 循环队列 假溢出 空与满的判定 实现 初始化 插入 判空 销毁 删除 返回队列长度 返回队列头元素 判满 引言 队列和栈一样&#xff0c;也是数据结构的一种&…

蓝桥杯基础练习详细解析一(代码实现、解题思路、Python)

试题 基础练习 数列排序 资源限制 内存限制&#xff1a;512.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 给定一个长度为n的数列&#xff0c;将这个数列按从小到大的顺序排列。1<n<200 输入格式 第…

同城桶装水订水送水小程序:为水站打开新局面;

你是否还在为传统的电话、微信订水方式而烦恼&#xff1f;效率低下、管理混乱&#xff0c;是时候拥抱变革&#xff0c;让生意更上一层楼了&#xff01;同城送水小程序&#xff0c;一键解决你的所有痛点&#xff0c;让您的水站焕发新生。 水站系统功能亮点&#xff1a; 1. 一键…

无货源电商上货成功解析,如何选用采集和上货软件提高工作效力

最近大家是不是有一个疑惑&#xff1f;就是咱们在上货的过程中会出现解析失败 不论怎么上传&#xff0c;数据都是失败的&#xff0c;上传成功率很低很低&#xff0c;换了各种的上货软件 几百的几千的软件都用过了效果还是不行&#xff1f;和代理宣传的不符&#xff1f;什么日传…

如何成功将自己开发的APP上架到应用商店

如何成功将自己开发的APP上架到应用商店 随着移动应用市场的蓬勃发展&#xff0c;开发一款优秀的APP已成为许多企业和个人的首要选择。然而&#xff0c;成功上架并有效推广APP至关重要。本文将逐步介绍完整的上架流程&#xff0c;包括准备所需材料、注册开发者账户、进行APP备…

【Python实战】——神经网络识别手写数字

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

学习Python的第二天

下载工具 PyCharm Community Edition 2023.3.4 下载环境 Python3.10.4 目录 1.初识python 1.1 Python的起源 1.2 为什么学习Python 2.什么是编程语言 2.1 语言的概念 2.2 为什么不使用中文来与计算机交流呢 3.python环境安装 4.第一个python程序 5.python解释器 5…