班级管理系统项目总结

源码下载:https://download.csdn.net/download/weixin_44790046/12034705

1、 项目背景
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。目前,在学校里,随着高校规模的不断扩大和招生人数的不断增加,需要处理大量的学生数据信息。如何更好的组织学生信息,更加快捷的管理学生信息显得尤为的重要。作为计算机应用的一部分,使用计算机对学生信息进行管理,有着手工管理所无法比拟的优点例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生信息管理的效率,也是学校的科学化、正规化管理,与世界接轨的重要条件。我们为此开发了一套学生信息管理系统,本系统面向学校的教务人员,目的是为学校办公管理提供一个快速、简单规范的管理平台,使学院在学生信息管理方面更加规范化,快捷化。

2、 项目介绍
本项目以学校的学生信息管理为依托,结合教务教学管理,设计并开发一个班级信息管理系统,提供一个信息更新快捷、管理方便、功能设置合理的学生信息管理解决方案。针对学校大量的学生信息,就学生管理的几个方面,提供一个互动式的学生管理平台。项目目标如下:
➢通过学生信息管理系统的实现,使学校的学生信息管理更加科学化。
➢提供灵活、方便的操作。
➢节约学生信息管理的成本,提高学校管理的效率。
➢结合了C#WinForm的便捷性和SQL SERVER的方便性。
➢对系统提供必要的权限管理。
➢实现了基本的增、删、改、查功能。
➢本系统还实现了QQ群里的小部分功能如:聊天、群公告等。

3、项目模块学习过程及总结
模块1:制作登录窗口,本窗口用到了Lable、textbox、button等控件,本窗口难度不大,几乎每个人都可以轻松做出来,实现页面如下:

在编写此页面代码之前需要先做一个公共类,用于数据库的连接,SQL语句的执行,这样写法的好处在于只写一遍就可以了,别的地方如果要用到数据库连接,执行SQL语句,直接调用我们类里定义好的函数就可以了,减少了代码量与复杂度,这两个函数也是我们整天系统中使用最为频繁的两段代码,具体代码如下:

public static DataSet Select(string ss)         //执行查询语句{try//捕获异常{stop = false;
SqlConnection conn = new SqlConnection("server=DESKTOP-C3QU57B;integrated security=true;database=classdate");SqlDataAdapter da = new SqlDataAdapter(ss, conn);DataSet ds = new DataSet();if(conn.State==ConnectionState.Closed){conn.Open();}da.Fill(ds, "表1");conn.Close();return ds;}catch(SqlException ex) {MessageBox.Show(ex.ToString());stop = true;return null;}}
public static void Modify(string ss)        //执行增删改语句{try{stop = false;SqlConnection conn=new SqlConnection("server=DESKTOP-C3QU57B; integrated security = true; database=classdate");SqlCommand com = new SqlCommand(ss,conn);if (conn.State == ConnectionState.Closed){conn.Open();}com.ExecuteNonQuery();//执行sql语句conn.Close();}catch (Exception ex){MessageBox.Show(ex.ToString());stop = true;}}

定义好公共类之后我们就可以写登录窗体的代码了,这个窗体里的代码实现就比较简单了,就是使用一条查询语句,where后面的查询条件就是你textbox输入的用户名和密码,如果能查到就是数据库里有这个人,即用户名密码正确,反之就弹窗提示密码错误。
之前我们在定义公共类publicData时定义了5个公共字段,这里就用查询出来的5个数据分别赋值公共类publicData定义的5个公共字段,方便我们之后使用,信息都正确后,打开我们的FormMain页面,同时关闭登录窗体。

模块2: 主界面制作,这里我比较深刻的是用到了我之前一直没用过的一个控件
就是menuStrip,(Menustrip 控件是由System.Windows.Forms.Menustrip类提供,取代了以前的MainMenu控件,是应用程序菜单结构的容器,在建立菜单时,要给Menustrip控件添加ToolStripMenu对象,这个操作可在设置时完成,也可在代码中完成。) 可以快速的帮助我们生成一个菜单,整体页面如下:

