javaweb 课程设计编码和设计文档

企业办公软件设计文档javascript

1引言  java

  1.1编写目的node

  OA办公自动化系统详细设计是设计的第三个阶段,这个阶段的主要任务是在OA办公自动化系统概要设计书基础上,对概要设计中产生的功能模块进行过程描述,设计功能模块的内部细节,包括算法和详细数据结构,为编写源代码提供必要的说明。
概要设计解决了软件系统整体结构设计的问题,包括整个软件系统的结构、模块划分、模块功能和模块间的联系等。详细设计则要解决如何实现各个模块的内部功能,即模块设计。具体的说,模块设计就是要为已经产生的OA办公自动化各子系统设计详细的算法。但这并不等同于系统实现阶段用具体的语言编码,它只是对实现细节做精确的描述,这样编码阶段就能够将详细设计中对功能实现的描述,直接翻译、转化为用某种程序设计语言书写的程序。算法

  1.2背景数据库

  为了能跟上现代社会社会生活中高效率的工做节奏,根据企业需求编写了OA办公自动化系统,以达到提升企业工做效率的目的。安全

2程序系统的结构

 

3程序登陆功能设计服务器

  3.1程序描述数据结构

改程序时OA办公自动化的入口,体现了程序的安全性
(1)功能类型:查询数据
(2)功能描述:提升系统的安全性
(3)前提业务:无
(4)后继业务:04(日程管理)
(5)功能约束:权限约束(6)操做权限:系统管理员,登陆用户。  app

  3.2功能函数

(1)录入项检测使用javascript和后台代码实现(各项必须非空)(2)在Login.aspx.cs中只提交用户名和密码;
数据处理:1.登陆验证,2.记录登陆用户信息

  3.3性能

确保系统能正确运行和进行高效访问。  

  3.4输入项

  3.5输出项

