您的当前位置:首页C++图书管理系统论文设计

C++图书管理系统论文设计

2022-07-05 来源:乌哈旅游


摘要

图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。采用C++作为开发工具,通过对C++进行深入的学习和应用,主要完成利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。同时是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。

关键字:图书管理系统 C++ 信息管理系统

作 者: 指导老师:

Abstract

Books management system management system is the typical information management system (MIS), its development mainly includes the setting and maintenance of database and the programming of the frontend application. The former required establish data consistency and integrality, data security good storehouse. For the latter requires the application program function complete, easy to use, etc. Using c + + as development tools through in-depth study of c + + and applications, mainly completes use books management system management system of book records, including new unified management, change book record books record, delete, realize functions such as book record books management work of the systematic, standardization and automation, provides the convenience for the books management. Meanwhile is after studying the object-oriented program design course of time after comprehensive practice. Help deepen our understanding of the object-oriented programming basic theory and basic knowledge understanding, cultivate the practice ability, promoting the combination of theory with practice.

Key word: books management system management system c + +

information management system

Written by

Supervised by

第一章 绪论

1.1图书管理系统概述

随着社会的发展,人们生活水平的提高,物质文化的发展已经远远满足不了人们的需求,精神文明有了飞速的发展,因此图书事业的发展就成为精神文明进步的一个动力。在迈入二十一世纪的今天,对图书管理显得极其重要,合理的管理不仅反映一个国家的科技水平,而且影响人们对知识掌握的速度和质量。在知识经济到来的今天,用计算机控制图书馆的工作由自动化系统运行而完成。这不仅省了人力,而且还提高了工作效率和服务质量,而且还加速了图书的流通。 1.2图书管理的目的和意义

随着各高等院校的规模不断扩大,图书馆的藏书、管理人员、读者的数量也越来越多,图书管理涉及到大量的数据处理,传统的人工系统已经不能完成庞大的数据处理,因为图书的情况是随时改变的,因此必须对图书进行动态的管理,而这对于管理人员来说是一件比较复杂的事情。因此,为方便对图书馆书籍、读者资料、借还书等进行高效的管理。提高业务流程效率,让管理员从繁重的工作中解脱出来,使管理员在使用一个软件以后能极其容易地对所有图书进行管理,并且准确无误,轻松自如。因此开发一个图书管理系统是当务之急,也是本论文选题的重要意义和研究宗旨。总之,建立图书馆的计算机自动化管理系统,不但可以大大提高图书流通率,而且推动了社会文化生活的进步。

第二章 系统相关技术

2.1 C++ 概述

C++语言是一种应用较广的面向对象的程序设计语言,使用它可以实现面向对象的程序设计。面向对象的设计与面向过程的设计是有很大区别的,面向对象的程序设计是在面向过程的程序设计的基础上一个质的飞跃。要学会面向对象的程序设计,首先要学会一种面向对象的语言,即要学会用VC编程,就要先有C++的基础,而学习C++语言首先要认识它面向对象的特性和实现面向对象的方法。

2.11 C++程序结构的基本组成部分

预处理命令,C++提供了三类预处理命令:宏定义命令、文件包含命令、条件编译命令。

输入输出,C++程序中总是少不了输入和输出的语句,实现与程序内部的信息交流。特别是屏幕输出的功能,几乎每个程序都要用到,使用它把计算机的结果显示在屏幕上。

函数,C++的程序是由若干个文件组成的,每个文件又是由若干个函数组成,因此,可以认为C++的程序就是函数串,即由若干个函数组成,函数与函数之间是相对的,并且是并行的,函数之间可以调用。在组成一个程序的若干个函中,必须有一个main()。

语句,语句是组成程序的基本单元。函数是由若干条语句组成的。但是,空函数是没有语句的。语句是由单词组成,单词间用空格符分隔,C++程序中的语句又是以以分号结束。语句除了有表达式语句和空语句之外,还有复合语句、分支语句、循环语句和转向语句等若干类。

变量,多数程序都需要说明和使用变量。广义讲,对象包含了变量,即将变量也称为一种对象,狭义讲,将对象看作是类的实例,对象是指某个类的对象。

其他,除了以上讲述的5个部分以外,还有其他组成部分。例如,符号常量和注释信息也是程序的一部分。C++中都尽量把常量定义为符号常量,在C++的程序中出现的是符号常量,该符号常量代表着某个确定的常量值。 2.12 C++程序的实现

C++源程序的实现与其他高级语言源程序实现的原理是一样的。一般都要经

过编辑、编译、运行。其中最要的是编译过程,C++是以编译方式实现的高级语言。C++程序的实现,必须要使用某种C++语言的编译器对程序进行编译。编译器的功能是将程序的源代码转换成为机器代码的形式,称为目标代码;然后,再使目标代码进行连接,生成可执行文件。该过程可分为三个子过程:预处理过程、编译过程(词法分析、语法分析、符号表、错误处理程序、生成目标代码)、连接过程。

