图书馆-信息系统分析及设计实验报告

图书馆图书管理

信息系统设计报告

姓名:

班级:

学号:

指导老师:

报告日期:  


一、开发背景

本系统是为了方便用户对图书的管理开发的。要求系统界面友好,使用简单,提供对图书信息、读者信息和图书流通情况的编辑、查询、统计报表等全面的数据管理功能,同时使用户能方便的进行图书的出借、返还等操作,并提供预约、续借,馆际互借等功能。此外系统还具有一定的安全性和可维护性。

可行性分析:

(1)技术可行性

近几年来计算机技术发展异常迅猛,高速度大容量的电脑已成为许多学校里日常工作必不可少的设备,随着办公自动化的软件不断涌现,微机的普及为该系统的开发奠定了坚实的基础。

(2) 经济可行性

一方面,系统的开发不需要额外增加设备购置费、软件开发费、管理和维护费用。另一方面,系统的开发可以较好地解决图书馆因日常事务繁杂而造成的处理效率低,出错率偏高的局面,并可以及时了解各项日常事务的进展情况,为及时调整库存资料提供可靠的数据支持,从而明确工作目标,同时还可以减少人工劳动、提高工作效率、增加书本流通量。

(3)操作可行性

计算机以强大的信息处理能力作为人类脑力劳动的有利助手登上历史舞台后,已渗透到社会生活的各个领域,使现代社会组织、特别是企业,学校的信息处理能力适应现代化管理的要求,且系统逐步从单项事务信息处理系统迅速向综合服务(决策支持系统)的管理信息系统发展。本系统使用界面良好,易于操作。图书馆拥有一批较高素质的员工,只需了解相关知识,就可熟练操作本系统了。

通过以上分析,图书馆管理信息系统的开发在经济上、技术上、操作上都是可行的。

二、需求分析

系统协助图书馆管理员实现各种日常事务的管理。系统维护数据库,保存图书和读者的资料以及图书流通情况的资料,便于管理员管理图书和读者的有关数据,还可根据需要随时进行数据的查询和统计并按所需格式和方式输出。利用这些数据,系统可协助管理员进行读者的图书出借、返还、预约和续借等操作,读者身份认证和借书权限认证等都可由系统承担,大大减轻了管理员的工作量。此外,对于系统本身的维护,系统具备一定的安全机制和信息备份机制,对用户分级管理,设置用户权限,保证系统安全性;提供数据库文件的备份功能,按用户要求备份,防止意外数据丢失影响系统工作。

通过需求分析,系统应具备以下功能,具体描述如下:

(1)图书信息维护:主要完成图书馆新进图书的编号、登记、入馆等操作。

(2)读者信息维护:主要是完成读者信息的添加、修改和删除等操作,只有是系统中的合法读者才有资格进行图书的借阅活动。

(3)借书/还书处理:主要完成读者的借书和还书活动,记录读者借还书情况并及时反映图书的在库情况。

(4)读者借阅记录:让每位读者能及时了解自己的借书情况,包括曾经借阅记录以及未还书记录。

(5)图书书目检索:读者能够根据不同的信息(如书名、作者、关键词等)对图书馆的存书情况进行查找,以便快速的找到自己希望的图书。

(6)图书超期通知:为图书管理员提供一个统计信息,能够统计出到目前为止逾期未归还的图书及相应的读者信息。

三、业务流程图

四、数据流图与数据字典

根据系统功能描述,采用面向数据流的分析方法,绘制出系统的数据流图。

1、数据流图

(1)借阅系统的数据流图:

(2)归还系统的数据流图:

(3)图书档案管理数据流图:

(4)读者档案管理数据流图:

2、数据字典

数据流的描述:

数据流编号: D001

数据流名称: 借阅信息

      简述:读者所要借阅的图书信息单

数据流来源:读者

数据流去向:读者信息判断

数据流组成:读者号+索书号+书名等

数据流量:1000/天

高峰流量:3000/天

数据流编号: D002

数据流名称: 还书信息

      简述:读者归还所借图书的信息单

数据流来源:读者信息判断

数据流去向:库存表

数据流组成:读者号+读者名+图书信息等等

  数据流量:100/天

高峰流量:500/天

        ......

数据流编号: D003

数据流名称: 图书档案信息

      简述:管理员对图书档案库进行更新的信息单

数据流来源:管理员信息判断

数据流去向:图书档案库

数据流组成:管理员+图书档案信息等

  数据流量:1000/天

高峰流量:3000/天

        ......

数据流编号: D004

数据流名称: 读者档案信息

      简述:管理员对读者档案库进行更新的信息单

数据流来源:读者信息判断

数据流去向:读者档案库

数据流组成:管理员+读者信息等

  数据流量:50/天

高峰流量:300/天

五、系统功能设计

根据数据流图,绘制出系统功能的层次图

各功能模块的功能描述:

读者管理子系统:用于管理读者的信息包括合法读者和非法读者的信息。

