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;#endregiondataset = 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、程序资源
相关文章:
C#宿舍信息管理系统
简介 功能 1.发布公告 2.地理信息与天气信息的弹窗 3.学生信息的增删改查 4.宿舍信息的增删改查 5.管理员信息的增删改查 6.学生对宿舍物品的报修与核实 7.学生提交请假与销假 8.管理员对保修的审批 9.管理员对请假的审批 技术 1.采用C#\Winform开发的C\S系统 2.采用MD5对数据…...
测试环境搭建整套大数据系统(十三:设置开机自启动)
一:编写程序启动命令脚本 vim /root/start.sh二:编写启动脚本 cd /etc/systemd/system vim start.service[Unit] DescriptionStart My Server Afternetwork.target[Service] Typeforking ExecStart/root/start start TimeoutSec0 RemainafterExityes G…...
算法练习第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
45. 跳跃游戏 II 55. 跳跃游戏 122.买卖股票的最佳时机II 122.买卖股票的最佳时机II class Solution {public int maxProfit(int[] prices) {int result 0;for(int i 1;i<prices.length;i){result Math.max(prices[i] - prices[i-1],0);}return result;} }跳跃游戏 cla…...
nodejs+vue反诈科普平台的设计与实现pythonflask-django-php
相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低反诈科普平台的运营人员成本,实现了反诈科普平台的标准化、制度化、程序化的管理,有效地防止了反诈科普平台的随意管理,提高了信息的处理速度和精确度,能够…...
SpringBoot3+JPA+MySQL实现多数据源的读写分离(基于EntityManagerFactory)
1、简介 在Spring Boot中配置多个数据源并实现自动切换EntityManager,这里我编写了一个RoutingEntityManagerFactory和AOP(面向切面编程)的方式来实现。 这里我配置了两个数据源:primary和secondary,其中primary主数…...
10万+SRC高质量稀有明星人脸素材唐嫣杨紫金晨倪妮蔡卓妍张雨绮合集
素材下载:点击下载 DFL模型训练用,高质量SRC素材合集: 【唐嫣_WF】6000张src人脸素材【金鱼基础模型库】用于补全SRC极限角度范冰冰 WF 512 苹果稀有死亡角度.zip王鸥_WF_512 多部电影 有死亡角度和张嘴的,5000多张.rar杨紫 108…...
目标检测中的mAP计算原理和源码实现
简介 在目标检测任务中,mAP(mean Average Precision,平均精度均值)是一个非常重要的评价指标,用于衡量模型在多个类别上的平均性能。它综合考虑了模型在不同召回率下的精确率,能够全面反映模型在检测任务中…...
Unity 粒子在UI中使用时需要注意的地方
最近项目中要在UI中挂载粒子特效,美术给过来的粒子直接放到UI中会有一些问题,查询一些资料后,总结了一下 一: 粒子的大小发生变化,与在预制件编辑中设计的大小不同 在预制件编辑模式下,大小正常 实际使用的时候特别大或者特别小 经过检查,发现预制件编辑模式下,默认画布的Rend…...
了解Spring:Java开发的利器
Spring是一款开源的轻量级Java开发框架,旨在提高开发人员的效率和系统的可维护性。本文将介绍Spring的基本概念、使用优势、设计模式以及与Spring MVC和Spring Boot的关联。 什么是Spring? Spring是一款开源的轻量级Java开发框架,它由多个模…...
【Hive】with 语法 vs cache table 语法
语法分别如下: cache table table_name as (select ... from ... )with table_name as (select ... from ... )需要注意,with语法只相当于一个视图,并不会将数据缓存;如果要将数据缓存,需要使用cache table语法。 参考…...
CleanMyMac X 4.15.1 for Mac 最新中文破解版 系统优化垃圾清理工具
CleanMyMac X for Mac 是一款功能更加强大的系统优化清理工具,相比于 CleanMyMac 4.15.1来说,功能增加了不少,此版本为4.15.1官方最新中英文正式破解版本,永久使用,解决了打开软件崩溃问题,最新版4.15.1版本…...
查看Linux系统重启的四种基本命令
目录 前言1. last2. uptime3. journalctl4. dmesg 前言 对于排查其原因推荐阅读:详细分析服务器自动重启原因(涉及Linux、Window) 在Linux中,有多种命令可以查看系统重启的信息 以下是其中一些常用的命令及其解释: …...
I/O多路复用:select/poll/epoll
最基本的 Socket 模型 要想客户端和服务器能在网络中通信,那必须得使用 Socket 编程,它是进程间通信里比较特别的方式,特别之处在于它是可以跨主机间通信。 Socket 的中文名叫作插口,咋一看还挺迷惑的。事实上,双方要…...
使用ansible批量修改操作系统管理员账号密码
一、ansible server端配置 1、对于Linux主机配置免密登录ssh-copy-id -i ~/.ssh/id_rsa.pub rootremote_ip 2、在/etc/ansible/hosts文件中添加相应主机IP 3、对于Windows主机需要在/etc/ansible/hosts文件中进行以下配置 192.168.83.132 ansible_ssh_useradministrator an…...
webpack5零基础入门-13生产模式
1.生产模式介绍 生产模式是开发完成代码后,我们需要得到代码将来部署上线。 这个模式下我们主要对代码进行优化,让其运行性能更好。 优化主要从两个角度出发: 优化代码运行性能优化代码打包速度 2.生产模式准备 我们分别准备两个配置文件来放不同的…...
一篇复现Docker镜像操作与容器操作
华子目录 Docker镜像操作创建镜像方式1docker commit示例 方式2docker import示例1:从本地文件系统导入示例2:从远程URL导入注意事项 方式3docker build示例1:构建镜像并指定名称和标签示例2:使用自定义的 Dockerfile 路径构建镜像…...
【LevelDB】memtable、immutable memtable的切换源码
本文主要分析leveldb项目的MakeRoomForWrite方法及延伸出的相关方法。 努力弄清memtable 和 immutable memtable的切换过程细节, 背景总结: LevelDB 是一个基于 Log-Structured Merge-Tree (LSM Tree) 的高性能键值存储系统。 在 LevelDB 中࿰…...
力扣面试150 x 的平方根 二分 换底法 牛顿迭代法 一题多解
Problem: 69. x 的平方根 思路 👨🏫 参考题解 💖 袖珍计算器算法 class Solution {public int mySqrt(int x){if (x 0)return 0; // Math.exp(3):e的三次方int ans (int) Math.exp(0.5 * Math.log(x));return (long) (an…...
【JavaScript】JavaScript 程序流程控制 ⑤ ( 嵌套 for 循环 | 嵌套 for 循环概念 | 嵌套 for 循环语法结构 )
文章目录 一、嵌套 for 循环1、嵌套 for 循环概念2、嵌套 for 循环语法结构 二、嵌套 for 循环案例1、打印三角形2、打印乘法表 一、嵌套 for 循环 1、嵌套 for 循环概念 嵌套 for 循环 是一个 嵌套的 循环结构 , 其中一个 for 循环 位于另一个 for 循环的内部 , 分别是 外层 f…...
情感计算:大模型在情感识别与交互优化中的作用
情感计算:大模型在情感识别与交互优化中的作用 1. 背景介绍 情感计算(Affective Computing)是人工智能领域的一个重要分支,它致力于使计算机能够识别、理解、处理和模拟人类的情感。随着深度学习、大数据和计算能力的飞速发展&a…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