此窗体加载事件使用switch选择我们在登录窗体中添加到PublicData.quanzhong中的权重来判断这个用户有什么权限,进而决定他可以管理哪些内容可以用哪些功能。这个窗体还实现了点击某个ToolStripMenuItem就进入指定的窗体,实现一些其他功能,部分代码如下:

private void 学习录入ToolStripMenuItem_Click(object sender, EventArgs e){PublicData.menu = "学习";录入 f = new 录入();f.Show();}

此段中的代码是当你点击学习->录入时打开的窗口,其他打开窗体的代码与此类似。

textBox2.Text = DateTime.Now.ToString();
这句代码的功能是获取当前系统时间,并显示在textbox2中,这句代码可谓是既简单又实用,以后会经常用到。
模块3:班费查询功能界面的实现,本页面实现了对班级里面的流水账的计算,每一笔收入支出都有详细记录,还提供了索引,可以快速找到其中一笔收入或支出,自动算出余额还有多少,界面如下:


本段代码比较难理解的地方就在于这个班费余额是怎么做出来的,是怎么实现的呢?先看下面实现代码:

private void Form班费查询_Load(object sender, EventArgs e){double sum = 0.0;string ss = "select * from 班费";DataSet ds = PublicData.Select(ss);dataGridView1.DataSource = ds.Tables[0];for(int i = 0; i < ds.Tables[0].Rows.Count; i++){if (ds.Tables[0].Rows[i][5].ToString() == "收入"){sum = sum + double.Parse(ds.Tables[0].Rows[i][4].ToString());}else{sum = sum - double.Parse(ds.Tables[0].Rows[i][4].ToString());}}label3.Text = "班费余额为:" + sum;}

首先执行查询语句,查出里面有多少条记录,并用一个for循环,最大值为查出来的总条数每次+1开始循环,每一次循环都判断如果收支类型为收入那就总金额sum加上这条数据的钱数,否则就减去,最后通过Label3将其显示出来。

模块4:班级聊天室这个功能可能是我最喜欢的功能了,这个功能完全可以作成一款小型的聊天软件,通过注册来登录聊天,只需要一台固定IP的电脑作为服务器,数据库连接语句换成IP访问,然后将软件打包出来,每个安装这个软件的人就可以通过软件远程访问这台服务器,利用数据库的添加、查询操作就可以实现聊天了,很方便。虽然课上没能实现有点小遗憾。窗体样式如下:

该窗体上面也说了,通过简易的添加、查询即可实现,当然我们也主要是这么做的,具体代码如下

private void Button1_Click(object sender, EventArgs e){if (textBox2.Text != ""){string sql = string.Format("insert into 聊天(昵称,内容,发言时间) values('{0}','{1}','{2}')", PublicData.nicheng,
textBox2.Text, DateTime.Now.ToString());PublicData.Modify(sql);textBox2.Clear();textBox2.Focus();}}

这段代码就是当点击发布按钮时将文本框中的信息添加到数据库

private void Timer1_Tick(object sender, EventArgs e){string sql = string.Format("select 昵称,内容,发言时间 from 聊天");DataSet ds = new DataSet();ds = PublicData.Select(sql);textBox1.Clear();for(int i = 0; i < ds.Tables[0].Rows.Count; i++){textBox1.Text += ds.Tables[0].Rows[i][2] + "\r\n" + ds.Tables[0].Rows[i][0] + ":" + ds.Tables[0].Rows[i][1] + "\r\n\r\n";}textBox1.SelectionStart = textBox1.Text.Length;textBox1.ScrollToCaret();string ss = "select * from 用户 where 状态='1'";ds = PublicData.Select(ss);label1.Text = "当前在线人数为:" + ds.Tables[0].Rows.Count;}