第三章 系统分析

1.图书管理系统设计

任何一个软件的开始都是进行系统的需求分析。需求分析要根据用户的功能要求、界面以及其他要求进行分析,当然在此需求分析是根据我自己对图书管理系统的基本了解以及系统所需要的基本功能来进行的。其次制作的各个流程图才是真正的系统设计,是在完成需求分析的基础上进行的。

2.用户的功能需求分析

图书管理系统需要的功能分析如下:

管理系统具有多个管理员,管理员可以使用不同的用户名和密码进入管理系统,并可以修改自己的密码;

(一)进入系统后可以重新登录该系统;

(二)在系统中可以对数据库进行简单的操作;

(三)最基本的功能还应具有可以编辑图书——录入、删除图书资料。图书

分类信息的添加、修改、删除和查询。此功能为图书的分类管理提供依据。

(四)图书基本信息的添加、修改、删除和查询。

(五)借阅证件分类信息的添加、修改、删除和查询。不同类型的借阅证件

可以借阅的最大数量、最大天数和续借天数不同。 (六)图书借阅证件的添加、修改、删除、挂失和查询。

(七)图书借阅管理,包括图书借阅、图书归还、图书续借、图书挂失和图

书催还等。 3.系统运作流程

该系统涉及到用户以及管理员,在两者之间进行一系列的操作。管理员对图书进行录入、删除等操作,和用户之间的交流则是进行借阅图书操作。运作流程图如图:

第四章 系统的实现

1、类的设计 Book类的设计: Book

Name[strNum]:char number[strNum]:char kind[type]:char int tag;int num;int add Book() {} getkind():char getname():char getnum():int gettag():int

setnumber(char num[]):void setname(char na[]):void setkind(char kin[]):void delbook():void

addbook(int n,char *na,char *kin):void disp():void

(1)数据成员

char name[StrNum]; 用来存放书名。

char number[StrNum]; 用来存放图书的编号。 char kind[Type]; 用来存放图书的类型。 int tag; 定义删除标记。

int num; 定义图书编号为整形。 int add; 增加标记。 (2)函数成员

Book(){} 无参构造函数,用于为书名和作者姓名设置默认值。 char getkind() 用于获取图书类型。 char getname() 用于获取书名。

int getnum() 用于获取图书编号。 int gettag() 用于获取删除标记。

void setname(char na[]) 用于设置书名。 void setkind(char kin[]) 用于设置类型。

void delbook() 用于删除图书。

void addbook(int n,char *na,char *kin) 用于增加图书。 void disp() 用于输出图书。 2.主程序的设计: (1)函数的设计:

class BDatabase{} 图书管理类的设置,实现对图书的添加,查找,删除等。 int top; 设置图书记录指针。

Book book[Maxb]; 设置图书记录(Maxb定义为最多可存储的图书数,定义为整形)。

void clear() 清空图书记录。

int addbook(int n,char *na,char *kin) 增加图书记录。 Book *query(int bookid) 查找图书记录。 void bookdata(); 定义图书库。 void disp() 输出。

~BDatabase() 设置析构函数,将book[]写到book.txt文件中 void BDatabase::bookdata() 由此函数开始对图书管理系统的主菜单进行调用与功能的实现。(界面参看执行界面部分) 最后用main() 函数的实现,程序的主界面的引导 3. 源代码分析:

/*****************************************************************************************/ #define StrNum 20 #define Type 20 #include #include #include

#include //输入/输出文件流类 using namespace std;

const int Maxb=100; //最多可存储的图书 class Book {

private:

int tag; //删除标记 int num; //图书编号 int add; //增加标记 char number[StrNum]; //编号 char name[StrNum]; //书名 char kind[Type]; //图书类型

public: Book(){} char getkind() //获取图书类型 { return kind[Type];

} char getname() //获取书名 { return name[StrNum]; } int getnum() //获取图书编号 { return num; } int gettag() //获取删除标记 { return tag; } void setname(char na[]) //设置书名 { strcpy(name,na); } void setkind(char kin[]) //设置类型 { strcpy(kind,kin); } void delbook() //删除图书 { tag=1; } void addbook(int n,char *na,char *kin) //增加图书 { tag=0; num=n; strcpy(name,na); strcpy(kind,kin); } void disp() //输出图书 { cout.flags (ios::left); //设置对齐的标志位为左 cout</*****************************************************************************************/ class BDatabase {

private:

int top; //图书记录指针

Book book[Maxb]; //图书记录 public: BDatabase() //构造函数,将book.txt读到book[]中 { Book b; top=-1; fstream file(\"book.txt\ while (1) { file.read((char *)&b,sizeof(b)); if (!file) break; top++; book[top]=b; } file.close(); } void clear() //全删 { top=-1; }

