1、问题描述(功能要求) 要求设计的系统应具有如下功能 (1)借书。 (2)还书。 (3)图书维护:删除图
发布网友
发布时间:2022-05-27 04:44
我来回答
共2个回答
热心网友
时间:2023-10-09 00:30
#include iostream
#include iomanip
#include string
#include fstream//输入/输出文件流类
using namespace std;
const int Maxr=100;//最多的读者
const int Maxb=100;//最多的图书
const int Maxbor=5;//每位读者最多借五本书
//读者类,实现对读者的信息的描述
class Reader
{
private:
int tag; //删除标记 1:已删 0:未删
int no; //读者编号
char name[10]; //读者姓名
int borbook[Maxbor];//所借图书
public:
Reader() {}
char *getname() {return name;} //获取姓名
int gettag() {return tag;} //获取删除标记
int getno() {return no;} //获取读者编号
void setname(char na[]) //设置姓名
{
strcpy(name,na);
}
void delbook(){ tag=1; }//设置删除标记 1:已删 0:未删
void addreader(int n,char *na)//增加读者
{
tag=0;
no=n;
strcpy(name,na);
for(int i=0;iMaxbor;i++)
borbook[i]=0;
}
void borrowbook(int bookid)//借书操作
{
for(int i=0;iMaxbor;i++)
{
if (borbook[i]==0)
{
borbook[i]=bookid;
return;
}
}
}
int retbook(int bookid)//还书操作
{
for(int i=0;iMaxbor;i++)
{
if(borbook[i]==bookid)
{
borbook[i]=0;
return 1;
}
}
return 0;
}
void disp()//读出读者信息
{
cout setw(5) no setw(10) name"借书编号:[";
for(int i=0;iMaxbor;i++)
if(borbook[i]!=0)
cout borbook[i] "|";
cout "]"endl;
}
};
//读者类库,实现建立读者的个人资料
class RDatabase
{
private:
int top; //读者记录指针
Reader read[Maxr];//读者记录
public:
RDatabase() //构造函数,将reader.txt读到read[]中
{
Reader s;
top=-1;
fstream file("reader.txt",ios::in);//打开一个输入文件
while (1)
{
file.read((char *)s,sizeof(s));
if (!file)break;
top++;
read[top]=s;
}
file.close(); //关闭 reader.txt
}
void clear()//删除所有读者信息
{
top=-1;
}
int addreader(int n,char *na)//添加读者时先查找是否存在
{
Reader *p=query(n);
if (p==NULL)
{
top++;
read[top].addreader(n,na);
return 1;
}
return 0;
}
Reader *query(int readerid)//按编号查找
{
for (int i=0;i=top;i++)
if (read[i].getno()==readerid
read[i].gettag()==0)
{
return read[i];
}
return NULL;
}
void disp() //输出所有读者信息
{
for (int i=0;i=top;i++)
read[i].disp();
}
void readerdata();//读者库维护
~RDatabase() //析构函数,将read[]写到reader.txt文件中
{
fstream file("reader.txt",ios::out);
for (int i=0;i=top;i++)
if (read[i].gettag()==0)
file.write((char *)read[i],sizeof(read[i]));
file.close();
}
};
void RDatabase::readerdata()
{
char choice;
char rname[20];
int readerid;
Reader *r;
while (choice!='0')
{
cout "\n\n\t\t\t读 者 维 护\n\n\n\t\t 1 新 增\n\n\t\t 2 更 改\n\n\t\t 3 删 除\n\n\t\t 4 查 找\n\n\t\t 5 显 示\n\n\t\t 6 全 删\n\n\t\t 0 退 出"endl;
cin choice;
switch (choice)
{
case '1':
cout "输入读者编号:";
cin readerid;
cout "输入读者姓名:";
cin rname;
addreader (readerid,rname);
break;
case '2':
cout "输入读者编号:";
cin readerid;
r=query(readerid);
if (r==NULL)
{
cout " 该读者不存在 "endl;
break;
}
cout "输入新的姓名:";
cin rname;
r-setname(rname);
break;
case '3':
cout " 输入读者编号:";
cin readerid;
r=query(readerid);
if (r==NULL)
{
cout " 该读者不存在" endl;
break;
}
r-delbook();
break;
case '4':
cout "读入读者编号:";
cin readerid;
r=query(readerid);
if (r==NULL)
{
cout "该读者不存在" endl;
break;
}
r-disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout"输入错误,请从新输入:";break;
}
}
}
//图书类,实现对图书的描述,图书的编号,书名,借出,还入等
class Book
{
private:
int tag;//删除标记 1:已删 0:未删
int no;//图书编号
char name[20];//书名
int onshelf;//是否再架 1:再架 2:已借
public:
Book(){}
char *getname() { return name; }//获取姓名
int getno(){ return no; }//获取图书编号
int gettag(){ return tag; }//获取删除标记
void setname(char na[])//设置书名
{
strcpy(name,na);
}
void delbook(){ tag=1;}//删除图书
void addbook(int n,char *na)//增加图书
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
int borrowbook()//借书操作
{
if (onshelf==1)
{
onshelf=0;
return 1;
}
return 0;
}
void retbook()//还书操作
{
onshelf=1;
}
void disp()//输出图书
{
cout setw(6) no setw(18) name setw(10)
(onshelf==1? "在架":"已借") endl;
}
};
//图书库类,实现对图书的维护,查找,删除等
class BDatabase
{
private:
int top; //图*录指针
Book book[Maxb]; //图*录
public:
BDatabase()//构造函数,将book.txt读到book[]中
{
Book b;
top=-1;
fstream file("book.txt",ios::in);
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)//增加图书
{
Book *p=query(n);
if (NULL==p)
{
top++;
book[top].addbook(n,na);
return 1;
}
return 0;
}
Book *query(int bookid)//查找图书
{
for (int i=0;i=top;i++)
if (book[i].getno()==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",ios::out);
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];
int bookid;
Book *b;
while (choice!='0')
{
cout "\n\n\n\t\t\t图 书 维 护 "endlendl;
cout"\t\t1 新 增\n \t\t2 更 改\n\t\t3 删 除\n\t\t4 查 找\n\t\t5 显 示\n\t\t6 全 删\n\t\t0 退 出"endl;
cin choice;
switch (choice)
{
case '1':
cout "输入图书编号:"endl;
cin bookid;
cout "输入图书书名:"endl;
cin bname;
addbook(bookid,bname);
break;
case '2':
cout "输入图书编号:"endl;
cin bookid;
b=query(bookid);
if (b==NULL)
{
cout " 该图书不存在 "endl;
break;
}
cout "输入新的书名:"endl;
cin bname;
b-setname(bname);
break;
case '3':
cout " 读入图书编号:"endl;
cin bookid;
b=query(bookid);
if (b==NULL)
{
cout " 该图书不存在" endl;
break;
}
b-delbook();
break;
case '4':
cout " 读入图书编号:"endl;
cin bookid;
b=query(bookid);
if (b==NULL)
{
cout " 该图书不存在" endl;
break;
}
b-disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout"输入错误,请从新输入:";
}
}
}
//main() 函数的实现,程序的主界面的引导
void main()
{
char choice;
int bookid,readerid;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
while(choice!='0')
{
cout endlendl"\t\t\t 图 书 管 理 系 统\n\n\n";
cout "\t\t\t1 借 书\n\n\t\t\t2 还 书 \n\n\t\t\t3 图 书 维 护\n\n\t\t\t4 读 者 维 护\n\n\t\t\t0 离 开"endl;
cin choice;
switch (choice)
{
case '1':
cout " 借书 读者编号:";
cin readerid;
cout " 图书编号: ";
cin bookid;
r=ReaderDB.query(readerid);//按编号查找
if (NULL==r)
{
cout " 不存在该读者,不能借书" endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout " 不存在该图书,不能借书" endl;
break;
}
if (b-borrowbook()==0)
{
cout " 该图书已借出,不能借书" endl;
break;
}
r-borrowbook(b-getno());
break;
case '2':
cout"还书\n 读者编号:";
cin readerid;
cout " 图书编号:";
cin bookid;
r=ReaderDB.query(readerid);
if (r==NULL)
{
cout " 不存在该读者,不能还书" endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout " 不存在该图书,不能还书" endl;
break;
}
b-retbook();
r-retbook(b-getno());
break;
case '3':
BookDB.bookdata();
break;
case '4':
ReaderDB.readerdata();
break;
default:cout"输入错误,请从新输入:";
}
}
}
热心网友
时间:2023-10-09 00:30
机械制图习题集(多学时)金书网抢先发售中!
内容简介:
本习题集是在原中等职业教育国家规划教材配套用书《机械制图习题集(机械类)》第2版的基础上,根据教育部颁布、2010年实施的中等职业学校《机械制图教学大纲》(多学时)的基本要求,按最新机械制图国家标准修订而成。与金大鹰主编的教材《机械制图(多学时)》第3版配套使用。
本习题集共十一章,前九章为必修内容,后两章为选学内容。习题集中的内容丰富,图形清晰、秀美。凡教材中的内容均有习题相伴,题型多、寓意深、角度新。习题有一定余量,为教师选用、学生选作提供了方便。此外,在零件图、装配图部分还编排了一些难度较大的看图题,并附有立体图,供学生自行选读。
本习题集适用于中等职业学校(普通中专、职业高中、技工学校、职工中专等)机械类(或近机械类)各专业的制图教学,也可供职工培训使用或参考。
前言
本习题集是在原中等职业教育国家规划教材配套用书《机械制图习题集(机械类)第2版的基础上,根据教育部颁布、2010年实施的中等职业学校《机械制图教学大纲 (多学时)的基本要求,按最新机械制图国家标准修订而成。与全大鹰主编的教材《机械制图(多学时)》第3版配套使用。
本习题集共十一章,分为三个模块:①基础模块前九章(学生的必修内容和应达到的基本要求);②选学模块后两幸(供各校根据专业培养的实际需要自主选择);③综合实践模块以零部件测绘为主(应在必修、选学内容教学结束后,专用一周时间集中进行)。本习题集具有如下特点:
1.突出了对学生看图和画图能力的培养。自投影作图起,即将二者揉在一起,步步相随。尤其为了突破看图难关,从点、直线、平面的投影开始,即以其轴测图为媒介,以识读一面视图为手段,加强投影的可逆性训练,逐步引导学生走上正确的看图之路。进而,通过适时引入的形体分析法和线面分析法及试作层次渐进的习题,力求使学生把握开启画图、看图之门的两把钥匙,使其能力的培养得到强化。
2.内容丰富。凡教材中的重点内容均有习题相伴,题型多、寓意深、角度新,且具有典型性。除供理解、消化、巩固知识的基本题外,又设计了一些开发智能的趣味题。需要说明的是,看图和画图能力的提高关键在"练"。为此,本习题集中安排的习题较多。但并非要求都做,教师完全可以根据教学情况进行取舍(纽合体及其之前的习题应多作些,并多用些学时演练)。此外,习题集中还有一些难度较大的"看图选作题",并附有答案或立体图,这是为那些学有余力的学生再提高而安排的自学题,它不属于本课程的教学范畴。
3.为了加强对学生绘制苹图能力的训练,习题集中设计了一些网格纸,以引导学生初步掌握徒手画图的技能,但这是远远不够的,只有在教学中不断坚持训练才能奏效。
4.习题集中的图形准确、清晰、秀美,利于看图、方便画图,可提高学习效果。
本习题集适用于中等专业学校、职业高中、技工学校等各专业多学时的制图教学,也可供其他相近专业使用或参考。参加本习题集修订工作的有:金大鹰、刘宇、高鹏、刘春兰、李丽、高鑫,由全大鹰担任主编。
编者2010年2月
图书在版编目(CIP)数据
书名:机械制图习题集:多学时(第3版)
丛书:中等职业教育国家规划教材配套用书
作者:金大鹰主编
出版社:机械工业出版社,
中等职业教育国家规划教材配套用书
标准书号:ISBN 978-7-111-31536-0
定价:19.00元
目录
第3版前言
一、制图的基本知识和技能1
二、投影基础15
三、轴测图42
四、立体的表面交线48
五、组合体55
六、机件的表达方法78
七、常用零件的特殊表示法99
八、零件图110
九、装配图129
十、第三角画法139
十一、其他图样142
附录选作题答案149
http://www.golden-book.com/booksinfo/13/1373781.html