图书系统面向对象技术大作业.docx

上传人:b****5 文档编号:2905056 上传时间:2022-11-16 格式:DOCX 页数:24 大小:280.56KB
下载 相关 举报
图书系统面向对象技术大作业.docx_第1页
第1页 / 共24页
图书系统面向对象技术大作业.docx_第2页
第2页 / 共24页
图书系统面向对象技术大作业.docx_第3页
第3页 / 共24页
图书系统面向对象技术大作业.docx_第4页
第4页 / 共24页
图书系统面向对象技术大作业.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

图书系统面向对象技术大作业.docx

《图书系统面向对象技术大作业.docx》由会员分享,可在线阅读,更多相关《图书系统面向对象技术大作业.docx(24页珍藏版)》请在冰豆网上搜索。

图书系统面向对象技术大作业.docx

图书系统面向对象技术大作业

《面向对象技术大作业》

报告书

题目:

图书管理系统

指导教师:

姓名:

学号:

日期:

一.需求分析

图书管理在生活中运用非常广泛,因此需要用许多的程序来对它们进行管理。

此程序包含了图书信息的录入、图书信息的浏览、图书的查询和排序、图书信息的删除与修改,借书,还书,统计等。

通过编译一个C语言函数,其中包含一个主函数,多个子函数,主函数调用其余的子函数实现人们能够简易、快捷的了解并找到自己所学要的信息的功能。

二.系统主要功能

1、查询所有图书信息:

将所有图书信息包括编号、书名、出版社、作者、价格等显示在屏幕上。

2、查找一本图书的信息:

通过输入图书编号完成图书信息的查找,并在屏幕上显示。

3、修改图书信息:

通过输入编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号。

4、删除图书信息:

通过输入编号,判断此图书是否存在,若存在,则提示用户是否显示删除后的信息,若不存在则提示用户重新输入图书编号。

5、借书:

通过输入图书编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号,若图书已借出则提示用户是否继续借书,若没借出则将此图书的编号和学生的学号存入图书借阅文件中。

6、退出系统:

返回主页面。

三.流程图

四.数据结构设计

