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

本文主要是介绍基于C#开发web网页管理系统模板流程-主界面统计功能完善,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

紧接上篇->基于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】中添加相应的出入库菜单,这一步博主偷懒一下罢~你一定会的!

这篇关于基于C#开发web网页管理系统模板流程-主界面统计功能完善的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052806

相关文章

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

C# Where 泛型约束的实现

《C#Where泛型约束的实现》本文主要介绍了C#Where泛型约束的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用的对象约束分类where T : structwhere T : classwhere T : ne