摘要:网上答疑系统为基于ASP.NET与C#技术的WEB应用程序,并以互联网为传播媒介来实现远程教育的一个教学平台。系统主要论述了其设计开发的基本过程,设计开发中主要运用了ASP.NET技术与C#语言、 SQL等相关技术,根据面向对象开发原理,采用了基于B/W/S三层体系结构的开发模式系统。以IIS为服务器,SQL server 2005为数据库平台,提供一个师生之间相互交流、相互探讨的网络空间,使学生在获取知识时更具有主动性。本系统包括即时答疑的管理与控制,文件资源的共享管理,问题及疑问留言解答的管理,后台数据库信息的管理维护等这些基本模块。
关键词:ASP.NET;在线答疑;实验室信息化;B/W/S结构
注:本论文(设计)题目来源于教师的国家级(或省部级、厅级、市级、校级、企业)科研项目,项目编号为: 。
Experimental computer courses o nline Q & A System Analysis and Design
Abstract: Online Q & A system based on ASP.NET and C # technologies WEB applications, and Internet media to achieve a long-distance education teaching platform. Focuses on system design and development of its basic processes, design and development of the main use of ASP.NET technology and C # language, SQL and related technologies, in accordance with the principle of object-oriented development, based on the use of B / W / S three-tier architecture system development model. To IIS server, SQL server 2005 database platform to provide a mutual exchange between teachers and students, to explore each other in cyberspace, so that when students acquire knowledge in a more proactive. The system includes real-time Q & A management and control, file-sharing management resources, problems and answer questions about the management of message, the background database information such as the management of the maintenance of the basic module.
Keywords: ASP.NET online Q & A of laboratory information B / W / S Structure
目 录
1 前言
计算机实验课在线答疑系统采用sql2005+asp.net为设计开发平台,主要为计算机机房提供一个利用现有设备进行课程教学,师生互动问答讨论的系统。通过相应功能模块实现问题的实时或留言问答,实验内容等文件资源的共享上传与下载,以及相关知识拓展,师生在电脑前就能完成全程教学,使学生摆脱了以前的羞涩心理,主动参与到网络学习活动中来,有效地调动了学生学习的积极性。同学与同学之间、教师与同学之间的讨论既活跃了思维,也拉近了彼此的距离,促进了教学活动的开展。本系统基于网络教学支撑平台的教学模式具备人机互动、师生互动的优势,体现出以人为本,自主学习的特点,突破时空界限,延伸课堂空间,拓展思维方法,有利于培养善思考、高素质的综合人才,适应信息时代教育发展的要求。
2 设计前分析
首先,针对计算机实验室的特点,在线答疑功能模块可以利用现有的局域网拓扑结构,在网络环境中进行信息的输入与传输显示,并存储在主机数据库服务器里。通过对交谈方式的控制,在群聊和一对一私谈交流两者之间切换交谈方式。
其次,在教学过程中,必然有跟实验课程相关的实验指导、实验内容等相关的文档。为免去安装ftp服务器实现文件共享的麻烦,在该答疑系统中还应包括文件资源的上传、下载功能模块,实现相关资料的相互传递。
再次,在线答疑模块中,主要是实现类似qq群聊天的即时通讯功能,里面的发言呈现出多人发言,交叉发言,讨论内容多且比较凌乱的现象,不利于对某一疑问的深层次探讨。因此,在系统中,应设置类似我们平时所用的论坛留言的功能模块,并包含了发表疑问,回复疑问,管理疑问信息等功能。
另外,在教学过程中,为加深学生对实验内容的理解,拓宽知识的应用,有必要设置知识扩展模块,包含相关知识门户网站链接,应用实例展示,技术文章等内容。为更方便处理班级事务,通知学生们班中相关信息,系统中也应包括班级公告功能,显示近期的班级安排等。为了保证数据库的安全,以及教学的顺利进行,系统还需要对学生们的身份进行管理,最简单的一点就是对访问该系统的学生要求登录操作,进行身份的验证,以及把该身份在系统中其它功能的使用情况存储在系统的数据库中,方便以后需要确认某学生身份的调用操作。
最后,该系统提供的后台数据管理,应让具有管理权限的人员对数据库进行操作,包括学生信息的管理,上传文件管理,疑问管理,链接管理,通知管理等功能,具体功能呈现为对数据源的数据进行访问、添加、编辑、删除等操作。极大方便地对系统进行统一管理控制与显示。
本系统以ASP.NET2.0技术为蓝本、C#为开发语言、Microsoft Visual Web Developer 2005 速成版为开发环境、Microsoft SQL Server 2005 Express为数据存储。运行环境的配置包括Microsoft .NET Framework 2.0,Internet 信息服务版本IIS5.1, Internet Explorer 6.0。
本系统开发设计采用B/W/S三层结构实现,即数据层、业务层、表示层。能很好地实现数据存储、运行业务逻辑、界面显示。以本身为.NET Framework而设计的C#语言开发系统,是真正面向组件的开发,无需考虑语言的兼容性,并且开发过程也比较简单易懂。利用.NET 自带的SQL 2005 EXPRESS作为数据库服务器,可以方便地实现系统与数据库的连接,并且性能稳定、管理方便。
需求上可行性:在线答疑系统让同学们在计算机课室方便地进行课程学习与交流讨论,还可以管理班级的事务、通知。使得师生之间的教学互动省时,省力。极大得提高同学们学习的主动性,促进了信息化教学的发展。
技术上可行性:目前,IT网络技术已经发展成熟并得到普遍应用,硬件方面,cpu双核芯片成为流行配置,开发运行.NET系统所需的系统要求,内存要求完全能够满足。实现该系统在技术上是可行的。
经济上可行性:该系统开发所需的工具主要是一台我们常用的个人主机,再加上一套常用软件VS2005+SQL2005,以现有的计算机课室的局域网络作为运行传输环境即可。实现该系统花费少,是可行的。
3.1 项目规划
总体规划:在线答疑系统是一个典型的ASP.NET数据库开发应用程序,由系统前台展示模块、后台数据管理模块两大部分组成。
前台展示模块:该模块主要提供即时发言的输入与显示,文件资源的上传下载,发表疑问与回答,相关网站访问,查看班级通知,以及身份登录验证等功能模块。
后台管理:该模块主要是对前台数据库进行管理,主要包括学生管理、文件管理、疑问管理、链接管理、通知管理。
3.2 系统总体功能结构图
图3.2.1 前台功能结构图
图3.2.2后台功能结构图
3.3系统总体流程
用户成功登录后,如果验证是管理员身份,则可选择进入前台显示还是后台管理,如果是普通用户,则定向到系统前台首页。
在首页里,默认是即时发言页面,也可通过页面链接到文件共享或者查看疑问页面。
在即时发言页面,可以选择发言字体的颜色,切换群聊和密谈模式。在文件共享页面,显示现有的文件列表,右击文件名即可选择下载,点击上传文件按钮,进入文件上传页面。
在查看疑问页面,可以发表疑问或者点击相应疑问,进入详细回答页面。各页面中,都包含返回主页面的链接按钮。
图3.3.1系统总体流程图
本系统数据库采用SQL Server 2005 EXPRESS数据库设计,其中包括5张表。
用户信息表记录用户的基本信息。其主要字段包括:用户ID、用户名称、用户密码、用户职位。见表所示:
表4.1.1用户信息表
名称 | 字段名称 | 数据类型 | 长度 | 非空 |
用户编号 | id | int | 4 | yes |
用户名称 | username | varchar | 50 | yes |
用户密码 | password | varchar | 50 | yes |
用户职位 | position | varchar | 50 | No |
即时发言信息表
即时发言信息表的主要字段包括:ID号、发言者、接收者、发言内容、发言字体颜色、是否密谈、发言时间。见表所示:
表4.1.2 即时发言信息表
名称 | 字段名称 | 数据类型 | 长度 | 非空 |
ID号 | id | int | 4 | yes |
发言者 | user_from | varchar | 50 | yes |
接收者 | user_to | varchar | 50 | yes |
发言内容 | [content] | varchar | 255 | yes |
字体颜色 | color | varchar | 50 | yes |
是否公开 | ispublic | bit | 4 | yes |
发言时间 | sendtime | datetime | 8 | yes |
文件信息表
药文件信息表的字段主要包括上传者、文件名称、上传时间、存储路径等。见表所示:
表4.1.3 文件信息表
名称 | 字段名称 | 数据类型 | 长度 | 非空 |
id号 | id | int | 4 | yes |
上传者 | Send_UserName | varchar | 50 | yes |
文件名称 | Send_FileName | varchar | 100 | yes |
上传时间 | Send_Time | varchar | 50 | yes |
存储路径 | Send_File | varchar | 100 | yes |
疑问信息表
该表主要是记录发表疑问信息,以及访问次数和回答次数。包括标题,具体内容,提问者等字段。见表所示:
表4.1.4 疑问信息表
名称 | 字段名称 | 数据类型 | 长度 | 非空 | 默认值 |
id号 | id | int | 4 | yes | |
提问者 | Author | nvarchar | 50 | yes | |
标题 | Subject | nvarchar | 50 | yes | |
内容 | [Content] | ntext | 16 | no | |
提问时间 | PostTime | datetime | 8 | yes | getdate() |
访问次数 | TotalView | int | 4 | yes | |
回答次数 | Reply | int | 4 | yes |
回复信息表
回复信息表主要字段包括:回答编号id、对应的问题id、回答者、标题、详细回答内容、回答时间。见表所示:
表4.1.5回复信息表
名称 | 字段名称 | 数据类型 | 长度 | 非空 | 默认值 |
回答编号 | MessageID | int | 4 | yes | |
对应问题 | id | int | 4 | yes | |
回答者 | Author | nvarchar | 50 | yes | |
标题 | Subject | nvarchar | 50 | yes | |
详细内容 | [Content] | ntext | 16 | no | |
回答时间 | PostTime | datetime | 8 | yes | getdate() |
链接类别表
名称 | 字段名称 | 数据类型 | 长度 | 非空 | 默认值 |
编号 | id | int | 4 | yes | |
类别名称 | class | char | 10 | yes |
网站信息表
名称 | 字段名称 | 数据类型 | 长度 | 非空 | 默认值 |
编号 | id | int | 4 | yes | |
类别编号 | cid | int | 4 | yes | |
网站名称 | name | char | 10 | yes | |
网址 | link | char | 50 | yes | |
网站简介 | show | char | 50 | no |
班级公告表
名称 | 字段名称 | 数据类型 | 长度 | 非空 | 默认值 |
编号 | id | int | 4 | yes | |
标题 | title | char | 50 | yes | |
内容 | content | char | 50 | no | |
时间 | time | datetime | 8 | yes | getdate() |
图4.1.2数据库表间关系图
即时发言模块:
该模块首页面为default.aspx,页眉为自定义控件WebUserControl.ascx,里面包括各功能模块的链接,和显示系统时间等信息。中间为即时发言界面,主要是显示信息和发送信息,页脚为后台登录链接,当登录者为admin时,该链接控件由灰色不可用变为可用链接,点击即进入后台登录页面。
登录页面default.aspx时,载入处理函数Page_Load(),控制代码为:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"].ToString() == "admin")
HyperLink1.Visible = true;
}
普通用户登录 admin登录
即时发言的界面为:
处理发送信息的函数为send();代码为
function send()
{
var txtContent = document.all("content").value; //文本框输入内容
if (txtContent == "") return;
var user_to = document.all("userlist").value; //聊天对象
var textcolor = document.all("textcolor").value; //颜色
var isPublic = !(document.all("isSecret").checked); //是否密谈
显示发言信息的函数为refresh_chatcontent();代码为
function refresh_chatcontent()
{
//调用服务器方法获取最新消息的HTML字符串
var div = document.all("chatcontent");
var strNewMsg = ChatRoom.GetNewMsgString().value;
}
控制上线名单的函数为refresh_onlineusers();代码为
function refresh_onlineusers()
{
//发送对象列表
var userlist = document.all("userlist");
//调用服务器端方法获取用户列表字符串(用逗号分隔)
var strUserlist = ChatRoom.GetOnlineUserString().value;
//获取客户端显示的用户列表字符串
var strUserlistClient = "";
for (var i = 1;i < userlist.options.length;i++)
{
if (i != userlist.options.length - 1)
{
strUserlistClient += userlist.options[i].value + ",";
}
else
{
strUserlistClient += userlist.options[i].value;
}
}
if (strUserlistClient != strUserlist) //在线用户列表发生变化
{
var userArr = strUserlist.split(',');
//在线用户数
var usercount = document.all("usercount");
usercount.innerHTML = "在线名单:(" + userArr.length + "人)";
文件共享模块:
该功能模块包括文件显示下载页面SaveFile.aspx 和文件上传页面Chuanshu.aspx两页面,以及保存资源的文件夹file。通过该模块,可以方便地上传下载实验内容等资料文件。
在web.config中设置连接数据库的语句为:
<appSettings>
<add key="ConnectionString" value="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\book09_Data.mdf;Integrated Security=True;User Instance=True"/>
</appSettings>
使用SqlDataSource控件操作数据库的语句为:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ appSettings:ConnectionString %>" SelectCommand="SELECT * FROM [SendFile] ORDER BY [id] desc"></asp:SqlDataSource>
使用GridView控件显示数据的代码为:
<asp:GridView ID="GridView2" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
SortExpression="id" />
<asp:HyperLinkField DataNavigateUrlFields="Send_File" DataTextField="Send_FileName" HeaderText="文件名" SortExpression="Send_FileName" >
<ItemStyle HorizontalAlign="Left" />
</asp:HyperLinkField>
<asp:BoundField DataField="Send_UserName" HeaderText="上传者" SortExpression="Send_UserName" />
<asp:BoundField DataField="Send_Time" HeaderText="上传时间" SortExpression="Send_Time" >
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
</Columns>
</asp:GridView>
处理上传文件的函数为SaveBtn_Click(),主要代码为:
protected void SaveBtn_Click(object sender, EventArgs e)
{
String Send_user1 = Send_User.Text;
String TimeNow = DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString()+"-"+DateTime.Now.Hour.ToString()+":"+DateTime.Now.Minute.ToString()+":"+DateTime.Now.Second.ToString(); //获得时间
MyUpload MyUpload = new MyUpload();
string Pic1 = "File/"; //保存路径
MyUpload.Path = "File";
MyUpload.Sizes = 2048; //文件大小
MyUpload.FileType = "jpg|gif|bmp|JPG|GIF|BMP|doc|DOC|txt|TXT|xls|XLS|FLV|flv|SWF|swf"; //文件类型
string[] a = MyUpload.PostedFile.FileName.Split('\\'); //分离出文件名
string b = a[a.Length - 1];
FileTitle1 = b;
MyUpload.PostedFile = FileUpload1.PostedFile;
String Pic2 = MyUpload.Upload();
if (Pic2 == null)
{ Page.RegisterStartupScript("", "<script>alert('上传失败!')</script>");
Response.AddHeader("Refresh", "0.0001");
}
else
{ Pic2 = Pic1 + Pic2;
String Sql = "insert into SendFile(Accept_UserName,Send_UserName,Send_File,Send_Time,Send_FileName) values('" + username + "','" + Send_user1 + "','" + Pic2 + "','" + TimeNow + "','" + FileTitle1 + "')";
if (db.insert(Sql)) //插入数据
Page.RegisterStartupScript("", "<script>alert('上传成功!')</script>");
Accept_User.Text = "";
Send_User.Text = "";
}
}
发表疑问模块:
该模块主要页面包括显示疑问列表页面showthread.aspx,某疑问及相应回复列表页面showmessages.aspx,发表新疑问页面editthread.aspx。该模块主要实现疑问的发表和回复。删除功能包含在后台管理页面中。
发表疑问利用一个AddThread方法,代码为:
public void AddThread(System.Int32 threadID,System.String author,System.String subject,System.String content,System.Int32 reply,System.Int32 totalView)
{
// 下面为创建数据库实例和命令对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("AddThread", myConnection);
// 下面为把命令对象类型设置为数据库已经创建好的存储过程,能把一大段sql语句存储为一个过程,便于调用
myCommand.CommandType = CommandType.StoredProcedure;
// 向存储过程中传递参数
SqlParameter parameterAuthor = new SqlParameter("@author", SqlDbType.NVarChar,50);
parameterAuthor.Value = author;
myCommand.Parameters.Add(parameterAuthor);
SqlParameter parameterSubject = new SqlParameter("@subject", SqlDbType.NVarChar,50);
parameterSubject.Value = subject;
myCommand.Parameters.Add(parameterSubject);
SqlParameter parameterContent = new SqlParameter("@content", SqlDbType.NText,16);
parameterContent.Value = content;
myCommand.Parameters.Add(parameterContent);
SqlParameter parameterTotalView = new SqlParameter("@totalView", SqlDbType.Int,4);
parameterTotalView.Value = totalView;
myCommand.Parameters.Add(parameterTotalView);
SqlParameter parameterReply = new SqlParameter("@reply", SqlDbType.Int,4);
parameterReply.Value = reply;
myCommand.Parameters.Add(parameterReply);
// 打开数据库并执行
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
显示疑问列表采用GetThreads()方法,代码为
private DataSet GetThreads()
{
//创建数据库实例和命令对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlDataAdapter myCommand = new SqlDataAdapter("GetThreads", myConnection);
//下面为把命令对象类型设置为数据库已经创建好的存储过程,能把一大段sql语句存储为一个过程,便于调用
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
// 建立并且填充一个dataset数据集
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet);
// 返回一个dataset数据集
return myDataSet;
}
显示疑问详细内容的方法为AddThread(),代码为
public void AddThread(System.Int32 threadID,System.String author,System.String subject,System.String content,System.Int32 reply,System.Int32 totalView)
{
//创建数据库实例和命令对象
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("AddThread", myConnection);
//下面为把命令对象类型设置为数据库已经创建好的存储过程,能把一大段sql语句存储为一个过程,便于调用
myCommand.CommandType = CommandType.StoredProcedure;
//向存储过程中传递参数
SqlParameter parameterAuthor = new SqlParameter("@author", SqlDbType.NVarChar,50);
parameterAuthor.Value = author;
myCommand.Parameters.Add(parameterAuthor);
SqlParameter parameterSubject = new SqlParameter("@subject", SqlDbType.NVarChar,50);
parameterSubject.Value = subject;
myCommand.Parameters.Add(parameterSubject);
SqlParameter parameterContent = new SqlParameter("@content", SqlDbType.NText,16);
parameterContent.Value = content;
myCommand.Parameters.Add(parameterContent);
SqlParameter parameterTotalView = new SqlParameter("@totalView", SqlDbType.Int,4);
parameterTotalView.Value = totalView;
myCommand.Parameters.Add(parameterTotalView);
SqlParameter parameterReply = new SqlParameter("@reply", SqlDbType.Int,4);
parameterReply.Value = reply;
myCommand.Parameters.Add(parameterReply);
//打开数据库并执行
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
知识扩展模块
班级公告模块
在后台管理页面中,包含了母版页adminMasterPage.master,主要是各子功能模块管理的链接按钮,集中管理了后台的显示。
用户管理模块:
该模块的页面为admin.aspx,主要是使用SqlDataSource控件实现应用程序与数据库的链接,gridview数据控件显示、编辑、删除学生数据信息,FormView控件实现数据插入功能。
SqlDataSource控件的代码为:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" DeleteCommand="DELETE FROM [UserInfo] WHERE [id] = @id" InsertCommand="INSERT INTO [UserInfo] ([username], [password], [isadmin], [isonline], [lastchatinfo]) VALUES (@username, @password, @isadmin, @isonline, @lastchatinfo)" SelectCommand="SELECT * FROM [UserInfo]" UpdateCommand="UPDATE [UserInfo] SET [username] = @username, [password] = @password, [isadmin] = @isadmin, [isonline] = @isonline, [lastchatinfo] = @lastchatinfo WHERE [id] = @id">
<DeleteParameters>
<asp:Parameter Name="id" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="username" Type="String" />
<asp:Parameter Name="password" Type="String" />
<asp:Parameter Name="isadmin" Type="Boolean" />
<asp:Parameter Name="isonline" Type="Boolean" />
<asp:Parameter Name="lastchatinfo" Type="Int32" />
<asp:Parameter Name="id" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="username" Type="String" />
<asp:Parameter Name="password" Type="String" />
<asp:Parameter Name="isadmin" Type="Boolean" />
<asp:Parameter Name="isonline" Type="Boolean" />
<asp:Parameter Name="lastchatinfo" Type="Int32" />
</InsertParameters>
</asp:SqlDataSource>
gridview数据控件的设计代码为:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" CellPadding="4" ForeColor="#333333" GridLines="None">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
SortExpression="id" />
<asp:BoundField DataField="username" HeaderText="姓名" SortExpression="username" />
<asp:BoundField DataField="password" HeaderText="密码" SortExpression="password" />
<asp:CheckBoxField DataField="isadmin" HeaderText="isadmin" SortExpression="isadmin" />
<asp:CheckBoxField DataField="isonline" HeaderText="isonline" SortExpression="isonline" />
<asp:BoundField DataField="lastchatinfo" HeaderText="lastchatinfo" SortExpression="lastchatinfo" />
<asp:CommandField ButtonType="Button" HeaderText="操作" ShowDeleteButton="True" ShowEditButton="True" />
</Columns>
</asp:GridView>
FormView控件的插入功能代码为:
<asp:FormView ID="FormView1" runat="server" AllowPaging="True" DataKeyNames="id"
DataSourceID="SqlDataSource1" DefaultMode="Insert" Width="377px" Height="57px" CellPadding="4" ForeColor="#333333">
<InsertItemTemplate>
<table style="width: 550px; height: 12px">
<tr>
<td style="width: 141px; height: 27px">
姓名:<asp:TextBox ID="usernameTextBox" runat="server" Text='<%# Bind("username") %>' Width="82px"></asp:TextBox></td>
<td style="width: 145px; height: 27px">
密码:<asp:TextBox ID="passwordTextBox" runat="server" Text='<%# Bind("password") %>' Width="88px"></asp:TextBox></td>
<td style="width: 87px; height: 27px">
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert"
Text="插入"></asp:LinkButton>
<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
Text="取消"></asp:LinkButton></td>
</tr>
</table>
<asp:CheckBox ID="isadminCheckBox" runat="server" Checked='<%# Bind("isadmin") %>'
Visible="False" /><asp:CheckBox ID="isonlineCheckBox" runat="server" Checked='<%# Bind("isonline") %>'
Visible="False" /><asp:TextBox ID="lastchatinfoTextBox" runat="server" Text='<%# Bind("lastchatinfo") %>'
Visible="False"></asp:TextBox>
</InsertItemTemplate>
<HeaderTemplate>
增加学生资料
</HeaderTemplate>
</asp:FormView>
文件管理模块:
本功能的页面为file.aspx,主要是显示文件信息,以及修改文件名称,删除某文件等功能。
疑问管理模块:
本功能模块的页面为question.aspx,包括SqlDataSource控件进行数据库链接,gridview数据库控件显示疑问列表,统计疑问信息,并可以对疑问进行删除操作。
网站链接模块
通知管理模块
源码下载及讨论地址:计算机实验课在线答疑系统,学教实践,Asp.net源码 - .NET源码筛选 51Aspx.com
[1] 邵良杉, 刘好增, 马海军.ASP.NET(C#)实践教程 [M].北京:清华大学出版社.2007:252-298.
[2] 马颖华,苏贵洋,袁艺. ASP.NET 2.0网络编程从基础到实践 [M]. 北京:电子工业出版社.2007:350-400.
[3] 王保健. ASP.NET网站建设专家 [M].北京清华大学出社.2005:97-126.
[4] 郝刚,袁永刚,齐艳.ASP.NET服务器控件开发技术与实例 [M].北京:人民邮电出版社.2005:196-215.
[5] (美)Scott Mitchell著;陈武译.ASP.NET 2.0入门经典 [M].北京:人民邮电出版社.2007:233-353.
[6] (美)Imar Spaanjaars,Paul Wilton,Shawn Livermore著,袁国忠译. ASP.NET 2.0经典案例教程 [M].北京:人民邮电出版社.2007:65-88
[7] (美)(Stephen Walther)沃尔瑟. ASP.NET 2.0揭秘(卷2)[M].北京:人民邮电出版社.2007:86-130.
[8] 陈冠军.精通ASP.NET 2.0典型模块设计与实现 [M].北京:人民邮电出版社.2007:50-83
[9] 武新华,刘彦明. ASP.NET+SQL Server典型网站建设 [M].北京:人民邮电出版社.2007:65-88
[10] 王涛.你必须知道的.NET [M].北京:电子工业出版社.2008:40-120
[11] Northrup. MCPD自步培训教程Microsoft.NET Framework Windows Developer [M].国外:Oversea Publishing House出版社.2007:75-142.
[12] Bill Evjen,Kent Sharkey. 专业XMLProfessional XML [M]. 吉林:长白山出版社.2007:70-135.