一个类msn space的case manage system

该博客展示了基于VBScript和JavaScript的任务列表管理代码。通过ADODB连接数据库,使用SQL语句查询数据,定义多个函数处理任务层级关系。同时,利用JavaScript实现目录展开、关闭等交互功能,还包含添加、修改、删除任务的操作。

数据结构和add页面 就不写了看select救出来了

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="Connections/conn.asp" -->
<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_conn_STRING
Recordset1.Source = "SELECT UserID, Username FROM dbo.[User]"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>
<%
Dim Recordset2
Dim Recordset2_numRows

Set Recordset2 = Server.CreateObject("ADODB.Recordset")
Recordset2.ActiveConnection = MM_conn_STRING
Recordset2.Source = "SELECT ProjectID, ProjectName FROM dbo.ProjectID"
Recordset2.CursorType = 0
Recordset2.CursorLocation = 2
Recordset2.LockType = 1
Recordset2.Open()

Recordset2_numRows = 0
%>
<%
Set conninner = Server.CreateObject("ADODB.Connection")
conninner.Open MM_conn_STRING

function haschild(cid)
dim haschildid,sql,rs
haschildid=Cint(cid)
sql="select * from takelist where fid="& haschildid
set rs=Server.CreateObject("ADODB.Recordset")
rs.open sql,conninner,3,3
if not rs.EOF then
haschild=TRUE
else
haschild=FALSE
end if
set rs=nothing
end function

function MenuNub(Maid)
dim sql,rs,Mnub
sql="select fid from takelist where takelistid="& Maid
rs=conninner.execute(sql)
Mnub=0
if not rs.EOF then
Mnub=MenuNub(rs("fid"))+1
else
exit function
end if
set rs=nothing
MenuNub=Cint(Mnub)
end function

Function Get_style(Level)
 If Cint(Level)=0 then
  Get_style=""
 Else
  Get_style="style=""display:none"""
 End if
End Function

Function get_pid(id)
dim rs,sql
sql="select Fid from takelist where takelistid="&id
Set rs=Conninner.Execute(Sql)
if not rs.EOF and not rs.BOF then
get_pid=rs("Fid")
else
get_pid=0
end if
set rs=nothing
end Function

Function Get_level(id)
 dim rs,sql
 Sql="Select fid from takelist Where takelistid="&id
 Set rs=Conninner.Execute(Sql)
 If not rs.Eof and not rs.bof then
  Level=Get_level(rs("fid"))+1
 Else
  Exit Function
 End if
 Set rs=nothing
 Get_level=Cint(Level)
End Function

Function Chk_next(id,Level)
 dim rs,sql
 dim tempId
 tempId=id
 aId=id
 curLevel=Get_level(tempId)

 For i=curLevel to Level step -1
  tempId=Get_Pid(tempId)
 Next
 For i=curLevel to Level+1 step -1
  aId=Get_Pid(aId)
 Next
 
 Set rs=server.createobject("adodb.recordset")
 Sql="Select * from takelist Where fid="&tempId&""
 rs.open Sql,Conninner,3,3
 wida=0
 If Rs.recordcount>1 then
  
  rs.MoveLast
  if aid=rs("takelistid") then
   Chk_next=false
  Else
   Chk_next=true
  End if
 Else
  Chk_next=false
 End if
 Rs.close()
 Set rs=nothing
End Function

