会员卡管理系统技术解析(十七)库存年卡有效期变更
2015-06-01 19:38
337 查看
会员卡管理系统技术解析(十七)库存年卡有效期变更
1.1库存卡有效期变更查询
库存卡有效期变更查询这个模块功能可以查看系统对库存卡有效期变更的所有历史记录。1.1.1界面效果图
1.1.1(图1)
从界面可以看到本项目这里用到的控件有:
列名 | 数据类型 | 主键/外键 | 说明 |
StoreCardChangvalidityTimeID | int | 主键 | 库存卡有效期变更记录ID |
MembershipCardNum | nchar(50) | | 会员卡号 |
oldValidityTime | date | | 原有效期 |
newValidityTime | date | | 现有效期 |
BianGengTime | nchar(30) | | 变更时间 |
1.1.2功能实现
第1步:数据库
1、表与关系表1: 库存卡有效期变更记录表(Pw_StoreCardChangValidityTime)
用于存放库存卡有效期变更记录信息。
列名 | 数据类型 | 主键/外键 | 说明 |
StoreCardChangvalidityTimeID | int | 主键 | 库存卡有效期变更记录ID |
MembershipCardNum | nchar(50) | | 会员卡号 |
oldValidityTime | date | | 原有效期 |
newValidityTime | date | | 现有效期 |
BianGengTime | nchar(30) | | 变更时间 |
第2步:服务层接口(IService)
在“MEMBCERP.IService”这个包下的“KuCunKaGuanLiIService”类中,定义查询库存卡有效期变更记录相关的方法接口,代码如下:public List<PwStoreCardChangValidityTime> SelectAllKuCunKaYouXiaoQiBianGengJiLu(); /*查询全部库存卡有效期变更记录*/ public List<PwStoreCardChangValidityTime> MoHuChaXunKuCunKaYouXiaoQiBianGengJiLu( /*模糊查询全部库存卡有效期变更记录*/ String membershipCardNum);
第3步:服务层(Service)
在“MEMBCERP.Service”这个包下的“KuCunKaGuanLiService”类中,定义查询库存卡有效期变更记录相关的方法接口实现,代码如下:/*查询全部库存卡有效期变更记录*/ @Override public List<PwStoreCardChangValidityTime> SelectAllKuCunKaYouXiaoQiBianGengJiLu(){ /*调用模糊查询方法进行查询*/ return MoHuChaXunKuCunKaYouXiaoQiBianGengJiLu(""); } /*模糊查询全部库存卡有效期变更记录*/ @Override public List<PwStoreCardChangValidityTime> MoHuChaXunKuCunKaYouXiaoQiBianGengJiLu(String membershipCardNum){ try {/*尝试运行代码*/ StringBuffer queryString = new StringBuffer();/*实例化StringBuffer*/ /*实例化表*/ queryString.append("FROM PwStoreCardChangValidityTime AS KuCunKaYouXiaoQiBianGengJiLu "); queryString.append("WHERE KuCunKaYouXiaoQiBianGengJiLu.membershipCardNum like '%' + ?+'%' "); return dao.findByHql(queryString.toString(),new Object[]{membershipCardNum}); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return null; } }
第4步:方法层(Action)
在“MEMBCERP.Action”这个包下的“KuCunKaGuanLiAction”类中,定义查询库存卡有效期变更记录相关的方法,代码如下:/*查询库存卡有效期变更记录*/ public String getKCKYouXiaoQiBianGeng(){ /*实例化一个Array数组*/ JSONArray jsArr=new JSONArray(); /*实例化一个Object数组*/ JSONObject jsObj=new JSONObject(); /*调用服务层方法,查询全部库存卡有效期变更记录*/ List<PwStoreCardChangValidityTime> lstKCKYouXiaoQiBianGeng = this.kuCunKaGuanLiService.SelectAllKuCunKaYouXiaoQiBianGengJiLu(); /*循环遍历服务层返回的结果集*/ for (int i = 0; i < lstKCKYouXiaoQiBianGeng.size(); i++) { PwStoreCardChangValidityTime obj = lstKCKYouXiaoQiBianGeng.get(i); /*清空jsObj数组*/ jsObj.clear(); /*写入参数*/ jsObj.put("HuiYuanKaoHao", obj.getMembershipCardNum()); jsObj.put("oldYouXiaoQi", obj.getOldValidityTime()); jsObj.put("newYouXiaoQi", obj.getNewValidityTime()); jsObj.put("ChangeTime", obj.getBianGengTime()); /*将jsObj数组添加到jsArr数组*/ jsArr.add(jsObj); } HashMap<String, Object> jsMap = new HashMap<String, Object>(); /*将jsArr数组写入到jsMap中*/ jsMap.put("rows", jsArr); /*转换数组类型,并返回数组*/ JSObj=JSONObject.fromObject(jsMap); return SUCCESS; } /*模糊查询库存卡有效期变更记录*/ public String getMHKCKYouXiaoQiBianGeng(){ /*实例化一个Array数组*/ JSONArray jsArr=new JSONArray(); /*实例化一个Object数组*/ JSONObject jsObj=new JSONObject(); String membershipCardNum = this.getRequest().getParameter("membershipCardNum").trim(); /*调用服务层方法,查询全部库存卡有效期变更记录*/ List<PwStoreCardChangValidityTime> lstKCKYouXiaoQiBianGeng = this.kuCunKaGuanLiService.MoHuChaXunKuCunKaYouXiaoQiBianGengJiLu(membershipCardNum); /*循环遍历服务层返回的结果集*/ for (int i = 0; i < lstKCKYouXiaoQiBianGeng.size(); i++) { PwStoreCardChangValidityTime obj = lstKCKYouXiaoQiBianGeng.get(i); /*清空jsObj数组*/ jsObj.clear(); /*写入参数*/ jsObj.put("HuiYuanKaoHao", obj.getMembershipCardNum()); jsObj.put("oldYouXiaoQi", obj.getOldValidityTime()); jsObj.put("newYouXiaoQi", obj.getNewValidityTime()); jsObj.put("ChangeTime", obj.getBianGengTime()); /*将jsObj数组添加到jsArr数组*/ jsArr.add(jsObj); } HashMap<String, Object> jsMap = new HashMap<String, Object>(); /*将jsArr数组写入到jsMap中*/ jsMap.put("rows", jsArr); /*转换数组类型,并返回数组*/ JSObj=JSONObject.fromObject(jsMap); return SUCCESS; }
第5步: struts2的配置
<action name="getKCKYouXiaoQiBianGeng" class="KuCunKaGuanLiAction" method="getKCKYouXiaoQiBianGeng"> <result type="json"> <param name="root">JSObj</param> </result> </action> <action name="getMHKCKYouXiaoQiBianGeng" class="KuCunKaGuanLiAction" method="getMHKCKYouXiaoQiBianGeng"> <result type="json"> <param name="root">JSObj</param> </result> </action>
第6步:视图层调用
库存卡有效期变更记录:1.2.6(图1)
HTML代码:
<table id="dgKCKYouXiaoQiBianGeng" class="easyui-datagrid" title="会员卡挂失记录" style="height:530px" data-options="singleSelect:true,rownumbers:true,loadMsg:'加载中,请稍后...', url:'getKCKYouXiaoQiBianGeng', idField:'KCKYouXiaoQiBianGengID'"> <thead> <tr> <th data-options="field:'HuiYuanKaoHao',width:265,align:'center'">会员卡号</th> <th data-options="field:'oldYouXiaoQi',width:245,align:'center'">原有效期</th> <th data-options="field:'newYouXiaoQi',width:260,align:'center'">现有效期</th> <th data-options="field:'ChangeTime',width:300,align:'center'">变更时间</th> </tr> </thead> </table>
搜索库存卡有效期变更记录:
1.2.6(图2)
HTML代码:
<input class="easyui-searchbox" data-options="prompt:'请输入卡号进行模糊查询',searcher:doSearch" style="width:180px" />
JavaScript代码:
//模糊搜索 function doSearch(value){ $('#dgKCKYouXiaoQiBianGeng').datagrid({url:"getMHKCKYouXiaoQiBianGeng?membershipCardNum="+value}); }
1.2库存卡有效期变更记录添加
库存卡有效期变更记录添加这个模块功能可以录入库存卡有效期变更记录。1.2.1界面效果图
1.2.1(图1)
从界面可以看到本项目这里用到的控件有:
控件名称 | 说明 |
级联下拉框(easyui-combobox) | 第一要设置每个控件的id,第二设置样式不设置也有默认,第三(data-options)是数据操作:可以设置控件的一些属性和事件 |
日期控件(easyui-datebox) | |
文本输入框(表单input) | |
表格控件(easyui-datagrid) |
1.2.2功能实现:
第1步:数据库
1、表与关系表1:会员卡类型(Sys_ MembershipCardType)
用于存放会员卡类型信息
列名 | 数据类型 | 主键/外键 | 说明 |
MembershipCardTypeID | int | 主键 | 会员卡类型ID |
MembersKakaKindID | int | 外键 | 会员卡卡种ID |
MembershipCardLevelID | int | 外键 | 会员卡级别ID |
MembershipCardIssuanceID | int | 外键 | 会员卡发行方式ID |
UseObjectID | int | 外键 | 使用对象ID |
DailyManagementFormID | int | 外键 | 日常管理形式ID |
TrackMediumID | int | 外键 | 磁道介质ID |
PreferentialWayID | int | 外键 | 优惠方式ID |
CardValidityPeriodSpecifiedID | int | 外键 | 卡有效期指定方式ID |
HairpinWithFaceValue | bit | | 发卡时有面值否 |
StoredValueCoupons | bit | | 储值优惠券标记否 |
ParticipateInTheScore | bit | | 参与消费积分否 |
leadCode | nchar(10) | | 前导码 |
PostpositionCode | nchar(10) | | 后置码 |
RequireTheSystemToMakeCard | bit | | 需要系统制卡否 |
NeedCompulsoryInspectionCard | bit | | 需要强制验卡否 |
LengthOfThePeriodOfValidity | nchar(10) | | 有效期长度 |
TrackContentEncryption | bit | | 磁道内容加密否 |
Invalid | bit | | 作废否 |
MembershipCardTypeCode | nchar(10) | | 会员卡类型代码 |
MembershipCardTypeName | nchar(30) | | 会员卡类型名称 |
KeepRecordsOfConsumption | bit | | 保存消费记录否 |
TotalLengthCardNumber | int | | 卡号总长度 |
OpenTheCouponAccount | bit | | 开通优惠券账户否 |
用于存放会员卡卡种表信息
列名 | 数据类型 | 主键/外键 | 说明 |
MembersKakaKindID | int | 主键 | 会员卡卡种ID |
MembersKakaCode | nchar(10) | | 会员卡卡种代码 |
MembersKakaKindsOfNames | nchar(30) | | 会员卡卡种名称 |
Invalid | bit | | 作废否 |
用于存放建卡记录明细信息
列名 | 数据类型 | 主键/外键 | 说明 |
MembershipCardDetailsID | int | 主键 | 会员卡建卡明细ID |
MembershipCardID | int | 外键 | 会员卡建卡记录表, 会员卡建卡记录ID |
MembershipCardTypeID | int | 外键 | 会员卡类型表, 会员卡类型ID |
MembershipCardStorageLocationID | int | 外键 | 会员卡保管地点表,保管地点ID |
StateOfTheMembershipCardID | int | 外键 | 基础属性集合明细表,会员卡状态ID |
ChangeTheMembershipCardID | int | 外键 | 基础属性集合明细表,变更会员卡状态ID |
UpdateRankID | int | 外键 | 会员卡级别表,会员卡级别ID |
KeeperID | int | 外键 | 员工表,保管人ID |
Remarks | nchar(200) | 备注 | |
MembershipCardCardNumber | nchar(50) | 会员卡卡号 | |
SpecifyTheValidityTime | date | 有效期指定时间 | |
ValidityTime | date | 有效期时间 | |
WriteCardStatus | nchar(10) | 写卡状态 | |
WriteTime | date | 写卡时间 | |
NominalAmount | money | 面值金额 |
用于存放库存卡有效期变更记录信息。
列名 | 数据类型 | 主键/外键 | 说明 |
StoreCardChangvalidityTimeID | int | 主键 | 库存卡有效期变更记录ID |
MembershipCardNum | nchar(50) | | 会员卡号 |
oldValidityTime | date | | 原有效期 |
newValidityTime | date | | 现有效期 |
BianGengTime | nchar(30) | | 变更时间 |
第2步:服务层接口(IService)
在“MEMBCERP.IService”这个包下的“KuCunKaGuanLiIService”类中,定义添加库存卡有效期变更相关的方法接口,代码如下:public List getLeiAllXingKuCunKa(int HuiYuanKaLeiXingID); /*根据会员卡类型ID查询全部库存卡*/ public int addYouXiaoQiBianGengJiLu(PwStoreCardChangValidityTime entity); /*新增库存卡有效期变更记录*/
第3步:服务层(Service)
在“MEMBCERP.Service”这个包下的“KuCunKaGuanLiService”类中,定义添加库存卡有效期变更相关的方法接口实现,代码如下:/*根据会员卡类型ID查询全部库存卡*/ @Override public List getLeiAllXingKuCunKa(int HuiYuanKaLeiXingID){ try {/*尝试运行代码*/ StringBuffer queryString=new StringBuffer();/*实例化StringBuffer*/ /*拼接需要查询的字段*/ queryString.append("SELECT HuiYuKaMingXi.membershipCardDetailsId, " + "HuiYuKaMingXi.membershipCardCardNumber, HuiYuKaMingXi.nominalAmount, " + "HuiYuKaMingXi.validityTime "); /*实例化表*/ queryString.append("FROM PwMembershipCardDetails AS HuiYuKaMingXi, " + "SysMembershipCardType AS HuiYuanKaLeiXing "); /*表与关系 满足条件*/ queryString.append("WHERE HuiYuKaMingXi.membershipCardTypeId = ? " + "AND HuiYuKaMingXi.changeTheMembershipCardId BETWEEN 12 AND 13 " + "AND HuiYuKaMingXi.membershipCardTypeId = HuiYuanKaLeiXing.membershipCardTypeId " + "AND HuiYuanKaLeiXing.cardValidityPeriodSpecifiedId = 56 "); return dao.findByHql(queryString.toString(),new Object[]{HuiYuanKaLeiXingID}); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return null; } } /*新增库存卡有效期变更记录*/ @Override public int addYouXiaoQiBianGengJiLu(PwStoreCardChangValidityTime entity){ try {/*尝试运行代码*/ return dao.addAndGetId4Integer(entity); } catch (Exception e) {/*尝试运行代码出现错误,执行异常处理*/ return 0; } }
第4步:方法层(Action)
在“MEMBCERP.Action”这个包下的“KuCunKaGuanLiAction”类中,定义查询库存卡有效期变更相关的方法,代码如下:/*根据会员卡类型,查询全部对应的库存卡*/ public String getLeiXingKuCunKa() { JSONArray jsArr=new JSONArray(); JSONObject jsObj=new JSONObject(); int HuiYuanKaLeiXingID=Integer.parseInt(this.getRequest().getParameter("HuiYuanKaLeiXingID").trim()); List lsHuiYuanKaLeiXing = this.kuCunKaGuanLiService.getLeiAllXingKuCunKa(HuiYuanKaLeiXingID); for (int i = 0; i < lsHuiYuanKaLeiXing.size(); i++) { Object[] obj=(Object[]) lsHuiYuanKaLeiXing.get(i); /*清空jsObj数组*/ jsObj.clear(); /*写入参数*/ jsObj.put("HuiYuiKaMingXiID", obj[0]); jsObj.put("HuiYuanKaHao", obj[1]); jsObj.put("MianZhiJinE", obj[2]); jsObj.put("YouXiaoQi", obj[3]); jsObj.put("BianGengYouXiaoQi",""); /*将jsObj数组添加到jsArr数组*/ jsArr.add(jsObj); } HashMap<String, Object> jsMap = new HashMap<String, Object>(); /*将jsArr数组写入到jsMap中*/ jsMap.put("rows", jsArr); /*转换数组类型,并返回数组*/ JSObj=JSONObject.fromObject(jsMap); return SUCCESS; } /*变更库存卡有效期*/ public String upKuCunKaYouXiaoQiBianGeng() { try {/*尝试运行代码*/ /*获取页面传递过来的参数*/ String jsArr=this.getRequest().getParameter("jsArr"); /*分解参数*/ String[] param=jsArr.split(">>"); boolean bltmp = false; /*遍历循环数组*/ for (int i = 1; i < param.length; i++) { /*分解参数*/ String[] params = param[i].split("<<"); int HuiYuanKaMingXiID = Integer.parseInt(params[0].trim()); /*调用服务层方法,查询需要修改的建卡明细信息*/ List<PwMembershipCardDetails> lstJianKaMingXi=this.kuCunKaGuanLiService.SelectUpdateJianKaMingXi(HuiYuanKaMingXiID); PwMembershipCardDetails lsJianKaMingXi=lstJianKaMingXi.get(0); /*实例化表*/ PwMembershipCardDetails JianKaMingXi=new PwMembershipCardDetails(); /*写入参数*/ JianKaMingXi.setMembershipCardDetailsId(HuiYuanKaMingXiID); JianKaMingXi.setMembershipCardId(lsJianKaMingXi.getMembershipCardId()); JianKaMingXi.setStateOfTheMembershipCardId(lsJianKaMingXi.getStateOfTheMembershipCardId()); JianKaMingXi.setChangeTheMembershipCardId(lsJianKaMingXi.getChangeTheMembershipCardId()); JianKaMingXi.setKeeperId(lsJianKaMingXi.getKeeperId()); JianKaMingXi.setMembershipCardCardNumber(lsJianKaMingXi.getMembershipCardCardNumber()); JianKaMingXi.setMembershipCardStorageLocationId(lsJianKaMingXi.getMembershipCardStorageLocationId()); JianKaMingXi.setMembershipCardTypeId(lsJianKaMingXi.getMembershipCardTypeId()); JianKaMingXi.setNominalAmount(lsJianKaMingXi.getNominalAmount()); JianKaMingXi.setRemarks(lsJianKaMingXi.getRemarks()); /*设置日期格式*/ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); JianKaMingXi.setSpecifyTheValidityTime(df.format(new Date())); JianKaMingXi.setUpdateRankId(lsJianKaMingXi.getUpdateRankId()); JianKaMingXi.setValidityTime(params[1].trim()); JianKaMingXi.setWriteCardStatus(lsJianKaMingXi.getWriteCardStatus()); JianKaMingXi.setWriteTime(lsJianKaMingXi.getWriteTime()); /*调用服务层方法,修改建卡明细*/ bltmp =this.kuCunKaGuanLiService.EditJianKaMingXi(JianKaMingXi); /*新增记录库存卡有效期变更的记录*/ PwStoreCardChangValidityTime lstYouXiaoQiBianGengJiLu = new PwStoreCardChangValidityTime(); lstYouXiaoQiBianGengJiLu.setMembershipCardNum(params[2].trim()); lstYouXiaoQiBianGengJiLu.setOldValidityTime(params[3].trim()); lstYouXiaoQiBianGengJiLu.setNewValidityTime(params[1].trim()); lstYouXiaoQiBianGengJiLu.setBianGengTime(df.format(new Date())); int asd = this.kuCunKaGuanLiService.addYouXiaoQiBianGengJiLu(lstYouXiaoQiBianGengJiLu); } MSG=bltmp+""; } catch (Exception e) {/*若尝试执行代码失败,处理异常*/ MSG="false"; } return SUCCESS; }
第5步: struts2的配置
<action name="getLeiXingKuCunKa" class="KuCunKaGuanLiAction" method="getLeiXingKuCunKa"> <result type="json"> <param name="root">JSObj</param> </result> </action> <action name="upKuCunKaYouXiaoQiBianGeng" class="KuCunKaGuanLiAction" method="upKuCunKaYouXiaoQiBianGeng"> <result type="json"> <param name="root">MSG</param> </result> </action>
第6步:视图层调用
级联下拉框:HTML代码:
<fieldset> <legend>会员卡类型</legend> <table> <tr> <td><input class="easyui-combobox"id="cboHuiYuanKaZhongLei" style="width:110px;" data-options="url:'getMembersKakaKindSelect',valueField:'HuiYuanKaKaZhongID', textField:'HuiYuanKaKaZhongMC',onSelect:oncboHuiYuanKaZhongLei" /> <input class="easyui-combobox" id="cboHuiYuanKaLeiXing" style="width:110px;" data-options="valueField:'HuiYuanKaLeiXingID',textField:'HuiYuanKaLeiXingMC'" /> </td> </tr> </table> </fieldset>
JavaScript代码:
//查询种类 function oncboHuiYuanKaZhongLei() { $('#cboHuiYuanKaLeiXing').combobox({url : "getMembershipCardTypeSelect?LeiXingID="+ $('#cboHuiYuanKaZhongLei').combobox('getValue')}); }
库存卡有效期变更:
HTML代码:
<div > <table class="easyui-datagrid" style="height:400px;" id="dgKuCunKaBianGengYouXiaoQi" data-options="singleSelect:true,rownumbers:true,loadMsg:'加载中,请稍后...',onSelect:getSelect" > <thead> <tr> <th data-options="field:'HuiYuanKaHao',width:240,align:'center'">会员卡号</th> <th data-options="field:'YouXiaoQi',width:180,align:'center'">原有效期</th> <th data-options="field:'BianGengYouXiaoQi',width:240,align:'center', editor:{ type:'datebox', options:{ panelWidth: 200, formatter:myformatter, parser:myparser, required:true } }">变更有效期</th> <th data-options="field:'MianZhiJinE',width:165,align:'center'">余额</th> <th data-options="field:'HuiYuiKaMingXiID',width:250,align:'center',formatter:btcaoZuo">操作</th> </tr> </thead> </table> </div> <div style=" height:100px;"> <center> <table> <tr class="xuanZeKuang"> <td colspan="20"> <a onClick="btBianGeng()" class="easyui-linkbutton" data-options="iconCls:'icon-add'">立即变更</a> <a onClick="btnFangQi()" class="easyui-linkbutton" data-options="iconCls:'icon-back'">返出</a> </td> </tr> </table> </center> </div>
JavaScript代码:
//超链接操作-移除列 function btcaoZuo(HuiYuiKaMingXiID, row, rowIndex) { return "<a href='javascript:yiChu(" + HuiYuiKaMingXiID + "," + rowIndex+ ")'>移除</a> "; } //移除行,但不删除数据库数据 function yiChu(HuiYuiKaMingXiID, rowIndex){ $('#dgKuCunKaBianGengYouXiaoQi').datagrid('deleteRow',rowIndex); } //获取选中行的行号和数据,并开启编辑 var editIndex = undefined; function getSelect(rowIndex,rowData){ $('#dgKuCunKaBianGengYouXiaoQi').datagrid('endEdit', 0); //结束编辑 $('#dgKuCunKaBianGengYouXiaoQi').datagrid('endEdit', editIndex); //结束编辑 $('#dgKuCunKaBianGengYouXiaoQi').datagrid('beginEdit', rowIndex); editIndex = rowIndex; } function btBianGeng(){ if (editIndex == undefined){ alert("请通过点击表格中的数据,选择需要指定变更的具体日期,再操作"); $('#dgKuCunKaBianGengYouXiaoQi').datagrid('beginEdit', 0); return true; } if ($('#dgKuCunKaBianGengYouXiaoQi').datagrid('validateRow', editIndex)){ $('#dgKuCunKaBianGengYouXiaoQi').datagrid('endEdit', editIndex); //结束编辑 var rowData=$('#dgKuCunKaBianGengYouXiaoQi').datagrid('getChanges','updated'); if(rowData.length>0){ if (confirm('请问是否立即更改已经编辑过的数据?')) { var jsArr=""; for(var i=0; i<rowData.length; i++){ jsArr=jsArr+">>"+rowData[i].HuiYuiKaMingXiID+"<<"+rowData[i].BianGengYouXiaoQi+"<<" +rowData[i].HuiYuanKaHao+"<<"+rowData[i].YouXiaoQi+"<<"; } $.getJSON("upKuCunKaYouXiaoQiBianGeng?jsArr="+jsArr,function(result){ if(result == "true"){ editIndex = undefined; alert("变更成功"); location.href="KuCunKaGuanLi/AddKuCunKaYouXiaoQiBianGeng.jsp"; return true; }else{ alert("变更失败,可能是变更日期填写错误或已与主机失去连接"); } }); } } } }至此,会员卡管理系统技术解析(十七)库存年卡有效期变更 技术解析完毕。
注意:仅供学习,禁止用于商业用途!否则,后果自负。
@最终解析权归本人所有
相关文章推荐
- 用python的cookielib模拟登录虎扑下载相册图片
- 如何提高数据库查询速度
- 指向结构体类型的指针强制转换为指向另外一种结构体类型。会不会出现问题?
- SQL查询获取最后一笔时间数据问题
- 第十三周阅读程序2:虚析构函数
- CF224 div2 (C) CF226 div2 (C)
- PythonCharm调试
- 【转】卖场开设社区便利店,不仅卖货,还有家政服务、售后衔接等(图)
- 基于UDP的Winsock编程(C++版)
- Linux网络编程:原始套接字编程及实例分析(二)
- Win7旗舰版不能将大于4G的文件拷贝到U盘怎么办?
- 九度OJ-题目1384:二维数组中的查找
- 响应式布局下的max-width!
- 总结-php
- 我为你负了天下,从此以后,你便是我的天下
- CCS烧写28335失败
- DHCP的配置及应用
- 支付宝网银支付接口
- 熟络的谈笑间,存在着挥之不去的隔膜,嘴上一直笑着,心却一直哭泣,试问苍天,我该如何做
- 3D数学基础 图形与游戏开发的学习 (四)[2D笛卡尔数学]