国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于C#、Grid++ Report的自定義通用報(bào)表模塊的設(shè)計(jì)與實(shí)現(xiàn)

2022-04-28 08:28
大眾科技 2022年2期
關(guān)鍵詞:設(shè)計(jì)者報(bào)表語(yǔ)句

唐 毅

基于C#、Grid++ Report的自定義通用報(bào)表模塊的設(shè)計(jì)與實(shí)現(xiàn)

唐 毅

(廣西師范大學(xué)出版社集團(tuán)有限公司,廣西 桂林 541004)

隨著現(xiàn)代信息技術(shù)的不斷發(fā)展,企業(yè)信息化管理系統(tǒng)已經(jīng)成為一種重要應(yīng)用,其中的報(bào)表統(tǒng)計(jì)模塊已成為企業(yè)決策的重要模塊。然而,一些傳統(tǒng)的報(bào)表模塊,存在維護(hù)困難、靈活性差等問(wèn)題。文章闡述了一種運(yùn)用C#語(yǔ)言,結(jié)合Grid++ Report報(bào)表設(shè)計(jì)器、支持自定義、個(gè)性化配置的報(bào)表模塊的設(shè)計(jì)與實(shí)現(xiàn)方法。

C#;Grid++ Report;通用報(bào)表;管理信息系統(tǒng)

引言

隨著現(xiàn)代信息技術(shù)的不斷發(fā)展,世界已跨入了“互聯(lián)網(wǎng)+”大數(shù)據(jù)時(shí)代,各行各業(yè)也都需要管理信息系統(tǒng)來(lái)支撐業(yè)務(wù)運(yùn)行。管理信息系統(tǒng)會(huì)收集和產(chǎn)生大量的數(shù)據(jù)。這些系統(tǒng)在設(shè)計(jì)初期一般不會(huì)提供完備的數(shù)據(jù)分析報(bào)表[1]。隨著時(shí)間的推移,產(chǎn)生的數(shù)據(jù)越來(lái)越多,需要的分析報(bào)表也越來(lái)越多,統(tǒng)計(jì)方式也層出不窮,相應(yīng)的問(wèn)題也隨之出現(xiàn)。以筆者所在的企業(yè)所使用的信息系統(tǒng)為例,當(dāng)需要增加一個(gè)報(bào)表,甚至一個(gè)簡(jiǎn)單的查詢條件時(shí),即使企業(yè)擁有管理信息部門,往往也要找更為專業(yè)的系統(tǒng)開(kāi)發(fā)公司人員進(jìn)行重新評(píng)估和開(kāi)發(fā),這樣會(huì)產(chǎn)生非常多的溝通成本、人力成本、時(shí)間成本。而對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),理解需求,編寫代碼,到最后編譯、測(cè)試、發(fā)布、更新,整個(gè)流程周期比較長(zhǎng)。這使得企業(yè)的管理效率、決策效率大打折扣。因此,如何幫助企業(yè)能夠靈活生成常用報(bào)表、降低設(shè)計(jì)報(bào)表人員專業(yè)技術(shù)要求、建立一個(gè)支持可視化靈活的通用報(bào)表模塊變得極其重要。

1 需求分析

1.1 功能性需求

可自定義通用報(bào)表跟普通報(bào)表的開(kāi)發(fā)方式相比,要足夠簡(jiǎn)單,降低設(shè)計(jì)報(bào)表人員的專業(yè)要求,設(shè)計(jì)報(bào)表時(shí)支持可視化拖拽、參數(shù)、事件、權(quán)限的定義。同時(shí),用戶在查詢報(bào)表時(shí),查詢條件可以自定義組合,結(jié)果展示頁(yè)面支持導(dǎo)出、打印、自定義排序等功能[2]。

該報(bào)表模塊的用戶主要包括報(bào)表設(shè)計(jì)者和報(bào)表使用者兩大類。報(bào)表設(shè)計(jì)者可以在線或離線設(shè)計(jì)報(bào)表界面后上傳,然后進(jìn)行相關(guān)參數(shù)配置后生成報(bào)表。報(bào)表使用者提交查詢條件至報(bào)表服務(wù)器,報(bào)表服務(wù)器返回?cái)?shù)據(jù)結(jié)果并呈現(xiàn)報(bào)表,讓報(bào)表使用者利用數(shù)據(jù)信息,形成決策。

