1、 面向对象程序设计(C++语言)课程设计 设计说明书 图书管理系统设计和实现 起止日期: 年 月 日 至 年 月 日 学生姓名 班级 学号 成绩 指导老师(签字) 计算机和通信学院 年 月 日 图书管理系统 一.需求分析 图书馆是现在生活中除了网络外另一个获取知识关键场所。利用图书管理系统对图书统计进行统一管理,包含新增图书统计,更改图书统计,删除图书统计等功效,实现图书管理工作系统化,规范化和自动化,为图书管理提供便利。同时是学习完《面向对象程序设计》课程后进行一
2、次全方面综合练习。有利于加深对面向对象程序设计中基础理论和基础知识了解,培养了实践能力,促进理论和实践结合。 二.设计要求: 1.图书信息包含:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功效: 2.系统以菜单方法工作v 3.图书信息录入功效(图书信息用文件保留)--输入v 4.图书信息浏览功效--输出v 5.查询和排序功效:(最少一个查询方法)--算法v 6.按书名查询 7.按作者名查询 8.图书信息删除和修改(可选项)v 三.概要设计 1、类设计 ①、Book类设计(内部函数步骤图): Cl
3、ass Book
获取图书类型
获取书名
获取图书编号
获取删除标志
设置书名
设置类型
删除图书
增加图书
输出图书
②、BDatabase类设计:
Class BDatabase
图书统计
删除全部统计
增加统计
查找图书统计
图书库(函数)
③、主函数步骤图:
4多态实现
class People
{
public:
virtual void card(){cout<<"card people"< 4、virtual void card(){cout<<"card student"< 5、ual void card(){cout<<"card people"< 6、/增加标识
char number[StrNum]; //编号
char bookname[StrNum]; //书名
char bookkind[Type]; //图书类型
public:
Book(){}
char getkind() //获取图书类型
{
return bookkind[Type];
}
char getname() //获取书 7、名
{
return bookname[StrNum];
}
int getnum() //获取图书编号
{
return num;
}
int getlab() //获取删除标识
{
return lab;
}
void setname(char na[]) //设置书名
{
strcpy(bookname,na);
}
void setkind(char kin[]) 8、 //设置类型
{
strcpy(bookkind,kin);
}
void delbook() //删除图书
{
lab=1;
}
void addbook(int n,char *na,char *kin) //增加图书
{
lab=0;
num=n;
strcpy(bookname,na);
strcpy(bookkind,kin);
}
void disp() //输出图书
{
cout.flags (ios::left) 9、 //设置对齐标志位为左
cout< 10、 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,char *kin) //增加图书
11、 {
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].getlab()==0)
{
return &book[i];
}
return N 12、ULL;
}
void disp() //图书库
{
for (int i=0;i<=top;i++)
if (book[i].getlab()==0)
book[i].disp();
}
~BDatabase() //析构函数,将book[]写到book.txt文件中,实现文本写入
{
fstream file("book.txt",ios::out);
for (int i=0;i<=top;i++)
if (book[i].getla 13、b()==0)
file.write((char *)&book[i],sizeof(book[i]));
file.close();
}
};
void main()
{
BDatabase BookDB;
char choice;
char bname[40];
char bkind[40];
char newType[20];
int bookid;
Book *b;
while (choice!='0')
{
cout<<"\t****************************** 14、\n";
cout<<" \n\n";
cout<<"\t\t\t图 书 管 理 系 统\n\n";
cout<<"\t\t\t1 新增图书统计\n";
cout<<"\t\t\t2 更改图书统计\n";
cout<<"\t\t\t3 删除图书统计\n";
cout<<"\t\t\t4 查找图书统计\n";
cout<<"\t\t\t5 15、 显示图书统计\n";
cout<<"\t\t\t6 清空全部统计(慎用)\n";
cout<<"\t\t\t0 退出系统\n";
cout<<"\t\t\t7 人员\n";
cout<<" \n\n";
cout<<"\t******************************************************************\n";
cout<<"请选择(1,2,3,4,5,6,0):";
cin>>choice 16、
switch (choice)
{
case '1':
cout<<"输入图书编号:"< 17、ndl;
cin>>bookid;
b=BookDB.query(bookid);
if(b==NULL)
{
cout<<"该图书不存在"< 18、 cout<<"读入图书编号:"< 19、<"已成功删除该书统计!"< 20、'5':
cout<<"图书编号 图书名称 图书类型 \n";
b=BookDB.query(bookid);
b->disp();
break;
case '6':
char tg2;
cout<<"确定要清空全部统计吗?(Y/N)"< 21、endl;
break;
}
case '0':
break;
default:cout<<"输入错误,请从新输入(数字为0~6):";
case'7':
Student student;
People *ppeople=&student;
People &ref=student;
ppeople->card();
ref.card();
break;
}
}
}
五.用户使用说明
本系统实现了图书管理系统经典功效,包含查询全部统计信息,添加查找等功效,基础符合设计要求,利用类封装实现了一定安全性,函数实现和调用在主函数中实现。
但在统计查询上仍有缺点,有待于完善。
六、试验心得:
1、经过试验加深了对c++了解,在程序设计上提升了自己动手能力,在实践中增强了自己编程水平。
2、不过因为自己独立完成且能力有限,还有部分功效未能完善,比如对书名,编号排序等等,这些不足全部是有待逐步完善方面。
3、而且经过这次课程设计,我培养了自己对C++编程爱好,编程能力也有所提升,但仍存在很多不足,不能独自写出功效很齐全代码,写代码要参考很多资料,所以以后应培养自己独立写代码能力。