4.1main(>函数模块

根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。

在主函数中定义全局变量,即是在函数外部定义的变量,其不属于某一个函数,而属于一个源程序文件,在整个程序内可以多次被引用。

通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。

运用fscanf语句在主函数中将文件中的内容赋给结构体变量,便于在自定义函数中对结构体的调用。

具体如下:

在主函数中定义一个存放图书信息的结构体

structlist{

charnum[20]。

/*图书编号*/

charname[40]。

/*书名*/

charauthor[40]。

/*作者*/

charpublish[40]。

/*出版社*/

doubleprice。

/*价格*/

}。

以及各函数的申明

voidsearch_allinformation(structlistb[]>。

/*查看全部书信息*/

voidcheck_bookinformation(structlistb[]>。

/*查找图书信息*/

voidadd_bookinformation(structlistb[]>。

/*添加图书信息*/

voiddelete_bookinformation(structlistb[]>。

/*删除图书信息*/

voidborrow_book(structlistb[]>。

/*借阅图书*/

通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。

switch(choice1>

{case1:

search_allinformation(b>。

break。

case2:

check_bookinformation(b>。

break。

case3:

add_bookinformation(b>。

break。

case4:

delete_bookinformation(b>。

break。

case5:

borrow_book(b>。

break。

case0:

break。

}

4.2查询所有图书信息函数模块

voidsearch_allinformation(structlistb[]>

通过printf(>语句将所有的图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上。

运用for语句加printf(>实现图书信息的循环输出显示。

4.3查询一本图书信息函数模块

voidcheck_bookinformation(structlistb[]>

用户先输入图书编号后,先用strcmp(s1,s2>函数进行比较两个字符串数组的大小,从而查找出该图书是否存在,若不存在则提示用户是否要继续查找,运用switch语句,若继续则再次调用函数本身进行第二次查找,直到找到为止,若否则结束循环,不再进行查找。

通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。

运用fscanf语句在主函数中将文件中的内容赋给结构体。

其主要流程图如下:

关键代码:

strcmp(比较字符串>case….break(判断>printf<输出信息)

switch(实现选择功能分支>

4.4添加图书信息函数模块

voidadd_bookinformation(structlistb[]>

输入图书的基本信息包括编号、书名、出版社、作者、价格,因为原有的图书信息是按照编号的大小顺序排列的,所以只需运用for循环和strcmp函数找出输入的图书

应该插入的位置,再将所添加的图书信息插入即可。

其主要流程图如下:

关键代码:

printf(输出信息>

scanf(输入信息>

switch<实现多分支结构程序设计)

case-break<实现功能的选择)

4.5删除图书信息函数模块

voiddelete_bookinformation(structlistb[]>

用户输入所要删除的图书编号,先查找该图书编号是否存在,若存在,这提示用户是否要显示删除后的信息,若不存在则提示重新输入。

关键代码:

strcmp<比较两个字符串的大小)

switch<实现多分支结构程序设计)

if<条件选择)

4.6借阅图书模块

voidborrow_book(structlistb[]>

用户先输入所借图书的编号,调用函数查找该图书有没有借出,若已借出,则提示用户该图书已借出,并提示用户是否继续借阅其他书籍。

若继续,则继续进行新的查找。

关键代码:

if-else<实现分支选择)

getchar<从键盘上输入一个字符)

goto<使程序的执行流程直接转接到标号对应的那条语句)

strcmp<比较两个字符串的大小)

五.主要代码

#include

#include

#include

#include

#defineMaxbor100

#defineMaxr100

#defineMaxb100

usingnamespacestd。

classReader

{

private:

inttag。

//删除标记1:

已删0:

未删

intno。

//读者编号

charname[10]。

//读者姓名

intborbook[Maxbor]。

//所借图书

public:

Reader(>{}

char*getname(>{returnname。

}//获取姓名

intgettag(>{returntag。

}//获取删除标记

intgetno(>{returnno。

}//获取读者编号

voidsetname(charna[]>//设置姓名

{

strcpy(name,na>。

}

voiddelbook(>{tag=1。

}//设置删除标记1:

已删0:

未删

voidaddreader(intn,char*na>//增加读者

{

tag=0。

no=n。

strcpy(name,na>。

for(inti=0。

i

i++>

borbook[i]=0。

}

voidborrowbook(intbookid>//借书操作

{

for(inti=0。

i

i++>

{

if(borbook[i]==0>

{

borbook[i]=bookid。

return。

}

}

}

intretbook(intbookid>//还书操作

{

for(inti=0。

i

i++>

{

if(borbook[i]==bookid>

{

borbook[i]=0。

return1。

}

}

return0。

}

voiddisp(>//读出读者信息

{

cout<<<

["。

for(inti=0。

i

i++>

if(borbook[i]!

=0>

cout<

cout<<"]"<

}

}。

//读者类库,实现建立读者的个人资料

classRDatabase

{

private:

inttop。

//读者记录指针

Readerread[Maxr]。

//读者记录

public:

RDatabase(>//构造函数,将reader.txt读到read[]中

{

Readers。

top=-1。

fstreamfile("E:

\reader.txt",ios:

:

in>。

//打开一个输入文件

while(1>

{

file.read((char*>&s,sizeof(s>>。

if(!

file>{cout<<"打开失败"<

break。

}

top++。

read[top]=s。

}

file.close(>。

//关闭reader.txt

}

voidclear(>//删除所有读者信息

{

top=-1。

}

intaddreader(intn,char*na>//添加读者时先查找是否存在

{

Reader*p=query(n>。

if(p==NULL>

{

top++。

read[top].addreader(n,na>。

return1。

}

return0。

}

Reader*query(intreaderid>//按编号查找

{

for(inti=0。

i<=top。

i++>

if(read[i].getno(>==readerid&&

read[i].gettag(>==0>

{

return&read[i]。

}

returnNULL。

}

voiddisp(>//输出所有读者信息

{

for(inti=0。

i<=top。

i++>

read[i].disp(>。

}

voidreaderdata(>。

//读者库维护

~RDatabase(>//析构函数,将read[]写到reader.txt文件中

{

fstreamfile("E:

\reader.txt",ios:

:

out>。

for(inti=0。

i<=top。

i++>

if(read[i].gettag(>==0>

file.write((char*>&read[i],sizeof(read[i]>>。

file.close(>。

}

}。

voidRDatabase:

:

readerdata(>

{

charchoice。

charrname[20]。

intreaderid。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1