通過(guò)上述的需求分析,筆者設(shè)計(jì)出該模塊的用例圖。本用例圖是從自定義通用報(bào)表模塊設(shè)計(jì)的實(shí)體對(duì)象及主要行為的角度出發(fā)對(duì)系統(tǒng)的抽象表示。由報(bào)表設(shè)計(jì)人員和使用人員發(fā)起用例,如圖1所示。

圖1 用例圖

1.2 非功能性需求

該模塊的非功能性需求包括適用性要求、可靠性要求、性能要求、可擴(kuò)展性要求。

1.2.1適用性要求

(1)報(bào)表的設(shè)計(jì)要易上手、易學(xué)習(xí),界面設(shè)計(jì)能支持可視化拖拽,對(duì)于非信息技術(shù)企業(yè)的信息管理人員也能在一周時(shí)間內(nèi)掌握;

(2)報(bào)表的參數(shù)、查詢條件、權(quán)限可以隨時(shí)修改,不需要代碼編譯和發(fā)版。

1.2.2可靠性要求

(1)當(dāng)功能出現(xiàn)故障時(shí),應(yīng)有相關(guān)的錯(cuò)誤日志,并能快速定位問(wèn)題;用戶的查詢也應(yīng)記錄相應(yīng)的損耗時(shí)間、查詢條件、查詢次數(shù)的記錄,便于企業(yè)信息管理人員進(jìn)行用戶行為數(shù)據(jù)分析;

(2)避免出現(xiàn)信息安全問(wèn)題,比如防范常見(jiàn)的SQL注入、敏感字段需加密等。

1.2.3性能要求

(1)應(yīng)能支持300個(gè)以上用戶同時(shí)在線使用;

(2)一般常規(guī)操作響應(yīng)速度應(yīng)在5 s內(nèi),對(duì)于復(fù)雜的操作,響應(yīng)速度應(yīng)在10 s以內(nèi)。

1.2.4可擴(kuò)展性要求

(1)該模塊的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)應(yīng)盡量獨(dú)立并留有相關(guān)的API接口,以便輕松融入其它系統(tǒng);

(2)該模塊應(yīng)當(dāng)有一定的發(fā)展能力和容納能力,以便出現(xiàn)新的功能需求時(shí),快速納入。

2 模塊設(shè)計(jì)

2.1 模塊技術(shù)架構(gòu)

該模塊采用 B/S(瀏覽器/服務(wù)器)的軟件架構(gòu),B/S 是 C/S (客戶端/服務(wù)器)模式在 Internet 上基于 web 應(yīng)用的一種實(shí)現(xiàn)方式。B/S 模式簡(jiǎn)化了客戶端的安裝、擁有易于升級(jí)和維護(hù)等優(yōu)勢(shì),是目前軟件開(kāi)發(fā)架構(gòu)的首選,因此采用 B/S 模式進(jìn)行開(kāi)發(fā)。

另外,模塊采用了界面層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層的三層設(shè)計(jì)理念。這使得代碼模塊之間更加“高內(nèi)聚、低耦合”,可維護(hù)性、可擴(kuò)展性更好,維護(hù)成本降低[3]。

界面層(PL):主要利用Grid++ Report技術(shù)工具實(shí)現(xiàn),負(fù)責(zé)報(bào)表的可視化設(shè)計(jì)。Grid++ Report是一款報(bào)表開(kāi)發(fā)工具。能給報(bào)表設(shè)計(jì)者用來(lái)開(kāi)發(fā)軟件中的報(bào)表、打印、圖表與數(shù)據(jù)導(dǎo)出等子系統(tǒng)。支持可視化界面設(shè)計(jì),支持分組匯總、表頭排序、常規(guī)票據(jù)打印、套打等。支持嵌入到web環(huán)境下,非常適合本通用報(bào)表模塊的界面層,報(bào)表設(shè)計(jì)界面如圖2所示。另外,報(bào)表的查詢界面與其他參數(shù)配置界面應(yīng)用是通過(guò)在web環(huán)境下被廣泛使用的、較為靈活html語(yǔ)言來(lái)實(shí)現(xiàn)的。

圖2 報(bào)表設(shè)計(jì)頁(yè)面