页面能正确的跳转到日程管理模块下的我的便签页面下。

  3.6算法

  1.登陆验证

 1  UserInfo user;  2     LoginLog log = new LoginLog();  3     log.UserId = txtUserId.Value;  4     log.LoginTime = DateTime.Now;  5     log.LoginUserIp = Request.UserHostAddress.ToString();  6     if (this.txtUserId.Value.Trim().Length == 0)  7  {  8         this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用户名不能为空!');</script>");  9  txtUserId.Focus(); 10         return; 11  } 12     if (this.txtPassword.Value.Trim().Length == 0) 13  { 14         this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('密码不能为空!');</script>"); 15  txtPassword.Focus(); 16         return; 17 } 18 
19     string login = this.txtUserId.Value.ToString(); 20     bool yes = UserInfoManager.IsUserIdExist(login); 21     if (yes) 22  { 23         log.LoginDesc = "用户登陆失败,用户名或密码不正确。"; 24         log.IfSuccess = 0; 25  LoginLogManager.AddLoginLog(log); 26 
27         this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用户名或密码不正确!');</script>"); 28  } 29     else
30  { 31         this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('您输入的用户名不存在,请从新输入!');</script>"); 32         this.txtUserId.Value = ""; 33         this.txtUserId.Focus(); 34     }

  2.记录登陆用户信息

 1 UserInfo user;  2             LoginLog log = new LoginLog();  3 //获取用户登陆名
 4             log.UserId = txtUserId.Value;  5 //获取登陆时间
 6             log.LoginTime = DateTime.Now;  7    log.LoginUserIp = Request.UserHostAddress.ToString();  8             log.LoginDesc = "用户登陆成功";  9             log.IfSuccess = 1; 10 //数据验证成功着将数据传入查询方法进行数据操做
11  LoginLogManager.AddLoginLog(log); 12 //获取当前登陆用户
13             Session["CurrentUser"] = user; 14 //判断用户角色进行页面转换
15             if (user.RoleInfo.RoleId == 1) 16  { 17                 Response.Redirect("~/ManualSign/ManualSign.aspx"); 18  } 19             else
20  { 21                 Response.Redirect("~/ScheduleManage/PersonNote/PersonNote.aspx"); 22        }

3.7流程逻辑

 3.8接口

  本模块式系统的启动模块,他须要用户交互输入用户ID、密码;它调用系统的主控制模块。

3.9存储分配

3.10注释设计

  模块首部的注释:用户验证程序。对调用函数的注释:调用加密函数MD5

3.11限制条件

  当系统第一次使用时,具备统一的用户ID和密码;管理员帐号和*******。在三次验证错误后,系统将自动关闭。

3.12测试计划

  初次安装该系统后,测试初始用户ID和密码可否正确登陆到系统;正确登录后,对用户名和密码进行更改;采用刚修改过的用户ID和密码登录,应该可以正确登陆。

4.程序主页设计

 4.1程序描述
(1)功能类型:查询、添加、修改数据
(2)功能描述:按照要求对数据进行查找、添加、修改
(3)前提业务:登陆用户为系统管理员
(4)后继业务:密码修改、从新登陆、
(5)功能约束:权限约束
(6)操做权限:登陆用户

4.2功能

  1.从新登陆,回转到登陆页面进行从新输入数据进行登陆;
  2.修改密码,经过Session获取当前登陆用户信息,根据用户信息进行密码修改;
  3.我的便签盒添加便签在日程管理有讲解;

4.3性能

  能进行数据的高效访问

4.4输入项

注:添加便签和修改便签输入项在日程管理中有说明

4.5输出项

  我的日程信息

4.6 流程逻辑

  1.从新登陆

图3从新登陆

2.修改密码

图4修改密码


注:添加和修改便签在日程管理中有说明;

4.7接口

图5接口

4.8存储分配

4.9注释设计

  1.加在模块首部的注释;
  2.加在各分枝点处的注释;
  3.对各变量的功能、范围、缺省条件等所加的注释;
  4.对使用的逻辑所加的注释

4.10限制条件

  修改密码时,需先输入原始的密码,验证正确后方可进行从新设置密码的操做。

4.11测试计划

  主要对主页设计的几个模块进行测试,用户界面测试:测试对象控件或访问入口正确,符合用户需求;界面风格统一,界面美观,直观。操做有好,人性化,易操做。

5程序日程管理设计

5.1程序描述

(1)功能类型:查看、添加、修改、删除数据
(2)功能描述:按照要求对数据进行查查看、添加、修改并删除
(3)前提业务:登陆用户为系统管理员
(4)后继业务:031(个人日程)032(部门日程)033(个人便签)
(5)功能约束:权限约束
(6)操做权限:系统管理员、通常登陆用户,

5.2功能

  1.利用树形控件加载出功能页面的连接
  2.在个人日程子模块中添加日程是在时间列表控件中点击连接进行跳转

5.3性能

  确保系统能高效的进行数据访问

5.4输入项

表5添加个人日程安排

5.5输出项

  查看:显示数据库中存在的数据
  删除:显示删除后数据库中存在的数据
  添加:将数据天津啊进入数据库在显示添加后的数据信息
  修改:对数据库中本来存在的某条数据进行修改后在进行展现

5.6算法

1 HyperLink link = new HyperLink(); 2                 link.ImageUrl = "~/images/add_Schedule.gif"; 3                 link.ToolTip = "新增我的日程"; 4                 link.NavigateUrl = "SaveMySchedule.aspx?userid=" + user.UserId + "&today=" +day.Date.ToShortDateString(); 5        tc.Controls.Add(link);

5.7流程逻辑

  1.部门日程

 

图6部门日程

2.个人日程

图7个人日程

3.个人便签

图8个人便签

5.8接口

图9接口

5.9存储分配

表8日程信息表

5.10注释设计

  1.加在模块首部的注释;
  2.加在各分枝点处的注释;
  3.对各变量的功能、范围、缺省条件等所加的注释;
  4.对使用的逻辑所加的注释

5.11限制条件  

  在界面上控制输入输出,服务器端若是出错也会也会返回出错信息

5.12测试计划

  对日程设计进行项目跟踪测试,对输入信息和输出信息进行对比,找出其中可能出现的异常,对此进行改善。

6程序4系统管理设计

6.1程序描述

(1)功能类型:查看、添加、修改、删除数据(2)功能描述:按照要求对数据进行查查看、添加、修改并删除(3)前提业务:登陆用户为系统管理员
(4)后继业务:051 角色管理 052 登录日志 053操做日志 054 菜单排序
(5)功能约束:权限约束
(6)操做权限:系统管理员

6.2功能

 

图10功能图

  组织机构部门设置、用户管理、流程管理、表单管理、公文模版管理、角色管理、系统设置、系统日志、数据备份和恢复管理

6.3性能

  系统能高效的进行数据访问和各项操做的更改

6.4输入项

表9输入功能图

6.5输出项

  角色管理:输出角色信息;登陆日志:输出相应时间内的登陆日志
  操做日志:输出相应时间内的操做日志
  菜单排序:输出经过上下移动后的树形菜单排序状况

6.6算法

  1.分配角色权限中关于复选框选择的问题,怎样处理好选择一个模块时选择其下的子模块而不选中其余模块的子模块,须要使用用户自定义控件来完成,在后台代码显示方法中这样写
  //获得全部父级点信息

  IList sysFuns = SysFunManager.GetAllParentNodeInfo();
  //根据父节点获得对应子节点生成用户控件,而后循环插入到PlaceHolder容器中

 1 foreach (SysFun sysFun in sysFuns)  2  {  3         //获得父节点Id 
 4         string nodeId = sysFun.NodeId.ToString();  5         //获得父节点名称
 6         string displayName = sysFun.DisplayName;  7         //实例化用户控件 
 8         SysManage_RoleManage_WebUserControl  roleCotrol = (SysManage_RoleManage_WebUserControl)LoadControl(@"RoleUserControl.ascx");  9         //实例化隐藏区域,用以存父节点Id
10         HtmlInputHidden hidParentMeu = (HtmlInputHidden)roleCotrol.FindControl("hidParentMenu"); 11         hidParentMeu.Value = nodeId; 12         //实例化隐藏区域,用以存储角色Id
13         HtmlInputHidden hidRoleId = (HtmlInputHidden)roleCotrol.FindControl("hidRoleId"); 14         hidRoleId.Value = roleId.ToString(); 15 
16     //实例化用户控件中的CheckBox 
17     CheckBox chkParentMenu = (CheckBox)roleCotrol.FindControl("chkParentMenu"); 18 
19     //显示父菜单名称
20     chkParentMenu.Text = displayName; 21 
22     if (arrRoleParentNodes.Contains(nodeId)) 23  { 24         chkParentMenu.Checked = true; 25  } 26     //把父节点生成的用户控件追加打破PlaceHolder容器中
27  phRoleDistribute.Controls.Add(roleCotrol); 28 }

  2.查看登陆日志和操做日志时,开始时间和结束时间的获取使用javascript代码来实现

 1 function fillstring(str)  2  {  3             if(str.length==1)  4  {  5                 str = "0" + str;  6  }  7             return(str);  8  }  9  function quickseldate(type) 10  { 11  var begintime,endtime; 12             var oneminute = 60*1000; 13             var onehour   = 60*oneminute; 14             var oneday    = 24*onehour; 15             var oneweek   = 7*oneday; 16         
17         var todayDate = new Date(); 18         var date = todayDate.getDate(); 19         var month= todayDate.getMonth() +1; 20         var year= todayDate.getYear(); 21         var day = todayDate.getDay(); 22         if(navigator.appName == "Netscape") 23  { 24             year = 1900 + year; 25  } 26 
27         //-->
28                     
29         if(type=="day") 30  { 31             begintime = year.toString() + "-" + fillstring(month.toString()) + "-" + 
32 
33 fillstring(date.toString()); 34                 endtime = begintime; 35  } 36             else if(type=="week") 37  { 38                 var daytoMon = day-1; 39                 if(day==0) 40                     daytoMon = 6; 41             
42             todayDate.setTime(todayDate.getTime()-daytoMon*oneday); 43             date = todayDate.getDate(); 44             month= todayDate.getMonth() +1; 45             year= todayDate.getYear(); 46             day = todayDate.getDay(); 47             
48             begintime = year.toString() + "-" + fillstring(month.toString()) + "-" + 
49 
50 fillstring(date.toString()); 51             
52             todayDate.setTime(todayDate.getTime()+6*oneday); 53             
54             date = todayDate.getDate(); 55             month= todayDate.getMonth() +1; 56             year= todayDate.getYear(); 57             
58             endtime = year.toString() + "-" + fillstring(month.toString()) + "-" + 
59 
60 fillstring(date.toString()); 61  } 62         else if(type=="month") 63  { 64             var dateto1 = date-1; 65             
66             todayDate.setTime(todayDate.getTime()-dateto1*oneday); 67             date = todayDate.getDate(); 68             month= todayDate.getMonth() +1; 69             year= todayDate.getYear(); 70             day = todayDate.getDay(); 71             
72             begintime = year.toString() + "-" + fillstring(month.toString()) + "-" + 
73 
74 fillstring(date.toString()); 75             
76  todayDate.setMonth(month); 77             todayDate.setTime(todayDate.getTime()-oneday); 78             
79             date = todayDate.getDate(); 80             month= todayDate.getMonth() +1; 81             year= todayDate.getYear(); 82             
83             endtime = year.toString() + "-" + fillstring(month.toString()) + "-" + 
84 
85 fillstring(date.toString()); 86 
87  } 88 
89         document.getElementById("<% =txtBeginTime.ClientID %>").value = begintime; 90 document.getElementById("<% =txtEndTime.ClientID %>").value = endtime;

6.7流程逻辑

1.角色管理

 

在这里插入图片描述
图11角色管理图

2.登陆日志

在这里插入图片描述
图12登陆日志图

3.操做日志


在这里插入图片描述
图13操做日志

4.菜单排序

在这里插入图片描述

图14菜单排序

6.8接口

在这里插入图片描述
图15接口图形

6.9存储分配

表10登陆日志信息表

6.10注释设计

  1.加在模块首部的注释;
  2.加在各分枝点处的注释;
  3.对各变量的功能、范围、缺省条件等所加的注释;
  4.对使用的逻辑所加的注释

6.11限制条件

  全部用户的权限都通过严格的设置,不能进行权限外的操做。用户组分为三组:管理员,用户,游客。

6.12测试计划

  系统集成测试,各个单元模块合并的接口测试,对整个产品进行全面的测试,要符合客户的需求,包括软件,硬件。

七.结语

本次文档编写企业管理的主要功能的设计与实现。

相关文章
相关标签/搜索