数据库系统概论课程设计Word下载.docx
《数据库系统概论课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《数据库系统概论课程设计Word下载.docx(47页珍藏版)》请在冰豆网上搜索。
学生:
个人信息、个人课程、个人成绩;
1.3系统开发目标
出于本系统是学校教务管理的一个综合性的系统,本系统的设计目标将最终定位于完成以上所述的系统主要业务的基本模型上。
2.系统设计
系统设计包括系统模块设计和数据库设计。
2.1系统模块设计
主要功能模块如图所示:
公共模块:
密码修改、用户登录
如图所示:
2.2数据库设计
数据库设计的任务是确定系统所需要的数据库。
数据库是表的集合,通常一个系统只需要一个数据库。
设计的任务是根据需求分析,确定数据库所包含的表及字段、表间的关系,然后具体确定表的结构,包括字段名、字段类型及宽度,需要的索引等。
根据对需求得到的数据结构进行分析,按数据输入输出的要求,确定表和表之间的关系,并进行验证、调整、修改、完善,使其能够实现用户对数据和功能的要求。
数据库在SQLSever2008下创建,数据库名为Infor_System_School。
2.2.1本项目根据分析确定系统要设置如下表:
1.User_admin表、User_Stu表和User_Teach表:
属性名
含义
数据类型
限制条件
User_ID
编号
Char(3)
PRIMARYKEY
User_name
姓名
Varchar(20)
NOTNULL
User_password
密码
Varchar(10)
2.Admin表:
Admin_no
Admin_name
varchar(10)
Admin_position
职务
Admin_sex
性别
char
(2)
Admin_age
年龄
int
Admin_tel
联系方式
char(11)
Admin_mail
邮箱
varchar(20)
Admin_addr
住址
varchar(50)
3.Student表
Stu_no
学号
Char(9)
Stu_name
Stu_sex
Char
(2)
Stu_bir
出生日期
date
Stu_class
班级
Stu_dept
专业
Stu_prof
学院
Stu_tel
Char(11)
Stu_addr
宿舍地址
varchar(6)
Stu_mail
Stu_rtime
入学时间
4.Teacher表:
Teach_no
工号
Char(5)
Teach_name
Teach_photo
照片
varbinary(MAX)
Teach_sex
Teach_bir
Teach_prof
Teach_ttime
入校时间
Teach_tel
Teach_mail
Teach_addr
5.Course表:
Cou_no
课程号
Cou_name
课程名
Cou_redit
学分
float
Cou_time
学时
Cou_type
学科类型
varchar(4)
6.TeachCou表:
教师工号
7.Score表:
grade
成绩
注:
各表内容见附录1.
2.2.2数据表间的逻辑关系
为了能使用户更直观地了解数据库中的个表之间的关系,可以通过建立关系图,如下图所示:
3.系统的代码实现
本系统采用的是C#语言和SQLSever数据库服务器。
3.1C#与SQLSever的基本介绍与连接
3.1.1SQLSever简介
SQLSever数据提供程序只能用于SQLSever,在System.Data.SqlCilent命名空间中实现。
3.1.2ADO.NET介绍
ADO(ActiveXDataObjects)是一个用于存取数据源的COM组件,用于实现访问关系或非关系数据库中的数据。
ADO为编程语言和统一数据访问方式OLEDB提供了一个中间层。
开发人员在访问数据库是只需要关心到数据库的连接,而不需要知道关系数据库是如何实现的。
ADO.NET提供了平台互用性和可伸缩的数据访问,支持对数据的松耦合访问,增强了对非连接编程模式的支持。
ADO.NET中主要包含的对象包括SqlConnection对象、Command对象、SqlDataReader对象、DataSet对象和SqlDataAdapter对象等。
此外,ADO.NET还提供了脱机访问模式,及提供了断开连接的数据访问模型,也就是说,首先连接数据库,获取需要的数据,然后断开与数据库的连接,在DataSet或DataTable组件中脱机处理数据,这位应用程序提供了很高的可伸缩性,因为该模型允许多个客户连接数据库,检索数据。
在Web应用程序中,这是很重要的,因为可能同时有成千上万个客户请求数据,这样,通过脱机访问模式,就可以在DataSet或DataTable组件中脱机处理数据,减少了对服务器端的压力。
3.1.3C#与SQLSever连接
在进行SQLSever数据库连接的时候,首先要使用数据库连接的提供者,因此在程序的开始要使用以下代码:
usingSystem.Data;
usingSystem.Data.SqlClient;
接下来要连接数据源,这需要使用连接字符串创建一个连接对象。
连接字符串中包含希望链接的数据库提供者名称、登录信息以及希望使用的数据库名称。
创建连接对象的代码如下:
stringsource="
Server=SQLSever名称;
InitialCatalog=数据库名称;
IntegratedSecurity=SSPI;
"
;
SqlConnectionconn=newSqlConnection(source);
这样,就有了一个为计算机和数据库配置的连接对象了,但是该对象还未激活,因此必须打开连接。
再有了对象之后就可以打开它,建立与数据库的连接conn.Open();
如果Open方法未成功,那么就会抛出SqlException异常。
3.2系统中只要窗体和代码
3.2.1登录窗体
功能实现:
输入用户名和密码,登录教务管理系统。
窗体:
主要代码:
lab_error1.Text="
lab_error2.Text="
if(comboB_name.Text=="
)
{
lab_error1.Text="
用户名不能为空!
}
elseif(textB_password.Text=="
请输入密码!
else
try
Server=姜梦龙-;
InitialCatalog=Infor_System_School;
stringselect;
SqlConnectionconn=newSqlConnection(source);
conn.Open();
if(radioB_stu.Checked)
select="
selectUser_ID,User_name,User_passwordfromUser_StuWhere[User_ID]='
+comboB_name.Text+"
'
AND[User_password]='
+textB_password.Text+"
elseif(radioB_teach.Checked)
selectUser_ID,User_name,User_passwordfromUser_TeachWhere[User_ID]='
selectUser_ID,User_name,User_passwordfromUser_adminWhere[User_ID]='
SqlCommandcmd=newSqlCommand(select,conn);
SqlDataReaderdr=cmd.ExecuteReader();
if(!
dr.HasRows)
textB_password.Text="
MessageBox.Show("
用户名或密码错误!
"
错误提示:
MessageBoxButtons.OK,MessageBoxIcon.Warning);
dr.Read();
stringname=dr.GetString
(1);
欢迎"
+name+"
同学使用教务管理系统"
"
提示:
);
this.Hide();
学生F=new学生();
F.Show();
教师使用教务管理系统"
教师F=new教师();
管理员使用教务管理系统"
管理员F=new管理员();
dr.Close();
conn.Close();
catch(Exceptionex)
MessageBox.Show(ex.Message);
}
3.2.2管理员窗体框架
功能实现:
管理员具有增加、查询、修改、注销管理员、教师、学生、课程,授课课程管理,还有特殊服务:
密码服务等基本功能。
窗体:
主要代码:
代码太多,只选其中一部分代码。
privatevoidbutton_save_导入_Click(objectsender,EventArgse)
charsex;
if(radioB_男.Checked)
sex='
男'
else
女'
stringinsert_admin="
insertintoAdminvalues('
+textB_no_导入.Text+"
'
+textB_name_导入.Text+"
+textB_posi_导入.Text+"
+sex+"
+textB_age_导入.Text+"
+textB_tel_导入.Text+"
+textB_mial_导入.Text+"
+textB_addr_导入.Text+"
)"
stringinsert_user="
insertintoUser_adminvalues('
+123456+"
SqlCommandcmd_admin=newSqlCommand(insert_admin,conn);
SqlCommandcmd_user=newSqlCommand(insert_user,conn);
cmd_admin.ExecuteNonQuery();
cmd_user.ExecuteNonQuery();
catch(Exceptionex)
录入出现异常!
提示"
MessageBoxButtons.OK,MessageBoxIcon.Stop);
finally
录入成功!
privatevoidbutton_查询_admin_Click(objectsender,EventArgse)
ds=newDataSet();
ds.Clear();
if(textB_查询_admin.Text=="
selectdistinctAdmin_noAS编号,Admin_nameAS姓名,Admin_positionAS职务,Admin_sexAS性别,Admin_ageAS年龄,Admin_telAS联系方式,Admin_mailAS邮箱,Admin_addrAS住址fromAdmin"
elseif(radioB_编号_admin.Checked)
selectdistinctAdmin_noAS编号,Admin_nameAS姓名,Admin_positionAS职务,Admin_sexAS性别,Admin_ageAS年龄,Admin_telAS联系方式,Admin_mailAS邮箱,Admin_addrAS住址fromAdminWhereAdmin_no='
+textB_查询_admin.Text+"
elseif(radioB_姓名_admin.Checked)
selectdistinctAdmin_noAS编号,Admin_nameAS姓名,Admin_positionAS职务,Admin_sexAS性别,Admin_ageAS年龄,Admin_telAS联系方式,Admin_mailAS邮箱,Admin_addrAS住址fromAdminWhereAdmin_namelike'
%"
%'
elseif(radioB_职务_admin.Checked)
selectdistinctAdmin_noAS编号,Admin_nameAS姓名,Admin_positionAS职务,Admin_sexAS性别,Admin_ageAS年龄,Admin_telAS联系方式,Admin_mailAS邮箱,Admin_addrAS住址fromAdminWhereAdmin_position='
selectdistinctAdmin_noAS编号,Admin_nameAS姓名,Admin_positionAS职务,Admin_sexAS性别,Admin_ageAS年龄,Admin_telAS联系方式,Admin_mailAS邮箱,Admin_addrAS住址fromAdminWhereAdmin_age='
da=newSqlDataAdapter(select,conn);
SqlCommandBuilderadmin=newSqlCommandBuilder(da);
da.Fill(ds);
this.DataGV_admin.DataSource=ds.Tables[0];
privatevoidbutton_delete_admin_Click(objectsender,EventArgse)
stringselect,delete_admin,delete_user;
if(textB_delete_admin.Text=="
请输入你要删除管理员的编号!
delete_admin="
deletefromAdminWhereAdmin_no='
+textB_delete_admin.Text+"
delete_user="
deletefromUser_adminWhereUser_ID='
SqlCommandcmd_admin=newSqlCommand(delete_admin,conn);
SqlCommandcmd_user=newSqlCommand(delete_user,conn);
注销出现异常!
f