




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
葉明站內(nèi)即時(shí)聊天系統(tǒng)目錄8967第一章引言 圖4-7好友信息修改界面設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)主要數(shù)據(jù)庫表設(shè)計(jì)我的群組字段包括id、name、createDate、description、type、mode、canSpeak、tokenUser、annoucement、status、user、actor、org。表2.1我的群組表格設(shè)計(jì)群信息字段有:id,name,createDate,description,finishedRead,readDate,content,group,status,user,actor,org。表2.2群消息表格設(shè)計(jì)好友消息字段有:id、name、createDate、description、reciver、finishedRead、readDate、content、status、user、actor、角色表2.3好友消息表格設(shè)計(jì)我的好友表字段有:id、name、createDate、description、friend、bulidDate、friendName、contactCount、category、hasBlack、status、user、actor、org表2.4我的好友表格設(shè)計(jì)
第五章編碼實(shí)現(xiàn)5.1核心代碼與算法5.1.1好友添加功能該功能是用于添加好友時(shí)進(jìn)行的一系列操作好友添加功能功能界面設(shè)計(jì)圖4-7添加用戶界面好友添加功能持久層Model實(shí)現(xiàn)packageentity;
importkesun.entity.AbsBusinessObject;
importkesun.entity.system.User;
importjava.util.Date;
/**
*添加好友記錄單,只有“通過”狀態(tài),就可以成為好友,
*初始狀態(tài)為待審核,狀態(tài)屬性是“status”
*Createdbywph-pcon2018/9/7.
*/
publicclassFriendApplyRecordextendsAbsBusinessObject{
//申請的好友
privateUserfriend=null;
//處理時(shí)間
privateDatedoDate;
publicUsergetFriend(){
returnfriend;
}
publicvoidsetFriend(Userfriend){
this.friend=friend;
}
publicDategetDoDate(){
returndoDate;
}
publicvoidsetDoDate(DatedoDate){
this.doDate=doDate;
}
}好友添加功能數(shù)據(jù)訪問層DAL實(shí)現(xiàn)packageer;
importdao.IDoData;
importentity.FireFriendShipRecord;
importentity.FriendApplyRecord;
importentity.FriendCategory;
importentity.MyFriendParam;
importkesun.entity.system.User;
importjava.util.List;
importjava.util.Map;
/**
*好友數(shù)據(jù)訪問層接口
*Createdbywph-pcon2018/9/17.
*/
publicinterfaceIFriendextendsIDoData{
//加好友
intmakeFriend(FriendApplyRecordrecord);
//解除好友
intfireFriend(FireFriendShipRecordrecord);
//備注設(shè)置
intsetMemo(Stringmemo);
//設(shè)置黑名單
intsetBlankName(Userfriend);
//設(shè)置好友分組
intsetFriendGroup(FriendCategorygroup);
//刪除分組
intremoveFriendGroup(FriendCategorygroup);
//查詢出好友關(guān)聯(lián)
List<User>findRelationFriend(Map<String,Object>con);
//設(shè)置好友參數(shù)
intsetFriendParam(MyFriendParamparam);
}好友添加功能業(yè)務(wù)層BLL實(shí)現(xiàn)packagebll;
importentity.FireFriendShipRecord;
importentity.FriendApplyRecord;
importentity.FriendCategory;
importentity.MyFriendParam;
importkesun.entity.KesunReturn;
importkesun.entity.system.User;
importjava.util.Map;
/**
*好友業(yè)務(wù)層接口
*Createdbywph-pcon2018/9/17.
*/
publicinterfaceIFriend{
//加好友
KesunReturnmakeFriend(FriendApplyRecordrecord);
//解除好友
KesunReturnfireFriend(FireFriendShipRecordrecord);
//備注設(shè)置
KesunReturnsetMemo(Stringmemo);
//設(shè)置黑名單
KesunReturnsetBlankName(Userfriend);
//設(shè)置好友分組
KesunReturnsetFriendGroup(FriendCategorygroup);
//刪除分組
KesunReturnremoveFriendGroup(FriendCategorygroup);
//查詢出好友關(guān)聯(lián)
KesunReturnfindRelationFriend(Map<String,Object>con);
//設(shè)置好友參數(shù)
KesunReturnsetFriendParam(MyFriendParamparam);
}好友添加功能界面實(shí)現(xiàn)
<%@pagecontentType="text/html;charset=UTF-8"language="java"%>
<%@includefile="/header/init_layui.jsp"%>
<html>
<head>
<metacharset="utf-8">
<title></title>
<metaname="renderer"content="webkit">
<metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1">
<metaname="viewport"content="width=device-width,initial-scale=1,maximum-scale=1">
<linkrel="stylesheet"href="plugins/layui/css/layui.css"media="all">
<scriptsrc="<%=basePath%>/script/common/kb.js"></script>
<style>
.content{
position:relative;
}
.content1{
height:285px;
width:460px;
float:left;
}
.content2{
height:285px;
width:460px;
display:none;
background-color:#e2eff5;
}
.content3{
height:285px;
width:460px;
display:none;
background-color:#e2eff5;
}
.userdata{
width:140px;
height:284px;
float:left;
background-color:#eef5f8;
}
.verification{
display:block;
width:320px;
height:285px;
float:left;
background-color:#e2eff5;
}
.footer{
height:32px;
width:460px;
margin-top:0px;
padding:0;
}
.footerbutton{
float:right;
margin-right:10px
}
.photo{
margin-top:10px;
margin-left:10px;
border:2pxsolid#a1a1a1;
background:#dddddd;
width:120px;
height:120px;
border-radius:150px;
overflow:hidden;
z-index:-1;
}
.verificationtextarea{
width:250px;
height:100px;
margin-left:20px;
resize:none;
}
.verificationp{
margin-left:20px;
margin-bottom:10px;
}
.photoimg{
width:150px;
height:150px;
}
.userdatap{
margin:5px;
margin-left:15px;
}
.group{
float:left;
margin-left:-50px;
margin-top:10px;
}
.layui-form-item{
margin-top:10px;
}
</style>
<body>
<divclass="content">
<divclass="content1"id="content1">
<divclass="userdata">
<divclass="photo">
<imgsrc="images/books.png">
</div>
</div>
<divclass="verification">
<divclass="layui-form-item">
<p>請輸入好友賬號:</p>
<divclass="layui-form-itemlayui-form-text">
<textareaid="texts"name="desc"placeholder="我是..."class="layui-textarea"></textarea>
</div>
</div>
</div>
</div>
<divclass="content2"id="content2">
<divclass="userdata">
<divclass="photo">
<imgsrc="images/books.png">
</div>
</div>
<divclass="over">
<iclass="layui-icon"style="font-size:50px;color:#aee907;">စ</i>
<p>好友添加請求已發(fā)送成功,正在等待對方確認(rèn)。</p>
</div>
</div>
<divclass="footer">
<divclass="footer">
<%--<buttononclick="window.close()"style="display:none"id="close"class="layui-btnlayui-btn-primarylayui-btn-sm">完成</button>--%>
<buttonid="next1"class="layui-btnlayui-btn-primarylayui-btn-sm">下一步</button>
</div>
</div>
</div>
</body>
<scriptsrc="plugins/layui/layui.js"charset="utf-8"></script>
<script>
layui.use('form',function(){
varform=layui.form;
form.on('submit(formDemo)',function(data){
/*layer.msg(JSON.stringify(data.field));
returnfalse;*/
});
});
</script>
<scripttype="text/javascript">
document.getElementById("next1").onclick=function(){
document.getElementById("content2").style.display="block";
document.getElementById("content1").style.display="none";
document.getElementById("next1").style.display="none";
jiahaoyou();
}
varname;
$(function(){
doData("loginUser",null,function(data){
name=data.id;
});
});
functionjiahaoyou(){
varnow=newDate().getTime();
vardata=newObject();
varcategory2=newObject();
category2.id="001";
=name;
varfriend2=newObject();
friend2.id=$("#texts").val();
data.friend=friend2;
data.friendName=$("#texts").val();
data.status="申請中";
data.category=category2;
doData("friend/add",data,function(data){
})
}
</script>
</html>5.1.2好友詳細(xì)信息功能該功能用于查看好友詳細(xì)信息以及好友信息的修改好友詳細(xì)信息功能界面設(shè)計(jì)圖4-8好友詳細(xì)信息好友詳細(xì)信息功能持久層Model實(shí)現(xiàn)packageentity;
importkesun.entity.AbsBusinessObject;
importkesun.entity.system.User;
importjava.util.Date;
/**
*我的好友庫
*Createdbywph-pcon2018/9/7.
*/
publicclassMyFriendStoreextendsAbsBusinessObject{
//好友
privateUserfriend=null;
//建立關(guān)系日期
privateDatebulidDate=newDate();
//好友備注名稱
privateStringfriendName="";
//分類
privateFriendCategorycategory=null;
//聯(lián)系計(jì)算,每一次聯(lián)系增加一次計(jì)數(shù)
privatelongcontactCount=0;
//是否黑名單
privateBooleanhasBlack=false;
publicUsergetFriend(){
returnfriend;
}
publicvoidsetFriend(Userfriend){
this.friend=friend;
}
publicDategetBulidDate(){
returnbulidDate;
}
publicvoidsetBulidDate(DatebulidDate){
this.bulidDate=bulidDate;
}
publicStringgetFriendName(){
returnfriendName;
}
publicvoidsetFriendName(StringfriendName){
this.friendName=friendName;
}
publicFriendCategorygetCategory(){
returncategory;
}
publicvoidsetCategory(FriendCategorycategory){
this.category=category;
}
publiclonggetContactCount(){
returncontactCount;
}
publicvoidsetContactCount(longcontactCount){
this.contactCount=contactCount;
}
publicBooleangetHasBlack(){
returnhasBlack;
}
publicvoidsetHasBlack(BooleanhasBlack){
this.hasBlack=hasBlack;
}
}好友詳細(xì)信息功能數(shù)據(jù)訪問層DAL實(shí)現(xiàn)packageer;
importdao.IDoData;
importentity.FireFriendShipRecord;
importentity.FriendApplyRecord;
importentity.FriendCategory;
importentity.MyFriendParam;
importkesun.entity.system.User;
importjava.util.List;
importjava.util.Map;
/**
*好友數(shù)據(jù)訪問層接口
*Createdbywph-pcon2018/9/17.
*/
publicinterfaceIFriendextendsIDoData{
//加好友
intmakeFriend(FriendApplyRecordrecord);
//解除好友
intfireFriend(FireFriendShipRecordrecord);
//備注設(shè)置
intsetMemo(Stringmemo);
//設(shè)置黑名單
intsetBlankName(Userfriend);
//設(shè)置好友分組
intsetFriendGroup(FriendCategorygroup);
//刪除分組
intremoveFriendGroup(FriendCategorygroup);
//查詢出好友關(guān)聯(lián)
List<User>findRelationFriend(Map<String,Object>con);
//設(shè)置好友參數(shù)
intsetFriendParam(MyFriendParamparam);
}好友詳細(xì)信息功能業(yè)務(wù)層BLL實(shí)現(xiàn)packagebll.impl;
importbll.IFriend;
importbll.KesunSuperService;
importdao.IDoData;
importentity.*;
importkesun.entity.KesunReturn;
importkesun.entity.system.User;
importorg.apache.poi.ss.usermodel.Row;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Service;
importjava.util.List;
importjava.util.Map;
/**
*Createdbywph-pcon2018/9/17.
*/
@Service("bFriend")
publicclassFriendServiceImplextendsKesunSuperServiceimplementsIFriend{
@Autowired
privateer.IFrienddao;
publicFriendServiceImpl()
{
setModel(newMyFriendStore());
}
@Override
publicKesunReturnmakeFriend(FriendApplyRecordrecord){
KesunReturnback=newKesunReturn();
if(dao==null||record==null||daoinstanceofer.IFriend==false)
{
back.setCode("0");
back.setMessage("數(shù)據(jù)接口對象或參數(shù)為空!");
back.setObj(null);
returnback;
}
intresult=dao.makeFriend(record);
if(result>0)
{
back.setCode(String.valueOf(result));
back.setMessage("好友加入成功!");
}
else
{
back.setCode(String.valueOf(result));
back.setMessage("好友加入失??!");
}
back.setObj(result);
returnback;
}
@Override
publicKesunReturnfireFriend(FireFriendShipRecordrecord){
returnnull;
}
@Override
publicKesunReturnsetMemo(Stringmemo){
returnnull;
}
@Override
publicKesunReturnsetBlankName(Userfriend){
returnnull;
}
@Override
publicKesunReturnsetFriendGroup(FriendCategorygroup){
returnnull;
}
@Override
publicKesunReturnremoveFriendGroup(FriendCategorygroup){
returnnull;
}
@Override
publicKesunReturnfindRelationFriend(Map<String,Object>con){
returnnull;
}
@Override
publicKesunReturnsetFriendParam(MyFriendParamparam){
returnnull;
}
@Override
publicStringgetLoadoutExcelFileName(){
returnnull;
}
@Override
publicIDoDatagetDAO(){
returndao;
}
@Override
publicListgetSaveAll(List<Row>source,Userworker){
returnnull;
}
@Override
publicStringgetLoadoutExcelTemplateName(){
returnnull;
}
}好友詳細(xì)信息功能界面實(shí)現(xiàn)<%--
CreatedbyIntelliJIDEA.
User:16030
Date:2018/9/19
Time:11:08
TochangethistemplateuseFile|Settings|FileTemplates.
--%>
<%@pagecontentType="text/html;charset=UTF-8"language="java"%>
<%@includefile="/header/init.jsp"%>
<html>
<head>
<title>Title</title>
<scriptsrc="<%=basePath%>/plugins/layui/layui.js"></script>
<linkhref="<%=basePath%>/plugins/layui/css/layui.css"rel="stylesheet"/>
<style>
*{
margin:0;
padding:0;
}
.layui-box{
width:720px;
height:520px;
position:relative;
background-color:#e96a67;
}
.btn{
z-index:99;
position:absolute;
bottom:10px;
width:100%;
/*background-color:#0C0C0C;*/
}
.btnbutton{
margin-left:238px;
}
.photo{
border:2pxsolid#a1a1a1;
background:#dddddd;
width:125px;
height:125px;
border-radius:150px;
overflow:hidden;
}
.photoimg{
width:150px;
height:150px;
}
.layui-tabletbodytr:hover{
background-color:#fff;
}
.default:hover{
cursor:default;
}
</style>
</head>
<body>
<divclass="layui-box">
<tableclass="layui-table"lay-skin="nob">
<colgroup>
<colwidth="150">
<colwidth="200">
<col>
</colgroup>
<thead>
<tr>
<divclass="userdata">
<divclass="photo">
<imgsrc="images/books.png">
</div>
</div>
</tr>
</thead>
<tbody>
<tr>
<tdclass="default">賬號</td>
<td><divid="id"></div></td>
</tr>
<tr>
<tdclass="default">昵稱</td>
<td><divid="friend"></div></td>
</tr>
<tr>
<tdclass="default">備注</td>
<td>
<divstyle="width:210px;">
<spanclass="t1"><divid="friendName"style="height:20px;width:100px;float:left"></div></span>
<aclass="t2">
<divstyle="float:right">
<fieldsetclass="layui-elem-fieldsite-demo-button">
<buttonclass="layui-btnlayui-btn-normallayui-btn-sm"style="width:40px;height:20px"><iclass="layui-icon"></i></button>
</fieldset>
</div>
</a>
</div>
</td>
</tr>
<%--<tr>--%>
<%--<tdclass="default">分組(做下拉)</td>--%>
<%--<td>--%>
<%--<divstyle="width:150px;">--%>
<%--<formclass="layui-form"action="">--%>
<%--<selectname="city"lay-verify="">--%>
<%--<optionvalue="friend">朋友</option>--%>
<%--<optionvalue="family"selected>家人家人家人家人家人家人家人家人</option>--%>
<%--<optionvalue="class"selected>同學(xué)</option>--%>
<%--</select>--%>
<%--</form>--%>
<%--</div>--%>
<%--</td>--%>
<%--</tr>--%>
<tr>
<td>
<formclass="layui-form"action="">
<divclass="layui-form-item"style="margin-left:-65px;">
<labelclass="layui-form-label">拉黑</label>
<divclass="layui-input-block">
<inputtype="checkbox"name="switch"lay-skin="switch"lay-filter="switch1"lay-text="已拉黑|未拉黑">
</div>
</div>
</form>
</td>
</tr>
<%--<tr>--%>
<%--<td>--%>
<%--<buttonclass="layui-btnlayui-btn-primarylayui-btn-sm"id="hasblack">拉黑此網(wǎng)友</button>--%>
<%--</td>--%>
<%--</tr>--%>
<%--<tr>--%>
<%--<td>--%>
<%--更多信息--%>
<%--</td>--%>
<%--</tr>--%>
</tbody>
</table>
<%--<divclass="hasblack">--%>
<%--<buttonclass="layui-btnlayui-btn-primarylayui-btn-sm">小型按鈕</button>--%>
<%--<buttonclass="layui-btnlayui-btn-primarylayui-btn-xs">迷你按鈕</button>--%>
<%--<a>拉黑此好友</a>--%>
<%--</div>--%>
<divclass="site-demo-buttonbtn"id="layerDemo"style="margin-bottom:0;">
<buttonid="message"class="layui-btnlayui-btn-normallayui-btn-lg"id="btn">確定修改</button>
<buttonclass="layui-btnlayui-btn-dangerlayui-btn-lg"data-method="confirmTrans"id="del">刪除好友</button>
</div>
</div>
</body>
<scriptsrc="plugins/layui/layui.js"charset="UTF-8"></script>
<scripttype="text/javascript">
//document.getElementById("del").onclick=function(){
//alert(2);
//}
varname;
$(function(){
doData("loginUser",null,function(data){
name=data.id;
});
});
varda=newObject();
varid=getURLParamValue("id");
information();
functioninformation(){
vardate=newObject();
date.id=id;
date.status="通過";
console.debug(date);
doData("friend/find",date,function(data){
varstr=JSON.stringify(data);
console.debug(data);
console.debug("id"+data.obj[0].category.id);
=data.obj[0].friendName;
$("#id").append(
data.obj[0].id
);
$("#friend").append(
data.obj[0].friend.id
);
$("#friendName").append(
data.obj[0].friendName
);
});
}
layui.use('layer',function(){//獨(dú)立版的layer無需執(zhí)行這一句
var$=layui.jquery,layer=layui.layer;//獨(dú)立版的layer無需執(zhí)行這一句
//觸發(fā)事件
varactive={
confirmTrans:function(){
//配置一個(gè)透明的詢問框
layer.msg('是否確定刪除該好友',{
time:20000,//20s后自動關(guān)閉
btnAlign:'c',
btn:['是','否'],
yes:function(index,layero){
vardate=newObject();
date.id=id;
=name;
console.debug(date);
doData("friend/del",date,function(data){
console.log(data);
})
//dosomething
//1.先全查好友表在解除好友表添加新信息
//2.刪除好友表里面對應(yīng)的那條數(shù)據(jù)
//3.成功后彈出刪除成功的彈框
//4.關(guān)閉此頁面,刷新好友列表
alert("刪除成功");
layer.close(index);//如果設(shè)定了yes回調(diào),需進(jìn)行手工關(guān)閉
}
});
}}
$('#layerDemo.layui-btn').on('click',function(){
varothis=$(this),method=othis.data('method');
active[method]?active[method].call(this,othis):'';
});
});
layui.use('form',function(){
varform=layui.form;
//監(jiān)聽提交
form.on('submit(formDemo)',function(data){
layer.msg(JSON.stringify(data.field));
returnfalse;
});
form.on('switch(switch1)',function(data){
vardate=newObject();
date.id=id;
date.hasBlack=data.elem.checked;
=name;
da.id=$("#friend").html();
date.friend=da
date.status="通過";
//date.friend=name;
date.friendName=newtxt;
layer.msg(''+(data.elem.checked?'已拉黑':'解除拉黑'),{
offset:'6px'
});
doData("friend/edit",date,function(data){
})
});
});
//備注修改功能
$(function(){
//獲取class為caname的元素
$(".t2").click(function(){
vartd=$(".t1");
vartxt=td.text();
varinput=$("<inputstyle='width:100px;height:20px'type='text'value='"+txt+"'/>");
td.html(input);
input.click(function(){returnfalse;});
//獲取焦點(diǎn)
input.trigger("focus");
//文本框失去焦點(diǎn)后提交內(nèi)容,重新變?yōu)槲谋?/p>
input.blur(function(){
varnewtxt=$(this).val();
//判斷文本有沒有修改
if(newtxt!=txt){
td.html(newtxt);
vardate=newObject();
date.id=id;
=name;
da.id=$("#friend").html();
date.friend=da
date.status="通過";
//date.friend=name;
date.friendName=newtxt;
console.debug("date:"+date);
doData("friend/edit",date,function(data){
})
}
else
{
td.html(newtxt);
}
});
});
})
$("#message").click(function(){
parent.layer.closeAll();//關(guān)閉當(dāng)前頁
//layer.close(layer.index);
//window.parent.location.reload();
});
layui.use(['layer']),function(){
varlayer=layui.layer;
}
</script>
</html>
第六章測試6.1測試計(jì)劃我們制定了以下測試計(jì)劃:用戶聊天時(shí)信息的傳遞速度用戶聊天時(shí)新信息提醒狀態(tài)用戶信息撤回是否能夠即時(shí)多用戶同時(shí)聊天數(shù)據(jù)庫的承受能力該系統(tǒng)功能上能夠正常工作,實(shí)現(xiàn)了網(wǎng)站用戶的單人聊天、多人聊天等功能。所有模塊均能達(dá)到預(yù)期的效果。該系統(tǒng)性能相對穩(wěn)定、良好,測試用例的選擇滿足了測試用例的性能方面的設(shè)計(jì)需求,基本上達(dá)到項(xiàng)目測試應(yīng)有的水平,與預(yù)期效果相差無幾,能夠滿足用戶需求。
第七章總結(jié)與展望7.1總結(jié)時(shí)間過得很快,實(shí)訓(xùn)即將接近尾聲。在這實(shí)訓(xùn)中,每天都過得很充實(shí),從項(xiàng)目需求分析,調(diào)研,進(jìn)度計(jì)劃的制定到UI,數(shù)據(jù)庫,架構(gòu)設(shè)計(jì),然后到編碼實(shí)現(xiàn),進(jìn)度跟蹤,每個(gè)階段的評審報(bào)告,通過規(guī)范的軟件開發(fā)流程讓我收益匪淺。與以前的個(gè)人開發(fā),想到什么做什么改變很大,也讓我對軟件工程這門課程有了更深的理解。我們組做的系統(tǒng):考試系統(tǒng)。我們主要做B/S端功能的實(shí)現(xiàn),通過SSM框架學(xué)習(xí),對SSM框架的環(huán)境搭建,開發(fā)附錄流程,項(xiàng)目部署有了基本的了解。本人在小組擔(dān)任組員,項(xiàng)目計(jì)劃的制定,需求實(shí)現(xiàn)的討論例會等看似比較繁瑣的事其實(shí)在項(xiàng)目中起到比較重要的作用。在項(xiàng)目中必須以身作則,必須大家一起參與到項(xiàng)目中來,讓項(xiàng)目有條不紊的進(jìn)行,更讓我意識到一個(gè)團(tuán)隊(duì)最重要的就是隊(duì)員間的合作。要做一個(gè)龐大的項(xiàng)目不能光靠一兩個(gè)人,需要每個(gè)人都去認(rèn)真對待并完成分配的任務(wù)。就像一臺大型的機(jī)器,發(fā)動機(jī)是核心但也需每個(gè)小零部件的配合才能運(yùn)轉(zhuǎn)。更讓我體會到一個(gè)完整項(xiàng)目的開發(fā)它所要經(jīng)歷的階段包括:規(guī)劃和用例說明、項(xiàng)目結(jié)構(gòu)和風(fēng)險(xiǎn)評估、詳細(xì)設(shè)計(jì)說明書、代碼實(shí)現(xiàn)、測試、操作手冊。一個(gè)項(xiàng)目的開發(fā)所需要的財(cái)力、人力都是大量的,如果沒有一個(gè)好的遠(yuǎn)景規(guī)劃,對以后的開發(fā)進(jìn)度會產(chǎn)生很大的影響,嚴(yán)重時(shí)導(dǎo)致在預(yù)定時(shí)間內(nèi)不能完成該項(xiàng)目或者完成的項(xiàng)目跟原先劃所要實(shí)現(xiàn)的項(xiàng)目功能不符合。一份好的項(xiàng)目結(jié)構(gòu)、業(yè)務(wù)功能和詳細(xì)設(shè)計(jì)說明書對一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)習(xí)2025年雷鋒精神六十二周年主題活動實(shí)施方案 (4份)-54
- 2024年油煙凈化設(shè)備項(xiàng)目資金申請報(bào)告代可行性研究報(bào)告
- 2025年河北化工醫(yī)藥職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 政治-云南省三校2025屆高三2月高考備考聯(lián)考卷(六)試題和答案
- 2025年農(nóng)村宅基地買賣合同協(xié)議書(農(nóng)村土地流轉(zhuǎn)法律保障)
- 2025年度地下車位租賃與車位租賃平臺服務(wù)合同
- 2025年度室內(nèi)裝修安全監(jiān)理服務(wù)協(xié)議
- 2025年度商鋪?zhàn)赓U稅收優(yōu)惠政策協(xié)議
- 2025年度新能源技術(shù)研發(fā)用工協(xié)議安全責(zé)任承諾書
- 2025年度制造業(yè)企業(yè)生產(chǎn)線人員招聘與培訓(xùn)合同
- PFMEA模板完整版文檔
- 論生產(chǎn)安全對于家庭的重要性
- 風(fēng)力發(fā)電變槳系統(tǒng)外文翻譯
- 教學(xué)能力比賽決賽 《英語》教案
- ECMO IABP完整版可編輯
- 離婚糾紛證據(jù)清單
- 【高考作文指導(dǎo)】用思辨來寫現(xiàn)象類作文(共39張PPT)
- GB/T 4513-2000不定形耐火材料分類
- GB 19147-2013f車用柴油(Ⅳ)
- 水輪發(fā)電機(jī)組及其附屬設(shè)備招標(biāo)文件
- 讀李玫瑾教授《心理撫養(yǎng)》有感
評論
0/150
提交評論