学生信息管理课程设计.docx
《学生信息管理课程设计.docx》由会员分享,可在线阅读,更多相关《学生信息管理课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
学生信息管理课程设计
一、设计目的
《数据库原理及应用》是一门实践性很强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。
本课程设计的主要目的在于:
1、加深对数据库基础理论和基本知识的理解,培养学生运用所学理论知识对数据库进行组织、管理和使用的能力。
2、掌握数据库应用系统的整个设计过程(包括需求分析、概念结构设计、逻辑结构设计与物理设计与实施),提高运用数据库解决实际问题的能力。
二、编程环境
数据库:
Oracle
语言:
c#
三、需求分析
该系统至少应包含如下功能:
1、身份验证模块
进入系统时首先进行身份验证。
只有用户名和密码正确才能进入系统。
2、用户管理
对使用本系统的用户进行添加、查询、修改密码、删除等操作。
3、学生信息录入
本系统能够录入学生的学号、姓名、性别、班级等信息。
4、学生成绩查询
可以根据学号、姓名、班级、学期等信息项中的一项或多项的组合,进行模糊查询和精确查询,从而高效地找到您想要的信息。
5、学生成绩更新
可以根据学号、姓名等信息项中的一项进行更新
6、学生成绩排序
可以按照学号、姓名、性别、班级、成绩的升序/降序
7、统计
可以按照课程、班级、专业等进行统计。
四、总体设计
系统总体结构如下:
五、数据库设计
1、概念设计
由需求分析的结果可知,本系统设计的实体包括:
(1)学生基本信息:
学号,姓名,性别,班级,学院。
(2)课程基本信息:
课程名,课程号。
E—R图:
2.逻辑
2.物理结构设计
2.1由系统E—R图转化而得到的关系模式如下:
(1)学生(学号,姓名,性别,班级,学院),其主关键字为学号;
(2)课程(课程名,课程号),其中主关键字为课程号;
(3)成绩(课程号,学号,分数,学期)其中主关键字为学号和课程号,可以与学生关系模式合并为:
学生(学号,姓名,性别,年龄,班级,学院,成绩,学期,课程号)。
2.2确定关系模型的存取方法
在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。
可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。
在实际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:
在经常需要搜索的列上建立索引; 在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。
才能充分利用索引的作用避免因索引引起的负面作用。
2.3确定数据库的存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
因为该成绩管理系统的数据量小,,所以我们只用把数据存储在使用的电脑硬盘上,不用作更多的安排。
2.4建表
以DBA登录数据库
SQL>CONNECTSYSTEM/123456:
1521@demo
创建永久表空间
CREATETABLESPACEts_perm
DATAFILE'C:
\app\Administrator\oradata\demo\ts_perm_data.dbf'SIZE10M
AUTOEXTENDON
EXTENTMANAGEMENTLOCALAUTOALLOCATE;
--默认路径在D:
\app\Administrator\product\11.1.0\db_1\database下
查看结果descdba_tablespaces;
selecttablespace_namefromdba_tablespaces
创建临时表空间ts_temp(也可以使用系统临时表空间temp)
CREATETEMPORARYTABLESPACEts_temp
TEMPFILE'c:
\app\Administrator\oradata\demo\ts_temp_data.dbf'SIZE50MAUTOEXTENDON
EXTENTMANAGEMENTLOCAL;
--默认路径在D:
\app\Administrator\product\11.1.0\db_1\database下
得到.dbf、.ctl和redolog文件.log
selectfile_namefromdba_data_files;
selectnamefromv$ControlFile;
selectmemberfromv$logfile;
创建用户Turing
createuserTuring
identifiedby123456
profiledefault
defaulttablespacets_perm
temporarytablespacets_temp
accountunlock;
查看结果:
descdba_users;
selectusernamefromdba_users;
给用户Turing授权
GRANT
CONNECT,RESOURCE,
CREATESESSION,
CREATETABLE,
CREATEPROCEDURE,
CREATESEQUENCE,
CREATETRIGGER,
CREATEVIEW,
CREATESYNONYM,
ALTERSESSION,
CREATEMATERIALIZEDVIEW,
CREATEDATABASELINK
TOTuring;
建立“学生”表Student,学号是主码,姓名取值唯一。
CREATETABLETuring.student(
SnoVARCHAR2(12),
SnameVARCHAR2(10)notnull,
SSexVARCHAR2(4),
SAgeNUMBER,
SDEPTVARCHAR2(20),
unique("SNAME"),
primarykey("SNO")validate,
check(SSexin('男','女'))
)
TableSpacets_perm
PCTFree10
PCTUsed40
IniTrans1MAXTrans255
storage(initial64Kfreelists1freelistgroups1buffer_pooldefault)
loggingNoCompress;
建立一个“课程”表Course
CREATETABLETuring.course(
CnoVARCHAR2(8),
CnameVARCHAR2(40)notnullunique,
CPNOVARCHAR2(8),
CCreditNUMBER,
primarykey("CNO")VALIDATE,
foreignkey("CPNO")referencesTuring.course("CNO")
)
TableSpacets_perm
PCTFree10
PCTUsed40
IniTrans1MAXTrans255
storage(initial64Kfreelists1freelistgroups1buffer_pooldefault)
loggingNoCompress;
建立一个sc表
CREATETABLEturing.sc(
SnoVARCHAR2(12),
CnoVARCHAR2(8),
GradeNUMBER,
primarykey("SNO","CNO")validate,
foreignkey("SNO")referencesturing.student("SNO")validate,
foreignkey("CNO")referencesturing.course("CNO")validate
)
TableSpacets_perm
PCTFree10
PCTUsed40
IniTrans1MAXTrans255
storage(initial64Kfreelists1freelistgroups1buffer_pooldefault)
loggingNoCompress;
六、功能模块
用户登录
主界面
录入信息
成绩查询
成绩录入
成绩修改
成绩删除
排序
统计
用户修改密码
七、总结
通过本次实验,我掌握了c#和oracal的很多知识,在课设期间遇到很多问题,在同学的帮助下,一一解决,使我更加体会到团结就是力量。
在验收的过程中,我明白了做程序一定要规范,类名、窗体名不能乱起,明白了今后还需要更加努力!
附录
数据库连接及用户登陆的主要代码
privatestringcomputerName=Environment.MachineName.ToString();
publicOracleConnectionmyOrclConnection;
publicvoidconnection()
{
myOrclConnection=newOracleConnection(@"userid=system;password=123456;
datasource=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
(HOST="+computerName+@")
(PORT=1521)
)
(CONNECT_DATA=(SID=ZDB))
(HS=OK)
)");
}
publicvoidlogin(TextBoxtextBox_UserName,TextBoxtextBox_UserPwd)
{
connection();
try
{
myOrclConnection.Open();
}
catch(Exceptionex)
{
MessageBox.Show("数据库连接失败:
原因!
"+ex.Message);
}
stringsql="selectusid,pwdfromturing.loginwhereusid='"+textBox_UserName.Text.Trim()+"'andpwd='"+textBox_UserPwd.Text.Trim()+"'";
OracleCommandcom1=newOracleCommand();
com1.CommandText=sql;
com1.Connection=myOrclConnection;
OracleDataReadersdr=com1.ExecuteReader();
if(sdr.Read())
{
Mainlongs=newMain();
longs.Show();
myOrclConnection.Close();
}
else
{
MessageBox.Show("请输入正确用户和密码");
}
信息录入
bc.myOrclConnection.Open();
DataSetsd=newDataSet();
stringsqlsno="selectsnofromturing.studentwheresno='"+textBox1.Text+"'";
OracleDataAdaptersda=newOracleDataAdapter(sqlsno,bc.myOrclConnection);
sd.Clear();
sda.Fill(sd);
if(sd.Tables[0].Rows.Count!
=0)
{
MessageBox.Show("你输入的学号已存在");
}
else
{
stringsqlc;
if(radioButton1.Checked)
{
sqlc="男";
}
elsesqlc="女";
stringsql="insertintoturing.studentvalues('"+textBox1.Text+"','"
+textBox2.Text+"','"+sqlc+"','"+textBox3.Text+"','"+comboBox1.Text+"')";
OracleCommandcom=newOracleCommand(sql,bc.myOrclConnection);
com.ExecuteNonQuery();
bc.myOrclConnection.Close();
MessageBox.Show("恭喜你!
输入成功!
");
排序及统计的类的主要代码
bc.myOrclConnection.Open();
DataSetmyDS=newDataSet();
OracleDataAdaptermyAdapter=newOracleDataAdapter(str,bc.myOrclConnection);
myDS.Clear();
myAdapter.Fill(myDS);
sd.DataSource=myDS;
sd.DataSource=myDS.Tables[0].DefaultView;
myDS=null;
myAdapter=null;
成绩更新、成绩录入及删除的类的代码
DataSetsd=newDataSet();
stringsqlsno="selectsnofromturing.studentwheresno='"+tBox.Text+"'";
OracleDataAdaptersda=newOracleDataAdapter(sqlsno,bc.myOrclConnection);
sd.Clear();
sda.Fill(sd);
if(sd.Tables[0].Rows.Count==0)
{
MessageBox.Show("你输入的学号不存在");
}
下载代码地址为