C#教务管理系统设计与实现.docx
《C#教务管理系统设计与实现.docx》由会员分享,可在线阅读,更多相关《C#教务管理系统设计与实现.docx(8页珍藏版)》请在冰豆网上搜索。
![C#教务管理系统设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-1/21/6519bb96-c433-42e0-9088-068a9e30a632/6519bb96-c433-42e0-9088-068a9e30a6321.gif)
C#教务管理系统设计与实现
C#系统开发能力综合实训
----教务管理系统设计与实现
系别:
班级:
姓名:
学号:
日期:
一、课程设计题目:
教务管理系统
二、课程设计目的
一个综合性的实践环节,通过课程设计促进知识的复习和所学知识的巩固。
并利用所学知识能够利用VS2005开发一个简易的教务管理系统.
三、课程设计要求
需求分析
在科学技术飞速发展的今天,计算机科学及互联网日渐成熟,其强大的功能已为人们深刻认识,它已经进入人类社会的各个领域并发挥着越来越重要的作用。
各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。
现如今学校招生越来越多,必然就会有大量的学生信息需要处理。
如果只靠人力来完成,这将会变成一项非常繁琐、复杂的工作,而且还会出现很多意想不到的错误,给管理这些数据带来了很大的不便,也越来越不适合学校发展的需要。
随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。
面对庞大的信息量,就需要建立一个高效快捷的教务管理系统迫在眉睫。
其目的是为了提高学校对信息的管理,减少人力资源的开支和浪费,从而提高学校在各方面的工作效率。
通过这样的系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少管理方面的工作量。
由于计算机和网络的普及,若建立一个C/S结构的教务管理系统,学生便可以通过网络来查询成绩并且查询自己的有关信息,使得学校的教务管理工作系统化,规范化,自动化,大大提高了学校管理教务信息的效率。
教务管理系统是一个庞大而复杂的系统,它包括对院系资料的管理,对课程资料的管理,对学生资料的管理和对学生成绩的管理等等主要的功能。
教务管理系统是每个学校的一项必不可少的内容,它的好坏直接影响到学校里的主要工作,一旦此系统瘫痪,学校将会受到非常严重的损失,也会影响到每一个学生。
所以现如今设计一个功能完整、操作简单以及界面友好的教务管理系统变得非常重要。
四、课程设计内容
1.系统总体结构
2.数据库模块
由用户的需求分析和概念结构设计,最终设计了名为教务管理数据库的数据库,一部分数据库中的表如下所示:
表1-1admin表
表1-2teacher表
表1-3student表
表1-4class表
2.运行界面如图1-1所示:
图1-1主界面
图1-2课程界面
五、课程设计核心代码
Login.aspx代码如下:
protectedvoidLogin1_Authenticate(objectsender,AuthenticateEventArgse)
{
try
{
stringusertype=((System.Web.UI.WebControls.ListControl)(this.Login1.FindControl("RadioButtonList1"))).SelectedValue;
intre=userinfo.usercheck(usertype,Login1.UserName,Login1.Password);
if(re!
=0)
{
e.Authenticated=false;
if(re==1){Login1.FailureText="用户登录失败!
";}
if(re==2){Login1.FailureText="用户不存在!
";}
}
else
{
Session["User_id"]=Login1.UserName;
Session["user_power"]=usertype;
e.Authenticated=true;
}
}
catch(Exception)
{
return;
}
addclass.aspx主要代码如下:
protectedvoidBtnadd_Click(objectsender,EventArgse)
{
stringsql="insertintoclass(Class_id,Class_name,Class_college,Class_teacherid)values('"+TBxCid.Text+"','"+TBxCname.Text+"','"+TBxCollege.Text+"','"+DDLtid.SelectedValue+"')";
intresult=connection.ExecuteSql(sql);
if(result>=1)
{
Response.Write(MyUtility.Alert("插入成功!
"));
}
Response.Write("window.location.href='addclass.aspx'");
}
choosecourse.aspx主要代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
{
stringsql,Islocked;
DataSetds;
if(!
IsPostBack)
{
sql="SELECTx.Course_id,x.Course_name,x.Course_credit,x.Course_PreCId,teacher_course.SCno,teacher_course.Teacher_id,teacher_course.CMax,teacher_course.Class_id,teacher.Teacher_name,(SELECTCourse_nameFROMcourseASyWHERE(Course_id=x.Course_PreCId))ASCPreCourse_nameFROMteacher_courseINNERJOINteacherONteacher_course.Teacher_id=teacher.Teacher_idINNERJOINcourseASxONteacher_course.Course_id=x.Course_idWHERE(x.Course_kind='2')";
ds=connection.ExecuteSelectSql(sql);
if(ds!
=null&&ds.Tables.Count>0)
{
dgCourse.DataSource=ds.Tables[0];
dgCourse.DataBind();
for(inti=0;i{
sql="selectcount(*)fromstudent_coursewhereCourse_id="+ds.Tables[0].Rows[i]["Course_id"].ToString()+"andSCno="+ds.Tables[0].Rows[i]["SCno"].ToString();
DataSetds1=connection.ExecuteSelectSql(sql);
if(ds1!
=null&&ds1.Tables.Count>0&&ds1.Tables[0].Rows.Count>0)
dgCourse.Items[i].Cells[6].Text=ds1.Tables[0].Rows[0][0].ToString();
}
}
sql="SELECTSLockedFROMstudentwhereStudent_id='"+Session["User_id"].ToString()+"'";
SqlCommandcoursecommand=newSqlCommand(sql,connection.getconnection());
coursecommand.Connection.Open();
Islocked=coursecommand.ExecuteScalar().ToString();
coursecommand.Connection.Close();
if(Islocked=="1")
{
Session["Locked"]=true;
}
else
{
Session["Locked"]=false;
}
}
sql="selectcourse.Course_name,course.Course_credit,course.Course_kind,Teacher.Teacher_name,Teacher.Teacher_id,student_course.*fromstudent_course,Teacher,course,teacher_coursewherestudent_course.Student_id='"+Session["User_id"].ToString()+"'andstudent_course.SCno=teacher_course.SCnoandstudent_course.Course_id=Course.Course_idandteacher_course.Teacher_id=Teacher.Teacher_idandteacher_course.Course_id=course.Course_id";
ds=connection.ExecuteSelectSql(sql);
if(ds!
=null&&ds.Tables.Count>0)
{
dgselectedCourse.DataSource=ds.Tables[0];
dgselectedCourse.DataBind();
}
boollocked=bool.Parse(Session["Locked"].ToString());
if(!
locked)
{
lbLock.Text="您尚未锁定选课信息!
";
}
else
{
lbLock.Text="选课信息已被锁定!
";
Label1.Text="您所要学习的课程(必修和选修的):
";
btnLock.Visible=false;
dgselectedCourse.Columns[8].Visible=false;
dgCourse.Columns[10].Visible=false;
}
addgrade.aspx主要代码如下:
stringsql;
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)
{
sql="selectteacher_course.SCno,teacher_course.Course_id,course.Course_namefromcourse,teacher_coursewhereteacher_course.Teacher_id='"+Session["User_id"].ToString()+"'andteacher_course.Course_id=course.Course_id";
DataSetds=connection.ExecuteSelectSql(sql);
if(ds!
=null&&ds.Tables.Count>0)
{
DataViewdv=newDataView(ds.Tables[0]);
GVcourse.DataSource=dv;
GVcourse.DataBind();
GVcourse.SelectedIndex=-1;
}
}
}
protectedvoiddgSC_EditCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgse)
{
dgSC.EditItemIndex=e.Item.ItemIndex;
sql="selectstudent_course.*,Student_namefromstudent_course,studentwhereCourse_id='"+Lblcid.Text+"'andSCno='"+Lblscno.Text+"'andstudent_course.Student_id=student.Student_id";
dgscdatabind(sql);
}
六、课程设计心得体会
本系统通过一组数据的测试后,可以实现基本的功能,但是功能不是很完善。
管理员登陆后的功能还不够完善,有的地方效率不高,而且随着使用者的不同,系统的明朗度不够,所以系统的维护是非常重要的。
我觉得应该要对三方面进行维护。
一是对功能的维护,随着经济的发展等等社会因素,使用者对系统功能的要求越来越高。
所以系统设计者就要对功能进行进一步的分析。
二是对数据库的维护,数据库是非常重要的东西,对数据结构进行修改,更新数据文件等。
三是代码的维护。
代码的可读性和可更新性非常重要,随着技术的发展,旧的代码不能适应新的技术,必须进行更新。
在教务管理系统的开发过程中,碰到了一些问题。
一些是因为粗心而导致了,一些是技术不过关的原因,碰到问题总结如下:
1.数据的关联性。
如删除了学生信息却没有将选课信息中相应学生选课信息进行删除。
2.在多表查询时,定义表的简称时出问题了,还有多表之间的连接,如果是用AND语句的话,每一个字段都必须指定已知值,内连接则不然。
通过查有关资料将此问题解决了。
3.实现数据的插入出错,一个表中的数据改动,将牵连到其他表中相关的数据,由于没有及时更新其他表中的数据。
导致其他信息的显示出错,提示没有任何记录,后来根据反复思考,终于找到了根本原因。
4.系统界面设计的困难,由于审美观欠缺,总觉得系统总的不好看,多次改动,引起其他更多问题,后来想还是做个模板好,可最终还是没用上模板。
由于学习asp时间不是很长,系统在设计过程中,难免存在不足之处。
在程序结构上系统设计得还不够紧密,对一些问题,如数据库的设计上没有统一,造成部分数据冗余。
其次,安全性上考虑不够仔细等等。
虽然毕业设计已接近尾声,但我想我的这个设计不会因为毕业设计的结束而停止,在今后的学习中,再就这些问题进行完善,争取做出一个完全能够适当教务管理的系统。
七、参考文献
VisualStudioC#2005案例
ASP.NET2.0案例教程