摘要
项目背景:
家教信息平台是建立在互联网基础上的一种信息交流平台,面向所有网民提供服务。无论是找家教的学生还是做家教的教师,都可以通过该平台进行信息方面的交流。任何网友都可以自由地查看、搜索、发布该家教信息平台的信息。该平台是区别于传统的家教中介的服务平台。
学生可以免费查看网站上的家教信息,挑选适合自己的家教;教师可以免费查看网站上的需求信息,挑选适合自己的学生;学生可以发布自己的需求信息,让更多教师看到自己的需求信息。
根据网站信息管理系统的开发为背景,论述了整个系统的开发过程,系统的结构及系统开发的基本原理和方法。全系统共分前言、编程环境基础知识、需求分析 、系统设计、系统实施、系统运行及维护、开发总结等几章。详细论述了需求分析、系统设计的技术及应用、系统的功能等内容
本系统在开发过程中,注意使其符合易于操作的要求,并力求系统的全面性、通用性。随着用户的使用及对系统了解的不断加深,对某一部分或几部分进行重新分析、设计、实施。在开发工具的选择上,主要利用 ASP.NET 编程语言进行开发,使用 MS SQL SERVER 数据库,从而保证了数据的完整性与一致性。
【关键词】家教信息 管理 系统设计 ASP.NET C# SQLSEVER2005
目录
当今时代的两个显著特点就是世界经济一体化和以计算机为代表的信息技术的快速发展。一个组织要在激烈的竞争中保持优势和不断发展,必须对迅速变化的环境灵敏地做出有效的反应。家教信息管理系统的应用能够提供这种有效的决策支持。家教信息管理系统运用了先进的、管理的、信息的处理技术来针对环境的挑战,它实际是随着计算机软件和网络技术不断地前进而前进,随着环境不断地变化而变化的。这样就有了新的解答——家教信息管理系统是逐步发展的过程,使之更好地适应社会的发展需求。学生可以免费查看网站上的家教信息,挑选适合自己的家教;教师可以免费查看网站上的需求信息,挑选适合自己的学生;学生可以发布自己的需求信息,让更多教师看到自己的需求信息。
C#、ASP.NET、MS SQL SERVER、HTML、CSS+DIV JAVASCRIPT
1.2开发与运行环境
家教信息管理系统的开发与运行环境如下:
开发环境:Windows XP
数据库工具:SQL SEVER 2005
开发语言:C# asp.ent JavaScript,Html, SQL
开发技术:基于IIS等服务器的ASP.ENT技术
运行环境:Windows 2000/XP/2003
能够为学生尽可能全面的了解教师的基本情况,找到自己心中认为最合适的教师来指导自己学习,教师也可以知道自己的辅导的学生,为了更能够完善自己,了解家教教师,学生的特点,我们开发了这个家教信息管理系统。系统可以管理家教教师的基本情况,可以在网站上注册,发布自己的信息,然后想要辅导的学生就可以看到自己发布的信息。在家教信息管理系统上,想要辅导的学生就可以找到符合自己的家教。找到自己喜欢的家教,学生可以在网站注册,可以发布自己的需求信息。注册的学生可以发表帖子,讨论话题,发表评论,也可以找到志同道合的朋友,共同学习。
2.1技术可行性
B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者说是改进的结构。用户界面完全通过浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成三层结构,是一种全新的软件系统构造技术。这种结构的一个重要的特点是,B/S结构的特点:几乎没有限制的客户端访问和极其简单化的应用程序部署和管理是B/S模型的优势所在,用户可以完全不需要安装客户端软件,当然也不需要担心任何软件升级和不兼容等任何客户端所遇到的问题。
2.2经济可行性
利用现有的服务器,只要装上ISS服务器软件,即可成为一台ISS服务器,客户只要在任何可连接的网络上网都可以连上本系统,经济上都是可行的,而且要求不高,所以该系统的开发是可行的。
第3章 系统的分析和设计
家教信息管理系统的用户包括系统管理员、家教教师和学生。系统管理员负责对教师的添加和删除 负责学生信息、学科信息。
1、未注册用户:查看教员信息、查看学员信息、注册加入、浏览帖子。
2、注册学员:发布需求信息、查看教员信息、查看预约信息、修改个人信息、修改密码、对教员评价并发表评论、创建帖子、回复帖子。
3、注册教员:查看学院信息、查看预约信息、修改个人信息、修改密码、创建帖子、回复帖子。
4、管理员:管理员维护、用户管理、讨论区管理、评价管理
3.2 系统的概要结构图
根据系统功能分析得出了家教信息管理系统是由三个角色组成,分别是家教教师、系统管理员和学生。在各个角色中也相应附加了详细的功能
第4章 数据描述
4.1家教教师表数据
4.2学员表表数据
4.3管理员表数据
4.4注册用户表数据
4.5学员需求表数据
4.6教员评价表数据
4.7发帖表数据
4.8用户回复表数据
4.9数据库介绍
4.10数据表操作类方法:
对学员表的操作:
- 取出所有学员信息
- 根据学员ID取出学员信息
- 添加学员信息
- 修改个人信息
- 删除学员信息
对教员表的操作:
- 取出所有教员信息
- 根据教员ID取出教员信息
- 添加教员信息
- 修改个人信息
- 删除教员信息
对学员需求表的操作:
- 取出最新需求
- 取出所有需求
- 取出未预约的需求
- 根据学生ID取出需求信息
- 根据需求信息搜索需求
- 添加需求
- 修改需求
- 删除需求
对管理员表的操作:
- 添加管理员
- 取出所有管理员
- 修改密码
对用户登录表的操作:
- 添加用户
- 修改密码
对评价表的操作:
- 增加教员评价
- 删除教员评价
对帖子表的操作:
- 取出所有帖子
- 添加帖子
- 删除帖子
对回复表的操作:
- 根据帖子ID查看帖子回复
- 添加回复
- 删除回复
命名规范:
数据库:第一个单词首字母小写,其他单词首字母大写。
C#代码:每一个单词首字母大写。
数据表操作类:***DAO (如:StudentDAO)
第5章 系统的实现和调试系统
图 5-1 网站系统主页:
这个是主页面,此页面可注册用户,用户类型有教员注册 学员注册 ,没有注册的用户可以浏览最新教员信息,学员需求信息,还可以进去讨论区讨论。还可以浏览最新注册教师的资料。
图 5-1 网站系统主页
图 5-2学员登录后的页面:
此页面为学员登陆后的页面,学员注册后可以发布自己的需求信息,查看预约信息,修改个人信息,修改登陆密码。还可以浏览成功预约的信息,还没有预约的信息。
图 5-2学员登录后的页面
图 5-3 修改个人信息页面:
此页面可以修改个人资料。包括有姓名,性别,年龄,联系电话,电子邮件 联系地址等的功能。
图 5-3 修改个人信息页面
图 5-5管理员登录页面:
此页面可以实现管理员登录。
图 5-5管理员登录页面
5.2.1教员注册的代码
protected void register_Click(object sender, EventArgs e)
{
string userName=txtUserName.Text.Trim();
string userPassWord=txtUserPassWord.Text.Trim();
string userType = "教员";
//将用户名、密码添加进数据库
LoginUser user = new LoginUser(userName, userPassWord,userType);
bool b = LoginUserManager.InsertUser(user);
if (!b)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('注册失败!');</script>");
return;
}
else
{
DataTable dt=new DataTable();
dt =LoginUserManager.SelectUserByNaAndPw(user);
int userId = (int)dt.Rows[0]["userId"];
string teacherName = txtName.Text.Trim();
string teacherSex;
if (male.Checked)
{
teacherSex = male.Text.Trim();
}
else
{
teacherSex = female.Text.Trim();
}
string teacherAge = txtAge.Text.Trim();
string teacherSchool = txtSchool.Text.Trim();
string teacherCourse = txtCourse.Text.Trim();
string teacherPhone = txtPhone.Text.Trim();
string teacherEmail = txtEmail.Text.Trim();
string teacherAddress = txtAddress.Text.Trim();
string teacherInfo = txtInfo.Text.Trim();
string price = txtPrice.Text.Trim();
Teacher tch = new Teacher(teacherName, teacherSex, teacherAge, teacherSchool, teacherCourse, teacherPhone, teacherEmail, teacherAddress, teacherInfo, price,userId);
bool res = TeacherManager.TeacherInsert(tch);
if (res)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('注册成功!');</script>");
return;
}
}
}
}
5.2.2教员信息修改的代码
#region 修改教员信息
/// <summary>
/// 修改教员信息
/// </summary>
/// <param name="tch">教员实体类</param>
/// <returns></returns>
public bool UpdateTeacher(Teacher tch)
{
bool flag = false;
string cmdText = "teacher_Update";
SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("@teacherId",tch.TeacherId),
new SqlParameter("@teacherName",tch.TeacherName),
new SqlParameter("@teacherSex",tch.TeacherSex),
new SqlParameter("@teacherAge",tch.TeacherAge),
new SqlParameter("@teacherSchool",tch.TeacherSchool),
new SqlParameter("@teacherCourse",tch.TeacherCourse),
new SqlParameter("@price",tch.Price),
new SqlParameter("@teacherPhone",tch.TeacherPhone),
new SqlParameter("@teacherEmail",tch.TeacherEmail),
new SqlParameter("@teacherAddress",tch.TeacherAddress),
new SqlParameter("@teacherInfo",tch.TeacherInfo)
};
int res = sqlhelper.ExecuteNonQuery(cmdText, paras, CommandType.StoredProcedure);
if (res > 0)
{
flag = true;
}
return flag;
}
#endregion
5.2.3搜索功能的代码
#region 按课程搜索教员
/// <summary>
/// 按课程搜索教员
/// </summary>
/// <returns></returns>
public DataTable SelectCourseTeacher(string txt)
{
DataTable dt = new DataTable();
string cmdText = "teacher_SelectByC";
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter ("@teacherCourse",txt)
};
dt = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure);
return dt;
}
#endregion
#region 按地点搜索教员
/// <summary>
/// 按地点搜索教员
/// </summary>
/// <returns></returns>
public DataTable SelectAddressTeacher(string txt)
{
DataTable dt = new DataTable();
string cmdText = "teacher_SelectByA";
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter ("@teacherAddress",txt)
};
dt = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure);
return dt;
}
#endregion
#region 按价格搜索教员
/// <summary>
/// 按价格搜索教员
/// </summary>
/// <returns></returns>
public DataTable SelectPriceTeacher(string txt)
{
DataTable dt = new DataTable();
string cmdText = "teacher_SelectByP";
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter ("@price",txt)
};
dt = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure);
return dt;
}
#endregionpublic partial class serach : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(TeacherManager .a ==1)
{
string txt = TeacherManager.b;
RepSerach.DataSource = new TeacherManager().SelectCourseTeacher(txt);
RepSerach.DataBind();
}
else
if(TeacherManager .a ==2)
{
string txt = TeacherManager.b;
RepSerach.DataSource = new TeacherManager().SelectAddressTeacher(txt);
RepSerach.DataBind();
}
else
if (TeacherManager .a ==3)
{
string txt = TeacherManager.b;
RepSerach.DataSource = new TeacherManager().SelectPriceTeacher(txt);
RepSerach.DataBind();
}
}
}
5.2.4论坛功能模块的代码
public partial class PostList : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ // 第一次进入该页面时,绑定所有帖子
rePost.DataSource = PostManager.SelectAllPost();
rePost.DataBind();
}
}
protected void btnBiuPost_Click(object sender, EventArgs e)
{
//验证验证码
string code = txtCode.Text.Trim().ToUpper();
string rightCode = Session["Code"].ToString();
if (code != rightCode)
{
//弹出验证码输入错误后,页面不会出现空白
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('验证码输入错误!');</script>");
return;
}
//添加进数据库
string postTitle = txtPoTitle.Text;
Model.Post P = new Model.Post(postTitle);
bool b = PostManager.InsertPost(P);
if (b)
{
//清空文本框
txtPoTitle.Text = "";
txtCode.Text = "";
//重新绑定所有帖子
rePost.DataSource = PostManager.SelectAllPost();
rePost.DataBind();
}
}
//删除帖子
protected void lbtDelPost_Click(object sender, EventArgs e)
{
//当前点击的按钮
LinkButton lb = (LinkButton)sender;
// 获取传过来的id
string postId = lb.CommandArgument;
//删除帖子
bool b = PostManager.DelPost(postId);
if (b)
{
//重新绑定帖子表
rePost.DataSource = PostManager.SelectAllPost();
rePost.DataBind();
}
else
{
//帖子删除失败
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('帖子删除失败,请联系管理员!');</script>");
}
}
}
#region 取出所有帖子
/// <summary>
/// 取出所有帖子
/// </summary>
/// <returns></returns>
public DataTable SelectAllPost()
{
DataTable dt = new DataTable();
dt = sqlhelper.ExecuteQuery("post_SelectAll", CommandType.StoredProcedure);
return dt;
}
#endregion
#region 添加帖子
/// <summary>
/// 添加帖子
/// </summary>
/// <param name="p">帖子实体类</param>
/// <returns></returns>
public bool InsertPost(Post p)
{
bool flag = false;
string cmdText = "post_Insert";
SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("@postTitle",p.PostTitle)
};
int res = sqlhelper.ExecuteNonQuery(cmdText, paras, CommandType.StoredProcedure);
if (res > 0)
{
flag = true;
}
return flag;
}
#endregion
#region 删除帖子(连同其下的评论一起删除)
/// <summary>
/// 删除帖子(连同其下的评论一起删除)
/// </summary>
/// <param name="postId">帖子ID</param>
/// <returns></returns>
public bool DelPost(string postId)
{
bool flag = false;
string cmdText = "post_Delete";
SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("@postId", postId)
};
int res = sqlhelper.ExecuteNonQuery(cmdText, paras, CommandType.StoredProcedure);
if (res > 0)
{
flag = true;
}
return flag;
}
#endregion
总结
在经济发展突飞猛进的今天,知识创造财富,科技改变命运。正是因为这个主题,人们对知识的渴望也越来越强烈,针对现状的修改和未来发展的趋势,实现以学生为本,方便教师的准则,该系统是从教师和学生双方的利益出发而开发。师生双方通过这个平台里交流、学习和传送知识。
期间我们分工合作,发挥了各个队友间的特长。以达到最好的效益和质量。论文方面由组员杨龙生和李振城负责,界面美工方面和代码实现由组长李小勇负责分派到每个组员,因为能力的限制,每个人负责的模块有大有小,但最重要的是大家的共同努力、学习的结晶。
这次项目实训是对我们大二第2学期这半年来所学知识的一次总结和检测,我们认为只有通过这样的项目实训,对ASP.NET进行一次全面的检验,从而使我们认识到知识内容的不足和知识框架的缺陷之处,然后有的放矢地加以弥补。
参考文献
[1]马瑞新 等编著 ASP.NET 2.0程序设计案例教程 北京 清华大学出版社
[2]龚赤兵 编著 ASP.NET 2.0网站开发案例教程 北京 中国水利水电出版社