这里用到了Timer控件(这是一个定时器控件),这段代码也就是你疑问的地方,我们添加到数据库后怎么怎么看到自己发的信息,手动刷新吗,用循环?当然都可以,但不是最优解,我们用微软官方给我们做好的定时器,设定好时间在Tick事件中添加重复执行的代码就可以了,非常便捷。

private void TextBox2_KeyDown(object sender, KeyEventArgs e)//回车键执行按钮功能{if (e.KeyCode == Keys.Enter){this.Button1_Click(sender, e);}}

这里又用到了获取键盘键位来执行每个事件,我觉得这是这个窗体里最实用的地方了,后面写程序如果可以一定要加上,输入完信息,回车键直接登录,直接发送消息,很方便有木有,在其他各大厂商的软件上大范围应用了这种功能,熟知的QQ,微信等。

模块5:当然了,怎么能少了修改个人信息,修改密码这几个功能呢,由于里面就用了一些数据库里面的一些修改、查询语句,我就不再多讲,很简单,页面实现如下:


模块6用户信息管理:这个界面不光集成了增、删、改、查功能,还有许多实用的小功能,这个界面的制作是花费时间最久的,功能最为全面的,也是我记忆最为深刻的,我在此界面上你可以基本实现管理所有用户的信息,包括手动导入一些表格中的信息。页面布局如下:

部分代码详解:

private void 用户信息管理_Load(object sender, EventArgs e){toolStripButton4.Enabled = false;toolStripButton5.Enabled = false;groupBox1.Enabled = false;load();}
public void load()          //将查询出来的数据添加到dataGridView中{string sql = "select * from 用户";DataSet ds = PublicData.Select(sql);dataGridView1.DataSource = ds.Tables[0];label9.Text = "当前共有:" + ds.Tables[0].Rows.Count + "个用户。";}

这两段代码共同实现了在窗体加载时,在不单机上方功能按钮的情况下让groupbox里面的控件都不可使用,同时调用load();函数,执行查询语句看里面一共有多少个用户显示在左下角的Lable中。

这两个功能的实现是这么做的,定义一个全局变量flag,当点击添加按钮时在Click事件中将flag赋值为1;当点击修改按钮时在Click事件中将flag赋值为0;然后点击保存按钮然后用if语句判断flog的值,看之前是点击了那个功能按钮,然后进行保存。