int addbook(int n,char *na,char *kin) //增加图书 { Book *p=query(n); if(NULL==p) { top++; book[top].addbook(n,na,kin); return 1; } return 0; } Book *query(int bookid) //查找图书 { for (int i=0;i<=top;i++) if (book[i].getnum()==bookid &&book[i].gettag()==0) { return &book[i]; } return NULL; } void bookdata(); //图书库 void disp() { for (int i=0;i<=top;i++)

if (book[i].gettag()==0) book[i].disp(); } ~BDatabase() //析构函数,将book[]写到book.txt文件中 { fstream file(\"book.txt\ for (int i=0;i<=top;i++) if (book[i].gettag()==0) file.write((char *)&book[i],sizeof(book[i])); file.close(); } };

void BDatabase::bookdata() {

char choice; char bname[40]; char bkind[40]; char newType[20]; int bookid; Book *b; while (choice!='0') {

cout<<\"\******************************************************************\\n\"; cout<<\" \\n\\n\"; cout<<\"\\\图 书 管 理 系 统\\n\\n\"; cout<<\"\\\1 新增图书记录\\n\"; cout<<\"\\\2 更改图书记录\\n\"; cout<<\"\\\3 删除图书记录\\n\"; cout<<\"\\\4 查找图书记录\\n\"; cout<<\"\\\5 显示图书记录\\n\"; cout<<\"\\\6 清空全部记录(慎用)\\n\"; cout<<\"\\\0 退出系统\\n\"; cout<<\" \\n\\n\"; cout<<\"\******************************************************************\\n\";

cout<<\"请选择(1,2,3,4,5,6,0):\"; cin>>choice; switch (choice) {

case '1': cout<<\"输入图书编号:\"<>bookid;

cout<<\"输入图书类型:\"<>newType;

cout<<\"输入图书书名:\"<>bname; addbook(bookid,bname,newType); break; case '2': cout<<\"输入图书编号:\"<>bookid; b=query(bookid); if(b==NULL) { cout<<\"该图书不存在\"<>bname; b->setname(bname); cout<<\"输入新的类型:\"<>bkind; b->setkind(bkind); break; case '3': cout<<\"读入图书编号:\"<>bookid; b=query(bookid); if(b==NULL) { cout<<\"该图书不存在\"<>tg1; if(tg1!='n'&&tg1!='N') { b->delbook(); cout<<\"已成功删除该书记录!\"<>bookid; b=query(bookid);

if (b==NULL) { cout<<\"该图书不存在\"<disp(); break; case '5': cout<<\"图书编号 图书名称 图书类型 \\n\"; disp(); break; case '6': char tg2; cout<<\"确定要清空所有记录吗?(Y/N)\"<>tg2; if(tg2!='n'&&tg2!='N') { clear(); cout<<\"已成功清空记录!\"<//main() 函数的实现,程序的主界面的引导 void main() { char choice; BDatabase BookDB; while(choice!='0') { cout<<\"\******************************************************************\\n\"; cout<<\" \\n\\n\"; cout<<\"\\n\\n\\\欢迎使用图书管理系统\\n\\n\"; cout<cout<<\"\\\1 进 入 系 统\\n\\n\\\0 离 开\"<>choice; switch(choice) { case '1': BookDB.bookdata(); break; case '0': cout<<\"\\n\\n\\\欢迎再次使用图书管理系统\\n\\n\"; break; default:cout<<\"输入错误,请从新输入:\"; } } }

4.3执行界面:

1. 主菜单界面,包括制作成员以及系统提示。

(由于此图含有本人姓名,出于隐私考虑,删除此图,使用者直接运行即可得到结果)

2.进入系统后,出现子菜单,用户可根据需要进行操作

3.新增图书记录界面:

新增图书后返回操作菜单。 4.更改图书记录:

5.删除图书记录:

选择N后返回主菜单;

选择Y后,删除记录,并返回主菜单。 6. 查找图书记录:

如果没有该书编号,则显示此书不存在。 7.显示图书记录:

8.清空图书记录:

选择N,返回主菜单;

选择Y,则清空所有记录。 9.退出系统

总结:

本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,而且具有较高的安全性。但是因为自己独立完成且能力有限,还有部分功能未能完善,例如对书名,编号的排序等等,这些局限性都是有待逐步完善的方面。而且通过这次课程设计,我培养了自己对C++编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。

参考文献:

[1] 谭浩强. C++面向对象程序设计.北京:清华大学出版社,2006 [2] 谭浩强. C++程序设计实践指导.北京:清华大学出版社,2005 [3] 刘玉英,张怡芳等. C++实验指导与课程设计。人民邮电出版社,2007

因篇幅问题不能全部显示,请点此查看更多更全内容