基于C#开发web网页管理系统模板流程-主界面统计功能完善

点击返回目录->

基于C#开发web网页管理系统模板流程-总集篇-CSDN博客


前言

紧接上篇->基于C#开发web网页管理系统模板流程-主界面管理员入库和出库功能完善_c#web程序设计-CSDN博客

统计功能是管理系统很常见的功能,例如仓库管理系统要统计某时间段的出入库以整合利润情况,再例如论文管理系统要统计男女生的分数情况等等

不可否认的是其实现思路与上一篇实现的出库管理功能中的【查询】按钮的功能基本相同,都是通过编写按钮的脚本,实现select查询sql语句,然后将查询的结果通过合适的控件显示出来


一,新建tj(统计的拼音)文件夹

希望你养成这个好习惯,将不同功能的脚本分门别类的放在不同的文件夹中

创建一个【包含母版页的Web窗体】,将其命名为tjgl.aspx(统计管理)

点击添加后再弹出的【选择母版页】窗口中选择唯一一个母版页Site.Master


二,添加控件并配置控件

按具体需求添加控件并给出配置

表格的设置就不赘述了,相信看到这里的你应该都懂这些套路了

用到的控件,【DropDownList】,,【Button】,和一个【Panel

前两样都是老朋友,【Panel】的作用是方便我们能显示查询的结果

然后我们添加一些【Label】控件,来显示对应的想要的结果,你可以做一些个性化的设置,例如将利润标红显示,在属性的【Font】对字体大小进行设置,【ForeColor】设置颜色,很简单,你试试就知道了


三,DropDownList配置

(一)下拉菜单选择货品

我们希望*按货品统计*之后的下拉菜单的选项中,能够自动显示出数据库中拥有的货品,该怎么做?希望你还有印象,因为这个问题在上一篇中是完整实现过的!

为货品号这个字段的下拉式菜单添加一个新的数据源,流程和前面配置数据源时基本一致

到【配置Select语句】这个窗口时注意切换成货品表

自定义语句只需要一条查询语句,此处的查询语句读者根据自己的管理系统来决定想要查询的内容

此处采用一种“货品号和货品名绑定显示”的查询机制,因此使用了如下这条SQL语句

select hno, concat(hno, hname) as hpm from hpb

(二)下拉菜单选择年份

同理,需要只显示数据库中出现过出入库操作的年份

年份的数据源配置,其它都是一样的,主要是*自定义Select语句*

select distinct year(rk_date) as rkn from rkb union
select distinct year(ck_date) as ckn from ckb

解释一下这里的sql,分别是查询入库表*rkb*中的入库日期的年份*year(rk_date)*和出库表*ckb*中的出库日期的年份*year(ck_date)*,查询结果只要一个(即不重复,因此用distinct关键字),as关键字为查询字段重命名

最后用union关键字将两条语句的结果取并集

(三)下拉菜单选择月份

这个是最简单的,毕竟每年12月是固定的

我们选择*编辑项*

添加并修改节点的文本(这里如果想修改成具体的*一月*这种中文选项,需要在后续的脚本做格外处理)

(四)效果展示


四,所有控件脚本

在设置脚本前先添加三个【CheckBox】控件,并在它们的【Text】属性中输入一个空格(让名字为空)