图书管理子系统:用于管理图书档案及图书类型。

图书借还管理子系统:用于管理被借图书及归还图书和借阅者的信息。

    查询服务子系统:用于查询图书档案及借阅信息。

六、数据库设计

1、E-R图

根据系统数据流图和数据字典,得出系统的各局部概念模型(E-R)和总体概念模型(E-R)如下图所示。

图书信息实体属性E-R图:

读者信息实体属性E-R图:

管理员实体属性E-R图:

                        

全局E-R图:

各E-R图各实体的属性如下所示:

图书:(图书图书条形码, 图书名称, 作者, 出版社,译者,价格,图书类型, 页码,书架,入馆时间,  存储数量,  操作员)

读者:(读者编号, 名称, 性别, 读者类型, 生日,证件类型,证件号,电话,E-MAIL,注册日期,操作员,备注,借阅次数)

管理员:(管理员编号,  名称,  密码)

各E-R图中联系的属性如下所示:

借还:(借阅时间, 还书时间 )

管理:(添加,修改,删除)

2、关系模式的3NF设计

根据系统的总体概念设计模型、E-R图向关系模式的转化规则和数据库的范式理论,得到系统优化后的逻辑模型。

图书信息表(图书图书条形码, 图书名称, 作者, 出版社,译者,价格,图书类型, 页码,书架,入馆时间,  存储数量,  操作员)

读者信息表(读者编号, 名称, 性别, 读者类型, 生日,证件类型,证件号,电话,E-MAIL,注册日期,操作员,备注,借阅次数)

管理员信息表(管理员编号,  名称,  密码)

借阅信息表(借书编号,读者编号,图书条形码,借书时间,还书时间,借书操作,还书操作,是否归还)

七、系统实施

1、系统界面

遵循人-机界面的设计原则设计应用系统界面。本系统主要界面运行实时截图如下:

当输入正确的用户名,会进入系统:

 

输入图书的编号,查询相关信息:

主界面运行情况:

修改图书信息:

借书处理:

2、系统的主要源代码:

登陆代码:

private void button1_Click(object sender, System.EventArgs e)

       {

            if (userid.Text == "")

            {

                MessageBox.Show(this, "  用户名不能为空 ", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                string url = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\数据库\book_Data.MDF;Integrated Security=True;User Instance=True";

                string sql = "Select* from username where username=@name and password=@password";

                SqlConnection conn = new SqlConnection(url);

                SqlCommand cmd = new SqlCommand(sql, conn);

                SqlDataReader red = null;

                cmd.Parameters.Add("@name", SqlDbType.VarChar, 30);

                cmd.Parameters.Add("@password", SqlDbType.Char, 30);

                cmd.Parameters["@name"].Value = userid.Text;

                cmd.Parameters["@password"].Value = textboxpass.Text;

                try

                {

                    conn.Open();

                    red = cmd.ExecuteReader();

                    if (red.Read())

                    {

                        try

                        {

                            MessageBox.Show(this, "   欢迎进入本系统   ", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);

                            FormMain fmMain = new FormMain();

                            fmMain.ShowDialog();

                            this.userid.Text = "";

                            this.textboxpass.Text = "";

                            this.userid.Focus();

                            this.Close();

                        }

                        catch (Exception e2)

                        {

                            System.Console.WriteLine(e2);

                        }

                    }

                    else

                    {

                        MessageBox.Show(this, "   密码有误   ", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    }

                }

                catch (Exception e1)

                {

                    MessageBox.Show(e1.Message);

                }

            }

    }

查询代码:

private void button6_Click(object sender, System.EventArgs e)

       {

           int n=0;

           switch(tabControl1.SelectedTab.Text)

           {

              case "按编号查询":

                  n=dataGrid6.CurrentRowIndex;

                  if(n!=-1)

                     booknum=dataSet41.Tables["book"].Rows[n]["图书编号"].ToString().Trim();

                  break;

              case "按书名查询":

                  n=dataGrid2.CurrentRowIndex;

                  if(n!=-1)

                     booknum=dataSet41.Tables["book"].Rows[n]["图书编号"].ToString().Trim();

                  break;

              case "按类别查询":

                  n=dataGrid3.CurrentRowIndex;

                  if(n!=-1)

                     booknum=dataSet41.Tables["book"].Rows[n]["图书编号"].ToString().Trim();

                  break;

              case "按作者查询":

                  n=dataGrid4.CurrentRowIndex;

                  if(n!=-1)

                     booknum=dataSet41.Tables["book"].Rows[n]["图书编号"].ToString().Trim();

                  break;

               case "按出版社查询":

                  n=dataGrid5.CurrentRowIndex;

                  if(n!=-1)

                     booknum=dataSet41.Tables["book"].Rows[n]["图书编号"].ToString().Trim();

                  break;

           }

           this.DialogResult=DialogResult.OK;

           this.Close();

       }

       private void textBox2_TextChanged(object sender, System.EventArgs e)

       {

      

       }

       private void button2_Click(object sender, System.EventArgs e)

       {

          

           SqlCommand mycomm=sqlConnection1.CreateCommand();

           if(textBox2.Text=="")

           {

              mycomm.CommandText="select * from book";

           }

           else

           {

              string bookName="%"+textBox2.Text.Trim()+"%";

              mycomm.CommandText="select * from book where 书名like'"+bookName+"'";

           }

           sqlDataAdapter2.SelectCommand=mycomm;

           dataSet41.Clear();

           sqlConnection1.Open();

           int n=sqlDataAdapter2.Fill(dataSet41,"book");

           sqlConnection1.Close();

           if(n==0)

           {

              MessageBox.Show("无此书名!","查询信息");

              textBox2.Text="";

              textBox2.Focus();

           }

       }

       private void textBox1_TextChanged_1(object sender, System.EventArgs e)

       {

      

       }

       private void button1_Click(object sender, System.EventArgs e)

       {

           SqlCommand mycomm=sqlConnection1.CreateCommand();

           if(textBox1.Text=="")

           {

              mycomm.CommandText="select * from book";

           }

           else

           {

              string bookNo=textBox1.Text;

              mycomm.CommandText="select * from book where 书名=bookNo";

           }

           sqlDataAdapter2.SelectCommand=mycomm;

           dataSet41.Clear();

           sqlConnection1.Open();

           int n=sqlDataAdapter2.Fill(dataSet41,"book");

           sqlConnection1.Close();

           if(n==0)

           {

              MessageBox.Show("无此图书编号!","查询信息");

              textBox1.Text="";

              textBox1.Focus();

           }

       }

      

      

    }

}

