干货——asp.net快速上手教程6项目实战2

干货——asp.net快速上手教程6项目实战2

图书管理系统

本次内容

在上一次的教程中我们已经完成了对于系统功能的分析和系统数据库的设计,从这次教程开始,我们开始着手实现这个小的实战项目,今天我们的主要任务是搭建出这个小系统的一个整体框架。

主要任务

  1. 将AdminLTE前台框架移入本系统当中

  2. 完成对于数据库操作的工具类

  3. 完成一个基本的数据操作类

  4. 配置一下整个项目的信息

AdminLTE

解压下载的adminLTE后,我们可以看到这么几个文件

干货——asp.net快速上手教程6项目实战2

解压后得到的文件

根据官方文档的显示,我们需要将这么几个文件夹引入到我们的项目当中

干货——asp.net快速上手教程6项目实战2

需要引入的文件夹

当然,除了这几个文件夹之外,我们还需要引入bootstrap的源码

在项目中新建一个文件夹,命名为"AdminLTE",并将我们需要的文件都复制粘贴到这个文件夹中

干货——asp.net快速上手教程6项目实战2

将文件引入项目

在网站的根目录中新建一个Demo页面,并用adminLTE中的starter.html页面替换该页面的内容:

干货——asp.net快速上手教程6项目实战2

新建Demo.aspx页面

注意事项

  1. aspx页面头部的那一段标签不可删除

  2. starter.html中body标签内的东西应该全部放到Demo.aspx的form表单中

  3. 将原页面中的所有form标签全部替换为div标签

  4. 需要修改原页面中所有引用的路径(本案例中将所有的css、js、图片都放到了AdminLTE中所有需要在这些引用路径的前面加上“/AdminLTE/”)

AdminLTE页面结构说明

干货——asp.net快速上手教程6项目实战2

adminLTE页面结构

干货——asp.net快速上手教程6项目实战2

页面对应图片

右键选中Demo.aspx浏览器查看

干货——asp.net快速上手教程6项目实战2

成功引入AdminLTE

操作数据库的工具类

需要引入Newtonsoft.Json.dll做一些json的操作

干货——asp.net快速上手教程6项目实战2

第一步

干货——asp.net快速上手教程6项目实战2

第二步

如果需要这个dll的可以在评论上说一声,文章中不能发链接。。。。

上干货

using System;

using System.Collections;

using System.Collections.Generic;

using System.Data;

using System.Data.SqlClient;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using Newtonsoft.Json;

public class MicrosoftSQLServer

{

SqlConnection MSCon;//数据库连接对象

public string ConnectionString;//数据库连接字符串

///

/// 构造方法

///

/// 数据库连接字符串

public MicrosoftSQLServer(string ConnStr)

{

ConnectionString = ConnStr;

MSCon = new SqlConnection(ConnectionString);

}

///

/// 将json字符串转换为字典

///

/// json字符串

/// 字典

void ParametersSerialize(string JSONText, ref Dictionary DataParameters)

{

DataParameters = JsonConvert.DeserializeObject>(JSONText);

}

#region 执行存储过程-返回执行结果(return)值

///

/// 执行存储过程-返回执行结果(return)值

///

///

存储过程名称

///

public object Exec_Proc_Result(string ProcName)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(ProcName, MSCon);

cmd.CommandType = CommandType.StoredProcedure;

SqlParameter par = new SqlParameter();

par.Direction = ParameterDirection.ReturnValue;

cmd.Parameters.Add(par);

cmd.ExecuteNonQuery();

MSCon.Close();

return par.Value;

}

///

/// 执行带参数的存储过程

///

/// 存储过程名称

/// 参数(json字符串)

///

public object Exec_Proc_Result(string ProcName, string Parameters)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(ProcName, MSCon);

cmd.CommandType = CommandType.StoredProcedure;

Dictionary DataPars = new Dictionary();

ParametersSerialize(Parameters, ref DataPars);

foreach (var dic in DataPars)

{

cmd.Parameters.AddWithValue(dic.Key, dic.Value);

}

SqlParameter par = new SqlParameter();

par.Direction = ParameterDirection.ReturnValue;

cmd.Parameters.Add(par);

cmd.ExecuteNonQuery();

MSCon.Close();

return par.Value;

}

///

/// 执行带参数的存储过程

///

/// 存储过程名称

/// 参数(字典)

///

public object Exec_Proc_Result(string ProcName, Dictionary Parameters)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(ProcName, MSCon);

cmd.CommandType = CommandType.StoredProcedure;

foreach (var dic in Parameters)

{

cmd.Parameters.AddWithValue(dic.Key, dic.Value);

}

SqlParameter par = new SqlParameter();

