我的博客,欢迎参观 密码:123
基于asp.net的客户反馈信息系统
系统概述
随着互联网的普及,互联网的应用正深入人们生活的方方面面,用户在使用互联网产品时,可能会遇到界面,功能,使用等问题,也希望反馈产品的功能需求和建议,此时,用户希望有渠道可以方便提交反馈和意见,同时能够知道反馈的状态和结果。
根据客户信息反馈的特点,可将系统使用者分为客户和公司客服两种,客户可以对公司产品提出反馈,查看反馈状态,查看反馈回复,公司客服可以对反馈进行查看,搜索,回复,人工合并,审核,以及状态修改。
功能模块
界面展示
1.注册界面
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" href="layui/css/layui.css" />
<script src="layui/layui.js" type="text/javascript"></script>
<style type="text/css">
body{
background-color:RGB(102,153,153);
}
.leftCss{
margin:50px auto;
/* padding:100px;*/
text-align:center;
color: #333333;
}
.rightCss{
margin:50px auto;
padding:25px;
width:350px;
border-radius:5px;
background-color:rgba(255, 255, 255,0.7);
}
h2{
line-height:50px;
text-align:center;
}
</style>
<title>用户登录</title>
<script>
function LoginLoading(){
var id = document.getElementById("loading");
id.className += " layui-anim layui-anim-rotate layui-anim-loop";
return true;
}
layui.use('form', function () {
var form = layui.form;
});
</script>
</head>
<body >
<div class="layui-container" >
<div class="layui-row">
<a href="Default.aspx"><asp:Image ID="Image2" runat="server" ImageUrl="~/Images/logo.jpg" Height="50px"/></a>
</div>
<hr class="layui-bg-gray" />
<div class="layui-row">
<div class="layui-col-xs7">
<div class="leftCss">
<div>
<asp:Image ID="Image1" runat="server" ImageUrl="~/Images/01.jfif" Height="280px" Width="333px"/>
</div>
<h1><strong>竭诚为您服务!</strong></h1>
</div>
</div>
<div class="layui-col-xs5">
<form id="form1" runat="server" class="">
<div class="rightCss layui-form">
<ul>
<li><h2>用户登录</h2></li>
<li>
<div class="layui-form-item">
<label class="layui-form-label layui-icon layui-icon-username">用户名</label>
<div class="layui-input-block">
<asp:TextBox ID="txtUserName" runat="server" CssClass="layui-input" placeholder="用户名"></asp:TextBox>
<asp:RequiredFieldValidator ID="rvfUserName" runat="server" ControlToValidate="txtUserName" ErrorMessage="用户名不能为空!" Display="None" SetFocusOnError="True"></asp:RequiredFieldValidator>
</div>
</div>
</li>
<li>
<div class="layui-form-item">
<label class="layui-form-label layui-icon layui-icon-password">密 码</label>
<div class="layui-input-block">
<asp:TextBox ID="txtPsd" runat="server" CssClass="layui-input" placeholder="密码" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPsd" runat="server" ErrorMessage="密码不能为空!" ControlToValidate="txtPsd" Display="None" SetFocusOnError="True"></asp:RequiredFieldValidator>
</div>
</div>
</li>
<li>
<div class="layui-form-item">
<label class="layui-form-label" style="width:130px;">
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/GetPassword.aspx">忘记密码?点这里>></asp:HyperLink>
</label>
<div class="layui-input-inline" style="margin-left: 80px;width:100px;">
<input id="LoginType" type="checkbox" runat="server" lay-skin="switch" lay-text="后台登录|普通登录" />
</div>
</div>
</li>
<li>
<div class="layui-form-item">
<asp:LinkButton ID="BtnLogin" runat="server" CssClass="layui-btn layui-btn-fluid layui-btn-radius" OnClick="BtnLogin_Click" OnClientClick="return LoginLoading();">
<i id="loading" class="layui-icon layui-icon-loading"></i>登录
</asp:LinkButton>
</div>
</li>
<li>
<div class="layui-form-item">
<a href="Register.aspx" class="layui-btn layui-btn-fluid layui-btn-radius">前往注册</a>
</div>
</li>
<li>
<div class="layui-form-item">
<asp:Label ID="lblLoginMsg" runat="server" Text="" ForeColor="Red" Font-Bold="False" Font-Size="Large"></asp:Label>
</div>
</li>
</ul>
</div>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowSummary="False" ShowMessageBox="True" />
</form>
</div>
</div>
</div>
</body>
</html>
2.注册界面
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>用户注册</title>
<link rel="stylesheet" href="layui/css/layui.css" />
<script src="layui/layui.js" type="text/javascript"></script>
<style type="text/css">
body{
background-color:RGB(102,153,153);
}
.rightCss{
margin:50px auto;
padding:25px;
width:350px;
border-radius:5px;
background-color:rgba(255, 255, 255,0.7);
}
h2{
line-height:50px;
text-align:center;
}
</style>
</head>
<body >
<div class="layui-container">
<div class="layui-row">
<a href="Default.aspx"><asp:Image ID="Image1" runat="server" ImageUrl="~/Images/logo.jpg" Height="50px"/></a>
</div>
<hr class="layui-bg-gray">
<div class="layui-row">
<form id="form1" runat="server" class="layui-form">
<div class="rightCss">
<ul>
<li><h2>用户注册</h2></li>
<li>
<div class="layui-form-item">
<label class="layui-form-label layui-icon layui-icon-username">用户名</label>
<div class="layui-input-block">
<asp:TextBox ID="txtUserName" runat="server" CssClass="layui-input" placeholder="请输入用户名"></asp:TextBox>
<asp:RequiredFieldValidator ID="rvfUserName" runat="server" ControlToValidate="txtUserName" ErrorMessage="用户名不能为空!" Display="None" SetFocusOnError="True"></asp:RequiredFieldValidator>
</div>
</div>
</li>
<li>
<div class="layui-form-item">
<label class="layui-form-label layui-icon layui-icon-password">密 码</label>
<div class="layui-input-block">
<asp:TextBox ID="txtPsd" runat="server" CssClass="layui-input" placeholder="请输入密码" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPsd" runat="server" ErrorMessage="密码不能为空!" ControlToValidate="txtPsd" Display="None" SetFocusOnError="True"></asp:RequiredFieldValidator>
</div>
</div>
</li>
<li>
<div class="layui-form-item">
<label class="layui-form-label">确认密码</label>
<div class="layui-input-block">
<asp:TextBox ID="PsdConfirm" runat="server" CssClass="layui-input" placeholder="请输入确认密码" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="确认密码不能为空!" ControlToValidate="PsdConfirm" Display="None" SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="两次密码不一致!" ControlToCompare="txtPsd" ControlToValidate="PsdConfirm" Display="None"></asp:CompareValidator>
</div>
</div>
</li>
<li>
<div class="layui-form-item">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-block">
<asp:TextBox ID="TxtEmail" runat="server" CssClass="layui-input" placeholder="请输入邮箱" TextMode="Email"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TxtEmail" ErrorMessage="邮箱不能为空!" Display="None" SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="邮箱格式不正确!" ControlToValidate="TxtEmail" Display="None" SetFocusOnError="True" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
</div>
</div>
</li>
<li>
<div class="layui-form-item">
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Login.aspx">立即前往登录>></asp:HyperLink>
</div>
</li>
<li>
<div class="layui-form-item">
<asp:Button ID="BtnRegister" runat="server" Text="注册" CssClass="layui-btn layui-btn-fluid layui-btn-radius" OnClick="BtnRegister_Click"/>
</div>
</li>
<li>
<div class="layui-form-item">
<input type="reset" title="重置" class="layui-btn layui-btn-fluid layui-btn-radius"/>
</div>
</li>
<li>
<div class="layui-form-item">
<asp:Label ID="lblRegisterMsg" runat="server" Text="" ForeColor="Red" Font-Bold="False" Font-Size="Large"></asp:Label>
</div>
</li>
</ul>
</div>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowSummary="False" ShowMessageBox="True" />
</form>
</div>
</div>
</body>
</html>
3.主界面
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/MainPage.master" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Src="~/UserControl/UserInfoCard.ascx" TagPrefix="uc1" TagName="UserInfoCard" %>
<%@ Register Src="UserControl/Weather.ascx" TagName="Weather" TagPrefix="uc" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<script>
layui.use('carousel', function(){
var carousel = layui.carousel;
//建造实例
carousel.render({
elem: '#test1'
,width: '100%'
, arrow: 'always'
, autoplay: 'true'
,interval:1500
, arrow:'none' ,anim: 'fade' });
});
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:UpdatePanel ID="upWeather" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<uc:Weather ID="Weather1" runat="server" title="天气预报--(中国气象局提供数据!)" />
</ContentTemplate>
</asp:UpdatePanel>
<div class="layui-row layui-col-space10">
<!--轮播图-->
<div class="layui-col-lg8">
<div class="layui-carousel" id="test1">
<div carousel-item>
<div>
<asp:Image ID="Image1" runat="server" ImageUrl="~/Images/CarouselImages/b01.png" Height="300px" Width="760px" />
</div>
<div>
<asp:Image ID="Image2" runat="server" ImageUrl="~/Images/CarouselImages/b02.png" Height="300px" Width="760px" />
</div>
<div>
<asp:Image ID="Image3" runat="server" ImageUrl="~/Images/CarouselImages/b03.png" Height="300px" Width="760px" />
</div>
<div>
<asp:Image ID="Image4" runat="server" ImageUrl="~/Images/CarouselImages/b04.png" Height="300px" Width="760px" />
</div>
<div>
<asp:Image ID="Image5" runat="server" ImageUrl="~/Images/CarouselImages/b05.png" Height="300px" Width="760px" />
</div>
</div>
</div>
</div>
<div class="layui-col-lg4">
<uc1:UserInfoCard runat="server" ID="UserInfoCard" />
</div>
</div>
<div class="layui-row layui-col-space10">
<div class="layui-col-lg8">
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
<ul class="layui-tab-title">
<li class="layui-this"><asp:LinkButton ID="BtnDisplayAll" runat="server" OnClick="BtnDisplayAll_Click"></asp:LinkButton></li>
<li><asp:LinkButton ID="BtnCategoryId_1" runat="server" OnClick="BtnCategoryId_1_Click">手机</asp:LinkButton></li>
<li><asp:LinkButton ID="BtnCategoryId_2" runat="server" OnClick="BtnCategoryId_2_Click">平板电脑</asp:LinkButton></li>
<li><asp:LinkButton ID="BtnCategoryId_3" runat="server" OnClick="BtnCategoryId_3_Click">笔电</asp:LinkButton></li>
<li><asp:LinkButton ID="BtnCategoryId_4" runat="server" OnClick="BtnCategoryId_4_Click">耳机</asp:LinkButton></li>
<li><asp:LinkButton ID="BtnCategoryId_5" runat="server" OnClick="BtnCategoryId_5_Click">手表</asp:LinkButton></li>
<li><asp:LinkButton ID="BtnCategoryId_6" runat="server" OnClick="BtnCategoryId_6_Click">键盘</asp:LinkButton></li>
</ul>
</div>
</div>
<div class="layui-col-lg4" style="margin-top: 13px;">
<asp:TextBox ID="TxtSearchInfo" runat="server" CssClass="layui-input input-search" placeholder="请输入搜索内容" Width="285px"></asp:TextBox>
<asp:Button ID="BtnSearch" runat="server" Text="搜索" CssClass="layui-btn" Font-Size="Small" Width="80px" OnClick="BtnSearch_Click" />
</div>
</div>
<!--商品展示区-->
<div class="layui-row layui-col-space10">
<div class="layui-col-lg12" style="height: 22px">
<asp:UpdatePanel ID="ProUpdatePanl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="layui-row layui-col-space10" runat="server" id="divProDisplay">
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="BtnDisplayAll" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="BtnSearch" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="BtnCategoryId_1" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="BtnCategoryId_2" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="BtnCategoryId_3" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="BtnCategoryId_4" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="BtnCategoryId_5" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="BtnCategoryId_6" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</div>
</div>
</asp:Content>
4.我的评论
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<div class="layui-row" style="text-align:center;font-size:x-large;">我的反馈</div>
<asp:Label ID="lblNullMsg" runat="server" Text="" Font-Size="Larger"></asp:Label>
<div class="layui-row">
<asp:GridView ID="gvComments" CssClass="layui-table" style="table-layout:fixed;" runat="server" AutoGenerateColumns="False" DataKeyNames="CommentId" AllowPaging="True" OnRowDataBound="gvComments_RowDataBound" OnRowDeleted="gvComments_RowDeleted">
<Columns>
<asp:BoundField DataField="TextContent" HeaderText="反馈内容"/>
<asp:BoundField DataField="ComDateTime" HeaderText="反馈时间">
<HeaderStyle Width="150px" />
</asp:BoundField>
<asp:CommandField ShowDeleteButton="True" >
<HeaderStyle Width="50px" />
</asp:CommandField>
</Columns>
<HeaderStyle BackColor="#66CCFF" />
</asp:GridView>
<asp:LinqDataSource ID="LinqComments" runat="server" ContextTypeName="fankui.DAL.fankuiDataContext" EnableDelete="True" EntityTypeName="" TableName="Comment" OrderBy="ComDateTime desc">
</asp:LinqDataSource>
</div>
<div class="layui-row"><asp:Label ID="lblPageCountMsg" runat="server" Font-Size="Medium" ForeColor="#FF5722"></asp:Label></div>
<hr class="layui-bg-blue">
<div class="layui-row" style="font-size:large;">
<div class="layui-col-lg2 layui-col-lg-offset10">
<asp:Button ID="BtnClearAllComments" runat="server" Text="清空反馈" CssClass="layui-btn layui-btn-danger layui-btn-fluid" OnClick="BtnClearAllComments_Click"/>
</div>
</div>
</asp:Content>
5.管理员界面
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<div class="layui-card">
<div class="layui-card-header" style="text-align: center; font-size: large;">基本资料</div>
</div>
<div class="layui-card">
<div class="layui-card-body layui-form">
<div class="layui-row">
<div class="layui-col-lg4">
<asp:Image ID="HeadImg" runat="server" ImageUrl="HeadImage.aspx" BorderStyle="Solid" BorderColor="#66FF99" ImageAlign="AbsMiddle" Height="175px" Width="175px" Style="border-radius: 100px; margin: 15px 80px;" />
<div class="layui-form-item" style="margin-left: 35px;">
<label class="layui-form-label">
<asp:LinkButton ID="BtnUploadImg" runat="server" OnClick="BtnUploadImg_Click" CssClass="layui-btn">上传头像</asp:LinkButton>
</label>
<div class="layui-input-inline" style="margin-top: 15px;">
<asp:FileUpload ID="HeadImgUpload" runat="server" Width="180px" />
</div>
</div>
<div class="layui-form-item">
<label style="margin-left: 15px;">
<asp:Label ID="lblUploadMsg" runat="server" ForeColor="Red" Font-Size="Large"></asp:Label>
</label>
</div>
</div>
<div class="layui-col-lg8">
<div class="layui-form-item">
<label class="layui-form-label">管理员名</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtAdminName" runat="server" CssClass="layui-input" autocomplete="off" placeholder="请输入用户名" ReadOnly="true"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux" style="color: red;">
<asp:RequiredFieldValidator ID="rfvtxtAdminName" ControlToValidate="txtAdminName" runat="server">*必填项!</asp:RequiredFieldValidator>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtEmail" runat="server" CssClass="layui-input" autocomplete="off" placeholder="请输入邮箱" ReadOnly="true"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<asp:RequiredFieldValidator ID="rfvtxtEmail" ControlToValidate="txtEmail" runat="server">*必填项!</asp:RequiredFieldValidator>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">地址</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtAddress" runat="server" CssClass="layui-input" TextMode="MultiLine" autocomplete="off" placeholder="请输入地址" ReadOnly="true"></asp:TextBox>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">类型</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtType" runat="server" CssClass="layui-input" ReadOnly="true"></asp:TextBox>
</div>
</div>
<div class="layui-form-item">
<div style="margin-left: 110px;">
<asp:Button ID="BtnRevise" runat="server" Text="修改" CssClass="layui-btn" Width="190px" OnClick="BtnRevise_Click" Visible="true"/>
<asp:Button ID="BtnSubmint" runat="server" Text="提交" CssClass="layui-btn" Width="190px" OnClick="BtnSubmint_Click" Visible="false"/>
</div>
</div>
</div>
</div>
</div>
</div>
</asp:Content>
6.评论管理
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<div class="layui-card">
<div class="layui-card-header" style="text-align: center; font-size: large;">反馈管理</div>
</div>
<div class="layui-card">
<div class="layui-card-header layui-form" style="padding: 15px 10px;">
<div class="layui-row">
<div class="layui-col-lg1" style="line-height: initial;padding-left:10px;">
<a href="CommentManage.aspx" class="layui-btn">显示全部</a>
</div>
<div class="layui-col-lg2 layui-col-lg-offset5">
<asp:DropDownList ID="ddlSearchType" runat="server" Width="100px">
<asp:ListItem Value="">选择反馈方式</asp:ListItem>
<asp:ListItem Value="Context">反馈内容</asp:ListItem>
<asp:ListItem Value="UserName">用户名</asp:ListItem>
<asp:ListItem Value="BookId">产品ID</asp:ListItem>
</asp:DropDownList>
</div>
<div class="layui-col-lg2">
<asp:TextBox ID="txtSearchKey" runat="server" CssClass="layui-input" placeholder="搜索评论"></asp:TextBox>
</div>
<div class="layui-col-lg1" style="line-height: initial;margin-left:10px;">
<asp:LinkButton ID="BtnSearch" runat="server" CssClass="layui-btn" OnClick="BtnSearch_Click">搜索</asp:LinkButton>
</div>
</div>
</div>
<div class="layui-card-body layui-form" font-size: large;">
<asp:Label ID="lblMsg" runat="server"></asp:Label><br />
<asp:GridView ID="gvComment" runat="server" CssClass="layui-table" style="table-layout: fixed;" AutoGenerateColumns="False" AllowPaging="True" DataKeyNames="CommentId" OnRowDeleting="gvComment_RowDeleting" OnPageIndexChanging="gvComment_PageIndexChanging" OnRowDataBound="gvComment_RowDataBound" OnSelectedIndexChanged="gvComment_SelectedIndexChanged">
<Columns>
<asp:BoundField DataField="CommentId" HeaderText="评论ID">
<HeaderStyle Width="60px" />
</asp:BoundField>
<asp:BoundField DataField="ProductId" HeaderText="产品ID">
<HeaderStyle Width="60px" />
</asp:BoundField>
<asp:BoundField DataField="UserName" HeaderText="用户名">
<HeaderStyle Width="100px" />
</asp:BoundField>
<asp:BoundField DataField="TextContent" HeaderText="反馈内容"/>
<asp:BoundField DataField="ComDateTime" HeaderText="反馈时间">
<HeaderStyle Width="125px" />
</asp:BoundField>
<asp:CommandField ShowDeleteButton="True" >
<HeaderStyle Width="60px" />
<ItemStyle ForeColor="#3399FF" Font-Underline="True" />
</asp:CommandField>
<asp:HyperLinkField Text="回复" DataNavigateUrlFields="ProductId" DataNavigateUrlFormatString="~/ProDetails.aspx?Book_Id={0}" ItemStyle-ForeColor="#3399FF">
<HeaderStyle Width="30px" />
<ItemStyle ForeColor="#3399FF" Font-Underline="True"></ItemStyle>
</asp:HyperLinkField>
</Columns>
<HeaderStyle BackColor="Silver" />
<PagerStyle HorizontalAlign="Center" />
</asp:GridView>
</div>
</div>
</asp:Content>