图书管理系统C课程设计docWord文档格式.docx

上传人:b****2 文档编号:3499347 上传时间:2023-05-01 格式:DOCX 页数:39 大小:636.27KB
下载 相关 举报
图书管理系统C课程设计docWord文档格式.docx_第1页
第1页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第2页
第2页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第3页
第3页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第4页
第4页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第5页
第5页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第6页
第6页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第7页
第7页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第8页
第8页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第9页
第9页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第10页
第10页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第11页
第11页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第12页
第12页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第13页
第13页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第14页
第14页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第15页
第15页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第16页
第16页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第17页
第17页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第18页
第18页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第19页
第19页 / 共39页
图书管理系统C课程设计docWord文档格式.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

图书管理系统C课程设计docWord文档格式.docx

《图书管理系统C课程设计docWord文档格式.docx》由会员分享,可在线阅读,更多相关《图书管理系统C课程设计docWord文档格式.docx(39页珍藏版)》请在冰点文库上搜索。

图书管理系统C课程设计docWord文档格式.docx

打印图书信息

打印读者信息

总体设计

2.1.新书入库模块

功能:

登记入库的新书信息

2.2.信息查询模块

2.2.1读者信息查询模块

查询某一读者的信息

2.2.2图书信息查询模块

查询某一图书的信息

2.2.3打印图书信息

打印所有图书的信息

2.2.4打印读者信息

打印所有读者的信息

2.3.借书模块

登记读者的借书信息

2.4.还书模块

登记读者的还书信息

3.详细设计

3.1.类设计

typedefstructBOOK//声明图书结构体变量BOOK,表示图书信息

{

charnumber[10];

//书号

chartitle[20];

//书名

charwriter[10];

//作者

charpublish[20];

//出版社

intyear;

//出版年份

intmonth;

//出版月份

intday;

//出版日期

floatprice;

//出版价格

intstorage;

//库存量

intremain;

//现存量

structBOOK*next;

//下一个节点指针

}BOOK;

typedefstructBORROW//借书信息

charbook_number[10];

//书号

}BORROW;

typedefstructREADER//读者信息

charnumber[3];

//读者编号

charname[10];

//读者名字

intborrow_amount;

//当前借书量

BORROWborrow[Max];

//借书信息

structREADER*next;

}READER;

3.2.基本操作函数

intDisplayMenu();

//显示主菜单

voidInitialize();

//初始化(初始化读者和图书的信息)

voidInit_reader();

//初始化读者信息

voidInit_book();

//初始化图书信息

voidInsert_New_Book();

//新书入库模块

intFind();

//查找菜单

voidFind_Select();

//查找菜单选择函数

voidFind_Reader();

//查找某个读者信息

voidFind_Book();

//查找某个图书信息

voidPrint_reader();

//打印所有读者信息

voidPrint_book();

//打印所有图书信息

voidBorrow_Book();

//借书函数

voidReturn_Book();

//还书函数

voidSave();

//保存到文件

voidSelectmenu();

//主菜单选择函数

3.3.程序流程图

3.3.1主函数流程图

图3.3.1主函数流程图

3.3.2初始化模块

图3.2初始化模块流程图

3.3.3借书模块

图3.3借书模块流程图

3.3.4新书入库模块

图3.4新书入库模块

3.3.5信息查询模块

图3.5信息查询模块流程图

3.3.6还书模块

图3.6还书模块流程图

4.运行结果

5.设计源码

/*StandardTemplateLibrary,标准模板库*/

#include<

iostream>

//数据流输入/输出

string>

//字符串类

usingnamespacestd;

#defineMax3

BOOK*h_book=NULL;

//图书链表头结点

READER*h_reader=NULL;

//读者链表头结点

//显示主菜单

intDisplayMenu()

{

intchoice;

cout<

<

endl<

"

图书管理系统主菜单"

endl;

string(50,'

='

)<

*\t0----退出系统*"

*\t1----新书入库*"

*\t2----信息查询*"

*\t3----借书登记*"

*\t4----还书管理*"

请选择相应选项:

;

while

(1)

{

cin>

>

choice;

if(choice<

0||choice>

4)

cout<

\n错误!

请重新输入:

else

break;

}

returnchoice;

}

voidInitialize()//初始化(初始化读者和图书的信息)

Init_book();

Init_reader();

voidInit_book()//初始化图书信息

BOOK*pBook;

//创建指向BOOK类的指针

pBook=(BOOK*)malloc(sizeof(BOOK));

/*sizeof是C/C++中的一个操作符(operator),作用是返回一个对象或者类型所占的内存字节数。

*/

