博主介绍:专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
第3章 系统分析
3.1 可行性分析
3.1.1系统实现后对组织机构、管理模式的影响
进销存管理系统是基于先进的软件和高速、大容量的硬件基础上的新的进销存管理模式,通过集中式的信息数据库,将企业的进、销、存、调、转、赚等企业的经营业务有机的结合起来中,达到数据共享、降低成本、提高效率、改进服务等目的。同时还可以从以下几个方面来提高管理水平:
●提高管理效率降低人工成本
●降低采购成本
●及时调整营销策略
●防范陈呆死帐提高帐款管理
●减少仓储面积,提高房产综合利用
●降低储备资金占用
●加快资金周转实现的经济效益
●强化财务控制实现的经济效益
●商业数据智能分析
●高效决策
3.1.2、可行性研究
1开发系统的必要性
随着网络的普及和流行,通过互联网络进行经济活动不仅方便快速,而且经济实惠,还可以吸引更多的顾客,这也是商家看好的地方。从这一点足可以说明开发系统的必要性。
2开发系统的经济可行性
经济费用方面主要包括:购置并安装软硬件及有关设备的费用;系统开发费用;系统安装、运行和维护费用;人员培训费用。
硬件方面,除了服务器要求高一点以外,终端设备不是太贵。软件方面,当然需要买正版的操作系统。系统开发费用为30万元人民币,不过这个数字与一个公司的发展比起来就显得太渺小了。系统的安装由我们开发人员来完成,费用包括在开发费用之中。运行和维护只需要公司招聘相应的技术人员来完成即可,这也是必不可少的一项开支。本系统操作方便,人机交互友好,易学易懂,所以培训时间会很短,费用也不会太高。总之,这几项加起来与本系统所带来的经济效益和社会效益比起来,可以说是微不足道。
3开发系统的技术可行性
通过对公司业务流程各个环节的分析,确定出了新系统的管理结构。我开发小组人员利用现有的开发工具和开发技术完全可以在规定的时间,规定的资金范围内实现新系统的全部功能。
4开发系统的法律可行性
开发本系统是为了实现公司的高效管理,并实现对决策的支持。在开发的过程中完,不会出现侵权问题。另外也会使用正版的软件来开发系统和运行系统。
5组织管理上的可行性
系统会使公司的管理更加科学化,也会更方便、高效,更人性化。同时也可以优化组织结构,提高企业的竞争力。
6社会条件上的可行性
网络的普及,网络也越来越受到人们的喜爱,这也为系统实现后的运行提供了一个大的环境。
3.2 需求分析
3.2.1 系统功能需求分析
某进销存管理系统是一个典型的数据库开发应用程序,由基础信息管理模块、进货信息管理模块、销售信息管理模块、库存信息管理模块等部分组成,规划系统功能模块如下:
(1)基础信息管理模块
该模块主要包括切换用户、权限信息设置、业务员信息设置、客户信息设置、供应商信息设置、商品信息设置、仓库信息设置、角色信息设置、会员类别信息设置、产品类别信息设置。
(2)进货信息管理模块
该模块主要包括进货信息查询、进货订单录入和修改、进货单录入和修改、订货单打印。
(3)销售信息管理模块
该块主要包括销售信息查询、销售订单录入和修改改、销售单录入和修改、销售单打印。
(4)库存信息销售模块
该模块主要包括库存信息查询、库存信息的设置、进货订单的校验、销售订单的校验、库存单打印。
3.2.2 系统设计结构分析
某进销存管理系统采用的是浏览器/服务器系统(Browser/Server简称B/S)结构。
(1)B/S介绍
B/S结构,即Browser/Server(浏览器/服务器)结构,就是只安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件。它是随着Internet技术的兴起,对C/S结构的一种变化和改进。主要利用了不断成熟的WWW浏览器技术,结合多种Script语言(VBScript、JavaScript…)和ActiveX技术,是一种全新的软件系统构造技术。
B/S三层体系结构采用三层浏览器/服务器结构,在数据管理层(Server)和用户界面层(Client)增加了一层结构,称为中间件(Middleware),使整个体系结构成为三层。三层结构是伴随着中间件技术的成熟而兴起的,核心概念是利用中间件,将应用分为表示层、业务逻辑层和数据存储层三个不同的处理层次,如图2所示。三个层次的划分是从逻辑上分的,具体的物理分法可以有多种组合。中间件作为构造三层结构应用系统的基础平台,提供了以下主要功能:负责客户机与服务器、服务器与服务器间的连接和通信;实现应用与数据库的高效连接;提供一个三层结构应用的开发、运行、部署和管理的平台。这种三层结构在层与层之间相互独立,任何一层的改变不会影响其它层的功能。
图4-1 B/S三层体系结构
在B/S体系结构系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。而其余如数据请求、加工、结果返回以及动态网页生成、对数据库的访问和应用程序的执行等工作全部由Web Server完成。随着Windows将浏览器技术植入操作系统内部,这种结构已成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序是一个非常大的进步。
采用该结构软件的优势在于:
-
- 无须开发客户端软件,维护和升级方便;
- 可跨平台操作,任何一台机器只要装有WWW浏览器软件,均可作为客户机来访问系统;
- 具有良好的开放性和可扩充性;
- 可采用防火墙技术来保证系统的安全性,有效地适应了当前用户对管理信息系统的新需求。
因此该结构在管理信息系统开发领域中获得飞速发展,成为应用软件研制中一种流行的体系结构。
(2)B/S相对于C/S的优势
由于传统的客户服务器两层结构存在灵活性差、升级困难、维护工作量大等缺陷,已较难适应当前信息技术与网络技术发展的需要。而Browse/Server(简称B/S)结构已成为取代Client/Server(简称C/S)结构的一种全新技术。它的主要优势有:
a.维护和升级方式简单。
目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大的单位来说,系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。
b.成本降低,选择更多。
大家都知道windows在桌面电脑上几乎一统天下,浏览器成为了标准配置,但在服务器操作系统上windows并不是处于绝对的统治地位。 现在的趋势是凡使用B/S架构的应用管理软件,只需安装在Linux服务器上即可,而且安全性高。所以服务器操作系统的选择是很多的,不管选用那种操作系统都可以让大部分人使用windows作为桌面操作系统电脑不受影响,这就使的最流行免费的Linux操作系统快速发展起来,Linux除了操作系统是免费的以外,连数据库也是免费的,这种选择非常盛行。
比如说很多人每天上“新浪”网,只要安装了浏览器就可以了,并不需要了解“新浪”的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows操作系统,但用户的电脑本身安装的大部分是windows操作系统。
c.应用服务器运行数据负荷较重。
由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。但是,应用服务器运行数据负荷较重,一旦发生服务器“崩溃”等问题,后果不堪设想。因此,许多单位都备有数据库存储服务器,以防万一。
(3)客户/服务器体系结构的综合特点
B/S结构的主要特点是分布性强、维护方便、开发简单且共享性强、总体拥有成本低。但数据安全性问题、对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低,这些缺点是有目共睹的,难以实现传统模式下的特殊功能要求。例如通过浏览器进行大量的数据输入或进行报表的应答、专用性打印输出都比较困难和不便。此外,实现复杂的应用构造有较大的困难。虽然可以用ActiveX、Java等技术开发较为复杂的应用,但是相对于发展已非常成熟C/S的一系列应用工具来说,这些技术的开发复杂,并没有完全成熟的技术工具供使用。
3.2.3 系统功能流程图设计
根据上述系统功能的需求分析,按照结构化程序设计的要求,得到如下所示的系统功能模块图,如图3-1
第4章 系统设计
4.1 系统设计要求、目标及命名规则
4.1.1 要求
(1)由于操作人员的计算机知识普遍较差,要求有良好的人机界面。
(2)由于该系统的使用对象多,要求有较好的权限管理。
(3)方便的数据查询,支持多条件查询。
(4)基础信息管理(包括商品信息、客户信息、供应商信息等)。
(5)通过计算机,能够直接“透视”仓库存储情况。
(6)完善的商品采购信息、商品销售信息进行管理。
(7)商品销售排行统计。
(8)当外界环境(停电、网络病毒)干扰本系统时,系统可以自动保护原始数据的安全。
(9)数据计算自动完成,尽量减少人工干预。
(10)系统退出。
4.1.2 目标
(1)系统采用人机对话方式,界面美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。
(2)键盘操作,快速响应。
(3)实现各种查询,如多条件查询、模糊查询等。
(4)管理员可以设置操作员的权限。
(5)对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
(6)数据保密性强,为每个用户设置权限级别。
(7)系统最大限度地实现了易安装性、易维护性和易操作性。
(8)系统运行稳定、安全可靠。
4.1.3 命名规则
(1)项目中命名规则
项目中各个子项均以子项功能名称的各个汉字的第一个字母,并且都要大写,他们对应的三层中的类均以他们的名称加上相应的后缀命名(例如:进货项,项目名JH,对应数据层中的类是JHService),类中的方法依据功能而定,项目中的页面命名是项目名为前缀加上相应功能名。
(2)数据库命名规则
数据库名称与项目名称相同,数据库中表命名规则是表名称各个汉字的第一个字母,表中字段命名与表相同。
4.2 系统功能设计
4.2.1 系统具体功能
(1)基础管理
结构图4-1所示:
基础管理结构图4-1
切换用户:进入系统前从此界面登录,登录时,分多种权限;
权限信息设置:对权限信息进行相关操作;
业务员信息设置:对业务员信息进行相关操作;
客户信息设置:对客户信息进行相关操作;
供应商信息设置:对供应商信息进行相关操作;
商品信息设置:对商品信息进行相关操作;
仓库信息设置:对仓库信息进行相关操作;
角色信息设置:对角色信息进行相关操作;
会员类别信息设置:对会员类别信息进行相关操作;
产品类别信息设置:对产品类别信息进行相关操作;
(2)进货管理
结构图4-2所示:
进货管理结构图4-2
进货信息查询:对进货信息按照不同字段进行查询并排序;
进货订单录入和修改:根据库存商品数量,对进货订单进行相关操作;
进货单录入和修改:根据进货订单确认情况,对进货单进行相关操作;
进货单打印:打印进货单;
(3) 销售管理
结构图4-3所示:
销售管理结构图4-3
销售信息查询:对销售信息按照不同字段进行查询并排序;
销售订单录入和修改:对销售订单进行相关操作;
销售单录入和修改:根据销售订单确认情况,对销售单进行相关操作;
销售单打印:打印销售单;
(4) 库存管理
结构图4-4所示:
库存管理结构图4-4
库存信息查询:对库存信息按照不同字段进行查询并排序;
库存信息的设置:对库存信息进行相关操作;
进货订单的校验:确认进货订单;
销售订单的校验:确认销售订单;
库存单打印:打印库存单;
4.3 数据库设计
本系统数据库采用SQL Server 2005数据库,系统数据库名称为JXC。数据库JXC中包含15张表。
4.3.1 数据库概要结构设计
(1)商品信息,包括的数据项有:产品编号、产品名称、条形码、类别、入库价格、分销价格、零售价格、生产厂家、更新日期、备注信息等。
(2)产品类别信息,包括的数据项有:类别编号、类别名称、备注信息等。
(3)客户信息,包括的数据项有:客户编号、客户名称、地址、邮政编码、电话号码、公司主页、联系人、联系人电子邮件、类别、累计消费金额、备注信息等。
(4)供应商信息,包括的数据项有:供应商编号、供应商名称、地址、邮政编码、电话号码、公司主页、联系人、联系人电子邮件、备注信息等。
(5)角色信息,包括的数据项有:角色编号、角色名称、备注信息等。
(6)权限信息,包括的数据项有:权限编号、权限名称、权限转向、备注信息等。
(7)角色权限信息,包括的数据项有:编号、角色编号、权限编号。
(8)业务员信息,包括的数据项有:业务员编号、业务员姓名、登录名称、登录密码、类别、电话号码、家庭住址、身份证号码、备注信息等。
(9)进货订单信息,包括的数据项有:订货日期、编号、业务员、供应商编号、产品编号、数量、单价、折扣比例、总金额、状态、备注信息等。
(10)进货单信息,包括的数据项有:入库日期、业务员、编号、进货订单编号、供应商编号、仓库编号,商品编号、数量、单价、折扣、总金额、是否即时付款、是否记帐、预付比例、备注信息等。
(11)销售订单表, 包括的数据项有:销售订货日期、业务、销售订货单编号、客户编号、商品编号、数量、单价、折扣、总金额、状态、备注信息。
(12)销售单表, 包括的数据项有:销售日期、业务员、销售单编号、销售订单编号、客户编码、仓库编号、商品编号、数量、单价、折扣、总金额、是否即时付款、是否记帐、预付比例、备注信息。
(13)库存信息,包括的数据项有:编号、更新日期、仓库编号、商品编号、数量、总金额、缺货警告、备注信息等。
(14)会员类别信息,包括的数据项有:编号、名称、备注信息等。
(15)仓库信息,包括的数据项有:仓库编号、仓库名称、备注。
4.3.2 数据库逻辑结构设计
根据上述数据库的需求分析和概念结构设计,设计了名称为JXC的数据库。
数据库JXC由下面多个表格组成,各个表的命名及字段命名都是以相应名称的拼音首字母组合而成,各个表格的设计结果如下表格所示,每个表格表示在数据库中相对应的一个表。
数据类型 | 可否为空 | 说明 | |
spbh | int | Not Null | 商品编号(主键自增) |
spmc | Varchar(50) | Not Null | 商品名称 |
sptxm | Varchar(50) | Not null | 商品条形码 |
splbbh | int | Null | 商品类别编号 |
spRkjg | decimal | Null | 入库价格 |
spFxjg | decimal | Null | 分销价格 |
spLsjg | decimal | Null | 零售价格 |
spSccj | Varchar(50) | Null | 生产厂家 |
spGxrq | Varchar(50) | Null | 更新日期 |
spbz | text | Null | 备注信息 |
表4-5商品信息表(spxx)
列名 | 数据类型 | 可否为空 | 说明 |
cplbbh | int | Not Null | 产品编号(主键自增) |
cplbmc | Varchar(50) | Not Null | 产品名称 |
cplbbz | text | Null | 备注信息 |
表4-6产品类别表(cplb)
列名 | 数据类型 | 可否为空 | 说明 |
Hybh | int | Not Null | 会员编号(主键自增) |
Hymc | Varchar(50) | Null | 会员名称 |
Dz | Varchar(100) | Null | 地址 |
Yzbm | Varchar(20) | Null | 邮政编码 |
Lxdh | Varchar(20) | Null | 联系电话 |
Gszy | Varchar(20) | Null | 公司主页 |
Lxr | Varchar(20) | Null | 联系人 |
Lxrdzyj | Varchar(50) | Null | 联系人电子邮件 |
Hylb | Int | Null | 会员类别 |
Ljxfje | decimal | Null | 累计消费金额 |
khbz | text | Null | 备注信息 |
表4-7客户信息表(kh)
列名 | 数据类型 | 可否为空 | 说明 |
Gysbh | int | Not Null | 供应商编号(主键自增) |
Gysmc | Varchar(50) | Not Null | 供应商名称 |
Dz | Varchar(100) | Null | 地址 |
Yzbm | varchar(20) | Null | 邮政编码 |
Lxdh | varchar(20) | Null | 联系电话 |
Gszy | varchar(50) | Null | 公司主页 |
Lxrdzyj | varchar(50) | Null | 联系人电子邮件 |
Lxr | varchar(20) | Null | 联系人 |
gysbz | text | Null | 备注信息 |
表4-8供应商信息表(gys)
列名 | 数据类型 | 可否为空 | 说明 |
jsbh | int | Not Null | 角色编号(主键) |
jsmc | Varchar(50) | Not Null | 角色名称 |
lbbz | text | Null | 备注信息 |
表4-9角色表(js)
列名 | 数据类型 | 可否为空 | 说明 |
Qxbh | int | Not Null | 权限编号(主键自增) |
Qxmc | Varchar(50) | Null | 权限名称 |
Qxurl | Varchar(100) | null | 权限转向 |
qxbz | text | Null | 备注信息 |
表 4-10权限表(qx)
列名 | 数据类型 | 可否为空 | 说明 |
Js_qxbh | int | Not Null | 编号(主键自增) |
jsbh | int | Null | 角色编号 |
qxbh | int | null | 权限编号 |
表 4-11角色权限表(js_qx)
列名 | 数据类型 | 可否为空 | 说明 |
Ywybh | int | Not Null | 业务员编号(主键自增) |
Ywymc | Varchar(50) | Not Null | 业务员姓名 |
Dlmc | Varchar(50) | Not Null | 登录名称 |
Dlmm | Varchar(50) | Not Null | 登录密码 |
Lxdh | Varchar(50) | Null | 联系电话 |
Jtzz | Varchar(100) | Null | 家庭住址 |
Sfzhm | Varchar(50) | Null | 身份证号码 |
jsbh | int | Not Null | 角色编号(外键) |
ywybz | text | Null | 备注信息 |
表4-12业务员表(ywy)
列名 | 数据类型 | 可否为空 | 说明 |
Dhrq | Varchar(50) | Not Null | 订货日期 |
Ywy | int | Null | 业务员 |
jhddbh | Varchar(50) | Not Null | 进货订单编号(主键) |
Gysbh | int | Null | 供应商编号 |
spbh | int | Null | 商品编号 |
Sl | decimal | Null | 数量 |
dj | decimal | Null | 单价 |
Zk | decimal | Null | 折扣 |
Zje | decimal | Null | 总金额 |
zt | int | null | 状态(0未确认,1确认,2退货,3确认并入库) |
jhddbz | text | Null | 备注信息 |
表4-13进货订单表(jhdd)
列名 | 数据类型 | 可否为空 | 说明 |
jhrq | Varchar(50) | Not Null | 进货日期 |
Ywy | Varchar(50) | Null | 业务员 |
jhdbh | Varchar(50) | Not Null | 进货单编号(主键) |
jhddbh | Varchar(50) | Null | 进货订单编号 |
Gysbh | int | Null | 供应商编号 |
Ckbh | Varchar(50) | Null | 仓库编号 |
spbh | int | Null | 商品编号 |
Sl | decimal | Null | 数量 |
Dj | decimal | Null | 单价 |
Zk | decimal | Null | 折扣 |
Zje | decimal | Null | 总金额 |
Sfjsfk | Varchar(10) | Null | 是否即时付款 |
Sfjz | Varchar(10) | Null | 是否记帐 |
Yfje | decimal | Null | 预付金额 |
jhdbz | text | Null | 备注信息 |
表4-14进货单表(jhd)
列名 | 数据类型 | 可否为空 | 说明 |
Xsdhrq | Varchar(50) | Not Null | 销售订货日期 |
Ywy | int | Null | 业务员 |
Xsddbh | Varchar(50) | Not Null | 销售订单编号(主键) |
Khbh | int | Null | 客户编号 |
Spbh | int | Null | 商品编号 |
Sl | decimal | Null | 数量 |
dj | decimal | Null | 单价 |
Zk | decimal | Null | 折扣 |
Zje | decimal | Null | 总金额 |
zt | int | null | 状态(0未确认,1确认,2退货,3确定并出库) |
xsddbz | text | Null | 备注信息 |
表4-15销售订单表(xsdd)
列名 | 数据类型 | 可否为空 | 说明 |
Xsrq | Varchar(50) | Not Null | 销售日期 |
Ywy | Varchar(50) | Null | 业务员 |
Xsdbh | Varchar(50) | Not Null | 销售单编号(主键) |
Xsddbh | Varchar(50) | Null | 销售订单编号 |
Khbh | int | Null | 客户编号 |
Ckbh | Varchar(50) | Null | 仓库编号 |
spbh | int | Null | 商品编号 |
Sl | decimal | Null | 数量 |
Dj | decimal | Null | 单价 |
Zk | decimal | Null | 折扣 |
Zje | decimal | Null | 总金额 |
Sfjsfk | Varchar(10) | Null | 是否即时付款 |
Sfjz | Varchar(10) | Null | 是否记帐 |
Yfje | decimal | Null | 预付金额 |
xsdbz | text | Null | 备注信息 |
表4-16销售单表(xsd)
列名 | 数据类型 | 可否为空 | 说明 |
Kcbh | int | Not Null | 库存编号(主键自增) |
Gxrq | Varchar(50) | Not Null | 更新日期 |
Ckbh | Varchar(50) | Null | 仓库编号 |
spbh | Int | Null | 商品编号 |
Sl | decimal | Null | 数量 |
Zje | decimal | Null | 总金额 |
qhjg | Int | Null | 缺货警告(0正常,1警告) |
Kcbz | Text | Null | 备注 |
表4-17库存表(kc)
列名 | 数据类型 | 可否为空 | 说明 |
hylbbh | int | Not Null | 会员类别编号(主键自增) |
hylbmc | Varchar(50) | Null | 会员类别名称 |
hylbbz | text | Null | 会员类别备注 |
表4-18会员类别表(hylb)
列名 | 数据类型 | 可否为空 | 说明 |
Ckbh | Varchar(50) | Not Null | 仓库编号(主键) |
Ckmc | Varchar(50) | Not Null | 仓库名称 |
ckbz | text | Null | 备注信息 |
表4-19仓库表(ck)
第5章 系统的具体实施
5.1 母版页
5.1.1 母版页的优点
母版页系统易于供设计人员使用,因为它基于 ASP.NET 的熟悉的用户控件模型。尽管最终加入了近乎完整的可视化,却不需要编写任何代码。另一方面,母版页的功能强大,因为它们支持多区域、默认内容、嵌套模板、和设备筛选器(用于浏览器依赖性)。母版页也是完全编译的,从而具有最佳性能,同时提供一种强类型编程模型(其中包括母版属性的设计时 IntelliSense),尽管在最后发行之前可能会作一些折衷,以便更好地支持动态母版。
5.1.2 母版页的使用
1.模板页扩展名为Master,内容页引用模板页的方法:
<%@Page Language="C#" MasterPageFile="~/Default_Master.Master" AutoEventWireup="true"CodeBehind="Default.aspx.cs" Inherits="AstarBlogUI.WebForm1" Title="无标题页" %>
2.动态改变内容页所引用的模板页
通常在Init事件下改变:
protected void Page_PreInit(object sender,EventArgs e)
{this.MasterPageFile="~/ABC.master";}
3.在内容页中使用模板页中的控件
Master:<asp:Label ID="LabDemo" runat="server" text="xlovey" />
内容页:
Label lb = (Label)Master.FindControl("LabDemo");//直接在Master中找LabDemo
if (lb != null)
{
Response.Write("<script>alert('" + lb.Text.ToString() + "')</script>");
}
当控件在Master中的ContentPlaceHolder里的话则需要:
ContentPlaceHoldera= (ContentPlaceHolder)Master.FindControl("Content2");
//先找到ContentPlaceHolder的ID
if(a!= null)
{
TextBox Txt=(TextBox)a.FindControl("TxtDemo");
if(Txt != null)
{
Response.write(Txt.text.ToString());
}
}
4.在内容页中使用模板页中的变量,属性,方法
首先在内容页加上:
<%@ MasterType VirtualPath="~/Default_Master.Master" %>
模板页中的变量必须为:Public string WebTitle="welocome to ..."; //并放在模板页类下定义并初始化.
就可以在内容页中:Master.WebTitle进行引用.
但如果此变量在网页加载的时候改变了,引用的值还为定义时初始化的值.因为加加载模板页到内容页的事件先后为:
(1)母版页-Init(2)内容页-Init(3)内容页-Load(4)母版页-Load(5)内容页-PreRender(6)母版页-PreRender
所以,要改变变量的值应放在:母版页中的Init事件中,放在Load事件中是不行的。例:
protected void Page_Init(object sender, EventArgs e)
{
if (!IsPostBack)
{
WebConfigSelect();//此方法对变量进行了初始化或者改变!
}
}
5.模板页或内容页中的路径最好使用"~/"而不要使用相对路径
5.1.3 本系统的母版页图5-1所示。
图5-1 母板页(JXC.master)
5.2 各个模块的实现
5.2.1登录及切换用户
进入系统前首先进入登录这个界面,当用户登录成功后,可以利用此界面进行权限切换,流程图5-2,截图5-3所示。
登录的主要代码:
public void dlDataBind()
{
ddlsf.DataSource = JsManager.getAllJs();
ddlsf.DataBind();
ListItem item = new ListItem("请选择……", "-1", true);
ddlsf.Items.Insert(0, item);
}
protected void btndl_Click1(object sender, EventArgs e)
{
if (ddlsf.SelectedValue == "-1")
lblmassage.Text = "请选择身份!";//51aspx
else if(txtbuser.Text == null || txtbuser.Text == "")
lblmassage.Text = "请填写用户名!";
else if (txtbpwd.Text == null || txtbpwd.Text == "")
lblmassage.Text = "请填写密码!";
else {
lblmassage.Text = "";
Ywy ywy = YwyManager.getYwyByCoditions(txtbuser.Text,
txtbpwd.Text,Convert.ToInt32(ddlsf.SelectedValue));
if(ywy!=null && ywy.Ywymc!=null){
Session.Add("ywy", ywy);
Response.Redirect("/JXC/Default.aspx", true);
}
else{
lblmassage.Text = "登录失败!";
}
}
登录流程图5-2
图5-3 登录(JCXX_DL.aspx)
5.2.2登录成功后进入的主界面
主界面可以添加一些制度及其他方面的说明,更重要的是从这个界面可以依据不同的权限进入相应的界面进行相关操作,流程图5-4,主界面图5-5所示。
主界面涉及权限的部分代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["ywy"] != null)
{
Ywy ywy = (Ywy)Session["ywy"];
IList<Js_qx> js_qxs = new List<Js_qx>();
js_qxs = Js_qxManager.getJs_qxsByJsbh(ywy.Jsbh);
int urlid = Convert.ToInt32(Request.QueryString["urlid"]);
if (urlid != 0)
{
if (js_qxs.Count > 0)
{
for (int i = 0; i < js_qxs.Count; i++)
{
Js_qx js_qx = (Js_qx)js_qxs[i];
if (js_qx.Qxbh == urlid)
Response.Redirect(QxManager.getQxByQxbh(urlid).Qxurl, true);
}
}
}
}
}
登录后进入其他模块流程图5-4
图5-5 主界面(Default.aspx)
5.2.3 权限设置
进入这个界面后,就可以对权限进行相关操作,权限设置流程图5-6,权限设置图5-7所示。
权限设置部分代码:
//保存数据,确保刷新时数据存在
public int Qxbh
{
get {
if (ViewState["Qxbh"] != null)
return (int)ViewState["Qxbh"];
else
return -1;
}
set { ViewState["Qxbh"] = value; }
}
//绑定业务员
public void qxDataBind() {
gvQx.DataSource = QxManager.getAllQx();
gvQx.DataBind();
}
//行变色事件
protected void gvQx_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)//判断事件行是不是数据行
{
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;
this.style.backgroundColor='#CCFF99'");//改变鼠标所在行的颜色,并存储当前颜色
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
//还原颜色
LinkButton lbtnDelete = (LinkButton)e.Row.FindControl("lbtnDelete");
//获得点击的按钮
lbtnDelete.Attributes.Add("onclick", "return confirm('你确定删除吗?')");
//弹出提示对话框
}
}
//实现分页
protected void gvQx_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvQx.PageIndex = e.NewPageIndex;
qxDataBind();
}
//编辑和删除事件
protected void gvQx_RowCommand(object sender, GridViewCommandEventArgs e)
{
Qxbh = Convert.ToInt32(e.CommandArgument);
if(e.CommandName == "De"){
QxManager.deleteQxByQxbh(Qxbh);
}
if(e.CommandName == "Ed"){
Qx qx = QxManager.getQxByQxbh(Qxbh);
this.txtbqxmcgx.Text = qx.Qxmc;
this.txtbqxurlgx.Text = qx.Qxurl;
this.txtbbzgx.Text = qx.Qxbz;
//lbltjmassage.Text = "eeee"+Qxbh;
}
qxDataBind();
}
//更新修改项
protected void btngx_Click(object sender, EventArgs e)
{
Qx qx = new Qx();
if (this.Qxbh == -1)
{
lblgxmassage.Text = "请选择编辑项!";
}
else{
qx.Qxbh = this.Qxbh;
qx.Qxmc = txtbqxmcgx.Text;
qx.Qxurl = txtbqxurlgx.Text;
qx.Qxbz = txtbbzgx.Text;
lblgxmassage.Text = QxManager.modifyQx(qx);
qxDataBind();
cleanGX();
}
}
//添加新项
protected void btntj_Click(object sender, EventArgs e)
{
Qx qx = new Qx();
if (txtbqxmctj.Text == null || txtbqxmctj.Text == "")
{
lbltjmassage.Text = "请填写用户名!";
}
else
{
qx.Qxmc = txtbqxmctj.Text;
qx.Qxurl = txtbqxurltj.Text;
qx.Qxbz = txtbbztj.Text;
lbltjmassage.Text = QxManager.addQx(qx);
qxDataBind();
cleanTJ();
}
权限设置流程图5-6
图5-7 权限设置(JCXX_QX.aspx)
其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者