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…...
Godot中型项目工程化实践:目录规范、资源引用与状态管理
1. 这不是续集,而是项目落地的分水岭“Godot 游戏引擎项目(二)”——看到这个标题,很多人第一反应是:“哦,上一篇讲了环境搭建和Hello World,这篇该讲节点树和信号了?”但我在带三个…...
ARM指令追踪技术及TRCVICTLR寄存器详解
1. ARM指令追踪技术概述在嵌入式系统开发和调试过程中,指令追踪(Instruction Trace)是一项至关重要的技术。它通过硬件机制记录处理器的执行流程,为开发者提供程序运行的完整轨迹。ARM架构从v7开始引入嵌入式跟踪宏单元࿰…...
BetterJoy完整配置指南:5分钟让Switch手柄在PC上完美运行
BetterJoy完整配置指南:5分钟让Switch手柄在PC上完美运行 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.c…...
Vue3 图片标框功能实现方案
基于 Vue3 组合式 API 的图片标框(画框、标注、选框)完整实现,核心逻辑封装在 GetBoxes 组件里,复制就能用 一、功能说明 ✅ 在图片上鼠标拖拽画矩形框 ✅ 实时显示框坐标(x, y, width, height) ✅ 支持多…...
开启Python GUI开发新纪元:Tkinter Designer可视化界面自动化生成终极指南
开启Python GUI开发新纪元:Tkinter Designer可视化界面自动化生成终极指南 【免费下载链接】Tkinter-Designer An easy and fast way to create a Python GUI 🐍 项目地址: https://gitcode.com/gh_mirrors/tk/Tkinter-Designer 在Python GUI开发…...
钱钟书《围城》第1-5章阅读笔记:一场关于人生困境的提前预演
前言 钱钟书先生的《围城》被誉为"新儒林外史",是中国现代文学史上风格独特的讽刺经典。这部创作于20世纪40年代的长篇小说,以抗战初期为背景,通过主人公方鸿渐的人生轨迹,深刻揭示了知识分子群体的精神困境与人性弱点。…...
SMUDebugTool终极指南:如何深度掌控AMD Ryzen处理器的隐藏性能
SMUDebugTool终极指南:如何深度掌控AMD Ryzen处理器的隐藏性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: ht…...
AI学习 - 大模型基础入门
AI学习 - 大模型基础入门 从零开始:Ollama 安装 → 本地模型运行 → Python 代码接入 → 理解核心概念 摘要 本文记录了在 Windows 上使用 Ollama 部署本地大模型、并通过 Python 代码接入调用的完整过程。内容涵盖:Ollama 安装与模型拉取、大模型基础概…...
Sora 2 MOV导出画质崩坏真相:HDR10元数据丢失、BT.2020色域截断、帧率标志位误写——3大隐性缺陷紧急修复方案
更多请点击: https://intelliparadigm.com 第一章:Sora 2 MOV导出画质崩坏的系统性认知 Sora 2 在生成高保真视频后,导出为 MOV 格式时频繁出现色度抽样失真、动态范围压缩、帧间伪影加剧等现象,其本质并非单一环节失效ÿ…...
多智能体谈判系统:Agent 如何通过博弈达成最优交易价格?
多智能体谈判系统:Agent 如何通过博弈达成最优交易价格?关键词 多智能体系统、自动谈判、博弈论、纳什均衡、帕累托最优、双边/多边谈判、强化学习谈判、动态定价 摘要 想象一个没有人类中介的世界:电商平台上的智能客服自动和批发商砍价、供…...