業(yè)務(wù)邏輯層(BLL):主要利用C#語(yǔ)言來(lái)實(shí)現(xiàn),業(yè)務(wù)邏輯層是在數(shù)據(jù)訪問(wèn)層和表示層之間進(jìn)行數(shù)據(jù)交換的橋梁,如查詢條件的處理、用戶權(quán)限的判斷、特殊報(bào)表參數(shù)的處理等業(yè)務(wù)邏輯均放在此層中。

數(shù)據(jù)訪問(wèn)層(DAL):主要利用SQL語(yǔ)言來(lái)實(shí)現(xiàn),數(shù)據(jù)訪問(wèn)層只是單純的對(duì)數(shù)據(jù)進(jìn)行增、刪、改、查(由 SQL 語(yǔ)句來(lái)提供),不應(yīng)該有“事務(wù)”存在。簡(jiǎn)單三層架構(gòu)的邏輯圖如圖3所示。

圖3 簡(jiǎn)單三層架構(gòu)的邏輯圖

2.2 系統(tǒng)功能架構(gòu)

根據(jù)需求分析,本系統(tǒng)分為兩類用戶角色:報(bào)表設(shè)計(jì)者、報(bào)表使用者。根據(jù)用戶角色的模塊劃分方式,不同用戶角色模塊擁有不同的功能。其架構(gòu)圖如圖4所示。

圖4 系統(tǒng)模塊及功能

2.2.1報(bào)表設(shè)計(jì)者功能詳細(xì)設(shè)計(jì)

報(bào)表設(shè)計(jì)者一般為企業(yè)的信息管理部門人員,負(fù)責(zé)收集業(yè)務(wù)部門人員的報(bào)表需求,進(jìn)行報(bào)表的設(shè)計(jì)。主要功能包括報(bào)表的樣式設(shè)計(jì)、配置查詢語(yǔ)句、查詢字段、用戶權(quán)限以及額外的參數(shù)、事件。

(1)報(bào)表的樣式設(shè)計(jì)。設(shè)計(jì)人員在可視化的情況下對(duì)報(bào)表的樣式進(jìn)行設(shè)計(jì),包括頁(yè)眉、表頭、明細(xì)網(wǎng)格、表尾、頁(yè)腳、頁(yè)眉、水印等。

(2)配置查詢語(yǔ)句。設(shè)計(jì)人員配置用于檢索報(bào)表數(shù)據(jù)的SQL查詢語(yǔ)句。

(3)配置查詢字段。設(shè)計(jì)人員可配置查詢報(bào)表時(shí)所需要的條件字段,包括字段名、字段所需的控件呈現(xiàn)類型等。

(4)配置權(quán)限。設(shè)計(jì)人員可對(duì)每個(gè)報(bào)表配置用戶權(quán)限,即某報(bào)表是否完全公開(kāi),或者哪些用戶、角色才能查看該報(bào)表。

(5)配置額外參數(shù)或事件。設(shè)計(jì)人員可對(duì)每個(gè)報(bào)表單獨(dú)設(shè)置相應(yīng)的事件,如報(bào)表加載完成事件、雙擊明細(xì)事件等。同時(shí),為了適應(yīng)不同的信息系統(tǒng),設(shè)計(jì)人員還可以配置不同的字典參數(shù),來(lái)適應(yīng)不同的信息系統(tǒng)。

2.2.2報(bào)表使用者功能詳細(xì)設(shè)計(jì)

(1)自定義查詢條件。用戶輸入查詢條件有兩種方式,一種是傳統(tǒng)的基本條件按字段模糊搜索,另一種是在基本條件輸入的基礎(chǔ)上,增加了括號(hào)和邏輯運(yùn)算的功能。提供的邏輯符有“并且”和“或者”,用戶可根據(jù)自己的需要設(shè)計(jì)查詢條件之間的邏輯關(guān)系,其中,使用括號(hào)括起來(lái)的查詢條件優(yōu)先級(jí)最高。

(2)瀏覽報(bào)表。使用人員可以在線瀏覽報(bào)表,可對(duì)結(jié)果進(jìn)行排序、向上或向下鉆取數(shù)據(jù)。