打开【rkgl.aspx.cs】文件,将下面的代码复制到该文件中,即可实现所有控件的功能,实现思路见代码注释!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Odbc;        //ODBC命名空间namespace ckgl.admin.tj {public partial class tjgl : System.Web.UI.Page {protected void Page_Load(object sender, EventArgs e) {}protected void Button1_Click(object sender, EventArgs e) {OdbcConnection con = DB.Lianjie();con.Open();//这里有两天sql,sql1用于查询入库相关、sql2查询出库相关string sql1 = " select IFNULL(sum(hno),0) as rksl, IFNULL(sum(rk_zprice), 0) as rkje from rkb where ";  //IFNULL用于判断求和是否位null,如果是则取0,否则null会影响字符串转整数string sql2 = " select IFNULL(sum(hno),0) as cksl, IFNULL(sum(ck_zprice), 0) as ckje from ckb where ";//然后根据对应的CheckBox来决定sql要怎么查询if (CheckBox1.Checked == true) {//按货品统计,查询货品号sql1 += " hno='" + DropDownList1.Text + "' and ";sql2 += " hno='" + DropDownList1.Text + "' and ";}if (CheckBox2.Checked == true) {//按年份统计,查询出入库年份sql1 += " year(rk_date)=" + DropDownList2.Text + " and  ";sql2 += " year(ck_date)=" + DropDownList2.Text + " and  ";}if (CheckBox3.Checked == true) {//按月份统计,查询出入库年份sql1 += " month(rk_date)=" + DropDownList3.Text + " and ";sql2 += " month(ck_date)=" + DropDownList3.Text + " and ";}sql1 += " '1'='1' ";sql2 += " '1'='1' ";//依旧是复合查询的关口,需要将最后一个and关键字吞掉使sql语法正确OdbcCommand mycommand1 = new OdbcCommand(sql1, con);OdbcCommand mycommand2 = new OdbcCommand(sql2, con);OdbcDataReader sdr1 = mycommand1.ExecuteReader();OdbcDataReader sdr2 = mycommand2.ExecuteReader();//结果查到了,接下来提取需要显示的关键数据,以下变量分别代表——//入库总数-出库总数-入库总额-出库总额-库存量-总利润int rkzs = 0, ckzs = 0, rkze = 0, ckze = 0, kcl = 0, zlr = 0;if (sdr1.Read()) {//如果sql1查询入库相关有结果,那么将其中的入库总数和入库总额记录下来rkzs = Convert.ToInt32(sdr1["rksl"]);rkze = Convert.ToInt32(sdr1["rkje"]);}if (sdr2.Read()) {//如果sql2查询出库相关有结果,那么将其中的出库总数和出库总额记录下来ckzs = Convert.ToInt32(sdr2["cksl"]);ckze = Convert.ToInt32(sdr2["ckje"]);}kcl = rkzs - ckzs;//库存量 = 入库总数 - 出库总数zlr = ckze - rkze;//总利润 = 出库总额 - 入库总额//最后对相应的Label标签设置文本,即可显示出结果!Label1.Text = rkzs.ToString();Label2.Text = ckzs.ToString();Label3.Text = rkze.ToString();Label4.Text = ckze.ToString();Label5.Text = kcl.ToString();Label6.Text = zlr.ToString();con.Close();}protected void Button2_Click(object sender, EventArgs e) {//重置的常规操作,这么多篇了,相信你能明白!CheckBox1.Checked = false;CheckBox2.Checked = false;CheckBox3.Checked = false;Label1.Text = Label2.Text = Label3.Text = Label4.Text = Label5.Text = Label6.Text = "";}}
}


五,添加菜单

在母版页【Site.Master】中添加相应的出入库菜单,这一步博主偷懒一下罢~你一定会的!

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

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

相关文章

QT信号与槽/窗口组件优化/使用QT制作QQ登录界面

使用手动连接,将登录框中的取消按钮使用第二中连接方式,右击转到槽,在该槽函数中,调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中,在槽函数中判断u界面上输入的账号是否为"admin",…

Python量化交易学习——Part7:定制增强型中证红利策略

中证红利指数是一个反映A股市场高红利股票整体状况和走势的指数。它通过选取上海、深圳交易所中现金股息率高、分红比较稳定、具有一定规模及流动性的100只股票作为样本。这个指数的目的是提供一个全面且具有代表性的视角,以观察A股市场中高红利股票的表现。中证红利指数的样本…

永磁同步直线电机(PMLSM)控制与仿真3-永磁同步直线电机数学三环控制整定

文章目录 1、电流环参数整定2、速度环参数整定3、位置环参数整定 写在前面:原本为一篇文章写完了永磁同步直线电机数学模型介绍,永磁同步直线电机数学模型搭建,以及永磁同步直线电机三环参数整定及三环仿真模型搭建,但因为篇幅较长…

HTML前端

html 超文本标记语言 文本&#xff1a;文字字符 超文本&#xff1a;网页内容 标记&#xff1a;标签 标识 提供许多标签&#xff0c;不同标签功能不同&#xff0c;网页就是通过这些标签描述出来的&#xff0c;最终由浏览器解释运行我们看到的网页 <!-- html注释<!DO…

C++ 50 之 继承中的对象模型

继承中的对象模型 在C编译器的内部可以理解为结构体&#xff0c;子类是由父类成员叠加子类新成员而成&#xff1a; #include <iostream> #include <string> using namespace std;class Base03{ public:int m_a; protected:int m_b; private:int m_c; // 哪怕是…

lua对接GPT4实现对话

演示效果&#xff1a; 准备材料&#xff1a; 1、FastWeb网站开发服务&#xff1a;fwlua.com 2、一台服务器 该示例使用开源项目&#xff1a;fastweb 实现。 代码比较简单&#xff0c;主要是两部分&#xff0c;一个lua代码和一个html页面&#xff0c;用来用户发起请求和后台…

面向事件编程之观察者模式

前言 村里的老人常说&#xff1a;真男人就该懂得遵守“三不原则”——不主动、不拒绝、不负责。 一个复杂的软件系统&#xff0c;其中必然会存在各种各样的“对象”&#xff0c;如果在设计之初没有注意控制好耦合度&#xff0c;导致各个对象甚至是函数之间高度耦合&#xff0…

无人机的力量——在民用方面的应用

无人机在民用方面的应用广泛且多样化&#xff0c;以下是对其应用的详细介绍&#xff1a; 影视航拍&#xff1a; 无人机航拍影像具有高清晰、大比例尺、小面积、高视角的优点&#xff0c;特别适合获取带状地区航拍影像&#xff08;如公路、铁路、河流、水库、海岸线等&#xff…

