学生信息管理系统.docx
《学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统.docx(41页珍藏版)》请在冰豆网上搜索。
学生信息管理系统
软件学院
一级实践课题报告
课题名称:
学生信息管理系统
专业:
网络系统管理
班级:
网络092
学号:
200907062203
学生姓名:
江瑞霞
指导教师:
韩玉民
2011年1月14日
目录
第1章任务描述1
第2章工具与技术2
第3章实现3
3.1功能模块3
3.2流程分析4
3.3编程实现4
第4章结束语14
参考文献:
15
附录主要的源程序16
第1章任务描述
(1)学生信息管理
能够实现学生信息的添加、删除、修改和查询。
查询要求:
●基于学号查询(唯一性);
●基于姓名查询(可重复,考虑多个结果);
●基于班级查询(多个结果);
(2)班级信息管理
能够实现班级信息的添加、删除、修改和查询。
第2章工具与技术
开发工具:
MicrosoftVisualStudio开发平台
程序设计语言:
c#
技术特点:
简洁的语法
完全的面向对象程序设计
与Web紧密结合
充分的安全性与错误处理
灵活性
兼容性
第3章实现
3.1功能模块
图3-1班级信息管理
图3-2学生信息管理
3.2流程分析
学生信息管理系统主要采用的是c#语言编写的一个Windows应用程序,采用三层架构的设计方法,来实现系统的基本功能。
三层分别是数据访问层、业务逻辑层和表示层。
数据访问层的主要功能是用来连接数据库,并存放SQL处理语句的方法。
业务逻辑层的主要作用是调用数据访问层的方法,并且返回一个值。
表示层即用户界面,用来实现系统和用户的交互。
表示层可以调用业务逻辑层的返回值,也可以使用Model中定义的读写字段。
Model不属于三层结构中的任何一层,只是用来定义数据操作中用到的字段的。
3.3编程实现
3.3.1班级信息管理
1、查询
查询的时候出现了错误,尚未解决,错误如图3-3所示
图3-3错误
2、添加
添加信息主要使用DataGridView控件和Button控件实现的,利用DataGridView控件进行数据绑定,将数据库中的数据显示在用户界面上。
用户可以添加数据库中没有的记录。
如图3-4
图3-4添加班级信息
单击添加按钮,会提示添加成功,如图3-5
图3-5添加成功
单击确定后,该记录会出现在界面上的DataGridView控件中,如图3-6
图3-6显示添加成功
3、修改
修改也是通过Button控件实现的,操作时,先选中将要修改的记录,如图3-7
图3-7选中将要修改的记录
然后,单击修改按钮,出现如图3-8的结果
图3-8修改成功
再单击确定按钮,将显示已经修改过的记录,如图3-9
图3-9已经成功修改记录
4、删除
删除功能也是通过Button按钮实现的,如果想删除某条记录:
首先,选中某条记录,单击删除按钮,出现如图3-10的结果
图3-10删除成功
然后,单击确定按钮,该记录将被删除,如图3-11
图3-11已经删除
3.3.2学生信息管理
1、查询
学生信息查询出现了如图3-12所示的错误
图3-12错误
2、添加
在填写完成想要添加的学生信息后,填写如图3-13
图3-13填写将要添加的记录信息
单击添加按钮,出现如图3-14的结果
图3-14添加成功
单击确定按钮,记录被成功添加,结果如图3-15
图3-15已经成功添加记录
3、修改
选中想要修改的记录,并且进行修改,如图3-16
图3-16修改记录
单击修改按钮,出现如图3-17的提示
图3-17修改成功
单击确定按钮,信息已经被修改过了,如图3-18所示
图3-18成功修改学生信息
4、删除
选中想要删除的记录,如图3-19
图3-19选中记录
单击删除按钮,出现如图3-20的提示
图3-20删除成功
单击确定按钮,该记录从学生信息管理界面上被删除,如图3-21所示
图3-21成功删除选中记录
第4章结束语
我觉得自己较好地完成了本次实践课题,运行程序可以实现基本的功能。
但是,我觉得自己还有很多的不足和需要改进的地方。
工具栏和菜单栏一直令我困惑,我不太清楚怎么把工具栏和菜单栏对应起来,而且这是一个比较小的系统,我不知道怎样写菜单栏中的子菜单,也不知道工具栏应该有哪些工具。
所以在设计的时候,我没有使用工具栏。
虽然课题要求是把信息写成二进制文件,并保存为.dat格式,但是由于以前没有接触过这些,我也尝试着查看一些资料,来实现课题的要求,但是由于时间有限,我未能如期完成任务,只好用自己比较熟悉的数据库来保存班级和学生的信息。
我感觉很惭愧,学了一年半了,生成安装程序都没有听说过。
一看见课题上要求生成安装程序,我就感觉课题好陌生。
不过,在老师和同学的帮助下,我基本上熟悉了生成安装程序的步骤,但是有时不能成功地生成安装程序。
一年没学过新建项目的编程了,看到课题的我有点害怕。
不过,我经过一个学期网站设计的学习,还有三级课题的锻炼,我对做好课题还是充满了信心。
但是,在实训的过程中,我还是遇到了很多的困难和问题。
课题的要求用我们以前学过的知识大部分都无法解决。
如生成安装程序,我感觉好迷茫,通过老师的指导和相关资料的参考,我终于解决了这个问题。
二进制文件的存取是我遇到的最难的问题,尽管我查过相关的资料,也和同学讨论过,但是到现在还没有解决。
工具栏和菜单栏刚开始的时候我也有些迷茫,但是,经过查阅相关资料,向同学请教,我明白了它们的用法。
同时,我也认识到了项目开发这个行业的工作的困难和面临的挑战。
如果我们想在这个行业做的很好的话,就必须付出很多的努力。
对自己也有了一个清晰的认识,尽管我编程现在学的不怎么样,但是只要用心去做,我发现自己对编程还是很有兴趣的。
从课题实训中我发现了自己的兴趣爱好,我将一如既往的学习编程,将来从事编程方面的工作。
我最大的优点就是对于自己不懂的问题会及时查阅相关资料、问老师或者同学。
谢谢韩老师在我做课题的过程中给我的指导和帮助,谢谢给我帮助的同学们。
参考文献:
[1]童爱红.VisualC#.NET应用教程[M].北京:
人民邮电出版社,2004.3
[2]李兰友杨晓光.VisualC#.NET程序设计[M]北京:
清华大学出版社,2004.5
[3]韩玉民.计算机专业英语教学研究与实践[J].计算机与信息技术,2008,(6):
106-107.
附录主要的源程序
数据访问层主要程序代码
namespaceDal
{
publicclassDataBase//建立数据库连接
{
publicstaticstringsqlconn="datasource=LENOVO-PC;uid=qq;pwd=abcd;database=ZhonggongStudent";
}
}
namespaceDal
{
publicclassClasses
{
publicDataTableGetAll()
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
SqlDataAdapterda=newSqlDataAdapter("select*fromtb_ClassesInfo",conn);
DataSetds=newDataSet();
da.Fill(ds);
returnds.Tables[0];
}
publicboolAdd(Model.ClassesmClasses)//添加班级信息的方法
{
try
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
conn.Open();
SqlCommandcom=newSqlCommand();
com.Connection=conn;
com.CommandText="insertintotb_ClassesInfovalues(@ClassID,@ClassName,@TeacherName,@StudentNum)";
com.Parameters.Add(newSqlParameter("@ClassID",mClasses.ClassID));
com.Parameters.Add(newSqlParameter("@ClassName",mClasses.ClassName));
com.Parameters.Add(newSqlParameter("@TeacherName",mClasses.TeacherName));
com.Parameters.Add(newSqlParameter("@StudentNum",mClasses.StudentNum));
com.ExecuteNonQuery();
conn.Close();
returntrue;
}
catch
{
returnfalse;
}
}
publicboolUpdate(Model.ClassesmClasses)//修改班级信息的方法
{
try
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
conn.Open();
SqlCommandcom=newSqlCommand();
com.Connection=conn;
com.CommandText="updatetb_ClassesInfosetClassName=@ClassName,TeacherName=@TeacherName,StudentNum=@StudentNumwhereClassID=@ClassID";
com.Parameters.Add(newSqlParameter("@ClassID",mClasses.ClassID));
com.Parameters.Add(newSqlParameter("@ClassName",mClasses.ClassName));
com.Parameters.Add(newSqlParameter("@TeacherName",mClasses.TeacherName));
com.Parameters.Add(newSqlParameter("@StudentNum",mClasses.StudentNum));
com.ExecuteNonQuery();
conn.Close();
returntrue;
}
catch
{
returnfalse;
}
}
publicboolDelete(stringClassID)//删除班级信息的方法
{
try
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
conn.Open();
SqlCommandcm=newSqlCommand();
cm.Connection=conn;
cm.CommandText="deletefromtb_ClassesInfowhereClassID=@ClassID";
cm.Parameters.Add(newSqlParameter("@ClassID",ClassID));
cm.ExecuteNonQuery();
conn.Close();
returntrue;
}
catch
{
returnfalse;
}
}
publicDataTableGetList(stringstrWhere)//查询班级信息的方法
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
SqlDataAdapterda=newSqlDataAdapter();
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
stringsqlStr="select*fromtb_ClassesInfo"+strWhere;
cmd.CommandText=sqlStr;
da.SelectCommand=cmd;
DataSetds=newDataSet();
da.Fill(ds);
returnds.Tables[0];
}
}
}
namespaceDal
{
publicclassStudents
{
publicDataTableGetAll()
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
SqlDataAdapterda=newSqlDataAdapter("select*fromtb_UserInfo",conn);
DataSetds=newDataSet();
da.Fill(ds);
returnds.Tables[0];
}
publicDataTableGetAll1()
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
SqlDataAdapterda=newSqlDataAdapter("select*fromtb_StudentsInfo",conn);
DataSetds=newDataSet();
da.Fill(ds);
returnds.Tables[0];
}
publicboolAdd(Model.StudentsmStudent)
{
try
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
conn.Open();
SqlCommandcom=newSqlCommand();
com.Connection=conn;
com.CommandText="insertintotb_StudentsInfovalues(@StudentID,@StudentName,@StudentSex,@Subject,@StudentBirthday,@ClassID,@AvergeGrade)";
com.Parameters.Add(newSqlParameter("@StudentID",mStudent.StudentID));
com.Parameters.Add(newSqlParameter("@StudentName",mStudent.StudentName));
com.Parameters.Add(newSqlParameter("@StudentSex",mStudent.StudentSex));
com.Parameters.Add(newSqlParameter("@Subject",mStudent.Subject));
com.Parameters.Add(newSqlParameter("@StudentBirthday",mStudent.StudentBirthday));
com.Parameters.Add(newSqlParameter("ClassID",mStudent.ClassID));
com.Parameters.Add(newSqlParameter("AvergeGrade",mStudent.AvergeGrade));
com.ExecuteNonQuery();
conn.Close();
returntrue;
}
catch
{
returnfalse;
}
}
publicboolUpdate(Model.StudentsmStudent)//修改学生信息的方法
{
try
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
conn.Open();
SqlCommandcom=newSqlCommand();
com.Connection=conn;
com.CommandText="updatetb_StudentsInfosetStudentName=@StudentName,StudentSex=@StudentSex,Subject=@Subject,StudentBirthday=@StudentBirthday,ClassID=@ClassID,AvergeGrade=@AvergeGradewhereStudentID=@StudentID";
com.Parameters.Add(newSqlParameter("@StudentID",mStudent.StudentID));
com.Parameters.Add(newSqlParameter("@StudentName",mStudent.StudentName));
com.Parameters.Add(newSqlParameter("@StudentSex",mStudent.StudentSex));
com.Parameters.Add(newSqlParameter("@Subject",mStudent.Subject));
com.Parameters.Add(newSqlParameter("@StudentBirthday",mStudent.StudentBirthday));
com.Parameters.Add(newSqlParameter("ClassID",mStudent.ClassID));
com.Parameters.Add(newSqlParameter("AvergeGrade",mStudent.AvergeGrade));
com.ExecuteNonQuery();
conn.Close();
returntrue;
}
catch
{
returnfalse;
}
}
publicboolDelete(stringStudentID)//删除学生信息的方法
{
try
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
conn.Open();
SqlCommandcm=newSqlCommand();
cm.Connection=conn;
cm.CommandText="deletefromtb_StudentsInfowhereStudentID=@StudentID";
cm.Parameters.Add(newSqlParameter("@StudentID",StudentID));
cm.ExecuteNonQuery();
conn.Close();
returntrue;
}
catch
{
returnfalse;
}
}
publicDataTableGetList(stringstrWhere)//查询学生信息的方法
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=DataBase.sqlconn;
SqlDataAdapterda=newSqlDataAdapter();
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
stringsqlStr="select*fromtb_StudentsInfo"+strWhere;
cmd.CommandText=sqlStr;
da.SelectCommand=cmd;
DataSetds=newDataSet();
da.Fill(ds);
returnds.Tables[0];
}
}
}
业务逻辑层的主要代码:
namespaceBLL
{
publicclassClasses
{
publicDataTableGetAll()
{
returnnewDal.Classes().GetAll();
}
publicboolAdd(Model.ClassesmClass)
{
returnnewDal.Classes().Add(mClass);
}
publicboolUpdate(Model.ClassesmClasses)
{
returnnewDal.Classes().Update(mClasses);
}
publicboolDelete(stringClassID)
{
returnnewDal.Classes().Delete(ClassID);
}
publicDataTableGetList(stringstrWhere)
{
returnnewDal.Classes().GetList(strWhere);
}
}
}
namespaceBLL
{
publicclassStudents
{
publicDataTableGetAll()
{
returnnewDal.Students().GetAll();
}
public