用C语言编写一个简单的图书管理小程序

用C语言编写一个简单的图书管理小程序,第1张

源代码如下:

#include<iostream>

#include<iomanip>

#include<string>

#include<fstream>

#include<stdio.h>

using namespace std

const   int   maxb=10000   //最多的图书

class   book//图书类

{

int   tag   //删除标记1:已删0:未棚余滑删

int   number   //isbn书号

char   name[20]   //书名

char author[10]//主编

char number2[10]//版次

char position[20]//出版社

char time[20]//出版年

void   addbook(int n,char *na,char *au,char *n2,char *da,char *ti,int pr)   //增加图毁好书  

{

tag=0

number=n

price=pr

strcpy(name,na)

strcpy(author,au)

strcpy(number2,n2)

strcpy(position,da)

strcpy(time,ti)

onshelf=1

}  

扩展资料

1、源程序中,很链腊多符号都是成对匹配出现的,为避免遗漏必须配对使用的符号。

2、用花括号括起来的部分,但从程序结构清晰,便于阅读、理解、维护的角度出发,建议在书写程序时应遵循以下规则,以养成良好的编程习惯。

3、一个说明或一条语句占一行,与该结构开始处的左花括号对齐。

enumState{Borrowed,Available}//Borrowed表示被借出,Available表示书籍可用。

classBook{

public:

//定义类型别名以实现抽象

typedefmultiset<Book>data_t

//不允许书籍默认构造。只允许通过传入书名构造。将书籍状态设为“可用”

Book()=delete

Book(constname_t&name):name(name),state(Available){}

~Book()=default

//使用书名比较书籍间的相互关系

booloperator<(constBook&other)const{returnname<other.name}

booloperator==(constBook&other)const{returnname==other.name}

//一些访氏知问和修改的函数

//关于书籍名字和书籍状态(“可用”,“已借”)

StateGetState()const{returnstate}

name_tGetName()const{returnname

voidSetName(constname_t&_name){name=_name}

voidSetState(StatenewState){state=newState}

private:

name_tname

Statestate

}

classLibrary{

public:

//定义一系列类型类型别名实现抽象

typedefmultiset<Book>data_t

typedeftypenameBook::name_tname_t

typedeftypenamedata_t::iteratorIterator

typedefvector<Book>Info_t

typedefstringfile_name_t

//只允许该类默认构造,不允许复制

Library()=default

Library(constLibrary&)=delete

Library&operator=(constLibrary&)=delete

//分别为增加,删除,借阅,归还书籍。

voidInsert(constBook&book){libraryData.insert(book)}

boolRemove(constname_t&name)

boolBorrow(constname_t&name)

boolGiveBack(constname_t&name)

//返回该类中书籍的相关信息

vector<Book>GetBookInfo(constname_t&name)const

vector<Book>GetAllBookInfo()const

//返回该类中书籍的数目

size_tCount(constname_t&name)const{returnlibraryData.count(Book(name))}

size_tNumOfBook()const{returnlibraryData.size()}

//保存信息到文件,从文件读取信息

//接受文件名为参数

voidSaveToFile(conststring&fileName)const

boolLoadFromFile(conststring&fileName)

private:

//储存书籍的容器

data_tlibraryData

//内部辅助函数。输入书籍的名字,返回一对迭代器(std::pair)指向一个区间范围。该范围内的书籍都有相同名字name

inlineauto_find(constname_t&name)const->constpair<Iterator,Iterator>

{

returnlibraryData.equal_range(Book(name))

}

}

//打印“>>>”用以实现交互界歼燃消面

inlinevoidPrintPromt(ostream&os)

//打印指导信息。每次运行该系统都会输出该内容

voidPrintInstroduction(ostream&os)

//打印帮助信息。在系统中输入help会段仿调用该函数输出帮助

voidPrintHelp(ostream&os)

//打印错误信息。该函数会将参数s直接打印出来(加上换行符)

inlinevoidPrintError(ostream&os,conststring&s)

//将系统中的全部书籍以表格形式输出。接受library类。通过调用PrintTitle(打印表格)和PrintAllBook(打印所有书籍)执行打印

inlinevoidPrintTable(ostream&os,constLibrary&lib)

//打印表格的题头。执行实际的打印行为

inlinevoidPrintTitle(ostream&os)

//打印系统中的全部书籍。通过调用PrintBookInOneLine打印书籍

voidPrintAllBook(ostream&os,constLibrary&lib)

//实际执行打印行为的函数。每次只打印一行。接受Book的对象为参数

inlinevoidPrintBookInOneLine(ostream&os,constBook&book)

扩展资料

C++编写程序注意事项

1、算:计算利润,计算一元二次方程的根,计算一个数列的和等。

2、找:找最大的值,找最短的一条路径,找一个字符串的位置等。

3、实现功能:实现撤销,重做的功能实现某种 *** 作的功能等。

4、字符串查找,在记事本里有一个查找的功能,输入要查找的关键字,能够快速找到它所在位置,如果没找到并给出提示,现在要求在一个字符串里找到一个子串,和记事本的查找功能一样。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12542563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存