数据库课程设计报告

时间:2024.4.13

数据库课程设计报告

              学    号:20121004357

              姓    名:  李世荣   

              班    级: 191123    

              指导老师:  胡霍真     

邮件管理系统

摘要

21 世纪是网络飞速发展的时代,电子邮件已经成为热门话题。随着网络技术的不断发展,网络应用已经渗透到人类社会的各个角落。作为网络世界信息传输的支撑点的电子邮件,更是人们关注的焦点。通过电子邮件无论朋友在何方,都可以通过电子邮件方便的联系交流,电子邮件开辟网络世界里的一片天地。电脑的日益普及,大大改变了各行各业的工作方式和人们的生活方式,越来越多的人开始进入到电脑的世界。电脑的普及化,进而促进了互联网的进一步的发展和完善,而作为互联网上基本的存在电子邮件给予了上网的电脑用户另一个别样的空间。因此,这次我们采用了Oracle 12c数据库,使用Visual C++数据库编程的方法以及MFC ODBC数据库开发技术来开发一个简单的邮件管理系统。我们可以通过这个系统来管理我们的邮件,让我们之间的邮件交流更加的方便快捷。

关键字:Oracle 12c,Visual C++,MFC ODBC,管理邮件。

一、系统需求分析

    进行系统设计,首先要对系统的现状进行分析。根据系统的目标、需求和功能,制定和选择一个较好的系统方案,从而达到一个合理的优化系统。需求分析是在于要弄清用户对开发的数据库应用系统的确切要求。数据库设计的第一步是明确数据库的目的和如何使用,也就是说需要从数据库中得到哪些信息。明确目的之后,就可以确定您需要保存哪些主题的信息,以及每个主题需要保存哪些信息。在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统。

(1)本系统是为了更好地管理我们的邮件,更方便的交流,因此我认为可以分为以下几个小系统:用户登录,联系人信息的管理,邮件类型管理,邮件记录管理。能够实现以下功能:

1、联系人的增删修改;

2、邮件的新建,发送,查询;

3、邮件类型的增删修改;

4、邮件记录的查询删除。

(2)数据处理对象:

1、联系人信息:联系人ID,联系人姓名,联系人E-mail地址;

    2、邮件类型信息:邮件类型ID,邮件类型名称;

3、邮件记录信息:记录ID,收件人ID,发送时间,是否有附件,邮件类型ID,邮件内容;

(3)系统处理的功能及要求:

1、能够储存一定数量的联系人信息,并能对其进行相关的操作,包括联系人的增加,修改,删除;

2、能够储存一定数量的邮件类型信息,并能对其进行相关操作,包括类型的增加,删除,修改;

3、能够储存一定数量的邮件记录信息,并能对其进行相关操作,包括邮件的发送,查询邮件记录,删除记录;

4、能够与数据库连接,并且有一定的安全机制,保证数据库的授权访问,防止他人随意访问,造成个人隐私的泄露。

(4)邮件管理系统功能结构图如下:

(5)业务流程图:

(6)数据流程图:

      顶层数据流程图:

  用户管理联系人信息数据流程图:

      用户管理邮件类型信息数据流程图:

用户管理及查询邮件记录数据流程图:

二、E-R

                         联系人信息实体-关系图

                         邮件类型信息实体-关系图

邮件记录信息实体-关系图

                                      

             联系人-邮件记录关系图                    邮件类型-邮件记录关系图

三、系统详细设计

1、根据上述概念模型设计得出的E-R图,可以得出系统中涉及的主要实体有三个,其结构如下:

?、联系人:contact_info_tab(contact_id,contact_name,E-mail)

?、邮件类型:email_type_tab(type_id,type_name)

?、邮件记录:email_record_tab(record_id,contact_id,send_date,is_fujian,type_id,email_info)

  进而设计并完善表格如下

联系人基本信息表(contact_info_tab)

                       

邮件类型信息表(email_type_tab)

                       

邮件记录基本信息表(email_record_tab)

2、数据库实施阶段

(1)、建立数据库

  Create database email;

(2)、建立数据表

      创建联系人信息表

      Create table contact_info_tab(

           Contact_id number primary key,

           Contact_name varchar2(16)not null,

           E_mail varchar2(24)not null

      );

      创建邮件类型信息表

      Create table email_type_tab(

           Type_id number primary key,

           Type_name varchar2(16)not null

       );

      创建邮件记录信息表

       Create table email_record_tab(

            Record_id number primary key,

            Contact_id number references contact_info_tab(contact_id)not null,

            Send_date date not null,

            Is_fujian number not null check(is_fujian in(0,1)),

            Type_id number references email_type_tab(type_id),

            Email_info varchar2(128)not null

        );

