目录
前言 II
概要 III
ABSTRACT IV
目录 V
一、系统概述 1
1.1系统分析 1
1.1.1背景介绍 1
1.1.2需求分析 2
二、系统概述与总体设计原理 3
2.1项目实时管理系统模块的功能原理 3
2.2项目实时管理系统模块的构成模块 3
2.3规划系统文件 4
2.3.1规划文件 4
2.3.2选择开发工具 6
三、数据库设计 7
3.1数据库描述 7
3.2数据库分析 7
3.3数据库概念结构设计 7
3.3.1系统基本表 7
3.3.2项目信息表 8
3.3.3单位信息表 8
3.3.4人员信息表 9
3.4数据库逻辑结构设计 9
3.4.1系统基本表 9
3.4.2项目信息表 11
3.4.3单位信息表 12
3.4.4人员信息表 13
3.5数据库系统参数配置 14
3.6数据访问层设计 15
3.6.1 用户登录模块 16
3.6.2 项目信息模块 17
3.6.3 单位信息模块 18
3.6.4 人员信息模块 18
四、系统编码实现 19
4.1Restful API接口设计 19
4.1.1 Restful API接口说明 19
4.1.2 Restful API接口设计 20
4.2用户登录模块 21
4.2.1登录模块 21
4.2.2注册小模块 22
4.2.3服务器配置 24
4.3项目信息模块 25
4.4单位信息模块 29
4.5人员信息模块 30
4.6附属功能模块 31
五、系统测试 32
5.1测试工具 32
5.2功能性测试、非功能性测试 32
5.2.1 功能性测试 32
5.2.2 非功能性测试 34
六、发布及管理 36
6.1本地发布 36
6.1.1 本地发布概述 36
6.1.2 本地文件发布 36
6.2.3 本地IIS目标IP发布 38
6.2 远程服务器发布 39
6.2.1远程服务器发布概述 39
6.2.2远程服务器环境搭建 39
6.2.3远程服务器连接 40
结束语 41
致谢 42
参考文献 43
二、系统概述与总体设计原理
2.1项目实时管理系统模块的功能原理
基于Restful API的项目实施管理系统的实现原理非常清晰,其主要目的是实现项目实施的进度管理,其次附带一些辅助性的功能,其目的是提高用户的用户体验以及应用程序的多元化、丰富应用程序的内涵、充实应用程序的内容。其各个主要模块的功能原理如下:
用户登录模块:本模块主要分为登录和注册两部分
(1)登录:本部分采用Basic认证,通过提交登录信息,应用程序调用Restful API接口,通过Ajax请求将接口将票据信息加入到请求的Head里面,将票据信息随着请求一起发送到服务端去,验证登录。
(2)注册:本部分基于MVC框架实现简易的Web应用,通过https的双向认证完成注册(基于系统安全性考虑),并将注册信息保存到数据库中。
项目信息模块:本模块是项目实施管理系统的最为重要核心模块,所有的执行方案全部通过调用Restful API接口的方式实现。
单位信息模块:本模块大部分功能是基于Restful API实现的,但少部分内容是直接通过封装的类库文件直接实现的。类库采用C++语言编写,主要考虑到C++语言的处理速度会相对较快。
人员信息模块:本文转载自http://www.biyezuopin.vip/onews.asp?id=14745本模块由于涉及的内容较少,经过考虑全部由封装的类库文件直接实现(类库文件有C#编写)。
三、数据库设计
3.1数据库描述
数据库,顾名思义“数据的仓库”,是数据集中管理的计算机科学的重要技术分支。广泛应用于各行各业,逐渐取代了传统的数据存储方式。因为数据库具有数据结构化、最低冗余度、易于拓展和编制、易于数据集中管理等优势,几乎所有的应用程序和基于数据的各类系统都是建立在数据库之上的。
本系统基于公司实际需求与前期各方面影响因素的分析采用了SQL Server数据库,作为一种常见的关系型数据库,SQL Server很好得满足了开发需求,同时满足了实际应用,能够有序合理地存储海量数据。
3.2数据库分析
本系统基于数据库GraduationThesis进行开发,该数据库存储主要存储三大类数据信息,主要包括基本资料、项目相关进程以及资金投入。共计7张数据表,同时后续鉴于数据储备增大,系统会适当地自动增加新表。
3.3数据库概念结构设计
鉴于本系统是基于数据库的基础之上建立的,因此有一个健壮完善的数据库尤为重要,而设计一个健壮优秀的数据库最重要的就是数据库概念结构设计,可以说数据库的概念结构设计将会影响后期的数据库性能以及系统的性能,以下通过实体E-R图简述各个表的结构层次。
3.3.1系统基本表
系统基本表主要分为:注册表(User_RegisteInfo)、登陆验证表(User_Login)、系统权限验证表(System_ Jurisdiction),其中包含一个用户实体,详细请参考3.3.1-1用户实体E-R图。
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Web.Services;
/// <summary>
/// GraduationThesisTest 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
// [System.Web.Script.Services.ScriptService]
public class GraduationThesisTest : System.Web.Services.WebService
{
public GraduationThesisTest()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
public string strcon = "data source=.;initial catalog=GraduationThesis;user id=sa;password=123456";
/// <summary>
/// Insert用户信息表
/// </summary>
/// <param name="UserRegiste_Name">4132</param>
/// <param name="UserRegiste_Sex"></param>
/// <param name="UserRegiste_Phone"></param>
/// <param name="UserRegiste_Cardid"></param>
/// <param name="UserRegiste_Email"></param>
/// <returns></returns>
[WebMethod(Description ="123\r\n45")]
public string Insert_User_RegisteInfo(string UserRegiste_Name, string UserRegiste_Sex, string UserRegiste_Phone, string UserRegiste_Cardid, string UserRegiste_Email)
{
string Login_id = GetLoginid();
try
{
//检测Login_id是否正常
int id = int.Parse(Login_id);
try
{
using (SqlConnection con = new SqlConnection(strcon))
{
con.Open();
//填写用户信息表
SqlCommand command = new SqlCommand("insert into User_RegisteInfo values(@UserLogin_ID,@UserRegiste_Name,@UserRegiste_Sex,@UserRegiste_Phone,@UserRegiste_Cardid,@UserRegiste_Email)", con);
command.Parameters.Add("UserLogin_ID", SqlDbType.NVarChar).Value = Login_id;
command.Parameters.Add("UserRegiste_Name", SqlDbType.NVarChar).Value = UserRegiste_Name;
command.Parameters.Add("UserRegiste_Sex", SqlDbType.NVarChar).Value = UserRegiste_Sex;
command.Parameters.Add("UserRegiste_Phone", SqlDbType.NVarChar).Value = UserRegiste_Phone;
command.Parameters.Add("UserRegiste_Cardid", SqlDbType.NVarChar).Value = UserRegiste_Cardid;
command.Parameters.Add("UserRegiste_Email", SqlDbType.NVarChar).Value = UserRegiste_Email;
command.ExecuteNonQuery();
con.Close();
return Insert_User_Login(UserRegiste_Name, "000000");
}
}
catch (Exception ex)
{
return ex.ToString();
}
}
catch
{
return Login_id;
}
}
/// <summary>
/// Select用户信息表
/// </summary>
/// <param name="UserRegiste_Name"></param>
/// <param name="UserRegiste_Sex"></param>
/// <param name="UserRegiste_Phone"></param>
/// <param name="UserRegiste_Cardid"></param>
/// <param name="UserRegiste_Email"></param>
/// <returns></returns>
[WebMethod]
public string Select_Insert_User_RegisteInfo(string UserRegiste_Name, string UserRegiste_Sex, string UserRegiste_Phone, string UserRegiste_Cardid, string UserRegiste_Email)
{
return "";
}
/// <summary>
/// Insert登录信息表
/// </summary>
/// <returns></returns>
private string Insert_User_Login(string username, string password)
{
try
{
using (SqlConnection con = new SqlConnection(strcon))
{
con.Open();
SqlCommand command = new SqlCommand("insert into User_Login values(@UserLogin_Name,@UserLogin_Password)", con);
command.Parameters.Add("UserLogin_Name", SqlDbType.NVarChar).Value = username;
command.Parameters.Add("UserLogin_Password", SqlDbType.NVarChar).Value = password;
command.ExecuteNonQuery();
con.Close();
}
List<User_LoginInfo> user_LoginInfos = new List<User_LoginInfo>();
User_LoginInfo user_LoginInfo = new User_LoginInfo();
user_LoginInfo.Result = "注册成功!请登录系统进行密码重置!";
user_LoginInfo.Name = "用户名:" + username;
user_LoginInfo.Password = "初始密码:" + password;
user_LoginInfos.Add(user_LoginInfo);
return JsonConvert.SerializeObject(user_LoginInfos);
}
catch (Exception ex)
{
return ex.ToString();
}
}
/// <summary>
/// 获取登录ID
/// </summary>
/// <returns></returns>
private string GetLoginid()
{
string id = null;
try
{
using (SqlConnection con = new SqlConnection(strcon))
{
con.Open();
//获取登录编号
SqlCommand command = new SqlCommand("select top 1 * from User_Login order by UserLogin_ID desc", con);
SqlDataReader dr = command.ExecuteReader();
if (dr.Read())
id = (int.Parse(dr[0].ToString()) + 1).ToString();
dr.Close();
con.Close();
}
return id;
}
catch (Exception ex)
{
return ex.ToString();
}
}
/// <summary>
/// 登录User_LoginInfo实体
/// </summary>
public class User_LoginInfo
{
public string Result { get; set; }
public string Name { get; set; }
public string Password { get; set; }
}
/// <summary>
/// 用户信息实体
/// </summary>
public class User_RegisteInfo
{
public string UserLogin_ID { get; set; }
public string UserRegiste_Name { get; set; }
public string UserRegiste_Sex { get; set; }
public string UserRegiste_Phone { get; set; }
public string UserRegiste_Cardid { get; set; }
public string UserRegiste_Email { get; set; }
}
}