数据库课程设计报告

时间:2024.4.13

           2008级数据库课程设计任务书   

【设计目的】

   数据库课程设计是在学生系统地学习了《数据库系统原理》课程后,按照关系型数据库的基本远离,综合运用所学的知识,设计开发一个小型的数据库管理信息系统,通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决世界问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容。

【设计要求】

1、课程设计题目自信填充,独立完成;

2、课程设计时间为1.5周;

3、数据库管理系统不限(Oracle\SQL Server\MySQL\Access…)、开发语言不限(VC\VC\ C++Builder\Delphi\C#\.net\ASP…),避免把学习语言的时间放在设计期间;

4、从开始的系统雪球分析到最后的软件测试,都要有详细的计划,设计文档应按照数据库设计的要求书写;

5、系统中的数据表设计合理、高效、尽量减少数据冗余,软件界面友好、健壮性强;

6、上机时间:上午8:20-11:50 ,下午 2:10-5:40;

7、无论在校外、校内,都要严格最受学校和所在单位的学习和劳动纪律、规章制度,学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。

【题目】

                    图书馆进销存系统

一、         设计目的

学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库管理信息系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等完成题目要求的功能,从而达到掌握开发一个小型数据库管理信息系统的目的。

二、         设计内容

1)新书的入库。

2)新用户的注册

3)藏书的搜索

4)用户密码的找回

5)对藏书的借还状态的查询

6)用户的书籍借阅记录

7)管理员对图书借还的管理

8)用户对个人信息的管理

【一】需求分析

作者

【二】出版社概念结构设计

藏书,编号,书名,单价,状态,预约,编号,书名,学号,姓名,管理,编号,书名,学号,姓名,借出时间,用户,学号,姓名,专业,学院,密码,管理员,账户,密码 


【三】逻辑结构设计

【四】物理设计

因为一个用户可以借阅多本图书,所以用户表对借阅表和管理表为一对多的关系,因此为了保证查询的唯一性和减少冗余,又因为书的编号唯一,所以以书的编号建立索引 

【五】数据库的实施和维护

用户手册:

 进入本系统首先会进入初始界面

新用户点击用户注册先输入自己的详细信息和密码注册即可

注册完毕后返回点击用户登陆,输入学号和密码进行登陆

如果忘记密码,点击找回密码,输入个人信息即会显示密码

登陆成功后,会进入个人界面,全部的图书信息均会显示出来,用户可以根据书名进行查询,若图书状态为可借,则可以进行预约

点击个人信息,可以查看用户目前所借阅的书

用户找到书后,前往管理员出进行借书,管理员通过管理员登陆可以进行新书添加,书籍借出和书籍归还工作

新书添加可以进行书籍入库工作

点击借书输入用户和书籍信息,并查询书籍的预约情况可以进行借书工作

用户进行还书时,输入书籍的编号既可以清除用户的借书记录

总结:

  系统优缺点:本系统是在学习过数据库系统原理后用MFC语言所做的一款系统,具有简易的图书馆信息管理功能,但是对于惩罚系统和对借阅时间的管理上做的不够完善和智能,操作界面略显简陋,不够优美赏心悦目,但是对于一个图书馆系统所应该具有基本功能都具备。

  个人感想:通过这次的数据库系统课程设计,本人熟悉了对SQL Server 2000,2005,Oracle ,VS2008,vc++6.0等软件的应用,但因为实现准备工作不够充分,因此,在进行编写时略微仓促了些,也暴露和许多的问题,比如对MFC语言不够精通等,不过最终许多问题都通过网上查找资料解决了,也从中学到了许多,不管怎么说,这是本人设计的第一款具有数据库管理功能的可视化软件,整个编写代码的过程大概用了一个下午,三个星期大部分时间都浪费了,在下次进行课程设计的时候,本人将吸取经验,充分利用好所有的时间,争取将课程设计做的更加完善完美。