(3)自行设计好主界面后,在主界面上添加控件,并设置属性使其可用,为各个控件添加变量或类,注意要将各控件的ID进行修改。利用InitListControl这个函数负责添加控件的显示列。

读取数据库中的信息添加到主界面,需要在类中定义一个InitListData私有函数,负责从数据库中读取数据并显示到列表控件中,同时还需定义三个分别读取数据到列表控件中de函数。

连接数据库时需先配置ODBC数据源,配置添加的用户,配置成功后,在主类中创建CDatabase的对象m_db,之后在OnBtnConn函数中处理数据库的连接,即可完成用户与数据库的连接。

在连接数据库成功后,即可对联系人信息管理和邮件记录管理的对话框进行设计,并添加对话框控件以及各个控件的变量和函数,之后完善添加、修改、删除联系人的代码,并调试成功。

四、遇到的问题及解决

1、在第二章的SQL developer里边改变用户默认表空间时,在/as sysdba弹出的工作表里输入语句“alter user c##hannah default tablespace users;”,运行语句后脚本里并未输出“user C##HANNAH已变更。”

在询问了同学之后,找到了解决方法。就是先把C##HANNAH的三个表删除,再重新创建,最后解决了这个问题。

2、在添加控件显示列的时候,运行后,无法跳出界面

     在联系人信息管理、邮件信息管理、邮件类型管理三块添加的list control控件的view属性改成Report,改完之后出现了界面。

    3、由于课本上的代码是VC6.0环境下的代码,所以有时出现的问题确实找不到原因,经过不断地查找和同学交流之后,才知道VS2012和VC6.0的环境不同,所以有些代码的需要小小的改动。

五、课程设计心得体会

1、 这次课程设计加深了我对数据库系统概论相关知识的理解。例如对建立基本表、视图、索引、存储过程等,都比以前更加的熟练。并在解决遇到的各种问题的过程中,学到了很多新的知识。比如在导入\导出数据时,由于外键约束的存在,经常会出现错误,这就要注意各个表导入的顺序问题。一般是先导入主键表,后导入外键表,这样可以避免很多的错误。

2、我进一步掌握了相关的SQL语句方面的知识。不但纠正了以前的错误认识和理解,而且学会了建立存储过程和触发器。通过查阅资料,我还明白了存储过程是编译后放在服务器端的程序,它可以被别的模块调用,且不需要重新编译,这样就大大减轻了客户端的负担,且有效的提高了系统执行的效率。

3、当然,在实习的过程中也存在一些问题。由于需求分析阶段的工作完成的不是很充分,在后面的设计过程中,前后时常会出现矛盾,不一致现象,因此要反复的修改前面的结果,导致整个工作进行的不是很顺利。我觉得在这次课程设计中,需求分析阶段是致关重要的,但由于同学们都是第一次做这样的系统设计,都不是很熟悉需求分析的主要方法和主要任务,所以都很盲目,认为随便从网上搜点相关的知识就可以了,但其实,这直接影响着后面的各个阶段的工作的进行。

参考文献:

1、数据库系统概念,Abraham Silberschatz,Henry F. Korth, S. Sudarshan著,杨冬青,李红燕,唐世渭译,机械工业出版社;

2、数据库课程设计实验教程,胡霍真,朱莉著,中国地质大学出版社;

3、软件开发与指导,人民邮电出版社。


第二篇:《SQL Server 数据库》数据库存储过程、触发器的创建于管理实验报告


北 华 航 天 工 业 学 院

《数据库系统管理》

实验报告

报 告 题 目 :                        

      存储过程、触发器的创建于管理    

所 在 系 部 :计算机科学与工程系     

所 在 专 业 :网络工程专业           

学       号 :                         

姓       名 :                         

教 师 姓 名 :                         

完 成 时 间 : 2011   10    19  

北华航天工业学院教务处制

存储过程、触发器的创建与管理

一、        实验目的

1、  掌握存储过程的概念、优点、特点及用途;

2、  掌握创建、执行、查看、修改和删除存储过程的方法;

3、  了解触发器和一般存储过程的区别、概念及优点;

4、  掌握创建、查看、修改和删除触发器的方法。

二、        实验内容