(3)導(dǎo)出、打印報(bào)表。使用人員也可以導(dǎo)出或打印報(bào)表結(jié)果,從而進(jìn)行數(shù)據(jù)分析,形成決策。

2.3 數(shù)據(jù)庫(kù)詳細(xì)設(shè)計(jì)

數(shù)據(jù)庫(kù)詳細(xì)設(shè)計(jì),如表1所示。

表1 部分核心功能數(shù)據(jù)庫(kù)設(shè)計(jì)

在此設(shè)計(jì)中,部分核心功能的E-R圖如圖5所示。

圖5 部分核心功能E-R圖

3 模塊實(shí)現(xiàn)

3.1 模塊開(kāi)發(fā)技術(shù)概述

系統(tǒng)采用的開(kāi)發(fā)平臺(tái)是Windows Server 2019 + IIS 10 + ASP.NET Core 3.1,后臺(tái)數(shù)據(jù)庫(kù)采用的是SQL Server 2012,ASP.NET Core的前端開(kāi)發(fā)工具是Visual Studio 2019,報(bào)表設(shè)計(jì)器采用Grid++ Report 5.8,同時(shí)采用基于 Restful 協(xié)議的 WebAPI 技術(shù)提供接口服務(wù),無(wú)論是理論上還是實(shí)現(xiàn)技術(shù)上都具有一定的先進(jìn)性。

3.2 模塊部分功能模塊實(shí)現(xiàn)

以介紹自定義查詢條件的實(shí)現(xiàn)為例。

現(xiàn)在很多信息系統(tǒng)的報(bào)表模塊查詢條件固定,只是簡(jiǎn)單的多條件“且”關(guān)系的模糊查詢。一旦需求變更,需要新增查詢條件字段時(shí),就需要用開(kāi)發(fā)工具打開(kāi)相應(yīng)位置的源代碼,然后修改、編譯、測(cè)試、發(fā)布。整個(gè)過(guò)程非常繁瑣,且過(guò)分依賴系統(tǒng)開(kāi)發(fā)方,浪費(fèi)了很多溝通成本、時(shí)間成本。該模塊的最大特點(diǎn)是可以通過(guò)簡(jiǎn)單的后臺(tái)配置,結(jié)合一些基礎(chǔ)的數(shù)據(jù)庫(kù)知識(shí),就可以讓企業(yè)信息化管理人員上手,且查詢條件的配置靈活多變。

報(bào)表設(shè)計(jì)者在完成報(bào)表基本信息的填寫和報(bào)表界面的設(shè)計(jì)后,即可定義用于報(bào)表查詢的SQL語(yǔ)句和查詢字段。如圖6所示,在“SQL語(yǔ)句”字段文本框中,報(bào)表設(shè)計(jì)者需填寫用于檢索報(bào)表數(shù)據(jù)的SQL查詢語(yǔ)句。系統(tǒng)默認(rèn)用“{where}”特殊符表示查詢條件所拼湊成的where語(yǔ)句要替換的位置。為了更加靈活地適配各個(gè)系統(tǒng),該模塊還支持特殊符參數(shù)的字典定義,如可以另行設(shè)置特殊符“{bmbh}”為代表業(yè)務(wù)系統(tǒng)中用戶所擁有查詢權(quán)的部門,又或者用“{userid}”表示查詢報(bào)表的當(dāng)前用戶ID。如使用以下SQL語(yǔ)句:“SELECT * FROM 銷售表 WHERE {where} AND (銷售表.開(kāi)單人 = '{userid}' ) ORDER BY id”,來(lái)表示從銷售表中查詢出開(kāi)單人為當(dāng)前用戶的銷售數(shù)據(jù)。

圖6 部分配置界面

當(dāng)完成“SQL語(yǔ)句”字段填寫后,報(bào)表設(shè)計(jì)者可以自動(dòng)獲取所有相關(guān)的查詢字段名稱,亦可手動(dòng)填寫所需要的查詢字段名稱?!白侄蚊Q”表示該字段在數(shù)據(jù)庫(kù)表中的字段名,“字段中文名”用來(lái)友好展示給報(bào)表使用者,“字段類型”用于指定該字段控件的呈現(xiàn)方式,包括:(1)字符串類型,用普通文本輸入框呈現(xiàn);(2)日期類型,用下拉日歷的控件呈現(xiàn);(3)數(shù)字類型,用數(shù)字文本輸入框呈現(xiàn);(4)其他類型,報(bào)表設(shè)計(jì)者可通過(guò)字典參數(shù)配置額外的類型,如客戶多選下拉框、部門多選下拉框等。配置完成后,報(bào)表查詢者在高級(jí)查詢條件界面將會(huì)看到如圖7所示的界面。輸入查詢條件,點(diǎn)擊“確定”按鈕,將看到如圖8的查詢結(jié)果。

