基于C下的图书管理系统.doc_第1页
基于C下的图书管理系统.doc_第2页
基于C下的图书管理系统.doc_第3页
基于C下的图书管理系统.doc_第4页
基于C下的图书管理系统.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

注意论文的格式!摘 要:随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。图书管理系统作为管理信息系统的一种,成为图书馆进行现代化图书管理和进行信息服务的基础。针对图书管理系统的特点,对图书管理系统进行了设计,并在VC 环境下,结合 SQL server2000 实现该系统。同时通过保障数据一致性、完整性和数据安全性,使得该系统具有功能完备、交互性好、界面友好等特点。关键字:图书管理;数据一致性;SQL2005ABSTRACT:With more and more widespread and profound application of information technology in management, the implementation of management information system has gradually matured technically. The books management system, being as a kind of management information system, becomes the foundation for the library to carry on the modernized books management and the information service. In the light of the features of books management system, this paper designs the books management system, and under the VC environment, implementing this system connecting with SQL server2000, and through guaranteeing the data consistency, integrity and security, enables this system to have complete function, excellent interaction, and good interface, etc.KEY WORDS: books management; data consistency; SQL2005(中文摘要部分还行,英文摘要要在把把关)目 录第一章 绪论41.1 引言41.2 图书管理系统的发展概要51.3 图书管理系统当下的生存状况61.4 图书管理系统前景展望7第二章 C+技术的概述82.1 C+技术发展历程82.2 C+与java的比较112.3 C+技术的前景15第三章 总体设计183.1 系统需求分析183.1.1 设计背景183.1.2 业务需求183.1.3 系统目标193.2 系统功能结构193.2.1 总体功能设计193.2.2 数据库概念设计203.2.3 数据库逻辑结构设计22第四章 详细设计234.1 业务设计234.1.1 业务流程图234.1.2 主窗体设计244.2 系统登录模块设计244.2.1 系统登录模块概述244.2.2 系统登录技术分析与实现过程254.3 操作员管理模块实现254.3.1 操作员管理模块概述254.3.2 操作员管理模块技术分析与实现过程264.4 图书信息管理模块设计274.4.1 图书信息管理模块概述274.4.2 图书信息管理技术分析与实现过程284.5 图书销售模块设计294.5.1 图书销售模块概述294.5.2 图书销售技术分析与实现294.6 图书销售查询模块设计314.6.1 图书销售查询模块概述314.6.2 图书销售查询技术分析与实现31第五章 总结36参考文献40第1章 绪论1.1 引言(格式不统一,有明显粘贴痕迹) 随着现代图书流通市场竞争愈演愈烈,如何以一种便捷的管理方式加快图书流通信息的反馈速度,降低图书库存占用,缩短资金周转时间,提高工作效率,已经成为能否增强图书企业竞争力的关键问题。信息技术的飞速发展给图书企业的管理带来了全新的变革,采用图书管理系统对图书企业经营运作进行全程管理,不仅是企业摆脱了以往人工管理产生的一系列问题,而且让图书企业提高了管理效率,减少了管理成本,增加了经济效益。通过管理系统对图书企业的发展进行规划,可以收集大量的关键可靠的数据。企业决策层分析这些数据,作出合理决策,及时调整,使之能够更好地遵循市场的销售规律,适应市场的变化,从而让企业能够在激烈的行业竞争中占据一席之地。图书馆是用于收藏图书,供人们借阅书籍、查找资料、学习的地方,对图书馆的管理和使用要面对大量的书籍信息、读者信息、馆藏信息以及其他相关的信息。人工管理图书的图书馆很不利于查找资料,容易造成馆藏图书资源的使用率低、信息资源不能充分利用而造成浪费。管理员整理馆内的图书十分困难,工作量大。读者也不能轻松地找到所需的书籍;因此以信息技术来促进学校图书馆水平的提高,是学校刻不容缓发展的重要组成部分。而图书管理信息系统是将书库内所有图书的作者、出版社、总册数、定价等详细信息,以及读者借阅的详细信息建立数据库,通过计算机来管理图书资料的增删改以及动态流通的情况,和传统的图书管理相比较,图书馆运用管理信息系统,不但有利于图书管理员高效率地整理好图书室,也能使读者更迅速找到所需书目。 由于时间仓促和本人的水平有限,不当之处在所难免,还请各位老师批评指正。(这句不能写在论文里,可以放在最后一张的总结里)1.2 图书管理系统的发展概要随着当今社会各行业的迅速发展,人们对知识的需求也变得尤为重要,活到老,学到老的观念也越让人们所认可。知识能够帮助人们获得财富,能使人变得高尚,通过各方面知识的学习能够让一个民族不断强大起来,更加的繁荣昌盛。获取知识的途径有很多,在人们的生活中,大家习惯性的在图书馆查阅资料,获取各类信息。因为图书馆是搜集、整理、收藏图书供人借阅、参考的图书聚集地,早在公元前3000年就有了最早的图书馆。 由于图书馆内的藏书册数十分的大量,所以在普通的图书馆里,管理人员对书籍的操作很繁琐,而且很容易出错。我在对以往的图书馆管理的调查中发现,大多数的高校学生过去在图书馆借阅图书登记信息时,多以文本、填写表格的形式,借书证没有能够实现电子智能化,每次借阅图书时,需要在管理人员那里登记日期、借书数、归还日期等等信息内容,这样的人工操作很容易出错,也很难改正这些不必要的错误。对于管理员来说,每次当有新书入库时,他们需要把每本的作者、编号、出版日期、出版社、定价等等一个个的编写在图书馆的书库里,工作量庞大繁琐,十分的不方便。读者想要查询一些书籍时,通过一些人工的方式进行查询,费时费力。而且图书馆内的图书特别多,以这样的运作方式日积月累下去,会有很多冗余的图书,会使很多图书失去了应有的价值。这些困扰在日新月异的社会环境中得到不断地改进提升,利用大量的计算机软件、操作来改善这种局面。目前的信息管理系统发展的十分壮大,在各个领域也都有所应用。把信息管理运用到图书馆中是在好不过的了。以系统管理的方式来对图书馆内图书的管理,使其更加的系统化、简洁化、规范化和程序化。建立信息管理系统的图书馆不但可以大大提高图书馆内图书的流通率,而且还推动了社会文化生活的进步。1.3 图书管理系统当下的生存状况 (1)我国目前图书馆管理系统自动化总体上是不平衡的,主要体现在两方面:一是高校图书馆与公共图书馆、其它类型图书馆管理系统发展的不平衡,一般来说,高校图书馆在自动化程度、服务的质量以及图书馆本身的先进设备等方面都优于其它类型图书馆,高校图书馆起到了“领头羊”的作用。另一方面,在同一系统内,图书馆自动化建设也是不平衡的,高校和科研系统图书馆的管理系统自动化建设主要集中在一些重点大学的重点学科单位,而在一些相对落后的城市和大中专院校的图书管理系统自动化方面尚处于初级阶段 (2)图书馆管理系统在自动化方面还处于初级阶段,虽然自进入9O年代中期以来,网络的覆盖面在逐渐的延伸,很多网络中心服务的质量和水平在逐步的提升,但总体距国际水平尚有很大的距离,其自动化水平还处于初级阶段。 (3)图书系统在自动化管理方面整体水平不高,很多图书馆的自动化建设还处于初级阶段,把图书馆内部业务作为处理的核心,仍然采用传统的图书馆业务流程来进行,自动化管理的水平整体不高,服务水平和质量普遍较低,尝试采用虚拟咨询台或呼叫中心,给客户提供咨询服务的图书馆寥寥无几,整体水平有待提高。1.4 图书管理系统前景展望1、图书馆的管理理念是管理系统的灵魂,是管理工作的方向标管理理念作为管理系统的灵魂,这句话不仅适用在企业,同样也适用于图书馆管理中,一个管理理念的管理系统只能实现业务系统流程的自动化和机械化,很难凸显管理的思路,导致管理系统缺乏活力和创新性。但是当前大部分图书馆管理系统仍然以图书期刊管理为中心而建构,难以体现管理者的管理理念。未来的图书管理系统功能设计都应该围绕用户而进行,以客户为上帝,树立以用户为中心的设计理念。图书馆关注和管理的重点应该是资源、服务、管理这三大要素,而这三要素之间又不是相互孤立的,而是紧密联系,相辅相成的。要坚持资源是基础,服务是目的,管理是手段的信念,真正做到全心全意为读者服务,切实抓好图书管理理念。2、客观、真实的数据是推动和实现高效管理的必要手段为了图书事业更好的为读者服务,为了获得图书事业自身更好的发展,图书管理者都会思考一下几个问题,即图书馆整体资源水平是否雄厚,图书馆的服务水平哪些有待提高,等。通常情况下,图书管理者想要了解这些问题,会通过举办读者交流会、开展调查问卷等方式来获取答案,诚然,这些方式具有一定的效果,使图书馆工作人员了解读者的一些看法和态度,有利于工作的改进和提升,但是存在一些后续繁琐事情有待处理,例如意见收集、数据的整理和分析等问题,而且这种调查得出的结论往往由于参与读者人数有限,而导致客观性不强,可信性不高。第2章 C+技术的概述(内容还行,有些虚了,实际技术介绍太少,格式惨不忍睹)2.1 C+技术发展历程 早起的计算机程序语言就是就算计控制指令,每条指令就是一组二进制数,不同的计算都有不同的计算机指令集。使用二进制指令集开发程序时间很头痛的事,需要记住大量的二进制数,为了便于记忆人们将二进制数用字母组合代替,以字符串关键字代替二进制机器码的编程语言成为汇编语言,汇编语言被称为是低级语言,虽然汇编语言比机器码容易记忆,但仍然具有可续性差的缺点,大量的跳转指令和地址值很难让程序员在短时间内理解程序的意思,于是编程语言进入了高级语言时代。 世界上第一种计算机高级语言诞生于1954年,它是用于科学计算的FORTRAN语言。高级语言的出现为广大计算机应用者使用计算机提供了很大的方便。随着计算机的推广应用,先后出现了多种计算机高级语言,如BASIL,ALGOL,PASCAL,COBOL,ADA,和等。其中使用最广泛,影响最大的当推BASIL语言和语言。BASIL预言是年在FORTRAN语言的基础上简化而成的,它是为初学者设计的小型高级语言。它的语法相对简单,采取交互方式,功能也比较丰富,容易学习和掌握,因此受到广大初学者的欢迎。尤其在世纪年代微型计算机出现后,BASIC语言成为与微型计算机天然匹配的计算机语言,为计算机在大范围内的推广应用做出了重要的贡献。BASIC语言被称为“大众语言”。语言是在其他语言基础上发展起来的,首先是RichardMartin开发一种高级语言BCPL。随后Ken Thompson使用BCPL语言对其进行了简化,形成一门新语言语言,但语言没有类型的概念,Dennis Ritchie对语言进行研究和改进,在语言基础上添加了类型和结构,并将这改进后的语言命名为语言,寓意很简单。因为字母是字母的下一个字母,预示着语言的发展。语言是年由美国贝尔实验室的itchie研制成功的。他不是为初学者设计的,而是为计算机专业人员设计的。最初它是作为写UNIX操作系统的一种工具,在贝尔实验室内部使用。后来C语言不断改进,人们发现它功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的特点,又具有低级语言的许多特点,特别适合于些系统软件,因此引起了人们的广泛重视,在短短的十几年中,C语言从实验室走向社会,从美国走向世界,到20世纪80年代,它已风靡全世界,被安装在几乎所有的巨型机,大型机,中型机以及微型机上。大多数系统软件和许多应用软件都是用C语言编写的。无论是在外国还是在中国,C语言编程都成为了计算机开发人员的一项基本功,C语言的设计者当初做梦也没有想到C语言日后会如此的辉煌,会如此深刻地影响了整一代计算机工作者。C语言是一门优秀的编程语言,然后,它也存在一些缺陷。例如,类型检查机制相对较弱,缺少支持代码重要的语言结构等,用C语言开发大的程序比较困难,从而限制了C语言的发展。在这种形式下,C+应用而生。C+是由AT&T BELL实验室的Bjarnc stronstrup 博士及其同事于20世纪80年代初在C语言的基础上开发成功的。C+保留了C语言原有的所有优势,增加了面向对象的机制。由于C+对C的改进主要体现在增加了适用于面向对象程序设计的“类(class)”,因此最初它被Bjarne Stroustrup 称为“带类的C”。后来为了强调它是C的增强版,用了C语言中的自加运算符“+”,改称为C+。 AT&T发布的第一个C+编译系统实际上是一预编译器,它把C+代码转换成C代码,然后用C编译系统编译它,生成目标代码。第一个真正的C+编译系统是1988年诞生的。C+2.0版本于1989年出现。它作用于重大的改进,包括了类的多继承。1991年的C+版本增加了模版,4.0版本增加了异常处理,命名空间。运行时类型识别(REEI)等功能。ANSI C+标准草案是以4.0版本基础制定的,1997年ANSI C + 标准正是通过并发布。但是目前所使用的C+编译系统中,有一些是早期推出的,并未全部实现 ANSI C+ 标准所建议的功能。C+是由C发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C+。从C+的名字可以看出它是C的超集。C+既可以用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型程序设计语言。C+对C 的“增强”,表现在两方面:(1)对原来面向过程的机制基础上,对C语言的功能做出了不少扩充。(2)增加了面向对象的机制。C+语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C+语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大的范围;第二阶段从1995到2000年,这一阶段由于标准模版库(STL)和后天的BOOST等程序库的出现,泛型程序设计在C+受到了一定的冲击;第三阶段从2000年至今,由于以LokiMPL等程序库为代表的产生式编程和模版元变成的出现,C+出现了发展历史上的又一高峰。这些新技术的出现和原有技术的融合,使C+已经成为了当今程序设计语言中最复杂的一员。2.2 C+与java的比较 C+是在C的基础上发展出来的语言,保留并兼容了C的全部语法,C+和C一样,每一个单一的程序源文件经过编译之后生成二进制编码的文件,扩展名为obj,通常对应于不同的操作系统平台,每一个单一的程序文件(一个文本文件)经过编译产生一个obj,每个单一的程序文件编译的时候是独立的。每一个obj文件会产生出两张表,一张为导入符号表,一张为导出符号表。导入符号表意思是说本单元用到了这些符号,是别的单元中的。导出符号表意思是说本单元提供了这些符号,用来给别的单元使用的。多个obj文件和相应的库文件(其实是obj文件的集合)进行链接,根据导入导出符号表重新组织函数,变量,数据等地址等,成为一个本地操作系统可以直接运行的二进制可执行文件。这种可执行文件是直接被操作系统接受,直接调用操作系统功能的文件。一旦运行由操作系统启动一个进程和若干线程来进行运作。运行的时候从main函数或者winmain函数地址进入。C+是一种很复杂的承载了多种范典的语言,用C+你可以写出传统的面向过程的程序,也可以写出基于对象(OB)的程序,就类似于我们数据结构中所谓的ADT,还可以写出面向对象(OO)的程序。它支持多继承,符号重载,模版等复杂而博大精深的功能,使得C+成为了无可替代的应用程序编写神兵利器,很多知名游戏,比如diablo,starcraft,魔兽等都是主要用C+撰写的。这些程序运作在特定的操作系统平台之上,不同的操作系统需要不同的程序。 Java是一种纯粹的面向对象语言,只支持单继承,java5支持模版,不支持符号重载。java的每一个编译单元是一个扩展名为.java的文本文件。Java是非常易用和严谨设计方便程序员的语言。它舍弃了传统C,C+的头文件设计,以一个.java组织源代码,在代码中可以加入特殊的注释,这些注释经过一个名叫javadoc的解析器解析之后会生成很漂亮的html的api程序文档,还有一些特殊的注释,经过一些解析器之后可以生成xml文件,还有一些经过解析之后可以使得我们做到编写很少的代码获得很高的编程效率的神奇效果。Java是统一型别系统,是自管理系统,java中的数据类型都是严格定义好的,不存在平台相关性。java中的对象的销毁不用程序员负责,有一个称之为垃圾收集器(gc)的进程负责回收程序中不用的对象内存。java所有的.java文件经过编译会生成一种特殊的称之为java字节码的文件,这种文件只能够被java虚拟机读取运行。正是因为java虚拟机的存在,使得java语言获得了跨平台的强。 Java和c+的相似之处多于不同之处,但两种语言问几处主要的不同使得Java更容易学习,并且编程环境更为简单。我在这里不能完全列出不同之处,仅列出比较显著的区别:1指针JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了cc+语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。2 多重继承c+支持多重继承,这是c+的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c+多重继承的功能,又避免了c+中的多重继承实现方式带来的诸多不便。3 数据类型及类Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c+允许将函数和变量定义为全局的。此外,Java中取消了cc+中的结构和联合,消除了不必要的麻烦。4 自动内存管理Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c+的new操作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法:Read rnew Read();r.work();语句Read rnew Read();在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收操作,不需要程序员进行删除。而c十十中必须由程序贝释放内存资源,增加了程序设计者的负扔。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。5 操作符重载Java不支持操作符重载。操作符重载被认为是c十十的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。6 预处理功能Java不支持预处理功能。cc十十在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加丁编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c十十预处理器的功能类似。7. Java不支持缺省函数参数,而c十十支持在c中,代码组织在函数中,函数可以访问程序的全局变量。c十十增加了类,提供了类算法,该算法是与类相连的函数,c十十类方法与Java类方法十分相似,然而,由于c十十仍然支持c,所以不能阻止c十十开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。Java没有函数,作为一个比c十十更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。8 字符串c和c十十不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(strinR和stringBuffer)来实现的,这些类对象是Java语言的核心,用类对象实现字符串有以下几个优点:(1)在整个系统中建立字符串和访问字符串元素的方法是一致的;(2)J3阳字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分;(3)Java字符串执行运行时检空,可帮助排除一些运行时发生的错误;(4)可对字符串用“十”进行连接操作。9“goto语句“可怕”的goto语句是c和c+的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。l0类型转换在c和c十十中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c十十中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c十十中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。 2.3 C+技术的前景 虽然C+从脱胎于C开始,一路艰难坎坷的走过来,但是无论如何C+已经取得了工业基础的地位。业界的大量用C+写成的产品代码以及大量的C+职业工程师则是最直接的证明。同时,我们可以看到各个高校的计算机专业都开设有C+这门课程,网络上对于C+的学习讨论也从来都没有停过。但是,在Java和.NET两大企业开发平台的围攻下,给人的感觉是C+越来越“不行”了。C+在面向企业的软件开发中,在开发便捷性等方面的确要比Java和C#差很多,其中一个问题是C+语言本身比较复杂,学习曲线比较陡峭,另外一个问题是C+标准化的时间太长,丧失了很多的壮大机会,耗费了很多精力在厂商的之间的斗争上,而C+的标准库离一个完善的程序开发框架还缺少太多太多的内容,各个第三方的类库和框架又在一致性和完整性上没法和随平台提供的框架相提并论。难道C+真的要退出历史舞台了?从C+目前的活跃程度,以及应用现状来说是完全能够肯定C+仍然是软件工业的基础,也不会退出历史舞台的。另外从Boost,Loki这些库中我们也能够看到C+的发展非常活跃,对于新技术新思维非常激进,C+仍然广泛受到关注。从ACE在高性能通信领域的应用,以及MTL这样的库在数值计算领域的出色表现,我们可以看到C+在高性能应用场合下的不可替代的作用,而嵌入式系统这样的内存受限开发平台,比如Symbian OS上,C+已经发挥着并且将发挥更大的作用。可以预见的是以后的软件无论上层的应用怎么变,它的底层核心都会是由C/C+这样的系统级软件编写的,比如Java虚拟机,.NET Framwork。因为只有这样的系统级软件才能完全彻底的发挥机器的功能。需要看到的是两个趋势,一个趋势是C+变得更加复杂,更加学院派,通过模板等有潜力的语法因素构造越来越精巧的库成为了现代C+的热点,虽然在利用库实现新的编程范式,乃至设计模式等方面很有开创意义,也确实产生了一些能够便捷开发的工具,但是更多的是把C+变得更加强大,更加复杂,也更加难懂,似乎也更加学院派,不得不说它正在向边缘化道路发展。另一个趋势是C+在主流的企业应用开发中已经逐渐退出了,ERP这样的企业软件开发中基本上不会考虑C+,除非需要考虑性能或者和遗留代码的集成这些因素。C+退守到系统级别语言,成为软件工业的基础是大势所趋。然而反思一下,真的是退守么?自从STL出现,无数的人风起云涌的开始支持C+,他们狂呼“我看到深夜消失了,目标软件工程的出现。我看到了可维护的代码。”是的,STL在可维护性下做得如此出色。但是又怎样呢?STL为C+铺平了现代软件工程的道路,而在上层应用程序软件开发领域这块场地早不单独属于C+,很多程序设计语言都做得很出色,疯狂的支持者会毫不犹豫地说我们应当支持C+,因为它是世界上最棒的语言。而坦率地说,你的腰杆真的那么硬么?也许只是在逃避一些事实。C+是优秀的,这不可否认,STL的出现让C+一度走上了最辉煌的时刻,然而现在看来我的一位恩师曾言:真正能够将STL应用得淋漓尽致的人很保守地说国内也不超过200人,或许不加入STL能够使C+向着它应当发展的方向发展的更好,而现在看来,C+也应当回首到真正属于他的那一片圣地上第3章 总体设计3.1 系统需求分析3.1.1 设计背景 数据库技术和Internet的飞速发展,使它们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。对于任何一个企业来说,数据是企业重要的资产,如何有效利用这些数据,对于企业发展起着极其重要的作用。随着我国市场经济的迅速发展和人们生活水平的不断提高,图书馆藏书的树木逐渐增大,这也挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,通过使用PowerBuilder创建的图书管理系统可以让管理人员方便而快捷的进行管理。图书管理系统采用了以 C/S构架技术实现。3.1.2 业务需求 图书管理信息系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强.数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。通过上网调查得知,一款合格的图书信息管理系统必须具备以下3个特点: 能够对图书信息进行集中管理 能够大大提高用户的工作效率 能够对图书的部分信息进行查询3.1.3 系统目标通过对图书销售管理过程的研究与分析,在设计时系统应该实现的目标如下: 实现图书的入库和入库退货管理 实现图书的库存盘点管理 实现图书的定价、调价管理 实现图书的销售、销售退货管理 实现图书的入库查询、入库退货查询、图书销售查询等信息查询3.2 系统功能结构图书管理系统功能结构图如下所示:3.2.1 总体功能设计(什么图吗!看不了!可能是wps的问题,要用word来写。其次,你的图太简单了吧,属于及其简陋型的)图书管理系统 查询管理销售管理价格管理库存管理基础信息管理 销售查询销售退货管理图书调价管理图书定价管理入库退货管理柜台信息管理仓库信息管理操作员信息管理图书信息管理图书种类信息管理供应商信息管理销售退货查询入库退货查询入库查询图书销售管理库存调拨管理图书入库管理 3.2.2 数据库概念设计 SQLserver是Microsoft公司推出的关系型数据库管理系统软件,是功能强大的关系型数据库管理系统之一。现在有越来越多的专业人士选择SQLServerZ拟)开发数据库管理程序。 根据对系统的功能分析和功能设计,规划出本系统中使用的数据库实体。下面介绍几个关键实体的E-R图。 图书信息实体:图书信息实体包括书名、作者、种类及单价等。图书信息实体E-R图如下:作者助记码书名 出版社图书信息条形码 备注单价种类 操作员 操作员信息实体:操作员信息实体包括用户名、密码及权限。操作员信息实体E-R图如下:权限密码用户名 入库信息实体:入库信息实体包括单价、条形码及数量等信息。入库信息实体E-R图如下:票号入库信息条形码单价数量折扣仓库应付金额 商品销售信息实体:商品销售信息实体包括条形码、销售编号、图书售价及数量等。商品销售信息实体E-R图如下:数量销售编号图书售价条形码商品销售信息 3.2.3 数据库逻辑结构设计(每个数据表应该说明为什么这么设计,这样设计的好处等,不是画张表就行了的) 本系统利用Visual Studio2008、SQL Server2005数据库和软件工程的相关知识。 根据上述E-R图在数据库中创建数据表。下面分别介绍主要数据表的结构: tb_bookinfo(图书信息表):图书信息表用来存储图书信息。表tb_bookinfo的结构如下表: 字段名数据类型长度是否主键描述booknamevarchar30图书名barcodevarchar10条形码authorvarchar30作者bookconcernvarchar30图书所属类别pricemoney价格memovarchar100备注kindvarchar30种类 tb_booksstorage(书库信息表):书库信息表用来存储书库信息。表tb_booksstorage的结构如下表:字段名数据类型长度是否主键描述barcodevarchar30条形码storagenamevarchar30库名booknumfloat图书数量 tb_bookmove_main(图书搬动信息表):图书搬动信息表用来存储图书搬动信息。表tb_bookmove_main的结构如下表:字段名数据类型长度是否主键描述moveIDvarchar30搬动编号storagevarchar30书库名countervarchar30计数员operatorvarchar30操作员movetimedatetime搬动时间 tb_bookkinds(图书种类信息表):图书种类信息表用来存储图书种类信息。表tb_bookkinds的结构如下表:字段名数据类型长度是否主键描述bookkindvarchar30图书种类第4章 详细设计(此部分全是贴图贴代码,这种方式不行,要介绍关键技术和实现方式,而不是面面聚到,涉及的简单的实现方案,介绍了反而露出缺点!贴代码介绍不了实现方案,还是应转化成文字的实现方案描述!此部分要大改)4.1 业务设计 4.1.1 业务流程图图书管理系统的业务流程图如下所示:入库退货查询图书入库图书查询管理图书销售管理图书价格管理入库登记入库查询图书掉价图书调拨销售查询图书定价入库退货销售退货查询操作员4.1.2 主窗体设计本图书管理系统主界面由菜单栏和工具栏区域两部分组成,客户区域由宁夏大学图书馆的一副位图来填充,整体设计效果采用对话框结构进行设计,运行结果如下:(这个图有什么意义?表现你的软件过于简陋?)4.2 系统登录模块设计4.2.1 系统登录模块概述(登录部分是最简单部分,可以不贴图,不贴代码,贴上显得丢人)为了防止非法用户进入系统,程序中设计了一个“系统登录”窗口。在程序启动时,首先显示登录窗口进行用户身份验证,如果用户输入的用户名称和密码不正确,将禁止进入系统。“系统登录”模块运行效果如下:4.2.2 系统登录技术分析与实现过程为了保证用户在某控件上按“Enter”键时,都会将焦点定位到下一个控件上,可以通过将“Enter”键转换成“Tab”键来实现。在本模块中系统就采取了这种方法,输入“用户名称”后按“Enter”键,焦点就会移动到“用户密码”文本框中。实现方法如下:BOOL CDlgLogin:PreTranslateMessage(MSG* pMsg) if(pMsg-message=WM_KEYDOWN)&(pMsg-hwnd!=m_confirm.m_hWnd)&(pMsg-hwnd!= m_cancel.m_hWnd)if (pMsg-wParam =13) / 如果按下的是“Enter”键pMsg-wParam = 9; / 转成“Tab”键return CDialog:PreTranslateMessage(pMsg); / 默认处理4.3 操作员管理模块实现4.3.1 操作员管理模块概述操作员管理模块主要实现操作员信息的添加、修改和删除功能。再删除操作员信息时,不要删除所有的操作员,否则无法进入系统。操作员管路模块的运行结果如下所示:4.3.2 操作员管理模块技术分析与实现过程再利用ADO技术操作数据库时,如果需要将Recordset对象中的数据显示在表格中,使用了如下语句:Temp = (TCHAR*)(_bstr_t)m_pRs-GetFields()-GetItem(long )i)-Value;如果写成如下形式,当字段的数据类型不是字符串时,将会出现错误:Temp = m_pRs-GetFields() -GetItem(long)i)-Value.bstrVal;函数AddOperator()用于添加操作员,该函数首先调用InfoIsNull()函数,判断操作员信息是否为空,如果为空,进行提示,并退出了操作;如果不为空,利用SQL语句将数据保存到数据表中,实现过程如下:void CDlgOperator1:AddOperator()/判断基础信息是否为空if (!InfoIsNull()CString c_operator,c_password,c_level;m_operator.GetWindowText(c_operator); /捕获操作员信息m_password.GetWindowText(c_password);m_level.GetWindowText(c_level);int level= atoi(c_level);CString sql;sql.Format(insert into tb_operator values (%s,%s,%d),c_operator,c_password,level);if (m_pRs-State =adStateOpen) /关闭SQL语句m_pRs-raw_Close(); / 关闭记录集trym_pRs-Open(_bstr_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);LoadOperatorInfo();ClearInterface(); /清空文本框中的文本MessageBox(操作成功.,提示,MB_OK);catch(_com_error *e) /捕获异常MessageBox(操作失败.,提示,MB_OK|MB_ICONERROR);elseMessageBox(基础信息不能为空.,提示,MB_OK+MB_ICONINFORMATION);4.4 图书信息管理模块设计4.4.1 图书信息管理模块概述图书信息管理主要实现图书信息的添加、修改和删除功能。为了方便用户操作,程序利用表格显示所有图书信息。用户在添加一种图书信息后,该图书将显示在表格中。如果用户想要修改图书信息,可以在表格中双击想要修改的图书信息,该信息会显示在上方的文本框和组合框中。在用户修改后,单击“修改”按钮,即完成修改;如果用户想要删除图书信息,可以在表格中选中想要删除的数据,单击“删除”按钮,系统提示是否删除,单击“是”按钮,即可删除图书信息。图书信息管理运行结果如下:4.4.2 图书信息管理技术分析与实现过程为了方便使用,在本模块中双击列表控件,系统会自动将选择的数据显示在文本框中,提高了用户对信息修改的效率。添加列表控件的双击事件,实现过程如下:void CDlgBookInfo1:OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) int row = m_list.GetSelectionMark();if (row !=-1)m_bookname.SetWindowText(m_list.GetItemText(row,0);m_shortcode.SetWindowText(m_list.GetItemText(row,1);m_barcode.SetWindowText(m_list.GetItemText(row,2);m_author.SetWindowText(m_list.GetItemText(row,3);m_public.SetWindowText(m_list.GetItemText(row,4);m_price.SetWindowText(m_list.GetItemText(row,5);m_memo.SetWindowText(m_list.GetItemText(row,6);m_kinds.SetCurSel(m_kinds.FindString(0,m_list.GetItemText(row,7);*pResult = 0;4.5 图书销售模块设计4.5.1 图书销售模块概述图书销售模块主要能够实现对图书销售信息的实时管理。操作员可以查看应付金额,将每次交易记录插入到数据库。在此模块中,操作员输入条形码、数量、折扣、价格后按“Insert”键,记录将显示在列表中。单击列表中的一行记录成选中状态,按“Del”键可以取消选中记录。整个交易过程结束后,单击“增加”按钮,将记录保存到数据库。“图书销售”模块的运行结果如下:4.5.2 图书销售技术分析与实现在用ADO操作数据库时,时常会遇到如何调用存储过程的问题。在本模块中解决方法如下:(1) 连接到数据库: _ConnectionPtr m_pCon; m_pCon-ActiveConnection = m_pCon.GetInterfacePtr(); (2) 设置m_pCom的参数。参数分为adParamInput和adParamOutput。adParamInput对应的存储过程中需要接受值的参数,而adParamOutput是在执行完成存储过程后可以得到输出值的参数,实现过程如下:_ParameterPtr arrays9; /定义参数数据/输入参数arrays0 = m_pCom-CreateParameter(a1,adVarChar,adParamInput,30);arrays1 = m_pCom-CreateParameter(a2,adVarChar,adParamInput,30);arrays2 = m_pCo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论