图书馆管理系统课程设计报告

时间:2024.4.20

经济管理学院本科课程设计论文

数据库开发与应用课程设计

学    号:                  

姓    名:                 

班    级:                  

专    业:                  

系    别:                   

指导教师:                  

2010 年 12 月24日  吉 林

目录

第一章 引言…………………………………………….2

第一节  课程设计目的............................................................................................................... 2

第二节  背景.......................................................................................................................................... 2

第三节  定义.......................................................................................................................................... 2

第四节  参考资料............................................................................................................................ 3

第二章 程序系统的组织结构................................................................................. 3

第一节  程序功能图...................................................................................................................... 3

第三章 详细设计说明...................................................................................................... 3

第一节  模块.......................................................................................................................................... 4

一、数据说明............................................................................................................................................ 4

二、窗体描述............................................................................................................................................ 6

1.部分代码与截图.............................................................................................................................. 6

第四章 课程设计总结...................................................................................................... 6

第一章   引言

第一节 课程设计目的

1.完成Delphi程序设计课程的教学之后,通过课程设计可以进一步巩固所学知识,加深理解

2.提高动手能力,调试程序的能力,解决问题的能力和实际开发应用的能力,掌握使用Delphi进行系统开发的一般步骤,方法和技巧。

3.本图书管理信息系统是利用计算机管理信息处理的迅速、准确、可靠且具有强大存储能力的突出特点,全面提高图书馆的管理水平和工作效率,并以及时、完整的业务经营资料,为图书馆的及时转换提供一定的支持。本图书管理系统涵盖了两个主要的子系统:信息管理和信息查询。其中信息管理包括四个小德子系统:图书管理、读者管理、借阅管理、退出;信息查询包括:图书查询、读者查询、借阅查询。并通过信息的收集、整理、存储、传递、维护、使用将它们有机地结合起来,提高了工作的准确率和效率。

4. 预期读者:图书管理员,学生,外界人士。

第二节 背景   

说明:

1.        软件名称:图书馆管理系统

内容:登陆界面、信息管理、信息查询、图书管理、读者管理、借阅管理、图书查询、读者查询、借阅查询、退出。

2.        项目的任务提出者:冯彦超

开发者:冯彦超

测试:本人测试

第三节 定义

关键词:Delphi 

Delphi是面向对象的开发工具,它是目前开发客户/服务器数据库应用程序的强有力的工具。Delphi目前有两个版本:标准版本和客户/服务器版本。标准版本包含一个Borland Database Engine的局部拷贝,它允许用户创建能访问Dbase,Paradox 和 Local Inter Base服务器的数据库应用,它还支持具有ODBC(Open Database Connecticity)接口的数据库。客户/服务器版本包括Borland SQL Link,它能直接访问Oracle,SyBase 和Microsoft SQL Server,Informix等多种数据库服务器。

第四节 参考资料

1.Delphi 程序设计教程 (第二版)

2.图书管理信息系统的设计流程参考      来源:网上下载

第二章  程序系统的组织结构

用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称,标识符和他们之间的层次结构关系 。

第一节 程序功能图

图2.1程序功能图

第三章      详细设计说明

一 、数据说明

表3.1 管理员信息

表3.2 用户信息

表3.3 读者信息

表3.4 图书信息

表3.5 借书证信息

表3.6 查询借阅基本信息

二 、窗体描述

1. 部分代码与截图:

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, DB, DBTables, StdCtrls;

type

  TForm1 = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Edit1: TEdit;

    Edit2: TEdit;

    Button1: TButton;

    Button2: TButton;

    DataSource1: TDataSource;

    Table1: TTable;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

uses main;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

  if (table1.fields[0].value=Edit1.Text)and(table1.fields[1].value=Edit2.Text)then

  mainform.Show

  else

  showmessage('错误');

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

form1.Close;

end;

图3.1系统登录

图3.2数据库开发与应用课程设计主界面

窗体描述:当在登陆界面输入用户名和密码后就到达此界面;

          用户名:1234

          密码:1234

图3.3 图书管理

图书管理按钮的代码:

procedure Tbookform.Button1Click(Sender: TObject);

