摘 要
作业提交系统是基于B/S结构,在.NET平台上使用C#与Microsoft SQL 2000开发的。主要目的是解决学生提交作业和教师批改作业都得靠纸质交流,或者是用单一的上传,拷贝等方法交流不方便的问题。系统分了管理员模块和学生模块,学生提交作业采用在线提交方式,根据选择教师来选择作业,在教师公布标准答案之后查看作业标准答案。系统具有操作简便,界面友好的特性。管理员能够对用户信息和权限进行方便的修改和管理。论文详细阐述了本系统的开发背景、研究意义,开发环境以及系统的需求分析,详细说明了数据库的设计,以及系统各功能的实现。
作业提交系统有着很好的应用前景,用来代替传统的作业提交方式,实现在线作业提交方式的网络化管理。随着计算机技术和网络技术的发展,它的功能将会得到不断的发展和完善。
关键词:作业提交系统;SQL server 2000;.NET平台;
3.1 系统业务需求及特点
3.1.1 业务需求
系统要求管理员管理所有的用户信息,添加,删除用户都必须由管理员来完成,管理员可见所有用户的信息。普通用户(学生和教师用户)只能修改自己的信息。学生可以选择不同的教师,能够准确快速的查看已经布置的作业,学生只能看见自己的作业题目和内容,不能抄袭其他学生的作业。在提交作业以后,教师发布成绩和参考答案之后才能查看成绩与答案。管理员不能看到作业情况。
3.1.2 系统特点
性能:安全可靠,实时控制。
输入/输出:英文和汉字输入,英文和汉字输出。
安全与保密要求:不能轻易地被破坏,不能让管理员以外的人添加删除用户信息,对断电、死机、系统崩溃等问题有有力措施以保障数据不受损失。
3.2 用户特点
3.2.1 管理员用户
管理员可以是机房管理员,也可以是某位教师,对计算机技术比较了解,责任心和保密意识强。
3.2.2 学生用户
学校学生有计算机相关专业学生,能很快熟悉系统的使用方法,非计算机专业的学生也能很快学会并掌握使用系统。
4.1 系统功能划分
- 系统分为管理员模块和学生模块;
- 不同用户登录进入不同的界面;
- 学生作业的查看与提交;
- 学生作业成绩的查看;
- 作业参考答案的查看;
- 管理员添加管理员用户、教师用户和学生用户;
- 管理员修改管理员密码、用户信息与学生用户信息;
- 管理员删除管理员用户、教师用户和学生用户;
- 用户对个人资料的查看与修改。
-
4.2 系统功能体系图
无论是管理员用户还是学生用户,都必须通过登陆进入功能模块,管理员可以管理所有用户的信息,可以对用户信息进行添加,删除和修改操作;学生用户登陆后,可以进行标准答案下载,作业下载提交,作业成绩查询和修改用户资料四种操作。系统功能体系图如图3所示:
4.4 管理员模块的设计与实现
4.4.1 用户界面
管理员模块用户界面如图5所示:
图5 管理员模块用户界面
- 管理员用户从主登陆页面点击“管理员登陆”进入管理员模块登陆页面。
- 在登陆页面输入正确的用户名和密码后方可登陆到管理员模块。
- 管理员模块只允许管理员用户进入。
- 管理员模块的页面分成两栏,左边是功能目录,右边是具体功能的页面。
- 管理员用户在该模块中可进行管理员用户信息和普通用户信息的管理。
- 管理操作分为添加用户信息,修改用户信息和删除用户信息三种。
- 管理员用户可以查看各个用户的个人信息。
- 点击“安全退出”可以退出该模块。
-
4.4.2 增删改管理员用户
管理员可以添加更多的管理员用户,管理员用户必须由管理员添加,每次当管理员添加管理员用户时系统通过INSERT语句向admin表里插入一行,记录新的管理员用户的用户名,密码。
删除管理员必须由管理员用户来操作,执行删除操作时,系统通过判断admin表中的id字段,使用Delete语句从admin表中删除相对应的行。
当admin表中的行数等于1的时候,则提示“请至少保留一个管理员帐号”。
修改管理员密码必须先登陆管理员界面,在密码栏里输入新密码,系统通过UPDATE语句更新admin表中的admin_pwd字段。
- 添加新管理员
- 判断帐号是否重复
DataTable tempDt=Db.ExecuteToDataSet("Select admin_name From admin where admin_name='"+strTrans.insertTran(adminName.Text)+"'").Tables[0];
if (tempDt.Rows.Count>0)
{
msg.Text = "";
return;
}
-
- 添加管理员信息到数据库
Db.ExecuteSql("insert into admin(admin_name,admin_pwd) values('"+strTrans.insertTran(adminName.Text)+"','"+strTrans.insertTran(adminPass.Text)+"')");
Response.Redirect("admin.aspx",true);
}
- 删除管理员帐号
private void delAdmin()
{
DataSet ds = Db.ExecuteToDataSet("Select Count(*) From admin");
if ( Convert.ToInt32(ds.Tables[0].Rows[0][0]) == 1 )
{
ds.Dispose();
msg.Text = "";
return;
}
ds.Dispose();
Db.ExecuteSql("Delete from admin where id="+Request.QueryString["id"].ToString());
}
- 修改管理员密码信息
Db.ExecuteSql ("Update admin set admin_pwd='"+strTrans.insertTran(adminpass2.Text)+"' Where admin_name='"+strTrans.insertTran(adminname2.Text)+"'");
4.4.3 添加新用户
普通用户(包括教师用户和学生用户)都必须通过管理员添加新的用户。person_info表用来记录普通用户的用户信息(用户名,密码,E-mail,电话,用户类型)。
管理员登陆管理员界面后,点击“添加新用户”,在表单中输入需要添加的用户信息后,点击“提交”按钮,系统通过INSERT语句向person_info表里插入一行,记录该用户的个人信息。
管理员添加用户时,用户id必须是唯一的,因为用户可能会有名字相同的情况,所以系统通过id字段来判断用户的唯一性。
- 判断帐号是否重复
DataSet ds = Db.ExecuteToDataSet("SELECT * from person_info WHERE id="+Convert.ToInt32(txtId.Text.Trim()));
if (ds.Tables[0].Rows.Count == 1 )
{
msg.Text = "";
}
- 添加用户信息到数据库
string sql = "Insert Into person_info "+
" values ('"+ strTrans.insertTran(txtId.Text) + "',"+
" '"+ strTrans.insertTran(txtName.Text) + "',"+
" '"+ strTrans.insertTran(txtPassword.Text) + "',"+
" '"+strTrans.insertTran(txtMail.Text)+"',"+
" '"+strTrans.insertTran(txtPhone.Text)+"',"+
" '"+ dpl_Class.Items[dpl_Class.SelectedIndex].Value + "'"+
") ";
Db.ExecuteSql(sql);
showMsg("添加成功!\\n请勿刷新页面继续添加");
4.4.4 修改删除普通用户
管理员有权限修改或者删除普通用户的个人信息。
系统首先从数据库中把所有用户的信息绑定到页面上,管理员点击“修改”按钮跳转到修改页面。在文本框输入要修改的用户信息后,点击“修改”按钮,系统通过UPDATE语句更新person_info表中的相应字段。系统再通过用户类别参数来判断返回到教师信息页面还是学生信息页面。
实施删除操作和删除管理员操作相似,使用Delete语句从person_info表中删除相对应的行。
- 修改普通用户信息
string sql = "update person_info "+" Set name ='"+strTrans.insertTran(txtName.Text)+"',passwd='"+strTrans.insertTran(txtPassword.Text)+"'"+",email='"+strTrans.insertTran(txtMail.Text)+"',phone='"+strTrans.insertTran(txtPhone.Text)+"',role='"+dpl_Class.Items[dpl_Class.SelectedIndex].Value+ "'where number="+Convert.ToInt32(Request.QueryString["id"]).ToString();
Db.ExecuteSql(sql);
showMsg("修改成功!");
- 删除普通用户信息
Db.ExecuteSql("Delete From person_info where number="+Request.QueryString["id"]);
4.5 学生模块的设计与实现
4.5.1 用户界面
学生模块用户界面如图6所示:
图6 学生用户界面
- 学生用户在主登陆界面输入正确的用户名和密码后登陆到学生模块。
- 学生模块只允许学生用户进入。
- 学生模块的页面分成两栏,左边是功能目录,右边是具体功能的页面。
- 学生模块主要分为作业查看提交,作业成绩查询和作业答案查看三个功能部分。
- 学生用户查看作业题目和作业内容以后便可在下方输入自己的作业内容,并提交到系统。
- 学生用户可以在用户资料修改页面修改自己的个人信息和选择需要查看作业的教师。
-
4.5.2 提交作业
学生登陆后,必须首先选择教师才能查看该教师所布置的作业。学生选择老师以后,系统通过INSERT语句向stusent_teacher表中插入一行,用来记录学生和教师的多对多关系。
点击“作业查看提交”按钮,便可以看到该教师目前所布置的作业列表,调用worklist.aspx页面。系统从teacher_work_info表和person_info表里提取教师姓名字段、作业题目字段和提交时间字段绑定到列表中并显示到页面上。选择任意一个题目,系统将跳转到studentwork.aspx页面,学生在此页面的回答框中输入自己的答案,选择“提交”按钮后,首先判断student_work_info表中是否有重复的作业信息,如果没有,则系统通过INSERT语句向student_work_info表里插入一行,记录该学生的一次作业信息。
- 记录学生和教师的多对多关系
string sql1="Insert into student_teacher"+ "values ("+Session["id"]+","+DropDownList2.Items[DropDownList2.SelectedIndex].Value+")";
Db.ExecuteSql(sql1);
- 学生提交作业
DataSet ds1=Db.ExecuteToDataSet("select * from student_work_info where id="+Int32.Parse(TextId.Text)+" and studentid="+Session["id"]);
if(ds1.Tables[0].Rows.Count ==1)
{
msg.Text="";
ds1.Dispose();
}
else
{
string sql="insert into student_work_info(id,studentid,teacherid,subtime,title,content) VALUES("+Int32.Parse(TextId.Text)+","+Session["id"]+","+tid+",'"+str+"','"+TextTitleCon.Text+"','"+TextAnswer.Text+"')";
Db.ExecuteSql(sql);
msg.Text="";
msg.Text += "";
}
4.5.3 查询作业成绩
学生登陆后,点击“作业成绩查询”按钮,看到的是教师已经批改的作业列表,同样也使用worklist.aspx页面。通过判断一个参数的值来区分列表里的所列的作业是查看未做作业还是查询作业成绩。系统从student_work_info表、teacher_work_info表和person_info表提取教师姓名字段、作业题目字段和提交时间字段绑定到列表中并显示到页面上。系统同样将跳转到studentwork.aspx页面,通过判断一个参数的值来区分所调用的相关函数是否显示教师评语。
- 判断作业类型
if(Session["x"].ToString()=="download")
{
showDownload();
TextRemark.Visible=false;
TextAnswer.Enabled=true;
Button2.Visible=false;//学生下载提交时不显示
}
if(Session["x"].ToString()=="query")
{
showQuery();
Button1.Visible=false;
Button3.Visible=false;//学生查询时不显示
}
- 查询作业成绩
private void showQuery()
{
DataSet ds = Db.ExecuteToDataSet("SELECT p.name as name, s.id , s.title,s.content,s.remark,s.grade FROM student_work_info s,person_info p,teacher_work_info t WHERE s.correcttime!='' and s.teacherid=t.teacherid and t.teacherid=p.id and s.id="+Request.Params["id"]);
TextId.Text=Request.Params["id"].ToString();
DataRow tempRow = ds.Tables[0].Rows[0];
TextTeacher.Text=tempRow["name"].ToString();
TextStudent.Text=Session["name"].ToString();
TextTitleCon.Text=tempRow["title"].ToString();
TextAnswer.Text=tempRow["content"].ToString();
TextRemark.Text=tempRow["remark"].ToString();
DropDownListGrade.SelectedIndex=Int32.Parse(tempRow["grade"].ToString());
ds.Dispose();
TextId.Enabled=false;
TextTeacher.Enabled=false;
TextStudent.Enabled=false;
TextTitleCon.Enabled=false;
TextAnswer.Enabled=false;
TextRemark.Enabled=false;
DropDownListGrade.Enabled=false;
}
4.5.4 查看标准答案
学生登陆后,点击“标准答案查看”按钮,跳转到answerlist.aspx页面,便可以看到该教师目前已发布标准答案的作业列表,系统从student_work_info表、person_info表和teacher_work_info 表提取教师姓名字段、作业题目字段和提交时间字段绑定到列表中并显示到页面上。选择任意一个题目,系统将跳转到teacher.aspx页面,通过判断一个参数的值来区分是否是学生用户访问此页面。如果是学生用户,则只能查看此页面。
- 判断访问的用户类型
if(Session["role"].ToString()=="1")
BindSelectedData();
if(Session["role"].ToString()=="2")
showAnswer();
- 查看标准答案
private void showAnswer()
{
DataSet ds = Db.ExecuteToDataSet("select p.name,t.title,t.content,t.answer from person_info p,teacher_work_info t WHERE t.id='"+Request.Params["id"]+"' and t.teacherid=p.id");
DataRow tempRow = ds.Tables[0].Rows[0];
TextId.Text=Request.Params["id"];
TextTeacher.Text=tempRow["name"].ToString();
TextName.Text=tempRow["title"].ToString();
TextTitleCon.Text=tempRow["content"].ToString();
TextAnswerCon.Text=tempRow["answer"].ToString();
TextId.Enabled=false;
TextTeacher.Enabled=false;
TextName.Enabled=false;
TextTitleCon.Enabled=false;
TextAnswerCon.Enabled=false;
ButtonCommit.Visible=false;
}
4.5.5 普通用户修改资料
普通用户登陆到系统后可以通过点击“修改用户资料”按钮来修改自己的个人信息。系统通过判断用户唯一的ID号,把相关信息显示到页面上。同管理员修改用户信息的原理一样,在文本框中输入要修改的用户信息后,点击“修改”按钮,系统通过UPDATE语句更新person_info表中的相应字段。
string sql = "update person_info "+" Set passwd='"+textPasswd.Text+"',name='"+strTrans.insertTran(textName.Text)+"' "+" ,phone='"+strTrans.insertTran(textPhone.Text)+" ',email='"+strTrans.insertTran(textEmail.Text)+"' where id='"+Session["id"].ToString()+"'";
Db.ExecuteSql(sql);
- 添加新管理员
还没有评论,来说两句吧...