学生选课管理系统数据库.docx
《学生选课管理系统数据库.docx》由会员分享,可在线阅读,更多相关《学生选课管理系统数据库.docx(18页珍藏版)》请在冰豆网上搜索。
学生选课管理系统数据库
学生选课管理信息系统
一、课程设计的目的和意义
数据库课程设计是在学生系统的学习了数据库原理课程后,按照关系型数据
库的基本原理,综合运用所学的知识,以小组为单位,设计开发一个小型的数据库管理系统。
通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容。
大型数据库课程设计是计算机专业集中实践性教学环节之一,是学习完《数据库原理及应用》课程后进行的一次全面的综合练习。
其目的在于加深对大型数据库课程理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数据库解决实际问题的能力。
培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实事求是的科学态度和勇于探索的创新精神。
培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。
二、需求分析
学生选课系统体现在对各种信息的保存、修改和查询。
经过仔细分析系统需求之后可知其主要功能,具体功能如下:
可以根据表查询四个表之间属性之间的关系
系统总体设计图如图1所示:
图1整体设计图
三、概念结构设计(E-R图)
E-R图
四、逻辑结构设计
将E-R图转换成关系模式:
教师:
(教师编号,教师姓名,性别,年龄,学历,职称,毕业院校,健康状况)
学生:
(学号,姓名,所属院系,年龄)
选课:
(课程编号,课程名称,任课教师,学分)
成绩:
(学生学号,课程编号,课程名称,成绩)
五、数据库实施与维护
建立数据库打开SQLServer2008,建立数据库:
zaq。
1.在学生选课系统数据库中,添加teacher表,设置教师编号为主键,不允许为空,如图3所示
图3
右键选择编辑前200行,输入数据,如图4所示
图4
2.添加student表,设置学号为主键,不允许为空,如图5所示:
图5
右键选择编辑前200行,输入数据,如图6所示:
图6
3.添加choose表,设置课程编号为主键,不允许为空,如图7所示:
图7
右键选择编辑前200行,输入数据,如图8所示:
图8
4.添加grade表,设置学生学号,教师编号,课程名称为主键,不允许为空,如图9所示:
右键选择编辑前200行,输入数据,如图10所示:
六、界面设计与代码
1.登录界面
输入已在数据库中的账号和密码,点击登录按钮,如图11所示:
提示登录成功,单击确定进入主窗体
双击登录按钮,更新单击事件处理程序,主要代码如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringuserName=txtName.Text.Trim();
stringpassword=txtPwd.Text.Trim();
stringconnString=@"DataSource=a-think;InitialCatalog=zaq;IntegratedSecurity=True;Pooling=False;";
SqlConnectionconnection=newSqlConnection(connString);
//获取用户名和密码匹配的行的数量的SQL语句
stringsql=String.Format("selectcount(*)from[log]whereID='{0}'andPASSWORD='{1}'",userName,password);
try
{
connection.Open();//打开数据库连接
SqlCommandcommand=newSqlCommand(sql,connection);//创建Command对象
intnum=(int)command.ExecuteScalar();//执行查询语句,返回匹配的行数
if(num>0)
{
//如果有匹配的行,则表明用户名和密码正确
MessageBox.Show("欢迎进入系统!
","登录成功",MessageBoxButtons.OK,MessageBoxIcon.Information);
mainmainForm=newmain();//创建主窗体对象
mainForm.Show();//显示窗体
this.Visible=false;//登录窗体隐藏
}
else
{
txtPwd.Text="";
MessageBox.Show("您输入的用户名或密码错误!
","登录失败",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"操作数据库出错!
",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
finally
{
connection.Close();//关闭数据库连接
}
}
}
}
2.主界面
如图10所示:
4.点击教师信息显示下图12,
双击添加按钮,程序代码如下:
privatevoidbutton2_Click(objectsender,EventArgse)
{
stringconnString=@"DataSource=A-THINK;InitialCatalog=zaq;IntegratedSecurity=True;Pooling=False;";
SqlConnectionconnection=newSqlConnection(connString);
SqlCommandcommand=newSqlCommand();
stringsql=String.Format("INSERTINTOteacher(教师编号,教师姓名,性别,年龄,学历,职称,毕业院校,健康状况)VALUES('"+tno1.Text+"','"+tname1.Text+"','"+tsex1.Text+"','"+tage1.Text+"','"+tdip1.Text+"','"+tmon1.Text+"','"+tsch1.Text+"','"+thea1.Text+"')");
try
{
connection.Open();//打开数据库连接
command.Connection=connection;
command.CommandText=sql;//设置Command对象要执行的SQL语句
intcount=command.ExecuteNonQuery();//执行更新命令,返回值为更新的行数
if(count>0)
MessageBox.Show("添加成功","添加成功",MessageBoxButtons.OK,MessageBoxIcon.Information);
else
MessageBox.Show("添加失败","添加失败",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"操作数据库出错!
",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
finally
{
connection.Close();//关闭数据库连接
}
}
添加数据后,出现添加成功:
双击删除按钮,程序代码如下:
privatevoidbutton3_Click(objectsender,EventArgse)
{
stringtno=tno1.Text.Trim();
stringtname=tname1.Text.Trim();
stringtsex=tsex1.Text.Trim();
stringtage=tage1.Text.Trim();
stringtdip=tdip1.Text.Trim();
stringtmon=tmon1.Text.Trim();
stringtsch=tsch1.Text.Trim();
stringthea=thea1.Text.Trim();
stringstr="DataSource=A-THINK;InitialCatalog=zaq;IntegratedSecurity=True;Pooling=False";
SqlConnectionconn=newSqlConnection(str);
conn.Open();
if(tno1.Text!
=""||tname1.Text!
=""||tsex1.Text!
=""||tage1.Text!
=""||tdip1.Text!
=""||tmon1.Text!
=""||tsch1.Text!
=""||thea1.Text!
="")
{
SqlCommandcom=newSqlCommand("deletefromteacherwhere教师编号='"+tno+"'or教师姓名='"+tname+"'or性别='"+tsex+"'or年龄='"+tage+"'or学历='"+tdip+"'or职称='"+tmon+"'or毕业院校='"+tsch+"'or健康状况='"+thea+"'",conn);
intm=com.ExecuteNonQuery();
if(m>0)
MessageBox.Show("成功删除该教师信息!
");
else
MessageBox.Show("删除该教师信息失败!
");
}
else
MessageBox.Show("请输入正确的信息!
");
conn.Close();conn.Dispose();
}
删除成功,提示删除成功:
双击修改按钮,程序代码如下:
privatevoidbutton4_Click(objectsender,EventArgse)
{
stringtno=tno1.Text.Trim();
stringtname=tname1.Text.Trim();
stringtsex=tsex1.Text.Trim();
stringtage=tage1.Text.Trim();
stringtdip=tdip1.Text.Trim();
stringtmon=tmon1.Text.Trim();
stringtsch=tsch1.Text.Trim();
stringthea=thea1.Text.Trim();
stringstr="DataSource=A-THINK;InitialCatalog=zaq;IntegratedSecurity=True;Pooling=False";
SqlConnectionconn=newSqlConnection(str);
conn.Open();
if(tno1.Text!
=""&&tname1.Text!
=""&&tsex1.Text!
=""||tage1.Text!
=""||tdip1.Text!
=""||tmon1.Text!
=""||tsch1.Text!
=""||thea1.Text!
="")
{
SqlCommandcom=newSqlCommand("updateteacherset教师姓名='"+tname+"'where教师编号='"+tno+"'",conn);
inta=com.ExecuteNonQuery();
if(a>0)
MessageBox.Show("修改成功!
");
else
MessageBox.Show("修改该教师信息失败!
");
}
else
MessageBox.Show("请输入正确的信息!
");
conn.Close();conn.Dispose();
}
}
}
修改成功后显示修改成功:
双击查询按钮,程序代码如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringconnString="DataSource=A-THINK;InitialCatalog=zaq;IntegratedSecurity=True;Pooling=False;";
SqlConnectionconnection=newSqlConnection(connString);
SqlCommandcommand=newSqlCommand();
stringsql=String.Format("select*FROMteacherWHERE教师编号='{0}'",tno1.Text);
try
{
inti=0;
connection.Open();//打开数据库连接
command.Connection=connection;
command.CommandText=sql;//设置Command对象要执行的SQL语句
SqlDataReaderdataReader=command.ExecuteReader();
while(dataReader.Read())
{
i++;
tno1.Text=dataReader["教师编号"].ToString();
tname1.Text=dataReader["教师姓名"].ToString();
tsex1.Text=dataReader["性别"].ToString();
tage1.Text=dataReader["年龄"].ToString();
tdip1.Text=dataReader["学历"].ToString();
tmon1.Text=dataReader["职称"].ToString();
tsch1.Text=dataReader["毕业院校"].ToString();
thea1.Text=dataReader["健康状况"].ToString();
}
if(i==0)
MessageBox.Show("教师不存在","查询失败",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"操作数据库出错!
",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
finally
{
connection.Close();//关闭数据库连接
}
}
5.点击学生信息,显示下图界面:
6.点击选课信息,显示如下图片:
7.点击成绩信息,显示如下界面:
图12
七、课程设计心得与体会
这次课设不仅仅是对这个学期数据库课程的总结,更是一次知识大检查。
这个不但要掌握数据库原理,还要熟练掌握c#语言。
我用这学期刚刚学会的vs2010开发环境中的c#,设计的是开发工具窗体界面运行模式。
这样不仅可以学习数据库,而且还可以对c#方面的知识进行巩固,知识是相互联系的,没有哪一门是单独存在的。
所以要学好一门课,就是应该横向思考,多联系,这样会学的更好。
这次课程设计,我选的是选课管理系统,这个课题比较贴近生活,所以要考虑到选课的实际情况,根据实际情况来进行分析,构思好功能模块。
在这个过程中,最难的应该是软件编程了。
在编程的过程中,遇到的问题也可谓是多样化。
先是因为一些控件没有响应事件,导致运行的时候点击没有效果,然后再SQL语句中字符串的单引号,双引号标注出现问题,同样调试时没有出错,运行时出现问题。
一开始在进行数据库连接的时候也出现了一些问题,但最后问题还是被解决了。
看到所有都能被运行成功,并且能对数据进行增删改查询的时候,总的来说,还是很欣慰。
这也激励着我,在以后的学习中,要多多培养自己的动手操作能力,编出更加完美,用户友好的系统。
八、参考文献
[1]李涛王永皎/等.《VisualC++SQLServer数据库开发与实例》.清华大学出版社.2006年7月
[2]郑莉董渊张瑞丰.《C++语言程序设计》清华大学出版社.2004年1月
[3]王珊萨师煊.《数据库系统概论》.北京.高等教育出版社.2006年5月
[4]邵顺增,李琳.C#程序设计--Windows项目开发.清华大学出版社.2008年5月