begin

  //检查新入库图书的书号是否长度是否为10

  if Length(CodeEdit.Text )<>10 then

  begin

    messagedlg('书号不正确',mtError,[mbok],0);

    CodeEdit.SetFocus ;

    exit;

  end;

  //检查书号是否已经存在

  with dataModuleAdo.adoquery1 do

  begin

    sql.clear;

    sql.Add('select code from book where code=:code');

    parameters.ParamByName('code').Value :=codeedit.Text ;

    open;

    if recordcount<>0 then

    begin

      messagedlg('书号<'+codeedit.Text+'>已经存在',mtError,[mbok],0);

      codeedit.SetFocus ;

      exit;

    end;

    close;

  end;

 

  try

   with datamoduleado.ADOQuery1 do

   begin

     sql.Clear;

     sql.Add('insert into book(code,name,author,press,outdate,cost,memo0)'+

     'values(:code,:name,:author,:press,:outdate,:cost,:MMEMO)');

     parameters.ParamByName('code').Value :=codeedit.Text ;

     parameters.ParamByName('name').Value :=nameedit.Text ;

     parameters.ParamByName('author').Value :=authoredit.Text ;

     parameters.ParamByName('press').Value :=pressedit.Text ;

     try

       parameters.ParamByName('outdate').Value :=strtodate(outtimeedit.Text) ;

     except

       messagedlg('参数<出版时间>设置错误',mtError,[mbok],0);

       exit;

     end;

     try

       parameters.ParamByName('cost').Value :=strtofloat(costedit.Text) ;

     except

       messagedlg('参数<价格>设置错误',mtError,[mbok],0);

       exit;

     end;

     try

       parameters.ParamByName('MMEMO').Value :=memo1.Text  ;

     except

       messagedlg('memo erro',mterror,[mbok],0);

       exit;

     end;

     execSQL;

   end;

   Tabsheet1show(sender);

  except

    messagedlg('入库错误',mtError,[mbok],0);

  end;

end;

图3.4读者管理

读者管理按钮代码

procedure TMainform.Button1Click(Sender: TObject);

begin

  bookform.show;

end;

procedure TMainform.Button2Click(Sender: TObject);

begin

  readerform.show;

end;

procedure TMainform.Button3Click(Sender: TObject);

begin

  lendform.show;

end;

procedure TMainform.Button4Click(Sender: TObject);

begin

  close;

end;

procedure TMainform.Button5Click(Sender: TObject);

begin

  queryform.show;

end;

procedure TMainform.Button6Click(Sender: TObject);

begin

  button5click(sender);

end;

procedure TMainform.Button7Click(Sender: TObject);

begin

  button5click(sender);

end;

end.

图3.5 借阅管理

借阅管理按钮代码:

procedure Tlendform.FormShow(Sender: TObject);

var

  i:integer;

begin

  with datamoduleado.ADOQuery1 do

  begin

    sql.Clear ;

    sql.Add('select code from book');

    open;

    first;

    for i:=0 to recordcount-1 do

    begin

      combobox1.Items.Add(fieldbyname('code').AsString );

      next;

    end;

    close;

  end;

end;

procedure Tlendform.ComboBox1Change(Sender: TObject);

var

  fdate:tdate;

  owntime:Tdate;

begin

  readeridedit.Text :='';

  totaledit.Text :='';

  owntimeedit.Text :='';

  fineEdit.Text :='';

  if length(combobox1.Text )=10 then

  begin

    try

       with datamoduleado.ADOTable1 do

       begin

         tablename:='book';

         dbname.DataField :='name';

         dbauthor.DataField :='author';

         dbpress.DataField :='press';

         dboutdate.DataField :='outdate';

         dbcost.DataField :='cost';

         dbmemo.DataField :='memo0';

         active:=true;

         if not locate('code',combobox1.Text ,[]) then

         begin

           messagedlg('没有数据或数据库操作失败',mterror,[mbok],0);

           exit;

         end;

       end;

    except

      messagedlg('数据操作出错',mterror,[mbok],0);

    end;

    try

      with datamoduleado.ADOQuery1 do

      begin

        sql.Clear ;

        sql.Add('select * from lend where code=:code');

        parameters.ParamByName('code').Value :=combobox1.Text;

        open;

        if recordcount<>0 then

        begin

          fdate:=fieldbyname('outdate').AsDateTime ;

          owntime:=date-fdate;

          owntimeedit.Text :=floattostr(owntime);

          readerIDEdit.Text :=fieldbyname('readerid').AsString;

          statictext1.Visible :=true;

          owntimeedit.Visible :=true;

          if strtoint(owntimeedit.Text )>60 then

          begin

            statictext12.Visible :=true;

            fineedit.Visible :=true;

            fineedit.Text :=floattostr((strtoint(owntimeedit.Text )-60)*0.1);

          end;

          button1.Enabled :=false;

          button2.Enabled :=true;

          button2.SetFocus ;

          close;

        end

        else  begin

                readeridedit.SetFocus ;

                button1.Enabled :=true;

                button2.Enabled :=false;

              end;

        end;

      except

        readeridedit.SetFocus ;

      end;

    end;

end;

procedure Tlendform.ComboBox1KeyDown(Sender: TObject; var Key: Word;

  Shift: TShiftState);

begin

  if key=13 then

    combobox1change(sender);

end;

procedure Tlendform.ReaderIDEditChange(Sender: TObject);