(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。

(二)练习创建和管理存储过程

1、使用管理控制台创建一个名为“计算机系借阅信息_PROC”的无参存储过程,要求显示计算机系读者20##-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段,并执行该存储过程,查看显示结果。

2、使用T-SQL语句创建一个名为“读者借阅信息_PROC”的带参数的存储过程,要求根据输入的读者的编号显示读者的所有借阅信息,包括“读者编号”、“姓名”、“系部”、“图书编号”、“图书名称”和“借阅日期”等字段,并执行该存储过程,查看显示结果。

create proc 读者借阅信息_PROC1

@dzbh char(10)

as

begin

 select tb_reader.读者编号,姓名,系部,

tb_book.图书编号,书名,借阅日期

from tb_book,tb_reader,tb_borrow

where tb_book.图书编号=tb_borrow.图书编号

and tb_reader.读者编号=tb_borrow.读者编号

and tb_reader.读者编号=@dzbh

end

--

declare @srcs char(10),@fhzt int

set @srcs='R10009'

exec @fhzt=读者借阅信息_PROC1 @srcs

print '执行状态值为'+cast(@fhzt as varchar(10))

3、使用T-SQL语句创建一个名为“图书借阅信息_PROC”的带参数的存储过程,要求根据输入的图书编号计算该图书的借阅数量,并根据程序执行结果返回不同的值,执行成功返回0,不成功返回错误号,并执行该存储过程,输出图书编号、借阅数量和程序结果返回值。

create proc 图书借阅信息_PROC1

@tsbh char(10),@jysl int output

as

begin

 declare @ztz int

set @ztz=0

 select @jysl=count(distinct 读者编号)

 from tb_borrow where 图书编号=@tsbh

 if @@error<>0

  set @ztz=@@error

 return @ztz

end

--

declare @sccs int,@fhz int,@srcs char(10)

set @srcs='10003'

exec @fhz=图书借阅信息_PROC1 @srcs,@sccs output

select @srcs,@sccs,@fhz

4、使用管理控制台查看“读者借阅信息_PROC”存储过程的定义信息和依赖的对象。

5、使用系统存储过程查看“计算机系借阅信息_PROC”存储过程的定义信息和依赖的对象。

sp_helptext

sp_depends

6、使用T-SQL语句创建一个名为“删除读者信息_PROC”的存储过程,要求根据所提供的读者编号,删除该编号所对应的读者,如果不存在此编号的读者,则显示“该编号的读者不存在!”。创建完成之后,执行上述存储过程,观察执行结果。

create proc 删除读者信息_PROC1

@dzbh char(10)

as

begin

 if exists(select * from tb_reader

    where 读者编号=@dzbh)

  begin

   delete from tb_borrow where 读者编号=@dzbh

   delete from tb_reader where 读者编号=@dzbh

  end

 else

  print '该编号的读者不存在!'

end

exec 删除读者信息_PROC1 'R10010'

7、使用T-SQL语句创建一个名为“修改借阅信息_PROC”的存储过程,要求根据所提供的读者编号和天数,将该读者的归还日期增加相应的天数,如果不存在该读者的借阅信息,则显示“该读者没有借阅图书!”。创建完成之后,执行上述存储过程,观察执行结果。

create proc 修改借阅信息_PROC1

@dzbh char(10),@ts int

as

begin

 if exists(select * from tb_borrow

     where 读者编号=@dzbh)

  update tb_borrow

  set 归还日期=dateadd(day,@ts,归还日期)

  where 读者编号=@dzbh

 else

  print '该读者没有借阅图书!'

end

--

exec 修改借阅信息_PROC1 @ts=3,@dzbh='R10003'

8、使用管理控制台删除“读者借阅信息_PROC”存储过程。

9、使用T-SQL语言删除“计算机系借阅信息_PROC1”存储过程。

drop proc 计算机系借阅信息_PROC1

(三)练习创建和管理触发器

1、使用管理控制台创建一个名为“读者信息插入_TRIG”的触发器,要求在“读者信息表”表中插入一条新记录时触发该触发器,并给出“插入了一条新记录!”的提示信息。并在“读者信息表”中插入一条记录查看显示结果。

2、使用T-SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,要求在“借阅信息表”中插入或修改记录时触发该触发器,检查“归还日期”是否超过20##年12月31日,如果超过给出相应提示,提示中给出“归还日期”超过20##年12月31日的“图书编号”和“读者编号”。

create trigger 借阅信息插入修改_TRIG

on tb_borrow

for insert,update

as

begin

       declare @date datetime,@bookno char(10),@readerno char(10)

       select @date=归还日期,@bookno=图书编号,@readerno 读者编号

       from inserted

       if @date>'20##-12-31'

       begin

              print 'date more than 20##-12-31'

              select @bookno 图书编号,@readerno 读者编号

       end

end

insert into tb_borrow values('10011','R10004','20##-11-4','20##-2-2')

3、使用T-SQL语句实现该数据库中各表间的级联删除。

4、使用T-SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当图书信息表中插入或修改记录时,触发该触发器,检查库存册数是否大于0,若小于0,则撤销插入和修改操作。

create trigger 图书信息_TRIG

on tb_book

for insert,update

as

begein

  print 'begin trigger'

  declare @kccs int

  select @kccs=库存数from inserted

  if @kccs<0

    rollback

end

insert into tb_book values('11001',2,'eee','ddd','ggg',29,-1)

update tb_book set 库存数=-2 where 图书编号='10002'

5、使用管理控制台查看“读者信息插入_TRIG”触发器的依赖的对象。

6、使用系统存储过程查看“借阅信息插入修改_TRIG”触发器的定义信息和依赖的对象。

7、使用管理控制台删除“读者信息插入_TRIG”触发器。

8、使用T-SQL语言删除“借阅信息插入修改_TRIG”触发器。

drop trigger 借阅信息插入修改_TRIG

更多相关推荐:
数据库课程设计报告范例

数据库课程设计报告课题名称:图书管理统专业:信息与计算科学班级:信计071班小组人员:***一.背景资料在高校中,学生的数量较多,图书的数量也比较多,每天图书的借阅量比较大,采用手工的处理方式已经不能满足这种需…

数据库课程设计报告

20xx级数据库课程设计任务书设计目的数据库课程设计是在学生系统地学习了数据库系统原理课程后按照关系型数据库的基本远离综合运用所学的知识设计开发一个小型的数据库管理信息系统通过对一个实际问题的分析设计与实现将原...

数据库课程设计报告

南京理工大学泰州科技学院计算机科学与技术系信管专业10信管2班级大型数据库课程设计报告书姓名赵敏学号指导老师职称讲师设计地点起讫时间完成报告书时间20xx年12月5日第1页课程设计要求各专业学生应根据课程任教老...

数据库课程设计报告

数据库课程设计设计题目数据库创建和修改表专业物联网工程班级20xx级设计人林升学号20xx01052143山东科技大学20xx年7月3日课程设计任务书一课程设计题目创建和修改表的定义二课程设计主要参考资料1数据...

SQLServer数据库课程设计报告

武汉工业学院数据库系统课程设计说明书设计题目选课管理系统姓名学院专业学号指导教师20xx年6月8日一读书笔记1SQL数据库的实际应用SQL包括了所有对数据库的操作主要是由4个部分组成1数据定义这一部分又称为SQ...

数据库课程设计报告

计算机与控制工程学院数据库原理及应用课程设计报告题目名称选课系统专业计科班级计1211学号20xx58501149姓名李利娟指导教师毕远伟20xx年01月11日1课程设计评语班级计1211学号20xx58501...

分布式数据库课程设计报告

分布式数据库在学生信息管理系统中的应用班级姓名设计时间指导教师评语评阅成绩目录摘要31第一章绪论411课题研究的意义412分布式数据库技术国外发展现状413分布式数据库技术国内发展现状514分布式数据库技术发展...

数据库课程设计报告

湖南文理学院数据库课程设计1数据库原理与应用课程设计报告题目仓库管理系统设计专业班级电信0801班设计学生蒋文福设计时间20xx年6月20日7月1日湖南文理学院物理与电子科学学院湖南文理学院数据库课程设计摘要随...

数据库课程设计报告

数据库课程设计报告目录一、课程设计概述.21.1课程设计的目的与任务.21.2课程设计的主要内容.21.3所选题目及成员.2二、系统需求分析.22.1功能需求分析.22.2性能需求及运行环境分析.32.3数据需…

数据库课程设计报告

数据库课程设计题目游戏后台数据库系统姓名学生班号学号专业指导教师20##年4月10日~20##年4月20日目录第一章需求分析...-1-1.1系统背景1.2系统需求分析1.3目标与任务1.4数据流程第二章系统概…

数据库课程设计报告

西安邮电大学计算机学院数据库课程设计报告题目英雄联盟账号信息管理系统专业名称班级软件1202学生姓名尚奕帆学号8位指导教师乔平安起止时间一课程设计目的由于最近游戏英雄联盟非常火爆刚好这学期学习了数据库相关知识对...

数据库课程设计报告模板

数据库课程设计方案长江大学管理学院信息20xx级1设计目的数据库课程设计是信息管理与信息系统专业大四学生的重要实践性环节之一是学生在学习完数据库原理及应用课程后锻炼自身实践能力的一次综合性实验本课程设计的主要目...

数据库课程设计报告(17篇)