/*Malloc向系统申请分配指定size个字节的内存空间。

返回类型是void*类型。

/*void*类型可以强制转换为任何其它类型的指针。

memset(pBook,0,sizeof(BOOK));

//函数原型void*memset(void*s,intch,size_tn);

/*memset函数的作用是将s中前n个字节替换为ch并返回s;

h_book=pBook;

//打开文件

if(freopen("

book.txt"

"

r"

stdin)==NULL)

fclose(stdin);

freopen("

CON"

stdin);

return;

}

while

(1)

//读取读者信息

pBook->

number;

if(strcmp(pBook->

number,"

0"

)==0)//读到了文件末尾

//strcmp是字符串比较函数

{

//关闭文件输入流,恢复标准输入流

fclose(stdin);

freopen("

return;

}

title>

writer>

publish>

year>

month

>

day>

price>

storage>

remain;

//创建下一个节点

BOOK*temp=(BOOK*)malloc(sizeof(BOOK));

memset(temp,0,sizeof(BOOK));

pBook->

next=temp;

pBook=temp;

//关闭文件输入流,恢复标准输入流

fclose(stdin);

freopen("

//初始化读者信息

voidInit_reader()

READER*pReader;

pReader=(READER*)malloc(sizeof(READER));

/*向系统申请分配指定size个字节的内存空间,返回类型是void*类型。

memset(pReader,0,sizeof(READER));

/*把pReader清零*/

h_reader=pReader;

reader.txt"

stdin)==NULL)//打开文件

pReader->

if(strcmp(pReader->

)==0)//如果读到了文件末尾

name>

borrow_amount;

for(inti=0;

i<

pReader->

i++)

cin>

borrow[i].book_number;

READER*temp=(READER*)malloc(sizeof(READER));

memset(temp,0,sizeof(READER));

pReader->

pReader=temp;

//函数原型:

intfclose(FILE*stream);

/*重新分配文件指针,实现重定向。

如果stream流已经打开,则先关闭该流。

如果该流已经定向,则freopen将会清除该定向。

/*函数原型:

FILE*freopen(constchar*filename,constchar*type,FILE*stream);

*/

/*功能:

关闭一个流。

注意:

使用fclose()函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。

voidInsert_New_Book()//新书入库模块

BOOK*p,*p0,*p1;

p=p1=h_book;

\n\t\t新书入库\n"

string(40,'

\n请输入新书信息:

\n"

p0=(BOOK*)malloc(sizeof(BOOK));

BookNo.:

cin>

p0->

while(strcmp(p0->

number,p1->

number)!

=0&

&

p1->

next!

=NULL)

p1=p1->

next;

if(strcmp(p0->

number)==0)

/*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/

cout<

\n此编号图书已存在!

!

直接入库!

请输入入库的图书数量:

storage;

p1->

storage+=p0->

remain+=p0->

cin.clear();

cin.ignore(200,'

\n'

);

else/*若不存在,则需要输入其他的信息,然后在进行插入操作*/

图书名:

chartmp[20]={0};

cin>

tmp;

memcpy(p0->

title,tmp,20);

//函数原型void*memcpy(void*dest,constvoid*src,intn);

/*从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中*/

图书作者:

chartmp0[10]={0};

writer,tmp,20);

图书出版社:

chartmp1[20]={0};

publish,tmp,20);

图书的出版年份:

year;

图书的出版月份:

month;

图书的出版日期:

day;

图书价格:

price;

图书入库量:

p0->

storage=p0->

while(strcmp(p->

next->

)!

=0)

p=p->

if(h_book==NULL)h_book=p0;

/*此处分两种情况,链表中如果没有数据,head则直接指向p0处*/

else

p0->

next=p->

p->

next=p0;

/*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/

remain=p0->

\n新书入库完毕!

getchar();

//查找菜单

intFind()

\n\t\t信息查询菜单\n"

*\t0----返回上级\t*\n"

*\t1----查找图书\t*\n"

*\t2----查找读者\t*\n"

*\t3----打印所有图书\t*\n"

*\t4----打印所有读者\t*\n"

请选择相应代码:

for(;

)/*循环调用模式,保证能进行重复操作*/

{

cin.clear();

cin.ignore(200,'

break;

//查找菜单选择函数

voidFind_Select()

while

(1)/*循环调用模式,保证能进行重复操作*/

switch(Find())/*功能选择*/

{

case0:

return;

case1:

Find_Book();

break;

case2:

Find_Reader();

case3:

Print_book();

case4:

Print_reader();

default:

cout<

cin.clear();

exit(0);

voidFind_Reader()//查找某个读者信息

READER*p;

inti;

charfind_reader[10];

p=h_reader;

\n读者信息查询模块\n"

\n请输入你要查询读者编号:

find_reader;

while(strcmp(p->

number,find_reader)!

p->

next)

p=p->

if(strcmp(p->

number,find_reader)==0)

\n读者编号:

find_reader<

的信息为:

编号:

number<

姓名:

name<

/*此处这样处理,是为了能实现一个读者能借多本书,

而Max的数值可以随需要修正*/

for(i=0;

i<

Max;

i++)

借的第"

i+1<

本书的编号为:

borrow[i].book_number<

else

\n此读者编号不存在,请核对!

voidFind_Book()//查找图书信息

BOOK*p;

charfind_book[10];

/*读者编号唯一,查找只须一次遍历*/

p=h_book;

\n图书信息查询模块\n"

string(25,'

^'

请输入你要查询图书编号:

find_book;

number,find_book)!

number,find_book)==0)/*找到了就打印,否则提示不存在,或出错*/

\n图书编号"

find_book<

title<

作者:

writer<

出版社:

publish<

出版日期:

year<

年"

month<

月"

day<

日"

图书价格:

price<

元"

现存量:

remain<

库存量:

storage<

\n此图书编号不存在,请核对并检查你的信息是否有误!

voidPrint_reader()//打印所有读者信息

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

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2