begin

  if length(readerIDEdit.Text )=10 then

  begin

    with datamoduleADO.ADOQuery1 do

    begin

      sql.Clear ;

      sql.Add('select readerid from reader where readerid=:readerid');

      parameters.ParamByName('readerid').Value :=readeridedit.Text ;

      open;

      if recordcount=0 then

      begin

        button1.Enabled :=false;

        messagedlg('借书证号<'+readeridedit.Text +'>不存在',mterror,[mbok],0);

        close;

        exit;

      end;

      close;

    end;

    try

      with datamoduleado.ADOQuery1 do

      begin

        sql.Clear ;

        sql.Add('select count(readerid) from lend where readerid=:readerid');

        parameters.ParamByName('readerid').Value :=readeridedit.Text ;

        open;

        totaledit.Text :=inttostr(fields[0].Value );

        close;

      end;

    except

      totaledit.Text :='0';

    end;

    button2.Enabled :=false;

    button1.Enabled :=true;

    button1.SetFocus ;

  end;

end;

procedure Tlendform.Button1Click(Sender: TObject);

var

  tempownbook:townbook;

  canlend:boolean;

  mmcode:string;

begin

  if readeridedit.Text <>'' then

  begin

  try

    with datamoduleado.adoquery1 do

    begin

      sql.clear;

      sql.Add('select code from lend where readerid=:readerid');

      parameters.ParamByName('readerid').Value :=readeridedit.Text ;

      open;

      canlend:=true;

      ownbookform.ListView1.Items.Clear ;

      mmcode:=fieldbyname('code').AsString;

      while not eof do

      begin

        with tempadoquery1 do

        begin

        sql.Clear ;

        sql.Add('select * from book where code =:code') ;

        parameters.ParamByName('code').Value :=mmcode;

        open;

        tempownbook.code:=fieldbyname('code').asstring;

        tempownbook.name:=fieldbyname('name').asstring;

        tempownbook.price:=fieldbyname('cost').asstring;

        try

         with tempadoquery2 do

         begin

           sql.Clear ;

           sql.Add('select * from lend where code=:code and readerid=:readerid');

           parameters.ParamByName('code').Value :=datamoduleado.ADOQuery1.fieldbyname('code').AsString ;

           parameters.ParamByName('readerid').Value := readeridedit.Text ;

           open;

           tempownbook.owndays:=round(date-fieldbyname('outdate').AsDateTime );

           close;

         end;

        except

           tempownbook.owndays:=0;

        end;

        close;

      end;

      if tempownbook.owndays>60 then

      begin

        with ownbookform.listview1.Items.add do

        begin

         caption:=tempownbook.code;

         subitems.add(tempownbook.name);

         subitems.add(tempownbook.price);

         subitems.Add(inttostr(tempownbook.owndays));

         subitems.Add(floattostr((tempownbook.owndays-60)*0.1));

        end;

        canlend:=false;

      end;

    next;

  end;

    close;

  end;

except

 canlend:=true;

end;

if canlend=false then

begin

  ownbookform.Caption :=readeridedit.text+'有以下书籍没按时归还';

  ownbookform.showmodal;

  exit;

end;

try

  with DatamoduleADO.adoquery1 do

  begin

    sql.clear;

    sql.add('insert into lend(code,readerid,outdate)'+' values(:code,:readerid,:outdate)');

    parameters.parambyname('code').value:=combobox1.text;

    parameters.parambyname('readerid').value:=readeridedit.text;

    parameters.parambyname('outdate').value:=datetostr(now());

    execsql;

  end;

except

  messagedlg('借书不成功',mterror,[mbok],0);

end;

end

else begin

        showmessage('请输入借书证号!');

        readeridedit.setfocus;

     end;

end;

procedure Tlendform.Button2Click(Sender: TObject);

begin

  try

    with datamoduleado.adoquery1 do

    begin

      sql.clear;

      sql.add('delete from lend where code=:code');

      parameters.parambyname('code').value:=combobox1.text;

      execsql;

      close;

    end;

  except

    messagedlg('还书不成功',mterror,[mbok],0);

  end;

  readeridedit.text:='';

  totaledit.text:='';

  owntimeedit.text:='';

  fineedit.text:='';

end;

procedure Tlendform.Button3Click(Sender: TObject);

begin

  close;

end;

end.

图3.6 信息查询

信息查询按钮代码:

procedure TMainform.Button5Click(Sender: TObject);

begin

  queryform.show;

end;

procedure TMainform.Button6Click(Sender: TObject);

begin

  button5click(sender);

end;

procedure TMainform.Button7Click(Sender: TObject);

begin

  button5click(sender);

end;

procedure TMainform.PageControl1Change(Sender: TObject);

begin

end;

end.

第四章 课程设计总结

1. 系统的改进

