摘要摘要:介绍net framework4.0+sql server2005环境下租车公司管理系统开发的过程,阐述系统结构设计和数据库设计,并探讨关键技术。
关键词关键词:soa; wcf; mvc2;sqlserver2005;分布式租车公司管理系统
中图分类号:tp319文献标识码:a文章编号文章编号:16727800(2014)006005203
基金项目基金项目:2013年地方高校国家级大学生创新创业训练计划项目(201310644008);四川文理学院教育教学改革研究重点项目(2013jz25)
作者简介作者简介:王光琼(1965-),女,硕士,四川文理学院计算机学院副教授,研究方向为软件工程、人工智能;杜天行(1990-),男,四川文理学院学生,研究方向为软件工程。0引言
自上世纪90年代以来,随着网络、通信和信息技术的发展,internet在全球爆炸性增长并迅速普及,电子商务应运而生。电子商务是基于互联网、以交易双方为主体、以银行电子支付和结算为手段、以客户数据为依托的一种商务模式,它使商家与供应商更紧密地联系起来,商家可以在全球范围内选择最佳供应商,在全球市场上销售产品。本文尝试使用soa构架模式,探讨租车管理系统设计与实现。
1系统需求分析
分布式租车公司管理系统开发包括前端管理系统开发以及后台数据库建立、维护。前端管理系统开发的难点主要在于如何实现多样化而简便的用户交互方式;后台数据库建立的难点在于数据库的多表关系以及多表操作。车辆管理系统需要满足以下需求:①车辆管理,包括店铺资料管理、车辆基本资料管理以及店铺车辆租赁管理;②公司财务管理,包括员工工资、租车交易额、公司资金流向等;③员工管理,包括员工工作情况统计、奖惩制度、员工调动等。车辆预定流程图如图1所示。顾客提取车辆的流程图如图2所示。
2技术路线
开发技术路线如图3所示。
图1车辆预定流程
图2车辆提取流程
图3技术路线
3系统设计
3.1系统web端
系统前台主要功能包括:新用户注册、老用户登录、用户个人信息修改、用户车辆搜索、订购等。系统前台功能模块如图4所示。
图4系统web端功能
3.2系统winform端设计
系统winform端主要为公司内部使用,其基本功能在于实现公司内部管理以及车辆出租流程管理。其中,公司内部管理模块包括员工管理、店铺管理、车辆管理、资金管理4大模块;车辆出租流程管理包括订单、提车、结账等。winform端具体功能如图5所示。
图5系统winform端功能
4数据库设计
本系统使用sql server 2005数据库,系统数据库名称为carrental,租车模块所包含的主要数据表有:①car_version:用于记录车辆租金信息;②car_type:用于记录车辆类型,例如越野车、客车等;③car_brand:用于记录车辆的品牌分类,例如大众、宝马等;④car_order:用于记录车辆订单信息,包括所租车辆的型号、时间、是否接送等;⑤car_get:用于记录租车用户信息,包括租车人身份证、驾照等内容;⑥car_checkout:用于记录还车时需要检查的项目;⑦car_action表用于记录店铺促销活动信息。租车模块数据库关系图如图6所示。
5关键技术
5.1面向服务架构
面向服务的体系结构(service-oriented architecture,soa)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过接口和契约联系起来。接口是采用中立的方式进行定义的,独立于硬件平台、操作系统和编程语言。构建各种系统中的服务可以使用统一和通用的方式进行交互。
soa服务具有独立平台的自我描述xml文档。web服务描述语言(web services description language,wsdl)是描述服务的标准语言。
soa 服务通过消息进行通信,消息通常使用xml schema来定义(也称xsd,xml schema definition)。消费者和提供者之间或消费者和服务之间的通信多见于提供者未知的环境中。服务间的通讯也可以看作是企业内部处理的关键商业文档。
图6租车模块数据库关系图
每项soa服务都有一个与之相关的服务品质(quality of service,qos)。qos关键元素有安全需求(如认证和授权)、可靠通信(确保消息“仅且仅仅”发送一次,过滤重复信息)以及谁能调用服务策略。
5.2linq泛型事务提交
由
于linq是在数据持久层实行其功能的,与传统依靠拼接数据库进行操作完全不同,其增加、删除、查询、修改是通过linq语句执行。公司店铺为员工发放工资的执行语句如下所示:
using (transactionscope ts = new transactionscope())
{
try
{
db_account.dt = db_salarylog.dt;
db_account.insert_nosub(new car_account()
{
account_info = string.format("这笔款项属于工资发放,店铺编号:{0},工资领取人:{1},工资领取时间:{2}", shopid, realname, datetime.now),
account_price = price,
account_shop = shopid,
account_time = datetime.now,
account_user = uid
});
db_salarylog.update_nosub(oldlog, newlog);
db_salarylog.dt.submitchanges();
ts.complete();
return true;
}
catch(exception ex)
{
db_error.insert(new error() {error_messege=ex.message,error_time=datetime.now });
return false;
}
}
如上所示,使用transactionscope类的一个即时对象进行事务操作。首先对工资单进行编辑;然后通过insert_nosub 、update_nosub方法统一提交,该类方法的特点是在内存中操作改变对象后并不进行提交,而进行submitchanges统一提交操作;最后,进行transactionscope即时对象的统一事务验证,当全部事务都处理成功的情况下返回true值,出现错误时自行返回并将错误内容记录在错误日志中。
5.3asp.net mvc2
asp.net mvc 是微软官方提供的以mvc模式为基础的asp.net web应用程序(web application)框架,它由castle的monorail而来,目前最新版本是asp.net mvc 4.0。asp.net mvc概述mvc框架有以下特点:
(1)分离任务(输入逻辑、业务逻辑和显示逻辑),易于测试和默认支持测试驱动开发(tdd)。所有mvc所用的组件都基于接口并可在测试时进行mock,使得测试更加快速和简捷。
(2)可扩展的简便框架。mvc框架被设计用来轻松实现移植和定制功能。
(3)强大的urlrouting机制方便用户建立容易理解和可搜索的url,为seo提供更好的支持。
(4)可以使用asp.net现有的页面标记、用户控件和模板页。
(5)支持现有的asp.net程序,mvc方便用户使用窗体认证、windows认证、url认证、组管理和规则、输出、数据缓存、session、profile 、health monitoring、配置管理系统。
5.4wcf控制
wcf控制代码需要引入通道,封装消息的通信细节,例如编码、事务处理、安全等,通过引入绑定的概念,封装了通道的组成顺序与处理细节。同时,引入了独有的endpoint元素,使地址、绑定和契约形成之间“三位一体”的模式,以最简单的方式定义和发布服务。
6结语
通过试用,本租车管理系统能促进租车公司管理有条不紊,帮助员工更轻松地管理各方面的事务,功能齐全、使用方便。
参考文献参考文献:
\[1\]龚赤兵,等.visual studio 2008中的linq开发技术[m].北京:机械工业出版社,2009.
[2]龚赤兵web开发新体验:asp.net 3.5 mvc架构与实战[m]. 北京:电子工业出版社,2009.
[3]scott kleinlinq高级编程[m]. 北京:清华大学出版社,2009.
[4]黄保翕,陈酉玫,李杨. asp.net mvc 2开发实战[m]. 北京:电子工业出版社,2011.
[5]陈凤鸣web开发的贵族--asp.net3.5+sql server[m].