以下为《数据库专业技能训练报告》的无排版文字预览,完整内容请下载
《专业技能训练——数据库应用系统开发》报告
题目:学生选课管理系统
班级:14科技2班
姓名:谢某某
学号:***1246
任课老师:王某某
开始时间:12月3号
结束时间:12月25号
目录
目录 2
1、概述 2
2、需求分析 3
2.1、信息要求 3
2.2、处理要求 4
3、概念结构设计 6
4、逻辑结构设计 7
5、主要模块的设计以及代码 7
5.1、数据库连接方式 7
5.2、主要模块和关键代码 9
6、总结 19
1、概述
本文设计并实现了一个简单的学生选课系统,它是学生选课的平台,含登陆界面,三种角色(学生用户、教师用户、管理员)在输入正确密码的前提下方能进入系统。进入系统后学生可以在这个平台进行选课、查看所选课程以及成绩,教师可以查看个人资料,学生信息以及成绩录入和查看,管理员可以查看个人资料、学生信息。系统设计的目的是方便选课的顺利进行。
学生选课系统具有以下特点:
·用户登录按角色进行登录;
·学生可以根据要求和自身条件选择自己喜欢的学科;
·教师可以查看学生资料以及登分等;
·教务员可以查看学生、教师、以及自己的资料,更改学生成绩等。
本系统后台数据库采用SQL Server2012,前台采用C#的winform形式开发
工具。
本系统的主要功能包括以下几个方面:
· 学生选课以及相关查询
· 教师登分以及相关查询,录入成绩等
· 管理员可以更正学生或老师相关信息以及做相关查询
不同用户(学生、教师、管理员)注册功能
2、需求分析
2.1、信息要求
(1)针对高校选课信息系统的需求,通过对选课过程的内容和数据流流程分析,设计如下面所示的数据和数据结构:?
学生基本信息包括:学生号、姓名、性别、年龄、系别、学生密码
教师基本信息:教师号、姓名、性别、年龄、学历、职称、授课课程号、教师密码?
课程基本信息:课程号、课程名、学分
选课信息:学生号、教师号、课程号、成绩??
院系信息:系编号、系名、系主任
管理员:管理员账号、密码
数据库结构设计如下:
学生信息表:
/
老师信息表:
/
院系信息表:
/
课程信息表:
/
选课信息表:
/
管理员信息表:
/
2.2、处理要求
2.2.1、功能模块图:
2.2.2、功能划分
学生选课系统,在登录模块之后,根据系统用户的不同划分为三个模块:管理员模块、学生模块、教师模块
2.2.3、功能描述
(1)登录模块
登录模块用于用户登录,完成基本的验证。根据所填信息进行判断,用户名或密码如果错误则进行错误提示;分三种不同角色进行登陆,分别为学生、教师、管理员。
(2)管理员模块
管理员模块用于对系统进行管理,对学生信息进行修改、添加、删除。对教师信息进行添加、修改、删除。对课程信息进行修改、添加、删除。对院系信息进行修改、添加、删除。
(3)学生模块
学生登录后在此模块进行选课,查看选课信息、个人信息、课程信息、学院信息、成绩查询。
(4)教师模块
教师登录后,可查看个人信息、学院信息、选课情况、学生信息和录入成绩。
。
3、概念结构设计
学生选课管理系统概念模型
该系统所涉及的实体集有:
学生实体集:具有属性学号、姓名、性别、年龄、系别、密码。
教师实体集:具有属性教工号、姓名、性别、年龄、学历、职称、主讲课程。
管理员实体集:具有属性账号和密码。
课程信息实体集:具有属性课程号,课程名,学分。
院系信息实体集:具有属性系编号、系名、系主任。
一个学生可以选修多门课程,一个教师可以开设多门课程。所以学生和教师之间是M:N的联系。
***可以有多个学生,所以院系与学生之间是1:N的联系。
一个管理员可以管理多个学生信息。所以管理员和学生之间是1:N的联系。
多个管理员可以管理多个教师信息。所以管理员和教师之间是M:N的联系。
4、逻辑结构设计
将概念模型转换为关系表,从而构建数据库。
由实体集转换而来的关系模式
学生实体集:
student(sno,sname,ssex,sage,sdept,spsw)
教师实体集:
teacher(tno,tname,tsex,tage,teb,tpt,cno1,cno2,cno3)
管理员实体集:
admin(adminID,password)
课程信息实体集:
course(cno,cname,ccredit)
院系信息实体集:
department(dno,dname,dmanager)
多值属性转换而来的关系模式
选课信息表
sct(sno,cno,tno,grade)
5、主要模块的设计以及代码
5.1、数据库连接方式
建立了一个connect类,里面有三个函数,通过此类实现数据库连接,避免重复麻烦。
public static DataSet GetDataset(string sql, string srctable)
//通过sql代码获取数据库信息
public static int Sqlexcute(string sql)
//通过sql代码修改数据库信息
public static bool Panduan(string sql, string psw, string ziduan)
//实现登陆时的密码判断
由于链接成功后才想到可以用Linq方式链接数据库并对数据库进行操作,而且时间的关系,所以并没有改过来。而是用原来的链接方式连接数据库,用Linq方式对数据库进行增删改查操作。
用linq创建方法对象设计图如下:
/
5.2、主要模块和关键代码
(1)登陆模块:
/
用户进行登陆:
private void button1_Click(object sender, EventArgs e)
{
if (username.Text.Trim() != "" && textBox2.Text.Trim() != "")
{
if (comboBox1.SelectedItem.ToString().Trim() == "学生")
//教师、管理员同理
//else if(comboBox1.SelectedItem.ToString().Trim() == "教师"){…}
//else if (comboBox1.SelectedItem.ToString().Trim() == "管理员"){…}
{
if (connect.Panduan("select * from student where sno='" + username.Text.Trim() + "'", textBox2.Text.Trim(), "spsw"))
{
user.uno = comboBox1.SelectedItem.ToString().Trim();
this.DialogResult = DialogResult.Yes;
students s = new students();
s.ShowDialog();
//this.Close();
}
else
{
MessageBox.Show("用户名***;);
}
}
//跳转到注册窗口:
private void button3_Click(object sender, EventArgs e)
{
register r = new register();
r.ShowDialog();
}
(2)学生模块:
/
学生模块主要分为以下六块:个人信息查询、课程信息查询、学院信息查询、选课、已选课程查询、成绩查询。使用datagridview显示结果。
关键代码:
个人信息查询:
DBDataContext DB = new DBDataContext();
var ss = from cc in DB.student
join dd in DB.department //联表查询
on cc.sdept equals dd.dname
where cc.sno == textBox.Text
select new
{
学号=cc.sno,
姓名=cc.sname,
性别=cc.ssex,
年龄=cc.sage,
学院=cc.sdept,
***.spsw,
系主任=dd.dmanager
};dataGridView1.DataSource = ss;
个人信息修改:DBDataContext DB = new DBDataContext();
student cust = (from c in DB.student where c.sno == textBox5.Text select c).First();
cust.sname = textBox1.Text;
cust.ssex = char.Parse(textBox2.Text);
cust.sage = int.Parse(textBox3.Text);
cust.sdept = textBox4.Text;
cust.spsw = textBox6.Text;
DB.SubmitChanges();
课程信息查询:
查询可选课程
DBDataContext DB = new DBDataContext();
var query = from c in DB.course select c;
dataGridView2.DataSource = query;
查询老师信息
DBDataContext DB = new DBDataContext();
var query = from c in DB.teacher select c;
dataGridView3.DataSource = query;
学院信息查询:
DBDataContext DB = new DBDataContext();
var query = from c in DB.department select c;
dataGridView5.DataSource = query;
选课; DBDataContext DB = new DBDataContext();
sct s = new sct();
s.sno = textBox1.Text; //文本是输入的选课信息
s.cno = textBox2.Text;
s.tno = textBox3.Text;
DB.sct.InsertOnSubmit(s);
DB.SubmitChanges();
查询已选课程:DBDataContext DB = new DBDataContext();
var aa = from cc in DB.student
join dd in DB.sct //联表查询
on cc.sno equals dd.sno
join ee in DB.teacher
on dd.tno equals ee.tno
join ff in DB.course
on dd.cno equals ff.cno
where cc.sno == textBox4.Text
select new
{
姓名 = cc.sname,
课程号 = ff.cno,
课程名 = ff.cname,
老师 = ee.tname,
学分 = ff.ccredit,
学院 = cc.sdept
};
dataGridView4.DataSource = aa;
成绩查询:DBDataContext DB = new DBDataContext();
var ss = from sss in DB.sct
join ccc in DB.course
on sss.cno equals ccc.cno
where ccc.cno == textBox6.Text || ccc.cname == textBox7.Text
select sss;
textBox8.Text = ss.First().grade.ToString();
(3)教师模块
/
教师模块主要分为以下5个部分:个人信息、学生信息、学生选课情况、学院信息查询、录入成绩。用datagridview显示结果。
关键代码如下:
个人信息查询:DBDataContext DB = new DBDataContext();
teacher tea = new teacher();
var ss = from c in DB.teacher
where c.tno == textBox1.Text
select c;
if (ss.Count() > 0) //判断该教工号是否存在
{
var query = from c in DB.teacher where c.tno == textBox1.Text select c;
dataGridView1.DataSource = query;
}
信息修改:DBDataContext DB = new DBDataContext();
teacher t = (from c in DB.teacher where c.tno == textBox1.Text select c).First();
t.tname = textBox2.Text;
t.tsex = char.Parse(textBox3.Text);
t.tage = int.Parse(textBox4.Text);
t.teb = textBox5.Text;
t.tpt = textBox6.Text;
t.cno1 = textBox7.Text;
t.cno2 = textBox8.Text;
t.cno3 = textBox9.Text;
t.tpsw = textBox10.Text;
DB.SubmitChanges();
学生信息查询:DBDataContext DB = new 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 {
MessageBox.Show("请填入完整资料");
}
}
注意:教师注册、管理员注册代码原理与学生注册差不多,这里就不将代码一一列出。
6、总结
在本次的数据结构课程设计中,我完成了学生选课系统的课程设计。通过本次数据库课程设计,达到了理论与实践的相结合,加深了对数据库理论知识理解,也进一步掌握了选用的开发语言及开发平台。
在本次课程设计过程中,在需求分析方面,学生选课系统要求界面友好、简明易懂、操作简单。数据库设计方面,学生选课系统要求有严谨的数据一致性,需主键、外键并用。最后是代码编写实现,选用面向网络的开发工具机语言,方便了用户进行各种操作。在代码的编写过程中,用到了数据库的插入、修改和删除语句,在具体的开发环境中使用数据库语言是对编程能力的进一步提高。
通过本次数据库课程设计,我学到了很多书本上学不到的知识以及上课接触不到的东西,也更加认识到网络对工作学习的重要性。此次课程设计积累的经验对以后项目系统的开发会有很大的帮助。
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《数据库专业技能训练报告》的无排版文字预览,完整内容请下载
数据库专业技能训练报告由用户“peak123xxx”分享发布,转载请注明出处