本系统开发时间的仓促,本人对软件开发工具认识的水平有限,本软件仍存在一些不如人意的地方,还有待进一步改进,归纳起来主要有以下几点:

(1)    容错功能一般,在读者信息等需要添加的模块中,人工参与过多,界面缺少美工。

(2)    菜单设计不够全面,对决策管理的支持不够深入,必须在适当的时候进行改进。

(3)    因时间紧迫,能力有限,只列出4本书。

2 . 体会

   这次的课程设计,结合了本学期所学到的很多专业知识,又通过在具体的实践过程中,以计算机理论为基础,边学习Delphi 和Access,边做程序设计边查找资料,在实践过程中克服了一个又一个困难,终于完成了此次课程设计。

通过此次的软件开发过程,使我们对所学专业有了更深的了解,并且有了一些切身的体会。光有计算机理论的知识是不行的,还得有更丰富的实践经验,就比如这次课程设计就提供了一次非常好的实践操作的机会,使我对软件开发有了一定的了解。

我们用的是Delphi 和access开发这个系统的,以前只是对这些软件略有了解,在老师的帮助下做过小程序。但了解得不完全,不深入。这个图书管理系统还存在很多问题,还有很多功能需要扩充。限于本组的编程技术水平,很多更深层的技术未用上。但以后我们会通过不断的努力,不断地专研和学习,掌握更多的软件设计的技术和方法,设计出更好更完善的软件程序来。

更多相关推荐:
C语言图书馆管理系统课程设计报告

高级语言程序设计课程设计报告设计题目高校图书馆信息管理系统姓专班指导老师20xx年01月01日摘要绪论问题定义或系统分析总体设计与详细设计调适与测试总结与心得附录附录一源代码附录二参考文献高校图书馆管理系统摘要...

C++图书馆管理系统课程设计报告

面向对象课程设计图书馆管理系统院系别信息工程系班级学号姓名指导教师时间课程设计任务书题目图书管理系统C语言课程设计系部信息工程系专业信息管理与信息系统班级学生姓名学号10月10日至10月21日共2周指导教师签字...

图书管理系统课程设计报告

管理信息系统实习报告专业班级学生姓名指导教师时间成绩评语王桃群20xx32320xx313一课程设计题目图书管理系统二系统需求1系统的准备操作系统Windowsxp数据库系统SQLServer20xx或SQLS...

课程设计实验报告--图书管理系统

课程设计实验报告课程名称数据库课程设计系院数学与计算机学院班级20xx级计算机科学与技术指导教师欧方平摘要随着人类社会的发展人类对知识的需求也不断地增长在这种形势下书籍就渐渐地成为人们获取并增长知识的主要途径而...

c++ 课程设计报告及源代码 图书馆管理系统

重庆科技学院C语言课程设计课程设计报告目录1设计内容任务及基本要求211设计内容212设计任务213设计基本要求22总体设计思路421系统功能422各个模块之间的主要关系423总体程序框图524系统的总体流程图...

c++_课程设计报告及源代码_图书馆管理系统

重庆科技学院C语言课程设计课程设计报告目录1设计内容任务及基本要求211设计内容212设计任务213设计基本要求22总体设计思路421系统功能422各个模块之间的主要关系423总体程序框图524系统的总体流程图...

图书借阅管理系统课程设计报告

管理信息系统课程设计报告题目图书借阅管理系统专业信息管理与信息系统时间20xx61020xx620图书借阅管理系统课程设计2图书借阅管理系统课程设计报告目录1摘要311编写目的312项目背景413运行环境414...

c# 图书管理系统课程设计论文

图书管理系统摘要图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。图书馆若采取手工方式对图书资料和图书借阅情…

图书管理系统课设报告

图书管理系统课设报告1设计目的通过对图书管理信息系统的系统分析系统设计编码和调试等工作的实践了解管理信息系统的一般设计方法和实现思路深入了解数据库设计的基本理论及方法2设计任务要求完成一个具有一定实用价值的图书...

C语言课程设计报告—图书信息管理系统

C语言课程设计报告图书信息管理系统设计55071-13指导老师:C语言程序设计编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方…

小型图书管理系统C语言课程设计报告 - 副本

德州学院计算机系20xx级数据结构课程设计德州学院计算机系课程设计报告实习名称数据结构设计题目小型图书管理系统实习时间20xx1320xx19专业班级20xx级网络工程指导老师徐志敏教学单位盖章小组分工情况二0...

图书馆管理系统课程设计报告

数据库原理及应用课程设计报告题目图书馆管理系统所在学院信息工程学院班级计科1001学号101304116姓名陆佳林指导教师20xx年1月2日目录1概述211开发背景212开发工具的选用及介绍2121Eclips...

图书馆管理系统课程设计报告(26篇)