C#面:简述 private、 protected、 public、 internal 修饰符的访问权限 ?

private修饰符表示成员只能在当前类中访问。这意味着私有成员对于类的外部是不可见的。私有成员通常用于封装类的内部实现细节&#xff0c;以确保数据的安全性和一致性。 protected修饰符表示成员可以在当前类和派生类中访问。这意味着受保护的成员对于类的外部是不可见的&…

网络安全知识全景地图V1.0 - 20240616更新

网络安全领域的知识全景涵盖了从基础概念到高级技术的广泛内容。博主基于自身十年多的工作经验结合CISSP认证官方教材按照不同的主题和层次梳理出如下高层次的概览地图&#xff0c;可以帮助个人和组织理解网络安全领域的主题。 1.1. 基础理论 1.1.1. 网络安全概述 网络安全的…

React@16.x(29)useRef

目录 1&#xff0c;介绍2&#xff0c;和 React.createRef() 的区别3&#xff0c;计时器的问题 目前来说&#xff0c;因为函数组件每次触发更新时&#xff0c;都会重新运行。无法像类组件一样让一些内容保持不变。 所以才出现了各种 HOOK 函数&#xff1a;useState&#xff0c;u…

Camtasia Studio 2024软件最新版下载【安装详细图文教程】

​Camtasia是美国TechSmith公司出品的一款集电脑屏幕录制、视频剪辑为一体的软件套装。同时包含Camtasia 录制器、Camtasia Studio&#xff08;编辑器&#xff09;、Camtasia 菜单制作器、Camtasia 剧场、Camtasia 播放器和Screencast的内置功能。 安 装 包 获 取 地 址&#x…

AirPlay技术规范及认证资讯

AirPlay是Apple开发的一种无线技术&#xff0c;允许用户将音频、视频或图片从iOS设备、Mac电脑或其他支持AirPlay的设备无线传输到支持AirPlay的接收器设备上&#xff0c;例如智能电视或音响系统。这项技术基于Wi-Fi网络&#xff0c;提供了一种便捷的方式来共享媒体内容。AirPl…

Java 数据结构:栈和队列

Java 数据结构&#xff1a;栈和队列 在软件开发中&#xff0c;数据结构是组织和管理数据的基础。掌握常见的数据结构如栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;&#xff0c;能够帮助我们编写出更高效且结构清晰的代码。本文将深入探讨这两种数据结…

c++_0基础_讲解3 输入 输出

cin与cout C是一种通用的编程语言&#xff0c;支持面向对象编程。它是由Bjarne Stroustrup在1983年创建的&#xff0c;是C语言的一个扩展&#xff0c;为程序员提供了更多的功能和更高的抽象级别。 在C中&#xff0c;输入和输出是非常重要的操作&#xff0c;常用的输入操作是使…

车票信息的请求与显示

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 1 发送与分析车票信息的查询请求 得到了获取车票信息的网络请求地址&#xff0c;然后又分析出请求地址的必要参数以及车站名称转换的文件&#xff…

如何用Windows api查找标题相似的所有窗口句柄VB6

在 VB6 中&#xff0c;可以使用 FindWindow API 函数来查找窗口句柄。这个函数接受两个参数&#xff0c;一个是窗口类名&#xff0c;另一个是窗口标题。如果你只知道窗口标题的一部分或者想查找标题相似的所有窗口&#xff0c;可以使用通配符来进行模糊匹配。 在 VB6 中&#…

《软件测试52讲》——测试基础知识篇

1 你真的懂测试吗&#xff1f;从“用户登录”测试谈起 从“用户登录”测试谈起&#xff0c;“用户登录”功能作为测试对象 作为测试工程师&#xff0c;你的目标是要保证系统在各种应用场景下的功能是符合设计要求的&#xff0c;所以你需要考虑的测试用例就需要更多、更全面。 …

2078.两栋颜色不同且距离最远的房子

街上有 n 栋房子整齐地排成一列&#xff0c;每栋房子都粉刷上了漂亮的颜色。给你一个下标从 0 开始且长度为 n 的整数数组 colors &#xff0c;其中 colors[i] 表示第 i 栋房子的颜色。 返回 两栋 颜色 不同 房子之间的 最大 距离。 第 i 栋房子和第 j 栋房子之间的距离是 a…

Linux应用编程 - i2c-dev操作I2C

嵌入式Linux操作I2C设备&#xff0c;我们一般会在内核态编写I2C驱动程序。另外还能在用户空间编写I2C程序&#xff0c;下面介绍相关代码的实现。 i2c-dev框架在内核中封装了I2C通信所需要的所有通信细节&#xff0c;I2C适配器会在/dev目录下创建字符设备&#xff0c;例如&#…