网上书店设计与使用实验报告.docx
《网上书店设计与使用实验报告.docx》由会员分享,可在线阅读,更多相关《网上书店设计与使用实验报告.docx(21页珍藏版)》请在冰豆网上搜索。
网上书店设计与使用实验报告
网上书店设计与使用-实验报告
实验报告
题目:
网上书店
专业软件工程
学生姓名
班级学号
指导教师
指导单位
日期2010-6-8
网上书店
一、课题内容和要求
内容:
创建一个网上书店平台。
实现网上书店的基本功能,例如:
用户用可查看可购买的书。
用户可查看书的具体信息。
在此基础上可以增加相应功能。
要求:
利用J2EE编程开发。
可以在实现基本功能的基础上增加其他功能。
界面良好。
用户可以通过互联网与浏览器访问网上书店平台。
二、需求分析
用户:
1、用户可以注册会员,利用已经注册的用户名来登录相关界面。
2、用户可以登记自己的相关性信息,并且可以查看、更改自己的相关信息。
3、用户根据已经注册的用户名来登录系统。
用户可以查看所有物品的信息。
4、用户可以将想要购买的物品加入购物车,对已经加入购物车的物品,用户可以查看其相关信息,并且可以删除已经加入的物品。
5、对于购物车功能,可以增加新书、修改数量、删除已选书籍等,确认后,完成交易;
6、用户可以根据作者的姓名、书名、书号来检索书籍。
7、用户可以查看当前订单和以往订单的相关信息。
8、客户可以通过信息反馈系统跟书店员工进行交流。
管理员:
1、管理员可以删除、更改用户信息。
2、管理员可以删除、更改订单信息,可以输入订单的发货日期。
3、管理员可以删除、更改所有商品信息。
其他需求:
系统应该具有一定的安全性和可靠性。
数据库支持大量数据的使用。
三、概要设计
体系结构设计:
用户使用流程:
用户应用系统模块设计:
管理员应用模块:
四、源程序代码
Base:
/**供JSON-RPC组件远程调用的AjaxBean*/
publicclassAjaxBeanextendsBaseLog{
/**取得商品分类列表*/
publicString[][]getCategory(){
String[][]options=null;
MerServiceservice=newMerServiceImpl();
try{
Listlist=service.browseCategory();
Categorycate=null;
inti=0;
if(list!
=null){
options=newString[list.size()][2];
Iteratorit=list.iterator();
while(it.hasNext()){
cate=(Category)it.next();
options[i][0]=cate.getId().toString();
options[i][1]=cate.getCateName().trim();
i++;
}
}else{
options=newString[1][2];
options[0][0]="0";
options[0][1]="无商品分类";
}
}catch(Exceptionex){
logger.info("在执行AjaxBean类中的getCategory方法时出错:
\n");
ex.printStackTrace();
}
returnoptions;
}
/**取得会员级别*/
publicString[][]getMemberLevel(){
String[][]options=null;
MemServiceservice=newMemServiceImpl();
try{
Listlist=service.browseMemberLevel();
Memberlevelml=null;
inti=0;
if(list!
=null){
options=newString[list.size()][2];
Iteratorit=list.iterator();
while(it.hasNext()){
ml=(Memberlevel)it.next();
options[i][0]=ml.getId().toString();
options[i][1]=ml.getLevelName().trim();
i++;
}
}else{
options=newString[1][2];
options[0][0]="0";
options[0][1]="无会员级别";
}
}catch(Exceptionex){
logger.info("在执行AjaxBean类中的getMemberLevel方法时出错:
\n");
ex.printStackTrace();
}
returnoptions;
}
/**注册登录帐号有效性验证*/
publicbooleanchkLoginName(StringloginName){
MemServiceservice=newMemServiceImpl();
booleanresult=false;
try{
result=service.chkLoginName(loginName);
}catch(Exceptionex){
logger.info("在执行AjaxBean类中的chkLoginName方法时出错:
\n");
ex.printStackTrace();
}
returnresult;
}
/**修改选购商品数量*/
publicbooleanmodiCart(intid,intnumber){
CartServiceservice=newCartServiceImpl();
booleanresult=false;
try{
result=service.modiCart(Integer.valueOf(id),number);
}catch(Exceptionex){
logger.info("在执行AjaxBean类中的modiCart方法时出错:
\n");
ex.printStackTrace();
}
returnresult;
}
/**调整会员级别*/
publicbooleanupdateLevel(Integerid,IntegerlevelId){
MemServiceservice=newMemServiceImpl();
booleanresult=false;
try{
Membermember=service.loadMember(id);
Memberlevellevel=service.loadMemberLevel(levelId);
member.setMemberlevel(level);
service.updateMember(member);
result=true;
}catch(Exceptionex){
logger.info("在执行AjaxBean类中的updateLevel方法时出错:
\n");
ex.printStackTrace();
}
returnresult;
}}
ORM:
Mysessionfactory:
publicclassMySessionFactory{
privatestaticStringCONFIG_FILE_LOCATION="/hibernate.cfg.xml";
privatestaticfinalThreadLocalthreadLocal=newThreadLocal();
privatestaticConfigurationconfiguration=newConfiguration();
privatestaticorg.hibernate.SessionFactorysessionFactory;
privatestaticStringconfigFile=CONFIG_FILE_LOCATION;
static{
try{
configuration.configure(configFile);
sessionFactory=configuration.buildSessionFactory();
}catch(Exceptione){
System.err.println("%%%%ErrorCreatingSessionFactory%%%%");
e.printStackTrace();
}
}
privateMySessionFactory(){
}
publicstaticSessiongetSession()throwsHibernateException{
Sessionsession=(Session)threadLocal.get();
if(session==null||!
session.isOpen()){
if(sessionFactory==null){
rebuildSessionFactory();
}
session=(sessionFactory!
=null)sessionFactory.openSession():
null;
threadLocal.set(session);
}
returnsession;
}
/**Rebuildhibernatesessionfactory*/
publicstaticvoidrebuildSessionFactory(){
try{
configuration.configure(configFile);
sessionFactory=configuration.buildSessionFactory();
}catch(Exceptione){
System.err.println("%%%%ErrorCreatingSessionFactory%%%%");
e.printStackTrace();
}
}
/*Closethesinglehibernatesessioninstance.*/
publicstaticvoidcloseSession()throwsHibernateException{
Sessionsession=(Session)threadLocal.get();
threadLocal.set(null);
if(session!
=null){
session.close();
}
}
/*returnsessionfactory*/
publicstaticorg.hibernate.SessionFactorygetSessionFactory(){
returnsessionFactory;
}
/*returnsessionfactorysessionfactorywillberebuildedinthenextcall*/
publicstaticvoidsetConfigFile(StringconfigFile){
MySessionFactory.configFile=configFile;
sessionFactory=null;
}
/*returnhibernateconfiguration*/
publicstaticConfigurationgetConfiguration(){
returnconfiguration;
}}
SERVICE:
AdminServiceImpl:
/**系统用户管理接口实现*/
publicclassAdminServiceImplextendsBaseLogimplementsAdminService{
/**系统管理员登录*/
publicAdminadminLogin(StringloginName,StringloginPwd)throwsException{
Sessionsession=MySessionFactory.getSession();
Transactiontx=null;
Adminadmin=null;
try{
Stringhql="selectafromAdminasawherea.loginName=:
loginNameanda.loginPwd=:
loginPwd";
Queryquery=session.createQuery(hql);
query.setString("loginName",loginName);
query.setString("loginPwd",loginPwd);
query.setMaxResults
(1);
tx=session.beginTransaction();
admin=(Admin)query.uniqueResult();
mit();
}catch(Exceptionex){
if(tx!
=null)tx.rollback();
logger.info("在执行AdminServiceImpl类中的adminLogin方法时出错:
\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
returnadmin;
}
/**新增管理员*/
publicbooleanaddAdmin(Adminadmin)throwsException{
Sessionsession=MySessionFactory.getSession();
Transactiontx=null;
booleanstatus=false;
try{
tx=session.beginTransaction();
session.save(admin);
mit();
status=true;
}catch(Exceptionex){
if(tx!
=null)tx.rollback();
logger.info("在执行AdminServiceImpl类中的addAdmin方法时出错:
\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
returnstatus;}
/**浏览管理员*/
publicListbrowseAdmin()throwsException{
Sessionsession=MySessionFactory.getSession();
Transactiontx=null;
Listlist=null;
try{
Queryquery=session.createQuery("fromAdminasaorderbya.id");
tx=session.beginTransaction();
list=query.list();
mit();
if(!
Hibernate.isInitialized(list))Hibernate.initialize(list);
}catch(Exceptionex){
if(tx!
=null)tx.rollback();
logger.info("在执行AdminServiceImpl类中的browseAdmin方法时出错:
\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
returnlist;}
/**删除指定的管理员*/
publicbooleandelAdmin(Integerid)throwsException{
Sessionsession=MySessionFactory.getSession();
Transactiontx=null;
booleanstatus=false;
try{
tx=session.beginTransaction();
Adminadmin=(Admin)session.load(Admin.class,id);
session.delete(admin);
mit();
status=true;
}catch(Exceptionex){
if(tx!
=null)tx.rollback();
logger.info("在执行AdminServiceImpl类中的delAdmin方法时出错:
\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
returnstatus;}
/**装载指定的管理员*/
publicAdminloadAdmin(Integerid)throwsException{
Sessionsession=MySessionFactory.getSession();
Transactiontx=null;
Adminadmin=null;
try{
tx=session.beginTransaction();
admin=(Admin)session.get(Admin.class,id);
mit();
}catch(Exceptionex){
if(tx!
=null)tx.rollback();
logger.info("在执行AdminServiceImpl类中的loadAdmin方法时出错:
\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
returnadmin;}
CartServiceImpl:
publicclassCartServiceImplextendsBaseLogimplementsCartService{
/**选购商品*/publicbooleanaddCart(Membermember,Merchandisemer,intnumber)
throwsException{Sessionsession=MySessionFactory.getSession();
Transactiontx=null;
booleanstatus=false;
try{Cartselectedmersel=null;
intfavourable=member.getMemberlevel().getFavourable().intValue();//判断该会员是否已经有使用中的购物车
Stringhql="fromCartasawherea.member=:
memberanda.cartStatus=0";
Queryquery=session.createQuery(hql);
query.setEntity("member",member);
query.setMaxResults
(1);
tx=session.beginTransaction();
Cartcart=(Cart)query.uniqueResult();
if(cart==null){cart=newCart();
cart.setCartStatus(newInteger(0));
cart.setMember(member);
cart.setMoney(Double.valueOf(number*mer.getPrice().doubleValue()));cart.getMerchandises().add(mer);
session.save(cart);}else{
//如果选购的是已经选购过的商品则只增加商品数量即可
hql="selectafromCartselectedmerasawherea.cart=:
cartidanda.merchandise=:
meridorderbya.iddesc";
query=session.createQuery(hql);
query.setInteger("cartid",cart.getId().intValue());
query.setInteger("merid",mer.getId().intValue());
query.setMaxResults
(1);
sel=(Cartselectedmer)query.uniqueResult();
inttotal=number;
System.out.println((total*mer.getPrice().doubleValue()*favourable/100));if(sel!
=n