%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>takelist manage</title>
<script language="JavaScript" type="text/JavaScript">
 function expandIt(ObjDIV,ObjIMG)
 {
  if (document.all.DIVs[ObjDIV].style.display=="none")
   {document.all.DIVs[ObjDIV].style.display="";
   ObjIMG.src="images/sub.gif";
   }
  else{
   document.all.DIVs[ObjDIV].style.display="none";
   ObjIMG.src="images/plus.gif";
   }
 }
 /*expandall 展开该级所有的子目录*/
 var hid=0
 function expandall(a,ba)
 {
  if(hid==0)
  {
  for(var i=0; i<document.all.DIVs.length;i++)
  {
   if(document.all.DIVs[i].Fid==ba)
   {
    document.all.DIVs[i].style.display="block";    
    for(var j=0;j<document.all.DIVs.length;j++)
    {
     if(document.all.DIVs[j].md==document.all.DIVs[i].Fid)
     {
     expandall(j,document.all.DIVs[j].Fid)
     }
    }   
   } 
   
  } 
  hid=1
  }
  else
  {
  for(var i=0; i<document.all.DIVs.length;i++)
  {
   if(document.all.DIVs[i].Fid==ba)
   {    
    document.all.DIVs[i].style.display="none";    
    for(var j=0;j<document.all.DIVs.length;j++)
    {
     if(document.all.DIVs[j].md==document.all.DIVs[i].Fid)
     {
     expandall(j,document.all.DIVs[j].Fid)
     }
    }   
   } 
   
  } 
  hid=0
  }
 }
 /*关闭所有*/
 function closeall()
 {
 for(var i=0; i<document.all.DIVs.length;i++)
  {
  document.all.DIVs[i].style.display="none"
  } 
 }
 /*show所有*/
 function expandalla()
 {
 for(var i=0; i<document.all.DIVs.length;i++)
  {
  document.all.DIVs[i].style.display="block"
  } 
 }
 function takesubmit()
 { 
  var url="take_add.asp";
  var f=document.createElement("form");
  f.action = url;
  f.method = "post";
  f.id= "dosubmit";
  f.style.display = "none";
  var ct=document.createElement("textarea")
  ct.name="cttime"
  ct.value=document.all.createtime.value
  f.appendChild(ct);
  var st=document.createElement("textarea")
  st.name="sttime"
  st.value=document.all.starttime.value
  f.appendChild(st);
  var ft=document.createElement("textarea")
  ft.name="fttime"
  ft.value=document.all.finishtime.value
  f.appendChild(ft);
  var tde=document.createElement("textarea")
  tde.name="tdesc"
  tde.value=document.all.takedesc.value
  f.appendChild(tde);
  var ud=document.createElement("textarea")
  ud.name="uid"
  ud.value=document.all.userid[0].value
  f.appendChild(ud);
  var tud=document.createElement("textarea")
  tud.name="tuid"
  tud.value=document.all.userid[1].value
  f.appendChild(tud);
  var pd=document.createElement("textarea")
  pd.name="projid"
  pd.value=document.all.projectid.value
  f.appendChild(pd);
  var fd=document.createElement("textarea")
  fd.name="fid"
  fd.value=fidval;
  f.appendChild(fd);  
  var elF = document.body.appendChild(f);  
  elF.submit()
 } 
 var fidval
 function addtake(tid,pid)
 { 
  fidval=tid;
  if(tid==0)
  {
    for(var i=1;i<=loopnub;i++)
    {
    eval(" var hdin=innercontain"+innerc[i]+"; var inputhd=input"+innerc[i]+";")
    hdin.innerHTML="";
    inputhd.style.display="none";    
    }
  input0.style.display="block";
  innercontain0.innerHTML=tempstr;
  projectinner.innerHTML=projstr;
  projecthd.style.display="block";
  canceldiv.innerHTML="<input type=/"button/" onClick=/"innercontain0.innerHTML=''/" value=/"取消/">"
  alert(canceldiv.innerHTML)
  }
  else
  { 
   input0.style.display="none";
   innercontain0.innerHTML="";
   if(pid!=0)
   {
   for(var i=1;i<=loopnub;i++)
    {
    eval(" var hdin=innercontain"+innerc[i]+"; var inputhd=input"+innerc[i]+";")
    hdin.innerHTML="";
    inputhd.style.display="none";    
    }
    eval("var inputer=input"+tid+";var innercontainer=innercontain"+tid)
    inputer.style.display="block"
    innercontainer.innerHTML=tempstr
    projectinner.innerHTML="<input type=/"text/" name=/"projectid/" value="+pid+">"
    projecthd.style.display="none"  
    canceldiv.innerHTML="<input type=/"button/" onClick=/"innercontain"+tid+".innerHTML=''/" value=/"取消/">"
    //alert(canceldiv.innerHTML) 
   }
   else
   {
    for(var i=1;i<=loopnub;i++)
    {
    eval(" var hdin=innercontain"+innerc[i]+"; var inputhd=input"+innerc[i]+";")
    hdin.innerHTML="";
    inputhd.style.display="none";    
    }
    eval("var inputer=input"+tid+";var innercontainer=innercontain"+tid)
    inputer.style.display="block"
    innercontainer.innerHTML=tempstr
    //fid.value=tid;
    projectinner.innerHTML=projstr
    projecthd.style.display="block"
    canceldiv.innerHTML="<input type=/"button/" onClick=/"innercontain"+tid+".innerHTML=''/" value=/"取消/">"
    //alert(canceldiv.innerHTML)
   }     

  }
  
 }  
 function godel(did)
 {
  if(confirm("确定删除?"))
  {
   var ifam=document.createElement("iframe")
   ifam.width=0
   ifam.height=0
   ifam.id="fordel"
   ifam.style.display="none"
   ifam.src="take_del.asp?pid="+did
   var elif=document.body.appendChild(ifam);   
  }
 }
 function goedt(edid)
 {
 /*
  var eddiv=document.createElement("div");
  eddiv.id="editdiv";
  eddiv.align="center";
  eddiv.style.backgroundcolor="#F4F4F4"
  eddiv.style.position="absolute";
  eddiv.style.left=250;
  eddiv.style.top=200;
  eddiv.style.width=500;
  eddiv.style.height=89;
  var eldiv=document.body.appendChild(eddiv);
  */
  eddiv.style.display="block"
  eddiv.innerHTML="<table border=0 align=center><tr><td align=right><span onClick=eddiv.style.display=/"none/">Close</span>&nbsp;&nbsp;&nbsp;&nbsp;</td></tr><tr><td><iframe width=500px height=300px frameborder=0 scrolling=no src=take_edt.asp?pid="+edid+"></iframe></td></tr></table>";
  
 }
 //dragdiv
 var bIsCatchFlyBar = false;
 var dragClickX = 0;
 var dragClickY = 0;
 function catchFlyBar(e)
  {
  bIsCatchFlyBar = true;
  var x=event.x+document.body.scrollLeft;
  var y=event.y+document.body.scrollTop;
  dragClickX=x-eddiv.style.pixelLeft;
  dragClickY=y-eddiv.style.pixelTop;
  eddiv.setCapture();
  document.onmousemove = moveFlyBar;
  }
 function releaseFlyBar(e)
  {
  bIsCatchFlyBar = false;
  eddiv.releaseCapture();
  document.onmousemove = null;
  }
 function moveFlyBar(e)
  {
   if(bIsCatchFlyBar)
    {
    eddiv.style.left = event.x+document.body.scrollLeft-dragClickX;
    eddiv.style.top = event.y+document.body.scrollTop-dragClickY;
    }
  }
 function myload_flybar()
  {
  eddiv.style.top=document.body.scrollTop;
  eddiv.style.left=document.body.offsetWidth-eddiv.clientWidth-30+document.body.scrollLeft;
  }

 window.onresize = myload_flybar;
 window.onscroll = myload_flybar;