par.Direction = ParameterDirection.ReturnValue;

cmd.Parameters.Add(par);

cmd.ExecuteNonQuery();

MSCon.Close();

return par.Value;

}

#endregion

#region 执行查询-返回响应行数

///

/// 执行sql语句

///

/// sql语句

///

public int Execute_NonQuery(string SQLText)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(SQLText, MSCon);

int result = cmd.ExecuteNonQuery();

MSCon.Close();

return result;

}

///

/// 执行sql语句或存储过程

///

/// sql语句或存储过程名称

/// 参数(json)

/// 是否为存储过程

///

public int Execute_NonQuery(string SQLText, string Parameters, bool IsProc)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(SQLText, MSCon);

if (IsProc)

{

cmd.CommandType = CommandType.StoredProcedure;

}

Dictionary DataPars = new Dictionary();

ParametersSerialize(Parameters, ref DataPars);

foreach (var dic in DataPars)

{

cmd.Parameters.AddWithValue(dic.Key, dic.Value);

}

int result = cmd.ExecuteNonQuery();

MSCon.Close();

return result;

}

///

/// 执行sql语句或存储过程

///

/// sql语句或存储过程名称

/// 参数(字典)

///

是否为存储过程

///

public int Execute_NonQuery(string SQLText, Dictionary Parameters, bool IsProc)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(SQLText, MSCon);

if (IsProc)

{

cmd.CommandType = CommandType.StoredProcedure;

}

foreach (var dic in Parameters)

{

cmd.Parameters.AddWithValue(dic.Key, dic.Value);

}

int result = cmd.ExecuteNonQuery();

MSCon.Close();

return result;

}

#endregion

#region 执行查询-返回首行首列

///

/// 执行sql语句

///

/// sql语句

///

public object Execute_Scalar(string SQLText)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(SQLText, MSCon);

object result = cmd.ExecuteScalar();

MSCon.Close();

return result;

}

///

/// 执行sql语句

///

/// sql语句

/// 参数(json)

///

public object Execute_Scalar(string SQLText, string Parameters)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(SQLText, MSCon);

Dictionary

DataPars = new Dictionary();

ParametersSerialize(Parameters, ref DataPars);

foreach (var dic in DataPars)

{

cmd.Parameters.AddWithValue(dic.Key, dic.Value);

}

object result = cmd.ExecuteScalar();

MSCon.Close();

return result;

}

///

/// 执行sql语句

///

/// sql语句

/// 参数(字典)

///

public object Execute_Scalar(string SQLText, Dictionary Parameters)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(SQLText, MSCon);

foreach (var dic in Parameters)

{

cmd.Parameters.AddWithValue(dic.Key, dic.Value);

}

object result = cmd.ExecuteScalar();

MSCon.Close();

return result;

}

#endregion

#region 执行查询-返回DataTable数据

///

/// 执行sql语句或存储过程

///

/// sql语句或存储过程名称

/// 是否为存储过程

///

public DataTable Execute_Select_ResultTable(string SQLSelectText, bool IsProc)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(SQLSelectText, MSCon);

if (IsProc)

{

cmd.CommandType = CommandType.StoredProcedure;

}

SqlDataAdapter sda = new SqlDataAdapter(cmd);

DataTable result = new DataTable();

sda.Fill(result);

MSCon.Close();

sda.Dispose();

return result;

}

///

/// 执行sql语句或存储过程

///

/// sql语句或存储过程名称

/// 参数(json)

/// 是否为存储过程

///

public DataTable Execute_Select_ResultTable(string SQLSelectText, string Parameters, bool IsProc)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(SQLSelectText, MSCon);

if (IsProc)

{

cmd.CommandType = CommandType.StoredProcedure;

}

Dictionary DataPars = new Dictionary();

ParametersSerialize(Parameters, ref DataPars);

foreach (var dic in DataPars)

{

cmd.Parameters.AddWithValue(dic.Key, dic.Value);

}

SqlDataAdapter sda = new SqlDataAdapter(cmd);

DataTable result = new DataTable();

sda.Fill(result);

MSCon.Close();

sda.Dispose();

return result;

}

///

/// 执行sql语句或存储过程

///

/// sql语句或存储过程名称

/// 参数(字典)

/// 是否为存储过程

///

public DataTable Execute_Select_ResultTable(string SQLSelectText, Dictionary Parameters, bool IsProc)

{

MSCon.Open();

SqlCommand cmd = new SqlCommand(SQLSelectText, MSCon);

if (IsProc)

{

cmd.CommandType = CommandType.StoredProcedure;

}

foreach (var dic in Parameters)

{

cmd.Parameters.AddWithValue(dic.Key, dic.Value);

}

SqlDataAdapter sda = new SqlDataAdapter(cmd);

DataTable result = new DataTable();

sda.Fill(result);

MSCon.Close();

sda.Dispose();

return result;

}