private void DataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){int a = dataGridView1.CurrentRow.Index;     //获取当前选中的行数textBox1.Text = dataGridView1.Rows[a].Cells[0].Value.ToString();textBox2.Text = dataGridView1.Rows[a].Cells[1].Value.ToString();textBox3.Text = dataGridView1.Rows[a].Cells[3].Value.ToString();textBox4.Text = dataGridView1.Rows[a].Cells[4].Value.ToString();textBox5.Text = dataGridView1.Rows[a].Cells[5].Value.ToString();textBox6.Text = dataGridView1.Rows[a].Cells[6].Value.ToString();comboBox1.Text = dataGridView1.Rows[a].Cells[2].Value.ToString();comboBox2.Text = dataGridView1.Rows[a].Cells[7].Value.ToString();id = textBox1.Text;}

这段代码在老师没讲之前我是自己写的,写完之后发现我写的只能是点击里面的数据才能将这一行用户的数据添加到上面的textbox中,于老师实现的效果有点出入,之后通过询问老师,才知道是使用错了事件,之前我用的CellContentClick,这个事件是在点击数据后才触发的,应该是用CellClick这个事件。

C#项目班级管理系统相关推荐

  1. springboot毕设项目班级综合测评管理系统ljm7u(java+VUE+Mybatis+Maven+Mysql)

    springboot毕设项目班级综合测评管理系统ljm7u(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + ...

  2. 班级管理系统的后端微服务demo项目

    Overview 参考: [编程不良人]微服务小项目实战 班级管理系统: 该项目是学习微服务时的一个demo项目,只具备后端功能,且因为服务的功能和代码极其相似,最后两个服务没有开发完成.文档尽可能事 ...

  3. 智慧班级管理系统 java

    智慧班级管理系统 整个项目涉及到的类如下 1.抽象类 Person: 属性有ID(id).用户名(userName).密码(passWord).性别(sex).年龄(age).手机号码(mobileP ...

  4. Python+班级管理系统 毕业设计-附源码171809

    目  录 摘要 1 绪论 1.1研究背景 1.2研究的目的与意义 1.3系统开发技术的特色 1.4论文结构与章节安排 2基于Python班级管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 ...

  5. 基于idea-SSM班级管理系统(javaweb-php-asp.netC#-j2ee)包含学生日常信息管理学生会选举投票管理

    目录 0.效果展示 ​1.概述 2.搭建环境 3.数据表 ​4.后端代码示例 5.前端代码示例 0.效果展示 1.概述 在系统中,要求对不同的用户设置不同的权限,系统针对不同权限下的用户授予其对数据库 ...

  6. c语言班级管理系统需求分析报告,班级管理系统 C语言报告.doc

    班级管理系统 C语言报告 <软件工程与开发实践>软件设计报告题 目班级管理系统学 院计算机学院专 业计算机科学与技术班 级 学 号学生姓名 其他成员组 长 指导教师完成日期2012年6月 ...

  7. [附源码]Java计算机毕业设计SSM高校互联网班级管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  8. [附源码]java毕业设计高校班主任班级管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  9. [附源码]SSM计算机毕业设计高校班主任班级管理系统JAVA

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  10. 班级管理html注册登录界面代码,基于JSP和SSH框架实现的班级管理系统

    1 系统需求的分析 1.1 需求分析 本项目所开发的班级管理系统完成学校对学生的班级信息的统计与管理,减少数据漏掉的情况,同时也节约人力.物力和财力,告别以往的人工统计.方便学生使用,学生可以在线查看 ...

最新文章

  1. MS sql server和mysql中update多条数据的例子
  2. GNS3关联SecureCRT的配置。
  3. C++引用(Reference)
  4. Go image: unknown format 错误解决
  5. 基于android的简单网页_成都APP开发:APP原生和网页开发有什么区别?
  6. mysql全文索引含义_【分针网】MySQL全文索引应用简明教程
  7. 北大青鸟c语言课后答案,北大青鸟C语言教程--第一章 C语言基础.ppt
  8. LeetCode 1406. 石子游戏 III(DP)
  9. 双11终于来了,你盖楼了吗?
  10. matlab进行图片修补,Matlab基于样本的图像修补方法代码的一些问题!
  11. 平面设计中应当注意的设计原则
  12. K210系列第一个示例程序
  13. [eclipse error]'Android Dependencies' which does not allow modifications to source attachments on it
  14. Java微信支付APIV3密钥生成全过程
  15. sqlite 多条件查询
  16. 招聘后台投递设置联动按钮迭代开发总结
  17. 2021东南亚跨境电商平台之马来西亚热门电商平台排名TOP10
  18. C语言字母区分大写,C语言中不区分大小写英文字母。()
  19. 软考网络规划设计师知识点总结--第一章(计算机网络概论)
  20. 《概率论与数理统计》学习笔记

热门文章

  1. 帝国cms网站URL伪静态的设置方法
  2. 《现代操作系统(中文第三版)》课后习题——第六章 死锁
  3. matlab 振动,振动系统固有特性的matlab计算
  4. 升级到Firefox 3.0后解决扩展版本不兼容的方法
  5. 倒立摆入门详解+pid调参
  6. C语言程序设计C语言之父,C程序设计语言-美-里奇-C语言之父-机械工业出版社
  7. 谈谈eXeScope这款exe修改器
  8. linux服务器测网速,linux服务器如何测试网速
  9. 手机能打开的表白代码_不是程序员都能学会的5个表白代码,一学就会,附源码...
  10. 蓝宝石会升级bios吗_蓝宝石主板bios设置教程