</script>
<style>
a
{
color:#000000;
text-decoration:none;
}
BODY{
SCROLLBAR-HIGHLIGHT-COLOR:buttonface;
SCROLLBAR-SHADOW-COLOR:buttonface;
SCROLLBAR-3DLIGHT-COLOR:buttonhighlight;
SCROLLBAR-TRACK-COLOR:#eeeeee;
SCROLLBAR-DARKSHADOW-COLOR:buttonshadow
}
textarea
{
 BACKGROUND-COLOR:#ECF5FF;
}
input
{
 border:'1' '' '#FFFFFF'
}
</style>
</head>

<body>
<table border="0" cellspacing="0" cellpadding="0" style="font-size:12px " bordercolordark="#0066CC"  bgcolor="#A4B6D7">
<tr valign="middle"><td width="512" onClick="expandall()">&nbsp;</td><td width="50" onClick="closeall()">完成与否</td><td width="80">创立时间</td><td width="80">下放时间</td><td width="120" onClick="addtake(0,0)">添加New Takes</td></tr>
 <tr id="input0" style="display:none"><td id="innercontain0" colspan="6"></td></tr>
</table>
<%
  response.Write("<script language=javascript> var innerc=new Array();"&vbcrlf&"</script>")
innercn=0
divid=0
 Call WriteCatalog(0,null) %>