圖7 高級(jí)查詢條件界面

圖8 查詢結(jié)果界面

4 結(jié)論

相比于一些傳統(tǒng)信息系統(tǒng)中維護(hù)困難、靈活性差的報(bào)表模塊,本文提出了一種自定義通用報(bào)表模塊的設(shè)計(jì)和實(shí)現(xiàn)方案,并已在筆者所在企業(yè)進(jìn)行應(yīng)用,具有以下特點(diǎn)。

(1)對(duì)報(bào)表設(shè)計(jì)者友好。報(bào)表設(shè)計(jì)者可直接來(lái)自企業(yè)內(nèi)部信息化管理人員,只需簡(jiǎn)單掌握企業(yè)內(nèi)部信息系統(tǒng)的數(shù)據(jù)業(yè)務(wù)結(jié)構(gòu)。設(shè)計(jì)界面支持可視化操作,無(wú)需太多編碼知識(shí),拖拽制表,大大降低了設(shè)計(jì)者的專業(yè)門檻。

(2)配置靈活。報(bào)表的相關(guān)事件、參數(shù)可靈活配置,即時(shí)生效,無(wú)需重新編譯發(fā)版。輕松添加報(bào)表查詢條件,快速便捷完成查詢?cè)O(shè)置。

(3)靈活的交互體驗(yàn)。提供多樣化條件輔助錄入功能,方便報(bào)表使用者快速準(zhǔn)確輸入。讓查詢更加靈活,滿足不同的查詢需求。每個(gè)報(bào)表展示結(jié)果都包含排序、打印、導(dǎo)出、數(shù)據(jù)鉆取功能。

(4)擴(kuò)展性強(qiáng)。該模塊獨(dú)立性較強(qiáng),且留有相關(guān)的API接口,可與其他系統(tǒng)輕松對(duì)接、集成。

[1]閔喬. 基于JasperReports的通用報(bào)表系統(tǒng)研究與實(shí)現(xiàn)[D]. 南京: 南京師范大學(xué),2016.

[2]馬驃. 智能報(bào)表平臺(tái)的設(shè)計(jì)和應(yīng)用[J]. 電子制作,2020 (6): 102-104.

[3]梁桐銘. 深入淺出ASP.NET Core[M]. 北京: 人民郵電出版社,2020.

Design and Implementation of Custom General Report Module Based on C#, Grid++ Report

With the continuous development of modern information technology, enterprise information management system has become an important application, in which the report statistics module has become an important module for enterprise decision-making. However, some traditional report modules have some problems, such as difficult maintenance and poor flexibility. This paper describes the design and implementation of a report module that uses the c# language and combins Grid+Report designer with support for custom and personalized configuration.

C#; Grid++ Report; general report; management information systems

TP311.11

A

1008-1151(2022)02-0013-04

2021-12-09

唐毅(1990-),男,廣西桂林人,廣西師范大學(xué)出版社集團(tuán)有限公司信息部技術(shù)主管,從事企業(yè)信息化系統(tǒng)的建設(shè)、維護(hù)與研發(fā)。

猜你喜歡
設(shè)計(jì)者報(bào)表語(yǔ)句
重點(diǎn):語(yǔ)句銜接
2020德國(guó)iF設(shè)計(jì)獎(jiǎng)
2019德國(guó)IF設(shè)計(jì)大獎(jiǎng)
LabWindows/CVI中Excel報(bào)表技術(shù)研究
從三大報(bào)表讀懂養(yǎng)豬人的成績(jī)單
楊敬:深水區(qū)醫(yī)改設(shè)計(jì)者
深水區(qū)醫(yī)改設(shè)計(jì)者
如何搞定語(yǔ)句銜接題
作文語(yǔ)句實(shí)錄
月度報(bào)表