版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 信息工程学院课程设计报告设计名称: 数据库课程设计 姓 名: 杨美丽 学 号:1134160211 姓 名: 张晓魁 学 号:1134160232 姓 名: 张颖莉 学 号:1134160240 专业班级: 软件工程 系 (院): 信息工程学院 设计时间: 201120012学年第一学期 设计地点: 数据库实验室 成绩:一课程设计目的数据库课程设计是为数据库原理及应用课程而独立开设的实践性课程,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。通过本实验达到以下目的:(1) 培养学生具有c/s和b/s/s模式的数据库应用软件系统的设计和开发能力。(2) 熟练掌握一种数据库
2、系统(如sql server)的使用。(3) 熟练掌握一种数据库应用软件开发工具(如powerbuilder 、asp、vb.net)的使用。(4) 通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。二课程设计任务与要求:1、任务:学生选课系统问题描述:1) 学校学生有一万多人。2) 每个学生都有学号、学生姓名、学生性别、学生年龄、所在系别等信息。3) 每门课程有课程号、课程名、学分、学期、学时。4) 学生可以选修多门课程,一门课程可以供多个学生选修。2、设计要求:1) 实现学生信息管理的信息添加、修改、删除。2) 实现课程信息管
3、理的信息添加、修改、删除。3) 实现对所有学生选课管理的选课、查询。4) 能够按学号、课程号查询学生的选课信息。5) 能够按查询值查询。6)设计一完整的数据库。要求掌握数据库的设计的每个步骤;掌握数据设计各阶段的输入、输出、设计环境、目标和方法;熟练的使用sql语言实现数据库以及数据库重要对象的建立、应用和维护。三课程设计说明书1 需求分析(1)数据需求学生选课信息管理系统需要完成功能主要有:用户登录窗体界面,包括用户名和密码。学生选课信息管理系统窗体界面包含学生信息管理、课程信息管理、选课信息管理和退出本系统,点击子系统可以进入各个模块。学生信息管理窗体有添加、修改、删除、退出的功能,包括学
4、生学号、姓名、性别、年龄、所在系部。课程信息管理窗体有添加、修改、删除、退出的功能,包括课程编号、课程名、学分、学期、学时。学生选课与选课信息查询窗体有选课、查询与退出的功能,选课包括选择学生与选择课程,选课查询包括查询内容与查询值。(2)事务需求在登录窗体部分,要求:可以输入用户名和密码进入系统学生选课信息管理系统主窗体。在学生选课信息管理系统的主窗体部分,要求:可以执行点击学生信息管理、课程信息管理、选课信息管理和退出本系统按钮进入的各个子系统操作。在学生信息管理部分,要求: a.可以浏览学生信息。b.可以对学生信息进行添加、修改、删除操作。在课程信息管理部分,要求:a.可以浏览课程信息。
5、b.对课程信息可添加、修改、删除操作。在学生选课与选课信息查询部分,要求:a.显示当前数据库中选课信息情况。b.对学生选课与选课信息查询有选课、查询与退出操作。c.对学生选课信息有查询操作。 (3)关系模式(1) 登录(用户名,密码,用户分类)(2) 学生信息(学生学号,姓名,性别,年龄,所在系部)(3) 课程信息(课程编号,课程名,学分,学期,学时)(4) 学生选课(学生学号,课程编号,成绩)(5) 选课信息查询(学生学号, 课程编号)(4)数据流程图(dfd)通过对系统需求的调查分析,细化软件功能,把系统划分为四个子系统,明确每个子系统所要完的主要逻辑功能,采用以图形的方式描绘数据在系统中
6、流动和处理。学生选课管理系统学生管理员学生信息选课信息选课信息息课程信息息学生学生图1-1顶层数据流图f4p3d1f5课程信息学生信息p4d2d3d4登 录p1选课查询p2f2f1f3p数据流数据处理d数据存储f图1-2一层数据流图注:d1选课信息数据库d2 学生信息数据库 p2.1选择查询f2.1f2p2.2直接选课d1p2.3多条件查询f3f2.2d3 用户登录数据库d4课程信息数据库f1 登录信息f2,f3选课信息f4 课程管理信息f5 学生信息图1-3二层数据流图f4p3.2添 加f4d4p3.1课程p3.3修改f4f4p3.4删除图1-4二层数据流图p4.2添 加f5p4.1学生信息
7、p4.3修改d3p4.4删除图1-5二层数据流图(5)数据字典 为了使各数据流,数据处理过程,存储过程不能反映其中的数据成,数据项目,数据特性,所以用数据字典来对数据流图中的各成份进行具体的定义,为系统的分析,设计及以后的实现提供供有关元素一致性定义和详细的描述:数据流字典数据流名称:用户登录 标志符:f1别名:无来源:用户去向:查询处理过程(p2、p3、p4)数据组成:用户名+密码数据流名称:选课查询 标志符:f2别名:无来源:学生去向:查询处理过程(p2)数据组成:选择学生|选择课程数据流名称:直接选课 标志符:f2.1别名:无来源:学生去向: 直接查询处理过程(p2.2)数据组成:选择学
8、生|选择课程数据流名称:多条件查询 标志符:f2.2别名:无来源:学生去向: 多条件查询处理过程(p2.3) 数据组成:学号|课程号|查询值 数据流名称:课程信息 标志符:f4别名:无来源:学生去向: 课程信息处理过程(p3)数据组成:课程编号|课程名|学期|学时|学分数据流名称:课程添加 标志符:f4别名:无来源:管理员去向: 查询处理过程(p3.2)数据组成:课程编号|课程名|学期|学时|学分数据流名称:课程修改 标志符:f4别名:无来源:管理员去向:查询处理过程(p3.3)数据组成:课程编号|课程名|学期|学时|学分数据流名称:课程删除 标志符:f6.2别名:无来源:管理员去向: 课程管
9、理处理过程(p4.3)数据组成:课程编号|课程名|学期|学时|学分数据流名称:学生管理信息 标志符:f5别名:无来源:管理员去向:学生管理处理过程(p4)数据组成:学号|姓名|性别|年龄|所在系数据流名称:学生信息添加 标志符:f5别名:无来源:管理员去向:学生管理处理过程(p4.2)数据组成:学号|姓名|性别|年龄|所在系数据流名称:学生信息修改 标志符:f5别名:无来源:管理员去向:学生管理处理过程(p4.3)数据组成:学号|姓名|性别|年龄|所在系数据存储字典:数据存储名称:选课信息数据库 标志符:d1描述:选课信息资料流入数据流:f2涉及处理: p2.2,p2.3数据组成:学号+课程号
10、+成绩数据存储名称:学生信息数据库 标志符:d2描述:学生信息资料流入数据流:f5,f4涉及处理:p2.2,p2.3,p3.2数据组成:学号+姓名+性别+年龄+所在系数据存储名称:用户登录数据库 标志符:d3描述:用户登录资料流入数据流:f5涉及处理:p4.2,p4.3,p4.4数据组成:用户名+密码数据存储名称:课程信息数据库 标志符:d4描述:课程信息资料流入数据流:f4涉及处理:p3.2,p3.3,p3.4数据组成:课程编号+课程名+学期+学时+学分 数据处理字典:数据处理名称:用户登录 标志符:p1处理定义:登录系统 激发条件:所输入的用户名和密码正确输入:f1输出:f2,f5数据处理
11、名称:选课查询 标志符:p2处理定义:查询选课信息 激发条件:所输入图书信息找到输入:f2输出:f3数据处理名称:查询选择 标志符:p2.1处理定义:选择查询方式 激发条件:已选择查询方式输入:f2输出:f2.1,f2.2数据处理名称:多条件查询 标志符:p2.3处理定义:查询选课信息 激发条件:所输入选课信息找到输入:f2.2输出:f3数据处理名称:直接查询 标志符:p2.2处理定义:直接查询选课信息 激发条件:所输入选课信息找到输入:f2.1输出:f3数据处理名称:课程信息 标志符:p3处理定义:管理课程信息激发条件:选择管理子功能输入:f4输出:d4数据处理名称:课程添加 标志符:p3.
12、1处理定义:添加课程信息 激发条件:课程号输入:f4.1输出:d4数据处理名称:课程修改 标志符:p3.2处理定义:修改课程信息激发条件:课程号输入:f4.2输出:d4数据处理名称:课程删除 标志符:p3.2处理定义:删除课程信息 激发条件:课程号输入:f4.3输出:d4数据处理名称:学生信息 标志符:p4处理定义:管理学生信息 激发条件:选择管理子功能输入:f5输出:d3数据处理名称:学生添加 标志符:p4.1处理定义:添加学生信息 激发条件:学号输入:f5.1输出:d3数据处理名称:学生修改 标志符:p4.2处理定义:修改学生信息激发条件:学号输入:f5.2输出:d3数据处理名称:学生删除
13、 标志符:p4.3处理定义:删除学生信息激发条件:学号输入:f5.3输出:d32 概要设计(1)实体图及e-r图根据1)所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。学生选课信息管理系统可以划分的实体有:用户登录实体、学生信息实体、课程信息实体、学生选课信息实体、学生选课查询信息实体。用e-r图一一描述这些实体。用户登录用户名密码用户登录实体图:图2-1用户登录实体及其属性图学生信息学号所在系别学生年龄学生性别学生姓名学生信息实体图:图2-2学生信息实体及其属性图课程信息课程号课程名学分学期学时课程信息实体图图2-3课程信息实体及其属性图选课信息学号课程号成绩选课信息实体图
14、图2-4选课信息实体及其属性图总的e-r图: 管理员管理管理学生课程查询选课选修11m1mmmn图2-5实体及联系图(2)关系图图-6数据库存表关系图3逻辑设计表3-1 用户登录信息表表中列名数据类型可否为空说明usernamechar(16)not null(主键)用户名称userpasswordchar(16)not null密码表3-2学生信息表表中列名数据类型可否为空说明snochar(10)not null(主键)学号snamechar(8)not null姓名ssexchar(2)null性别sageintnull年龄sdeptchar(20)null所在系别表3-3课程信息表表中
15、列名数据类型可否为空说明cnochar(10)not null(主键)课程号cnamechar(20)not null课程名称ccredtintnull学分csemesterintnull学期cperiodintnull学时 表3-4选课信息表表中列名数据类型可否为空说明snochar(10)not null(外主键)学生学号cnochar(10)not null(外主键)课程号gradeintnull成绩表3-5查询选课信息表表中列名数据类型可否为空说明snochar(10)not null(外主键)学生学号cnochar(10)not null(外主键)课程号4 物理设计数据库物理设计阶段
16、的任务是根据具体计算机系统(dbms和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在后者。(1)建立索引:对tb1_student表在sno属性列上建立聚集索引,在sname属性列上建立非聚集索引。对tb1_course表在cno上建立聚集索引,在cname、 ccredt、csemester、cperiod上建立非聚集索引。对tb1_sc表在sno、cno上建立聚集索引,在grade上建立非聚集索引对tb1_user表在username上建立聚集索
17、引。(2)存储结构确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。 将日志文件和数据库对象(表、索引等)分别放在不同的磁盘可以改进系统的性能。所以系统将日志文件和数据文件存放在不同磁盘上。5数据库建立(1)创建数据库create database selectcourseon(name= selectcourse _data,filename='d: selectcourse _data.mdf', size=5mb,maxsize=20mb,filegrowth=2mb)lo
18、g on(name= selectcourse _log,filename='d: selectcourse _log.ldf', size=1mb,maxsize=20mb,filegrowth=20%)(2)学生信息表建立use selectcoursegocreate table tb1_student(sno char(5) primary key,sname char(20) unique,ssex char(1),sage int,sdept char(15); go(3)课程信息表建立create table tb1_course(cno char(5),cnam
19、e char(10),grade char(1),primary key (cno);(4)选课表建立create table tb1_sc(sno char(5),cno char(5),grade int,primary key(sno,cno),foreign key(sno)references student(sno),foreign key(cno)references course(cno);(5)索引的创建use selectcoursegoalter table dbo.tb1_student add constraint pk_tbl_student primary key
20、 clustered (sno asc)with (pad_index = off, sort_in_tempdb = off, ignore_dup_key = off, online = off) on primary6数据初始化(1)将学生信息加入表tb1_student中insert into tb1_student values('11001','李勇','男',20,'cs')insert into tb1_student values('11002','刘晨','男',
21、19,'cs')insert into tb1_student values('11003','王敏','女',18,'ma')insert into tb1_student values('11004','张立','男',20,'is')(2)将课程信息加入tb1_course表中insert into tb1_course values('1','数据库','4');insert into tb1_c
22、ourse values('2','数学','2');insert into tb1_course values('3','信息系统','4');insert into tb1_course values('4','操作系统','3');insert into tb1_course values('5','数据结构','4');insert into tb1_course values('6
23、9;,'数据处理','2');insert into tb1_course values('7','c语言','4'); (3)将选课信息加入tb1_sc表中insert into tb1_sc values('11001','1',92);insert into tb1_sc values('11001','2',85);insert into tb1_sc values('11001','3',92);insert
24、into tb1_sc values('11002','2',88);insert into tb1_sc values('11002','3',90);7 数据库用户权限管理该系统设置两种类型的用户(1) 管理员(superadministrator) 即管理员拥有所有的权限。(2) 学生(student):可以对课程进行选课、查看自己的选课信息以及自己的学生信息。8、建立触发器,存储过程-此代码主要是实现新建一存储过程,该存储过程的名字为qchengji,其功能是按给定的学生姓名和课程名从sc表中查询该生所选该课程的成绩。cr
25、eate procedure qchengjisname_in char(8),cname_in char(20),score_out int outputasbeginselect score_out=grade from tb1_student,tb1_course,tb1_scwhere tb1_student.sno=tb1_sc.sno and tb1_course.cno=tb1_sc.cno and sname=sname_in and cname=cname_inendgodeclare sname_in char(8),cname_in char(20),score_out
26、intselect sname_in='杨美丽',cname_in='cs11'exec qchengji sname_in,cname_in,score_out outputprint sname_inprint cname_inprint score_outgo-此代码主要是实现新建一存储过程,该存储过程的名字为cjcx,其功能是按给定的学号和课程号从sc表中查询该生所选该课程的成绩。create procedure cjcxsno_in char(8),cno_in char(10),score_out int outputasbeginselect sc
27、ore_out=grade from tb1_scwhere tb1_sc.sno=sno_in and tb1_sc.cno=cno_inendgodeclare sno_in char(8),cno_in char(10),score_out intselect sno_in='1134160201',cno_in='cs11'exec cjcx sno_in,cno_in,score_out outputprint sno_inprint cno_inprint score_out-此代码主要是实现新建一触发器,该触发器的名字为score_sc_tri,其
28、功能是对输入的成绩进行合法性检查,即确保输入的成绩在0-100之间。create trigger score_sc_trion tb1_sc for insert,updateasdeclare score_read intselect score_read=grade from insertedif score_read>=0 and score_read<=100beginprint '操作完成'returnendelsebeginprint '成绩输入不合法,请重新输入!'rollback transactionend-此代码主要是实现新建一触
29、发器,该触发器的名字为trigger_dc,其功能是删除课程时,要删除所有选些课程的所有数据信息。create trigger trigger_dcon tb1_course for deleteasdeclare cno_old char(2)select cno_old=cno from deleteddelete from tb1_sc where cno=cno_old-此代码主要是实现新建一触发器,该触发器的名字为triscsno,其功能是若修改选课表中某记录的学号,则要检查学生表中是否存在与该学号相同的记录,有,则不许修改,否则可以修改。create trigger triscsn
30、oon tb1_sc for updateasif update(sno)begindeclare sno_old char(10),count intselect sno_old=sno from deletedselect count=count(*) from tb1_student where sno=sno_oldif count>0rollback transactionend9 系统实现(1) 系统功能模块图:系统功能模块图如图10-1学生选课系统用户登录学生信息管理课程信息管理选课信息管理图9-1系统功能模块图四个模块的功能如下:登录模块: 可以实现一般用户和管理员登录管
31、理学生信息管理:主要用于学生信息管理,其中管理员可以对学生信息进行添加、修改、删除操作。学生可以查看自己的学生信息。课程信息管理: 主要是课程的信息添加、修改、删除。选课信息管理:学生选课与选课信息查询窗体有选课、查询与退出的功能,选课包括选择学生与选择课程,选课查询包括查询内容与查询值。(2) 前台开发平台的选择:c#.net(3) c#.net与数据库的连接ado.net是c#.net访问数据库的主要方式。ado.net的数据访问方式ado.net 的数据存取api 提供3 种数据访问方式: a)通过odbc 相连,访问支持早期odbc 协议的数据库。b)通过oledb 相连,访问sql
32、server6.5, microsoftaccess, oracle 或者其他有提供ole db 连接能力的数据库c)使用sqlconnection 直接与sql server7.0以及sql server2005 相连c#.net访问数据库的具体过程a)创建数据库连接ado.net 中使用sqlconnection 类对sql server7.0 以及更高版本进行连接, 这个类的构造函数接受一个可选参数,称为连接字符串, 该字符串用于定义正在连接的数据库的类型、位置以及其他信息,这些属性用分号分隔,通常该字符串包含如下信息:data source 特性: 指定sql server 数据库所在
33、计算机名称; initial catalog 特性: 指定连接的sql server 数据库的名称; user id 和pass-word 特性: 指定用sql server登录方式的有效帐户名和密码或设置为:integrated security=true设置为windows 登录方式。b ) 填充数据创建数据源连接以后,接下来创建数据适配器,适配器在创建过程中需要向其传递两个要素:用于包含结构化查询语句的数据描述和用于指明数据库连接信息的连接描述,创建后可利用fill 方法,将所需的数据填充在一个数据集(dataset)中。c ) 关闭数据库的连接由于dataset采用是断开连接的方式,所
34、以当把数据填充到数据集后即可断开与数据库的连接。 d) 为控件指定数据源数据填充到数据集后,要在窗体上显示出来,则必须把相应的数据表绑定到数据控件上。具体实现代码如下:public sqlconnection dataconnection = new sqlconnection(); public sqldataadapter dataadapter; public dataset dataset = new dataset(); string connstr = "server=pc-200906200558sqlexpress;database=selectcourse;inte
35、grated security=sspi" public dataset getdataformdb(string sqlstr) try dataconnection.connectionstring = connstr; dataadapter = new sqldataadapter(sqlstr, dataconnection); dataset.clear(); dataadapter.fill(dataset); dataconnection.close(); catch (exception ex) messagebox.show(ex.message); dataco
36、nnection.close(); if (dataset.tables0.rows.count != 0) return dataset; else return null;public bool updatedb(string sqlstr) sqlconnection sqlconn = new sqlconnection(connstr); try sqlcommand cmdtable = new sqlcommand(sqlstr, sqlconn); cmdtable.commandtype = commandtype.text; sqlconn.open(); cmdtable
37、.executenonquery(); sqlconn.close(); return true; catch (exception ex) messagebox.show(ex.message); return false; (4) 学生选课信息管理模块的实现学生选课信息管理系统登录界面如图10-2 图9-2学生选课信息管理系统登录界面图学生选课信息管理系统主界面如图10-3图9-3 学生选课信息管理系统主界面学生信息管理运行界面如图10-4 图9-4学生信息管理运行界面下面给出学生信息管理界面的主要代码: private void frmstudent_load(object sender
38、, eventargs e) try objclose(); string sqlstr; database db = new database(); dataset ds = new dataset(); sqlstr = "select * from tb1_student" ds = db.getdataformdb(sqlstr); if (ds = null) messagebox.show("没有任何学生纪录"); else dgrdvstudent.datasource = ds.tables0; dgrdvstudent_rowheade
39、rmouseclick(null, null); catch (exception ex) messagebox.show(ex.message); private void button1_click(object sender, eventargs e) try if (button1.text.trim() = "添加") button1.text = "确定" objopen(); clear(); button2.enabled = false; button3.enabled = false; button4.enabled = false;
40、 else button1.text = "添加" if (textbox1.text.trim() != null && textbox2.text.trim() != null) string sqlstr; sqlstr = "insert into tb1_student values('" + textbox1.text.trim() + "','" + textbox2.text.trim() + "','" + combobox1.text.tr
41、im() + "','" + textbox3.text.trim() + "','" + textbox4.text.trim() + "')" database db = new database(); bool b; b = db.updatedb(sqlstr); if (b = true) if (messagebox.show("添加成功!继续添加吗?", "添加学生", messageboxbuttons.yesno, messageboxi
42、con.question, messageboxdefaultbutton.button1) = dialogresult.yes) clear(); objopen(); button1.text = "确定" else objclose(); button2.enabled = true; button3.enabled = true; button4.enabled = true; dgrdvstudent.enabled = true; else goto exit; else messagebox.show("学号与姓名不能为空"); text
43、box1.focus(); button1.text = "确定" refreshdata(); textbox1.selectall(); catch (exception ex) messagebox.show(ex.message); clear(); objclose(); dgrdvstudent.enabled = false; exit: ; 课程信息运行界面如图10-5所示: 图9-5课程信息运行界面下面给出课程信息管理界面的主要程序代码:private void frmcourse_load(object sender, eventargs e) try o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险业务创新与发展考试题库
- 鹊桥仙(教学课件)-高中语文
- 招投标法考试试题及答案2026
- 2026年中央空调维修工中级制冷行业考核题库及答案
- 执业兽医资格考试水生动物类真题题库及答案
- 2026体育健康知识竞赛题库及参考答案
- 新型冠状病毒核酸检测培训考试试题附答案
- 2026年护理学手外科试题(附答案)
- 2026年机械安全考试题目及答案
- 2026年监理从业人员继续教育考核题库(含参考答案)
- 2026年国能源招聘笔试真题及答案
- 2026年新疆中考语文真题及答案解析
- GB/T 24134-2026橡胶和塑料软管静态条件下耐臭氧性能的评价
- 简析量子定位技术及应用前景
- 2026年中医内科医师高频面试题包含详细解答
- AQ3026-2026《化工企业设备检修作业安全规范》解读
- 2026年全国两会解读:基层治理能力提升
- 装配错装漏装考核制度
- 感染性心内膜炎课件
- 2025年绿色农业农业资源保护与利用研究报告
- 安全风险管控“六项机制”监理实施细则(水利工程)
评论
0/150
提交评论