附录:

ADOConn::ADOConn()

{

}

ADOConn::~ADOConn()

{

}

// 初始化—连接数据库

void  ADOConn::OnInitADOConn()

{

       // 初始化OLE/COM库环境

       ::CoInitialize(NULL);

       try

       {

              // 创建Connection对象

              m_pConnection.CreateInstance("ADODB.Connection");

              // 设置连接字符串,必须是BSTR型或者_bstr_t类型

             

           m_pConnection->Open("FILEDSN=f:\\WYF.dsn;PageTimeout=5","uid=administrator", "pwd=wyf890722",adModeUnknown);

       }

       // 捕捉异常

       catch(_com_error e)

       {

              // 显示错误信息

              AfxMessageBox(e.Description());

       }

}

// 执行查询

_RecordsetPtr&  ADOConn::GetRecordSet(_bstr_t bstrSQL)

{

       try

       {

              // 连接数据库,如果Connection对象为空,则重新连接数据库

              if(m_pConnection==NULL)

                     OnInitADOConn();

              // 创建记录集对象

              m_pRecordset.CreateInstance(__uuidof(Recordset));

              // 取得表中的记录

       m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

       }

       // 捕捉异常

       catch(_com_error e)

       {

              // 显示错误信息

              AfxMessageBox(e.Description());

       }

       // 返回记录集

       return m_pRecordset;

}

 // 执行SQL语句,Insert Update _variant_t

BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)

{

//    _variant_t RecordsAffected;

       try

       {

              // 是否已经连接数据库

              if(m_pConnection == NULL)

                     OnInitADOConn();

              // Connection对象的Execute方法:(_bstr_t CommandText,

              // VARIANT * RecordsAffected, long Options )

              // 其中CommandText是命令字串,通常是SQL命令。

              // 参数RecordsAffected是操作完成后所影响的行数,

              // 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名

              // adCmdProc-存储过程;adCmdUnknown-未知

              m_pConnection->Execute(bstrSQL,NULL,adCmdText);

              return true;

       }

       catch(_com_error e)

       {

              AfxMessageBox(e.Description());

              return false;

       }

}

void ADOConn::ExitConnect()

{

       // 关闭记录集和连接

       if (m_pRecordset != NULL)

              m_pRecordset->Close();

       m_pConnection->Close();

       // 释放环境

       ::CoUninitialize();

}

void login::OnOK()

{

       // TODO: Add extra validation here

       UpdateData();

       if(m_id=="")

       {

              MessageBox("帐号不能为空!");

              return;

       }

       ADOConn m_AdoConn;

       m_AdoConn.OnInitADOConn();     

       CString str;

       str.Format("SELECT * From 管理员 Where 帐号='%s'",m_id);

       _bstr_t vSQL;

       vSQL=_bstr_t(str);

       _RecordsetPtr m_pRecordset;

       m_pRecordset=m_AdoConn.GetRecordSet(vSQL);

       if(m_code!=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("密码"))

       {

              MessageBox("密码错误!");

              return;

       }

       else

       {

              choice dlg;

              dlg.DoModal();

       }

       CDialog::OnOK();

}

void code::OnOK()

{

       // TODO: Add extra validation here

      

 UpdateData();

       ADOConn m_AdoConn;

       m_AdoConn.OnInitADOConn();     

       CString str;

       str.Format("SELECT * From 学生 Where 学号='%s' and 姓名='%s' and 学院='%s'and 专业='%s'",m_id,m_name,m_xueyuan,m_zhuanye);

       _bstr_t vSQL;

       vSQL=_bstr_t(str);

       _RecordsetPtr m_pRecordset;

       m_pRecordset=m_AdoConn.GetRecordSet(vSQL);

       str=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("密码");

       MessageBox("你的密码为"+str);

       CDialog::OnOK();

}

ook::look(CWnd* pParent /*=NULL*/)

       : CDialog(look::IDD, pParent)

{

       //{{AFX_DATA_INIT(look)

              // NOTE: the ClassWizard will add member initialization here

       //}}AFX_DATA_INIT

       id="";

}

void look::DoDataExchange(CDataExchange* pDX)

{

       CDialog::DoDataExchange(pDX);

       //{{AFX_DATA_MAP(look)

              // NOTE: the ClassWizard will add DDX and DDV calls here

       //}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(look, CDialog)

       //{{AFX_MSG_MAP(look)

              // NOTE: the ClassWizard will add message map macros here

       //}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// look message handlers

BEGIN_EVENTSINK_MAP(look, CDialog)

    //{{AFX_EVENTSINK_MAP(look)

       ON_EVENT(look, IDC_DATAGRID1, -600 /* Click */, OnClickDatagrid1, VTS_NONE)

       //}}AFX_EVENTSINK_MAP

END_EVENTSINK_MAP()

void look::OnClickDatagrid1()

{

       // TODO: Add your control notification handler code here

              UpdateData();

       ADOConn m_AdoConn;

       m_AdoConn.OnInitADOConn();

       CString str;

       str.Format("SELECT * From 管理 Where 编号='%s'",id);

       _bstr_t vSQL;

       vSQL=_bstr_t(str);

   m_AdoConn.ExitConnect();

      

}

void search::OnButton1()

{

       // TODO: Add your control notification handler code here

       UpdateData();

       ADOConn m_AdoConn;

       m_AdoConn.OnInitADOConn();

       if(m_name=="")

       {

              MessageBox("输入不能为空!");

              return;

       }

       CString str;

       str.Format("SELECT * From 藏书 Where 书名='%s'",m_name);

       _bstr_t vSQL;

       vSQL=_bstr_t(str);

       m_Adodc.SetRecordSource(vSQL);

       m_Adodc.Refresh();

   m_AdoConn.ExitConnect();

      

}

void search::OnButton3()

{

       UpdateData();

       ADOConn m_AdoConn;

       m_AdoConn.OnInitADOConn();     

       CString str,str1,str2,str3,str4;

       str.Format("select * from  藏书 where 书名='%s'",m_name);

       _bstr_t vSQL;

       vSQL=_bstr_t(str);

      

       _RecordsetPtr m_pRecordset;

       m_pRecordset=m_AdoConn.GetRecordSet(vSQL);

      

       str1=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("是否可借");

       str4=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("编号");

       if(str1=="可借")

       {

             

              str.Format("INSERT INTO 预约 VALUES ('%s','%s','%s','%s')",str4,m_name,id,name);

        MessageBox("预约成功!");

              m_AdoConn.ExecuteSQL(_bstr_t(str));

              str.Format("update 藏书 set 是否可借='已预约' where 书名='%s'",m_name);

              m_AdoConn.ExecuteSQL(_bstr_t(str));

       }

       else

       {

              MessageBox("该书已借出!");

       }

void borro::OnButton1()

{

       // TODO: Add your control notification handler code here

       UpdateData();

      

      

       ADOConn m_AdoConn;

       m_AdoConn.OnInitADOConn();

       if(m_id=="")

       {

              MessageBox("输入不能为空!");

              return;

       }

       CString str;

       str.Format("SELECT * From 藏书 Where 书名='%s'",m_id);

       _bstr_t vSQL;

       vSQL=_bstr_t(str);

   m_AdoConn.ExitConnect();

}

void borro::OnOK()

{

       // TODO: Add extra validation here

       UpdateData();

       ADOConn m_AdoConn;

       m_AdoConn.OnInitADOConn();     

       CString str,str1,str2;

       str.Format("select * from  藏书 where 编号='%s'",m_id);

       m_AdoConn.ExecuteSQL(_bstr_t(str));

       _bstr_t vSQL;

       vSQL=_bstr_t(str);

      

       _RecordsetPtr m_pRecordset;

       m_pRecordset=m_AdoConn.GetRecordSet(vSQL);

      

       str2=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("书名");

      

       str.Format("insert into 管理 values ('%s','%s','%s','%s','%s','%s')",m_id,str2,m_ID,m_name,m_date1,m_date2);

       MessageBox("成功借出");

    m_AdoConn.ExecuteSQL(_bstr_t(str));

      

       str.Format("update 藏书 set 是否可借='已借出' where 编号='%s'",m_id);

       m_AdoConn.ExecuteSQL(_bstr_t(str));

       str.Format("delete from 预约 where 编号='%s'",m_id);

       m_AdoConn.ExecuteSQL(_bstr_t(str));

    m_AdoConn.ExitConnect();

      

       CDialog::OnOK();

}

void add::OnOK()

{

       // TODO: Add extra validation here

              // TODO: Add your control notification handler code here

    UpdateData();

       ADOConn m_AdoConn;

       m_AdoConn.OnInitADOConn();

       if(m_id=="")

       {

              MessageBox("编号不能为空!");

              return;

       }

       CString str;

       str.Format("INSERT INTO 藏书 VALUES('%s','%s','%s','%s','%f','可借')",m_name,m_id,m_publisher,m_author,m_price);

       _bstr_t vSQL;

       vSQL=_bstr_t(str);

       m_AdoConn.ExecuteSQL(vSQL);

       m_AdoConn.ExitConnect();

       MessageBox("添加成功!");

              CDialog::OnOK();

}

void delet::OnOK()

{

       // TODO: Add extra validation here

       UpdateData();

       ADOConn m_AdoConn;

       m_AdoConn.OnInitADOConn();     

       CString str;

       str.Format("delete from 管理 where 编号='%s'",m_id);

             

       m_AdoConn.ExecuteSQL(_bstr_t(str));

       str.Format("update 藏书 set 是否可借='可借' where 编号='%s'",m_id);

m_AdoConn.ExecuteSQL(_bstr_t(str));

      

       CDialog::OnOK();

}

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

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

数据库课程设计报告

南京理工大学泰州科技学院计算机科学与技术系信管专业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分布式数据库技术发展...

数据库课程设计报告090247

北京广播电视大学数据库应用课程设计报告书题目出版社图书管理系统姓名杨春振学号20xx7110090247班级09春计算机分校通州电大指导教师姚行洲设计日期20xx年7月北京广播电视大学课程设计任务书题目出版社图...

学生成绩管理系统 数据库课程设计报告

学生成绩管理系统数据库课程设计报告目录1、开发背景...22、系统描述...23、数据分析...23.1、数据流图...23.2、数据字典...24、概念模型设计...24.1E-R图...25.逻辑模型设计及…

数据库课程设计报告

徐州工程学院信电学院计算机网络专业数据库课程设计教学管理系统的设计1概述11设计目的用户请求经应用程序的转化化为对数据库中的相应的表或视图的操作数据库再把处理的结果或都是错误信息返回结应用程序应用程序把结果返回...

数据库课程设计报告

数据库课程设计报告学号20xx1004357姓名李世荣班级19xx23指导老师胡霍真邮件管理系统摘要21世纪是网络飞速发展的时代电子邮件已经成为热门话题随着网络技术的不断发展网络应用已经渗透到人类社会的各个角落...

数据库课程设计报告

数据库课程设计报告名称图书管理系统时间学生姓名邓天顺学系计算机系专业指导教师樊红芳目录1设计目标12数据组织23关系图34详细设计45总结56参考文献51设计目标目前图书馆进行信息管理的主要方式是基于手工处理最...

Oracle数据库课程设计报告

存档资料成绩:华东交通大学理工学院课程设计报告书所属课程名称Oracle11g数据库基础教程题目图书管理系统分院电信分院专业班级电子商务1班学号***学生姓名***指导教师付念20XX年12月20日 …

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