……

……

3、开发过程中遇到的技术问题以及解决方法

    开发过程中遇到要建立数据库的问题,采用的解决方法是用SQL Server 软件来完成。在运行系统时,发现系统不能像预期那样很好的运行,采用的解决方法是重新审查C#代码并对其进行改进,最终实现了系统功能。

 

八、系统开发总结

本次设计使用了Microsoft Visual .net2003结合Microsoft SQL Sever2000来开发一个书籍借阅管理系统。以铜陵学院图书馆管理系统作为第一参考对象,结合其他由网络获取的资料及个人生活经验,分析了作为图书馆管理系统所需要实现的基本的管理功能,在此基础上确定了本次课程设计所开发的系统的预期功能。

     对于任何系统来讲,其灵活性的保证都是应该提到高度关注的层面上来的。任何企业、单位,其业务流程、规章制度都不可能长期保持不变。业务流程或者规章制度的变化,必将引起原先所用系统的失效。作为具有实用价值的系统,一定要考虑到保证灵活性的设计,使得用户业务流程、规章制度对原先系统所造成的影响最大限度地减小。在本书籍借阅管理系统中设置的参数配置模块,就是为了保证系统具有一定的灵活性。

   任何系统,都是为了人的需要而设计开发的。因此,时刻要记得“以人为本”的道理,并将“人本”原则贯彻到系统的实际开发实施中来。既然是为了方便用户,帮助其节约时间精力,集中注意力关心要处理的问题,而不是问题的形式等次要的方面,那么,就要保证系统界面设计的友好性、简洁性和易理解、易操作性。在本书籍借阅管理系统的界面设计中尽可能地完善了用户帮助的建设,使得用户在学习本系统上要花费的代价可以缩减到最低。

以上,只总结了开发本系统的一点点感悟,更多的是一时间难以理得脉络清晰分明的概念,待到往后的开发中再进行挖掘。

九、主要参考文献

[1] 王国荣著.ASP网页制作教本.台湾:旗标出版股份有限公司.2001.

[2] 周世雄著.Microsoft ASP网站热门应用技术.台湾:台湾微软出版社.2000.

[3] GregBuczek著.李永宣等译.实时即用ASP脚本.北京:人民邮电出版社.2002.

[4] 施威铭研究室.ASP实务3.0.旗标出版股份有限公司.2001, 1~30.

[5] David Elderbrock,David Karlins(美) 著.王永等译.中文版FrontPage 2002宝典.电子工业股份有限公司.2002.

[6] 萨暄,王珊著.数据库系统概论(第三版).北京:高等教育出版社.2002.

[7]章立民著.用实例学Crystal Report for visual studio.net.台湾:基峰资询股份有限公司.2002.

[8] [美]Stanek.W.R著,抖平书屋译.Windows2000脚本编程实用大全.北京:中国水利水电出版社.2001.

[9] [美]Anil.Desai著,天宏工作室译.SQL.SERVER.7.Backup&Recovery.北京:清华出版社.2001.

[10][英]Abraham Silberschatz ,Henry F.Korth ,S.Sudarshan著,DATABASE SYSTEM CONCEPTS.Third Edition.1999 by The McGraw-Hill Companies,Inc.

相关推荐