<%

Sub WriteCatalog(id,allcount)
  Dim sql
  Dim rs
  Level=Cint(Get_level(id))

  Set rs=server.createobject("adodb.recordset")
  Sql="select * from takelist where fid ="&id&" order by takelistid"
  rs.open sql,conninner,1,1
  Do while not rs.eof
    Loopid=0
 Loopid=Loopid+1 %>
<table id=TABLE<%=rs("takelistid")%> border="1" cellspacing="0" cellpadding="0" style="font-size:12px; border-top-color:#FFFFFF" bordercolordark="#0066CC" bgcolor="#ECF5FF">
  <tr><%For i=1 to Level %>
    <% If Chk_next(rs("takelistid"),i) then %>
    <td nowrap width=28>&nbsp;</td>
 <% Else %>
 <td nowrap width=28>&nbsp;</td>
 <% End if %>
    <% Next %>
 <% if Loopid<>rs.recordcount then %>
 <td width="28">
 <% Else %>
 <td width=28>
 <% End if %>
 <% If hasChild(Cint(rs("takelistid"))) then %><a href="#" onClick="expandall(<%=get_pid(rs("takelistid"))%>,<%=Cint(rs("takelistid"))%>)">展</a><img id=IMG<%= rs("takelistid") %> src="images/sub.gif" width="16" height="16" border="0" align="absmiddle" style="cursor:hand" onclick="expandIt(<%=divid%>,IMG<%= rs("takelistid") %>)">
 <%
 loopid=loopid+1
  Else %><img name="" src="images/sub.gif" width="16" height="16" alt=""><% End if %></td>
 <td width="<%=500-30*get_level(Cint(rs("takelistid")))%>"><a href="#"><%=rs("takedesc")%></a></td>
 <td width="50"><%
 if rs("isfinished")=0 then
 response.Write("未")
 else
 response.write("已")
 end if
 %></a></td>
 <td width="80"><%=rs("createtime")%></td>
 <td width="80"><%=rs("starttime")%></td>
 <td width="120"><a href="#" onClick="addtake(<%=rs("takelistid")%>,<%=rs("fk_projectid")%>)">添</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#" onClick="goedt(<%=rs("takelistid")%>)">改</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#" onClick="godel(<%=rs("takelistid")%>)">删</a></td>
  </tr>
  <tr id="input<%=rs("takelistid")%>" style="display:none"><td id="innercontain<%=rs("takelistid")%>"  colspan="<%=6+get_level(rs("takelistid"))%>">
  <%
  innercn=innercn+1
  response.Write("<script language=javascript>"&vbcrlf&"innerc["&innercn&"]="&rs("takelistid")&";"&vbcrlf&"</script>")
  %>
  </td></tr>
</table>
<%
  If hasChild(rs("takelistid")) then
  divid=divid+1
%>
<div id=DIVs md=<%=get_pid(rs("takelistid"))%> Fid=<%=rs("takelistid")%> style="display:none">
<%  CAll WriteCatalog(rs("takelistid"),rs.recordcount) %>
</div>
<%  Else
%>
<%  CAll WriteCatalog(rs("takelistid"),rs.recordcount) %>
<%  End if %>
<%
   rs.movenext
 Loop
 rs.close
 set rs=nothing
 End Sub
%>

<div id="addtk" align="center" title="Takes Add" lang="zh" style="position:absolute;left:350;top:290; width: 400px; height: 89px; display:none">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="200" bgcolor="#A4B6D7"><tr> <td bgcolor="#F2F8FF" style="padding:4px" colspan="2" align="center">
<table width="500"  border="0" cellpadding="2" cellspacing="2" bgcolor="#F2F8FF">
   <tr id="projecthd" style="display:block;">
    <td align="left">&nbsp;</td>
    <td align="left">Project</td>
    <td id="projectinner" align="left">&nbsp;</td>
    <td align="left">&nbsp;</td>
  </tr>
  <tr>
    <td align="left">&nbsp;</td>
    <td align="left">create user</td>
    <td id="createuserinner" align="left">&nbsp;</td>
    <td align="left">&nbsp;</td>
  </tr>
  <tr>
    <td align="left">&nbsp;</td>
    <td align="left">take user</td>
    <td id="takeuserinner" align="left">&nbsp;</td>
    <td align="left">&nbsp;</td>
  </tr>
  <tr>
    <td align="left">&nbsp;</td>
    <td align="left">create time</td>
    <td align="left"><input type="text" size="12" name="createtime" value=""><input type="hidden" name="fid" value=""></td>
    <td align="left">&nbsp;</td>
  </tr>
  <tr>
    <td align="left">&nbsp;</td>
    <td align="left">start time</td>
    <td align="left"><input type="text" size="12" name="starttime"  value=""></td>
    <td align="left">&nbsp;</td>
  </tr>
  <tr>
    <td align="left">&nbsp;</td>
    <td align="left">finish time</td>
    <td align="left"><input type="text" size="12" name="finishtime"  value=""></td>
    <td align="left">&nbsp;</td>
  </tr>
    <tr>
      <td align="left" width="68">&nbsp;</td>
    <td align="left" width="121">Take Description</td>
    <td align="left"><textarea name="takedesc" rows="6" cols="28" style="border:0; "></textarea></td>
    <td align="left">&nbsp;</td>
    </tr>
     <tr>
      <td align="left" width="68">&nbsp;</td>
    <td align="center" width="121"><input type="button" onClick="takesubmit()" value="提交"></td>
    <td align="center" id="canceldiv"></td>
    <td align="left">&nbsp;</td>
    </tr>
</table></td>
          </tr></table></div>
<div id=projlist style="display:none;">
<%
Response.write("<select name=""projectid"">")
do while not Recordset2.eof
Response.write("<option value="&Recordset2("projectid")&">"&Recordset2("projectname")&"</option>")
Recordset2.MoveNext
loop
Response.write("</select>")
%>
</div>
<div id=userlist style="display:none">
<%
Response.write("<select name=""userid"">")
do while not Recordset1.eof
Response.write("<option value="&Recordset1("userid")&">"&Recordset1("username")&"</option>")
Recordset1.MoveNext
loop
Response.write("</select>")
%>
</div>
<%
  response.Write("<script language=javascript> var loopnub="&innercn&"</script>")
%>
<div id=eddiv align="center" title="Takes Edit" lang="zh" onMouseDown="catchFlyBar()" onMouseUp="releaseFlyBar()" style="position:absolute;left:150px;top:227px; width: 500px; height: 89px; background-color:#FFFFFF; display:none">
</div>
<script>
  document.getElementById("createuserinner").innerHTML=document.getElementById("userlist").innerHTML
  document.getElementById("takeuserinner").innerHTML=document.getElementById("userlist").innerHTML
  var tempstr=document.getElementById("addtk").innerHTML
  document.getElementById("addtk").innerHTML=""
  var projstr=document.getElementById("projlist").innerHTML
  document.getElementById("projlist").innerHTML=""
</script>
</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
<%
Recordset2.Close()
Set Recordset2 = Nothing
%>

A university plans to launch a Smart Parking System (SPS) to improve on-campus parking efficiency and management transparency. The system should allow users to view available parking spaces, reserve a parking spot, record entry and exit times, calculate parking fees, and make online payments. Administrators should be able to monitor parking usage, update parking space status, handle exceptions, and generate statistical reports. The system involves five main classes: ● User: A person who uses the SPS to view parking availability, make reservations, and manage their parking activities. ● ParkingSpot: Represents individual parking spaces with basic details such as location and availability. ● Reservation: Handles the user’s parking booking details, including the reserved time period. ● Payment: Processes payments for completed parking reservations. ● AdminManagement: Allows system administrators to update parking spot availability and view or manage parking-related records. Q1. Class Diagram (15 marks) In order to translate the case scenario into a software system, we need to model its structure at a high level. Based on the scenario above, draw a class diagram for the SPS. The class diagram should reflect the core logic of the system. Hints: 1. Include all of the above classes: User, ParkingSpot, Reservation, Payment, and AdminManagement (you may add more classes if needed). 2. Show the key attributes, methods, and the relationships between classes (e.g., association, aggregation, etc) together with multiplicities.分析User要作为父吗,还是作为就行了
最新发布
11-24
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值