#endregion

#region 执行查询-返回表的JSON数据

///

/// 执行sql语句或存储过程

///

/// sql语句或存储过程名称

/// 是否为存储过程

///

public string Execute_Select_ResultTableJSON(string SQLSelectText, bool IsProc)

{

return JsonConvert.SerializeObject(Execute_Select_ResultTable(SQLSelectText, IsProc));

}

///

/// 执行sql语句或存储过程

///

/// sql语句或存储过程名称

/// 参数(json)

/// 是否为存储过程

///

public string Execute_Select_ResultTableJSON(string SQLSelectText, string Parameters, bool IsProc)

{

return JsonConvert.SerializeObject(Execute_Select_ResultTable(SQLSelectText, Parameters, IsProc));

}

///

/// 执行sql语句或存储过程

///

/// sql语句或存储过程名称

/// 参数(字典)

/// 是否为存储过程

///

public string Execute_Select_ResultTableJSON(string SQLSelectText, Dictionary Parameters, bool IsProc)

{

return JsonConvert.SerializeObject(Execute_Select_ResultTable(SQLSelectText, Parameters, IsProc));

}

#endregion

}

数据工具类

继续上干货,这个类现在暂时只有一些操作时间戳的方法,之后会逐步完善(同样需要

Newtonsoft.Json.dll

using System;

using System.Collections.Generic;

using System.Data;

using System.Linq;

using System.Text;

using Newtonsoft.Json;

///

/// 用于数据处理及转换的一些类

///

public class DataTools

{

///

/// 获取当前时间戳

///

///

public string getTimeStamp()

{

TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);

return Convert.ToInt64(ts.TotalMilliseconds).ToString();

}

///

/// 将时间戳转为时间

///

/// 时间戳(从DateTime(1970, 1, 1, 0, 0, 0, 0)开始)

///

public string timeStampToDate(string time)

{

DateTime defaultTime = new DateTime(1970, 1, 1, 0, 0, 0);

long defaultTick = defaultTime.Ticks;

long timeTick = defaultTick + Convert.ToInt64(time) * 10000;

//// 东八区 要加上8个小时

DateTime datatime = new DateTime(timeTick).AddHours(8);

return datatime.ToString();//报名时间

}

///

/// 获取当前时间

///

///

public string getDateTime()

{

return timeStampToDate(getTimeStamp());

}

///

/// 把DataTable中的时间戳转为时间

///

/// DataTable

/// 时间戳列的下标

///

public DataTable dataTableTimeStampToDate(DataTable dt, int temp)

{

DataTable dt_result = new DataTable();

for (int i = 0; i < dt.Columns.Count; i++)

{

dt_result.Columns.Add(dt.Columns[i].ColumnName);

}

for (int i = 0; i < dt.Rows.Count; i++)

{

DataRow dr = dt_result.NewRow();

for (int j = 0; j < dt.Columns.Count; j++)

{

if (j == temp)

{

string time = timeStampToDate(dt.Rows[i][j].ToString());

dr[j] = time;

continue;

}

dr[j] = dt.Rows[i][j].ToString();

}

dt_result.Rows.Add(dr);

}

return dt_result;

}

}

配置项目信息

Web.config文件中添加下面的信息

干货——asp.net快速上手教程6项目实战2

配置文件

新建一个类,SystemInfo,将刚才添加到配置文件中的信息读入到程序中

using System;

using System.Collections.Generic;

using System.Configuration;

using System.Linq;

using System.Web;

///

/// SystemInfo 的摘要说明

///

public class SystemInfo

{

public static string systemName = ConfigurationManager.AppSettings["SystemName"].ToString();

public static string developer = ConfigurationManager.AppSettings["Developer"].ToString();

public static string version = ConfigurationManager.AppSettings["Version"].ToString();

public static string conString = ConfigurationManager.AppSettings["ConString"].ToString();

public SystemInfo()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

}

让我们把这些配置信息加入到刚才的Demo页面中

方法:以这样标签的信息输出到相应的位置

干货——asp.net快速上手教程6项目实战2

显示效果

到此,基本的框架就已经搭建完成了

最后的话

今天的教程完成了图书管理系统项目框架的搭建,一些关键的和常用的方法我们都已经封装成了类,更便于之后的开发,在接下来的教程中我们会逐步的利用这些方法以及之前所学习的东西来完成这个系统~~~

今天的教程就到这里了,有需要源码参考或是有别的什么需要的可以在评论那给我留言~~


分享到:


相關文章: