j2ee 漫画杂志 详细设计说明书Word文档下载推荐.docx
《j2ee 漫画杂志 详细设计说明书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《j2ee 漫画杂志 详细设计说明书Word文档下载推荐.docx(5页珍藏版)》请在冰豆网上搜索。
会员对于网站管理也能提出一些建议。
系统开发的特点是:
采用B/S结构,数据主要保存在服务器中,并且满足并发处理,多个类可重用。
3.2、功能该系统的功能有:
1、用户权限的管理。
2、数据库的设计与实现,由于网站预期访问量非常大,且集中程度很高,因此数据库的设计工作量非常大。
3、漫画及周边搜索(主要按名称搜索,也可按连载日期或作者搜索)。
4、COS经典搜索。
5、上传功能。
6、漫画、图片页面展示。
6、更新提示。
7、漫画、小说、图片等内容管理。
8、论坛搭建。
9、过刊管理。
10、人气排行显示。
11、论坛精华显示。
12、广告服务。
3.4输入项名称标识符数据类型有效范围输入方式数据来源用户名userIDString字符数大于6手动输入用户密码passwordString字符数大于6手动输入用户昵称usernameString字符数大于0手动输入用户QQ号QQnumberint字符数为8或11手动输入用户电子邮件emailstring包含@和.手动输入用户最爱风格LovestyleString大于5位手动输入用户最爱作者LovewriterString字符数大于0手动输入用户搜索内容searchContentString不能为空手动输入用户评价evaluationString【】不能为空手动输入用户3.5输出项名称标识符数据类型有效范围输出方式数据来源用户名usernameString不能为空页面显示数据库漫画TelInt字符数为8或11页面显示数据库电子邮件emailstring包含@和.页面显示数据库家庭地址addressString大于5位页面显示数据库商品类型goodsTypeString字符数大于0页面显示数据库商品数量goodsAmountString数值大于0页面显示数据库商店地址goodsAddressString字符数大于6页面显示数据库价格PriceInt大于0页面显示数据库搜索结果searchContentString和image不能为空页面显示数据库订单结果RecordString[]不能为空页面显示数据库营业统计SettlementString[]不能为空页面显示数据库以及计算交易记录transactionRecordString[]不能为空页面显示数据库评价EvaluationString[]不能为空页面显示数据库3.6、算法Model类的实现:
数据的插入:
clientLogin:
(以clientLogin类为例)publicvoidinsertData()//往表中插入记录{SqlConnectioncon=newSqlConnection(“DataSource=.\\SQLEXPRESS;
InitialCatalog=nationTrade;
IntegratedSecurity=True“);
con.Open();
SqlCommandInsertCommand=newSqlCommand(“INSERTINTOclientLoginVALUES(@userID,@password,@authority)“,con);
InsertCommand.Parameters.Add(“@password“,SqlDbType.VarChar,12);
InsertCommand.Parameters[“@password“].Value=password;
InsertCommand.Parameters.Add(“@userID“,SqlDbType.VarChar,16);
InsertCommand.Parameters[“@userID“].Value=userID;
InsertCommand.Parameters.Add(“@authority“,SqlDbType.VarChar,12).Value=authority;
InsertCommand.ExecuteNonQuery();
con.Close();
}数据更新:
SqlConnectioncon=newSqlConnection(“DataSource=.\\SQLEXPRESS;
SqlCommandcommand=newSqlCommand(“updateclientLoginsetpassword=@password,authority=@authoritywhereuserID=@userID“,con);
command.Parameters.Add(“@password“,SqlDbType.VarChar,12);
command.Parameters[“@password“].Value=password;
command.Parameters.Add(“@userID“,SqlDbType.VarChar,16);
command.Parameters[“@userID“].Value=userID;
command.Parameters.Add(“@authority“,SqlDbType.VarChar,12).Value=authority;
command.ExecuteNonQuery();
数据查询:
获取单一字段:
publicStringgetImageUrl(StringuserID)//查询头像路径{SqlConnectioncon=newSqlConnection(“DataSource=.\\SQLEXPRESS;
SqlCommandselectCommand=newSqlCommand(“selectuserPhotofromSellerInfowhereuserID=@userID“,con);
selectCommand.Parameters.Add(“@userID“,SqlDbType.VarChar,1000).Value=userID;
SqlDataReaderdataReader=selectCommand.ExecuteReader();
if(dataReader.Read()){Stringscore=dataReader.GetString(0);
returnscore;
}else{con.Close();
returnnull;
}}获取多个字段值:
publicString[]getSellerRegisterInfo(StringuserID){SqlConnectioncon=newSqlConnection(“DataSource=.\\SQLEXPRESS;
SqlCommandselectCommand=newSqlCommand(“selectuserName,sex,IDCard,accountfromSellerInfowhereuserID=@userID“,con);
String[]infor=newString[4];
if(dataReader.Read()){infor[0]=dataReader.GetString(0);
infor[1]=dataReader.GetString
(1);
infor[2]=dataReader.GetString
(2);
infor[3]=dataReader.GetString(3);
returninfor;
}}判断记录是否存在:
(以判断商店是否存在为例):
publicintisHasShop(StringuserID)//判断是否已经存在商店{SqlConnectioncon=newSqlConnection(“DataSource=.\\SQLEXPRESS;
SqlCommandselectCommand=newSqlCommand(“selectisLookOverfromseller_ShopRelationswheresellerID=@userID“,con);
selectCommand.Parameters.Add(“@userID“,SqlDbType.VarChar,16).Value=userID;
intscore=-1;
if(dataReader.Read()){score=dataReader.GetInt32(0);
}else{score=-1;
}returnscore;
}购物车的实现:
加入购物车的商品的购买信息的数据结构publicclassgoodsInTrolley{publicintgoodsID;
//商品IDpublicintshopID;
//商店IDpublicStringgoodsName;
//商品名publicStringshopName;
//商店名publicintamount;
//数量publicfloatprice;
//单价publicfloatsumMoney;
//总价publicStringtype;
//商品类型publicgoodsInTrolley(){////TODO:
在此处添加构造函数逻辑//}publicgoodsInTrolley(intgoodsID,intamount){this.goodsID=goodsID;
this.amount=amount;
GoodsInforExtendgoodsInfor=newGoodsInforExtend();
String[]infor=goodsInfor.getGoodsMainInfor(goodsID);
this.goodsName=infor[0];
this.price=float.Parse(infor[1]);
this.type=infor[2];
this.shopID=int.Parse(infor[3]);
this.shopName=infor[4];
sumMoney=price*amount;
}}购物车类:
publicclassTrolley{publicArrayListgoodsList=newArrayList();
//购物车商品列表publicStringbuyerID;
//买家IDpublicTrolley(StringbuyerID){////TODO:
在此处添加构造函数逻辑//this.buyerID=buyerID;
}publicvoidaddGoods(goodsInTrolleygoods){inttag=0;
//判断购物车是否已经加入此商品foreach(goodsInTrolleyoneGoodingoodsList){if(oneGood.goodsID==goods.goodsID){tag=1;
oneGood.amount=oneGood.amount+goods.amount;
}}if(tag!
=1){goodsList.Add(goods);
}}publicvoiddeleteGoods(goodsInTrolleygoods){foreach(goodsInTrolleyoneGoodingoodsList){if(oneGood.goodsID==goods.goodsID){goodsList.Remove(oneGood);
}}}publicboolsettlement(){GoodsInforExtendgoodsInfor=newGoodsInforExtend();
SqlCommandcommand=con.CreateCommand();
foreach(goodsInTrolleygoodingoodsList){intshopID=good.shopID;
intamount=good.amount;
floatsumMoney=good.sumMoney;
if(amountsurplus)//库存不够myTrans.Rollback();
//回滚command.CommandText=“updateGoodssetamount=amount-@buyAmountwheregoodsID=@goodsID“;
command.Parameters.AddWithValue(“@buyAmount“,amount);
command.Parameters.AddWithValue(“@goodsID“,good.goodsID);
//修改库存//插入交易记录command.CommandText=“INSERTINTOGoodsTransactionRecord(buyerID,shopID,goodsID,amount,money,date,isSuccess)VALUES(@buyerID,@shopID,@goodsID,@amount,@money,@date,@isSuccess)“;
command.Parameters.Add(“@goodsID“,SqlDbType.Int,16);
command.Parameters[“@goodsID“].Value=good.goodsID;
command.Parameters.Add(“@shopID“,SqlDbType.Int,16);
command.Parameters[“@shopID“].Value=shopID;
command.Parameters.Add(“@buyerID“,SqlDbType.VarChar,16);
command.Parameters[“@buyerID“].Value=buyerID;
command.Parameters.Add(“@amount“,SqlDbType.Int,12);
command.Parameters[“@amount“].Value=amount;
command.Parameters.Add(“@money“,SqlDbType.Float,16);
command.Parameters[“@money“].Value=sumMoney;
command.Parameters.Add(“@date“,SqlDbType.DateTime,16);
command.Parameters[“@date“].Value=DateTime.Now;
command.Parameters.Add(“@isSuccess“,SqlDbType.Int,16).Value=0;
//事务提交myTrans.Commit();
returntrue;
}catch(Exceptionex){Console.WriteLine(“RollbackExceptionType:
{0}“,ex.GetType());
returnfalse;
}}其中包含的函数的功能有:
往购物车中添加商品信息,将购物车中的购买信息写入数据库并用到数据库的锁机制和事务处理在ASP.NET的应用Controller类的实现:
以卖家信息注册为例:
publicvoidsellerRegister(StringuserID,intshopID,StringuserName,Stringsex,StringIDCard,StringuserPhoto,Stringaccount){SellerInfosellerInfor=newSellerInfo(userID,shopID,userName,sex,IDCard,userPhoto,account);
//调用MODEL类SellerInfoExtendsellerExtend=newSellerInfoExtend();
if(!
sellerExtend.isHasSeller(userID)){sellerInfor.insertData();
//调用Moodel类}else{sellerInfor.updateSubmit();
//调用Model类}}3.7流程逻辑用户注册流程:
商品购买流程买家收货流程:
评价流程:
3.8接口3.9注释设计
(1)加在模块首部的注释:
用于说明模块的整体功能
(2)加在各分支点处的注释:
用于说明验证的条件(3)加在各变量上的注释:
用于说明变量存储的数据的意义(4)加在使用的逻辑的注释:
用于说明3.10限制条件
(1)最好在IE7以上浏览器运行
(2)一个用户对应一个论坛昵称3.11测试计划对用户基本信息注册(买家注册)功能的测试:
用户名字段输入数据预期结果空提示出错位数小于6位的字符窜提示出错位数大于等于6位的字符窜正常密码字段输入数据预期结果空报错位数小于6位报错密码和密码确认不一致报错位数大于等于6位且密码和密码确认一致正常手机号码字段输入数据预期结果空报错输入包含非数字报错数字位数不等于8位或者11位报错输入数字的位数为8位或者11位正常对用户详细信息的注册(卖家注册)功能的测试:
真实姓名字段输入数据预期结果空报错字符位数超过16位的字符串报错小于16位的字符串正常身份证号字段输入数据预期结果空报错含有非数字字符并且不是在末尾位,而且不是x报错位数不等于15位或者18位报错15位数字正常18位数字正常15位或18位末尾带有x正常银行账号字段输入数据预期结果空报错含有非数字报错数字正常测试由赵伟、金贞主负责,先进行黑盒测试再进行白盒测试,测试时间为12月21号-12月22号3.12尚未解决的问题1、没有网上银行交易相关证书,无法实现在线交易,测试过程中只能模拟该项功能。
2、没有实现在线客户直接实时交流的功能3、退货部分存在缺陷