教学管理数据库系统(共29页).doc
精选优质文档-倾情为你奉上数据库课设 教学管理系统 专 业 计算机科学与技术 班 级 学 生 指导教师 目录设计任务建库:1个-教学管理数据库。 建表:3个-教师表(T表)、学生表(S表)、课程表(SC表)。 编程:5个-输入、修改、查询、计算、输出等五个子系统。 要求:(1)每组最多5个人,每人完成一个子系统,每人都要建立库及全部表; (2)每人写出各自部分的课程设计报告; (3)程序用选定的语言编写,必须上交上机调试通过的源程序。 评语 分工安排 本次课设我们组所做的是教学管理系统,本组共四人,分工如下:输入部分由许丹同学完成;修改部分由张鑫同学完成;查询部分由石佳敏同学完成;计算部分由张建君同学完成。对于本次报告书写情况如下:石佳敏:主要编写由她完成的查询部分。许丹:主要编写由她完成的输入部分。张建君:主要编写由她完成的计算部分。张鑫:主要编写由她完成的修改部分,以及实验报告的其余。1 简介1.1.1 实验目的熟悉SQL和Microsoft Visual Studio的实验环境,在本次课程设计过程中,学会将SQL中的数据库和Visual Studio中的内容相绑定,在Visual Studio实现教学管理系统中的输入,修改,查询,计算,输出等一系列操作。在本次实验中,将同学的课本知识和实践操作能力联系在一起,全面提高同学的综合能力。1.1.2 背景及范围本项目的名称:教学管理系统。教务信息管理系统:教务信息管理是帮助管理人员管理学生档案的管理软件。1.2 概述该教务信息管理系统软件目前已有比较完善的管理与使用功能,研制教务信息管理系统软件是为了满足教务处办公室对学生档案管理的方便,以现代化的创新思维模式去工作。1.2.1 目标1.2.1.1 开发意图a. 为了教务处管理系统更完善;b. 为了教务处办公室对学生的管理更方便;c. 为了减轻工作人员的工作负担。1.2.1.2 应用目标通过本系统软件,能帮助工作人员利用计算机,快速方便的对学生教务信息管理进行管理、输入、输出、查找等操作,使散乱的档案能够具体化、直观化、合理化。1.2.1.3 作用及范围本软件适用于教务处,它是比较完善的系统管理软件1.2.1.4 背景 现今教务信息管理的烦琐给具有强烈时间观念的行政人员带来了诸多不便,为了对学生档案的管理方便,因此开发了本软件。1.3.1 规格说明查询每个学生、教师的的相关信息。1.3.2 引言查询学生、教师的相关信息。外部功能内部功能操作员和系统管理员通过应用界面,应用程序,查询等。同过SQL语言,对数据库的查询、插入、修改、删除等操作。1.4 各部分功能描述输入系统:该系统实现输入操作,是实现其他系统的基础,是系统的基础系统。修改系统:该系统实现对数据的修改,是较高级的系统。查询系统:该系统实现数据的查询,是修改和分析的前提,是较高级的系统。删除系统:该系统实现对数据的删除,是较高级的系统。输出系统:该系统实现输出操作,是其他系统的基础,是系统的基础系统2 概念设计2.1 实体及其属性2.1.1 学生实体E-R图学生编号密码姓名学生成绩课程名称课程编号2.1.2 课程实体E-R图课程2.1.3 教师信息E-R图密码姓名教师编号教师3.结构设计个人信息学生查询教师信息教学管理系统信息查询信息修改成绩修改管理界面教师界面学生界面成绩查询3.2 学生基本信息表列名含义长度类型NULLDEFAULTid学生编号11intnononame姓名30varcharnonologinuser用户名30varcharnonopassword密码30varcharnono3.3 课程信息表列名含义长度类型NULLDEFAULTid课程编号11intnononame课程名称30varcharnonotime 成绩8datenono3.4 教师信息表列名含义长度类型NULLDEFAULTid教师编号11intnononame教师姓名30varcharnonologinuser用户名30varcharnonopassword密码30varcharnono4 系统测试using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace aa public partial class Form1 : Form public Form1() InitializeComponent(); private void Form1_Load(object sender, EventArgs e) / TODO: 这行代码将数据加载到表“jxglDataSet11.jxglmm”中。您可以根据需要移动或移除它。 this.jxglmmTableAdapter.Fill(this.jxglDataSet11.jxglmm); private void btn_enter_Click(object sender, EventArgs e) SqlConnection con = new SqlConnection(); con.ConnectionString = "Data Source=XU-PC;Initial Catalog=jxgl;Integrated Security=True" con.Open(); string username = this.txtusername.Text; string pwd = this.txtpassword.Text; if (rb_Student.Checked = false && rb_Teacher.Checked = false && rb_Admain.Checked = false) MessageBox.Show("请选择您的身份"); else if (rb_Teacher.Checked = true) string x0 = "select * from jxglmm where username='" + txtusername.Text + "'and userpassword='" + txtpassword.Text + "'and flag=1" SqlCommand cmd0 = new SqlCommand(x0, con); SqlDataAdapter da0 = new SqlDataAdapter(cmd0); DataTable dt0 = new DataTable(); da0.Fill(dt0); if (dt0.Rows.Count > 0) MessageBox.Show("登录成功,进入教师页面"); new Form7().Show(); this.Hide(); else MessageBox.Show("信息输入有误"); else if (rb_Student.Checked = true) string x1 = "select * from jxglmm where username='" + txtusername.Text + "'and userpassword='" + txtpassword.Text + "'and flag=2" SqlCommand cmd1 = new SqlCommand(x1, con); SqlDataAdapter da1 = new SqlDataAdapter(cmd1); DataTable dt1 = new DataTable(); da1.Fill(dt1); if (dt1.Rows.Count > 0) MessageBox.Show("登陆成功,进入学生页面"); new Form4().Show(); this.Hide(); else MessageBox.Show("信息输入有误"); else if (rb_Admain.Checked = true) string x2 = "select * from jxglmm where username='" + txtusername.Text + "'and userpassword='" + txtpassword.Text + "'and flag=0" SqlCommand cmd2 = new SqlCommand(x2, con); SqlDataAdapter da2 = new SqlDataAdapter(cmd2); DataTable dt2 = new DataTable(); da2.Fill(dt2); if (dt2.Rows.Count > 0) MessageBox.Show("登陆成功,进入管理页面"); new Form6().Show(); this.Hide(); else MessageBox.Show("信息输入有误"); con.Close(); private void btn_exit_Click(object sender, EventArgs e) this.Close(); using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace aa public partial class Form4 : Form public Form4() InitializeComponent(); private void Form4_Load(object sender, EventArgs e) / TODO: 这行代码将数据加载到表“jxglDataSet.s”中。您可以根据需要移动或移除它。 this.sTableAdapter.Fill(this.jxglDataSet.s); this.bindingNavigator1.BindingSource = sBindingSource; private void button2_Click(object sender, EventArgs e) this.Close(); private void button1_Click(object sender, EventArgs e) this.sTableAdapter.Update(jxglDataSet.s); private void 成绩查询ToolStripMenuItem_Click(object sender, EventArgs e) new Form5().Show(); this.Hide(); private void 个人课表ToolStripMenuItem_Click(object sender, EventArgs e) new Form6().Show(); this.Hide(); using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace aa public partial class Form5 : Form public Form5() InitializeComponent(); public static class jxgl public static string str = "Data Source=.;Initial Catalog=jxgl;Integrated security=true" public static SqlConnection conn = new SqlConnection(str); private void Form5_Load(object sender, EventArgs e) / TODO: 这行代码将数据加载到表“jxglDataSet2.sc”中。您可以根据需要移动或移除它。 this.scTableAdapter.Fill(this.jxglDataSet2.sc); private void button1_Click(object sender, EventArgs e) this.Close(); new Form4().Show(); this.Hide(); private void btnOK_Click_2(object sender, EventArgs e) jxgl.conn.Open(); if (tbSearch.Text.Length <= 0) MessageBox.Show("查询条件不能为空");/, "系统提示:", MessageBoxButtons.OK, MessageBoxIcon.Information); return; if (rbXh.Checked) SqlDataAdapter da = new SqlDataAdapter("select * from sc wheresno='" + tbSearch.Text.ToString() + "'", jxgl.conn); DataSet set = new DataSet(); da.Fill(set, "sc"); dataGridView1.DataSource = set.Tables"sc" jxgl.conn.Close(); if (rbXm.Checked) SqlDataAdapter da = new SqlDataAdapter("select * from sc wherecno='" + tbSearch.Text.ToString() + "'", jxgl.conn); DataSet set = new DataSet(); da.Fill(set, "sc"); dataGridView1.DataSource = set.Tables"sc" jxgl.conn.Close(); if (rbSzx.Checked) SqlDataAdapter da = new SqlDataAdapter("select * from sc wheregrade='" + tbSearch.Text.ToString() + "'", jxgl.conn); DataSet set = new DataSet(); da.Fill(set, "sc"); dataGridView1.DataSource = set.Tables"sc" jxgl.conn.Close(); private void btnCancel_Click_2(object sender, EventArgs e) jxgl.conn.Open(); SqlDataAdapter da = new SqlDataAdapter("select * from sc", jxgl.conn); DataSet set = new DataSet(); da.Fill(set, "sc"); dataGridView1.DataSource = set.Tables"sc" jxgl.conn.Close(); this.Close(); private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) private void button2_Click(object sender, EventArgs e) SqlConnection con = new SqlConnection(); con.ConnectionString = "Data Source=.;Initial Catalog=jxgl;Integrated security=true" con.Open(); string lvxiaopu0 = "SELECT sc.sno,AVG(grade) AS AVG FROM sc GROUP BY sc.sno" SqlCommand cmd0 = new SqlCommand(lvxiaopu0, con); SqlDataAdapter da0 = new SqlDataAdapter(cmd0); DataSet dt0 = new DataSet(); DataTable dt = new DataTable("search"); dt0.Tables.Add(dt); da0.Fill(dt); BindingSource bs = new BindingSource(dt0, "search"); this.dataGridView2.DataSource = bs; / BindingSource bs = new BindingSource(dt0, ""); / this.dataGridView1.DataBindings.Add(bs); using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace aa public partial class Form6 : Form public Form6() InitializeComponent(); private void button2_Click(object sender, EventArgs e) this.Close(); new Form4().Show(); this.Hide(); private void button1_Click(object sender, EventArgs e) this.scTableAdapter.Update(jxglDataSet3.sc); private void bindingNavigator1_RefreshItems(object sender, EventArgs e) this.bindingNavigator1.BindingSource = scBindingSource; private void Form6_Load(object sender, EventArgs e) using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace aa public partial class Form7 : Form public Form7() InitializeComponent(); private void Form7_Load(object sender, EventArgs e) / TODO: 这行代码将数据加载到表“jxglDataSet.t”中。您可以根据需要移动或移除它。 this.tTableAdapter.Fill(this.jxglDataSet.t); private void button2_Click(object sender, EventArgs e) this.Close(); private void button1_Click(object sender, EventArgs e) new Form6().Show(); this.Hide(); 5 实验总结石佳敏:这次的课程设计对于我来说不仅是做了数据库学生信息系统,最为珍贵的是在我准备这次课程设计所学道的以前不熟悉的知识,还有团队的协作,因为在以前的课设过程中基本上就是一个人,但是这次的话就不会这样了,刚刚开始的时候每个人分派不同的任务,因为关系到的不是一个人,而是一组人,所以就会比原来更加的认真,生怕因为自己的疏忽给大家拖后腿,以前较早的便接触到SQL只是注重在书本上,老师教的很认真,但是自己因为动手的部分比较少,所以对于知识的灵活性掌握不是特别好,但是通过这次课程设计,我学到了SQL与数据库结合起来编程的一般技术,虽然不能说完全的掌握,但是真的学到了很多。了解了SQL数据库中的以前不大明白的技术运用。在SQL数据库中,我们把在数据库理论上的知识予以运用,如:建立视图,创建存储过程,应用事务等,在一些基本的数据库操作中,熟悉并巩固了SQL的语法知识。通过对课程设计要求的分析,我们也初步理解一个软件工程的开发流程及发展思路。培养了我们由书面文字要求到转化这种要求到现实模型的能力,很大程度上培养了我们的建模能力,分析问题,总结归纳问题的能力。这次课程设计也不能说进行的很好,有时候因为大家对有些意见的不同看法也会有争论,慢慢的通过商量和查资料也顺利的解决了。比如最初建库的时候因为名字和其他的一些东西没有确定好导致最后大家合成的时候出现了许多困难,从中也吸取了很大教训。我们通过克服这一个个困难,让我们重新又对目前脑子里所掌握的知识进行审理,进行了再次的纠正或者完善,这些都是书本上学不来的。许丹:对于本次的数据库课设,我感触颇深。上周的课设我们整整有五天的时间去完成,我只用了3天时间就弄完了,也答辩完成了。所以当老师您刚一开始要我们分组的时候,我就在想自己一个人去做,我想应该可以的。但是经过星期六给电脑上装SQL Server和Visual Studio软件,就比以往装任何软件都麻烦,终于装完成之后就试着用了一下,感觉两个软件本身没有很难的地方,但是如若你想真正的十分娴熟的应用那个软件,就很难了,例如像Visual Studio里面的那些工具箱里面的东西,如果别人不给你说,你也不问别人,那么你会很慢很慢才能掌握它。星期一晚上课设的时候,我自己一个人在那块做,感觉没有啥进步,晚上回去就有点动摇,要不要和别人一块做,最后星期二的时候我决定和别人一块完成。我们在今天完成了数据库的分工,我主要负责的部分是用户的输入界面以及用户权限设置。其中费时最多的就是将数据库与绑定的时候,因为教室的电脑智能windows身份验证模式进入,SQL模式不能进入,我开始没把绑定部分理解,把绑定部分的代码弄错了,因此就一直不能实现学生身份的登录。最后经过问同学和老师,等我把这部分弄清楚了之后我就再加了两个Radio Button,开始为各种用户设置权限,我程序中默认管理员的级别最