C++课程设计 编写个图书管理系统

图书信息管理
设计要求实现如下功能:
1. 添加
系统将提示用户输入新添加图书信息,插入在链表中。图书信息数据包括书号、书名、作者名、分类号、出版单位、出版时间、价格等。
2. 删除
首先由用户输入要删除的书号,然后调用删除函数,删除该书的信息。
3. 查找
可由用户输入要查找的书号、书名、作者名,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的图书信息。
4. 修改
首先由用户输入要修改的书号,然后系统用修改函数查找,显示该图书信息,然后系统提示用户输入需要修改的项目和新的信息。
5.保存
将图书信息保存在磁盘文件BOOK.dbf 中。
满足上述要求就可以了...1月24号用
可以加QQ569738996 谢谢
visual 6.0

第1个回答  2008-02-05
//以前做的一个,参考哈吧

/*c++程序设计:书店销售管理软件:
本系统使用计算机对书店的销售进行管理,该书店拥有最多图书不超过200本
,每本图书的信息包括:书名、书号(出版序列号)、编号、出版社、作者、定价、库存量、出版日期等
现要求用菜单选择并完成下述的功能:
(1)增加新图书,即将图书的全部信息输入到文件中;
(2)根据销售情况和采购情况实时修改图书文件中的库存量;
(3)根据当天日期修改图书价格:1年前出版的图书打九折,两年前出版的打八折,
三年前出版的全部打七折
(4)根据书名查询某本图书的信息
(5)分别打印根据库存量和出版日期排序的结果*/
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
class Date //定义日期类
{
public:
void set_date(); //设置日期

void show_date(); //显示日期
int year;
int mouth;
int day;
};

void Date:: set_date()
{
cout<<"输入year mouth day:";
cin>>year>>mouth>>day;
bool teap=true;
while(teap==true)
{
if(year>2020||mouth>12||mouth<0||day<0||day>31)//默认输入年必须在2020年以前
{
cout<<"\t您的输入有错误!请重新输入!\n";
cout<<"输入year mouth day:";
cin>>year>>mouth>>day;
}
else teap=false;
}
}

void Date:: show_date()
{
cout<<year<<'/'<<mouth<<'/'<<day;
}

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

class books //定义图书类

{
public:
void get_books(); //录入图书信息
void display(); //显示图书的信息
void display2(); //显示图书的信息
void f(books b); //用来交换图书信息,排序的时候用
void chang_price(Date dt); //根据当天日期修改图书价格
void chang_sum(); //修改图书文件中的库存量
void name_show(); //根据书名查询某本图书的信息
int sum; //库存量
Date date; //日期
string name;
private:

string num; // 书号
string serial_num; //编号
string pub_comp; //出版社
string Author; // 作者

float price;
};

books book[200];
int t; //定义全局变量t累计书的种类

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

void books::get_books() //录入图书信息,注意:以下录入时都是以回车结束的,若录入时候用到了空格,查询和修改时也要记得录入空格,否则会出错
{
cout<<"书名:";
cin>>name;
cout<<"\n书号(出版序列号):";
cin>>num;
cout<<"\n编号:";
cin>>serial_num;
cout<<"\n出版社:";
cin>>pub_comp;
cout<<"\n作者:";
cin>>Author;
cout<<"\n定价:";
cin>>price;
cout<<"\n库存量:";
cin>>sum;
cout<<"\n出版日期:";
date.set_date();
}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

void books::display()//显示图书的信息
{
cout<<"书名"<<setw(10)<<"书号"<<setw(10)<<"编号"<<setw(10)<<"出版社"
<<setw(10)<<"作者"<<setw(10)<<"定价"<<setw(10)<<"库存量"<<setw(10)
<<"出版日期\n";
cout<<name<<setw(10)<<num<<setw(10)<<serial_num

<<setw(10)<<pub_comp<<setw(10)<<Author<<setw(10)<<price

<<setw(10)<<sum<<" ";
date.show_date();
cout<<endl;
}

void books::display2()//显示图书的信息
{
cout<<name<<setw(10)<<num<<setw(10)<<serial_num

<<setw(10)<<pub_comp<<setw(10)<<Author<<setw(10)<<price

<<setw(10)<<sum<<" ";
date.show_date();
cout<<endl;
}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
void books::f(books b)//用来交换图书信息,排序的时候用
{
string c;
int a;
float d;
a=sum;sum=b.sum;b.sum=a;
a=b.date.year;b.date.year=date.year ;date.year=a;
a=b.date.mouth;b.date.mouth=date.mouth ;date.mouth=a;
a=b.date.day;b.date.day=date.day ;date.day=a;
c=name;name=b.name;b.name=c;
c=num;num=b.num;b.num=c;
c=serial_num;serial_num=b.serial_num;b.serial_num=c;
c= pub_comp; pub_comp=b.pub_comp;b.pub_comp=c;
c=Author;Author=b.Author;b.Author=c;
d=price;price=b.price;b.price=d;

}

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

void books:: chang_price(Date dt)//根据当天日期修改图书价格,1年以360天算, 每个月以30天算
{

int days;
if(dt.mouth<date.mouth)
days=(dt.year-date.year)*360-(date.mouth-dt.mouth)*30+dt.day-date.day;
else
days=(dt.year-date.year)*360+(dt.mouth-date.mouth)*30+dt.day-date.day;
if(days<360)
;//图书没超过一年,什么也不做
else if(days<360*2)
price=price*0.9;//1年前出版的图书打九折
else if(days<360*3)
price=price*0.8;//两年前出版的打八折,
else
price=price*0.7;//三年前出版的全部打七折

}

void books::chang_sum()//修改图书文件中的库存量

{
int a,b;
cout<<endl<<name<<"原库存量:"<<sum<<endl;
cout<<"销售数量:";
cin>>a;
cout<<setw(10)<<"采购数量:";
cin>>b;
sum=sum+b-a;
cout<<endl<<name<<"现在库存量:"<<sum<<endl;
}

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

void get_in() // 主录入函数

{

int i=1;
char c;
cout<<"\t输入图书信息\n";
// book[t].get_books(); //录入图书信息

while(i!=0)
{
i++;
t=i;

book[i].get_books(); //录入图书信息

cout<<"要继续录入请按任意键,否则按n键退出录入!\n";
cin>>c;
if(c=='n'||c=='N')
i=0;

}
}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

void changprice()//根据当天日期修改图书价格,1年以360天算, 每个月以30天算
{
Date da;

cout<<"\t修改图书价格\n";

da.set_date();
int k=0;
string na;
cout<<"您要修改价格的书名是:";

cin>>na;
for(int i=0;i<t+1;i++)
{
if(book[i].name==na)
{
book[i].chang_price(da);
book[i].display();
}
else k++;
}
if(k==t)
{
k=0;
cout<<"\t没找到与你的输入对应的书名!\n";
}
int c=1;
char ch;
k=0;
while(c!=0)
{
cout<<"\t请按任意键继续修改,否则按n键退出!\n";
cin>>ch;

if(ch=='n'||ch=='N')
c=0;
else
{

da.set_date();

string na;
cout<<"您要修改价格的书名是:";

cin>>na;
for(int i=0;i<t+1;i++)
{
if(book[i].name==na)
{
book[i].chang_price(da);
book[i].display();
}
else k++;
}
if(k==t)
{
k=0;
cout<<"\t没找到与你的输入对应的书名!\n";
}
}
}

}

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

void changesum() //修改图书文件中的库存量
{
string na;
int k=0;
cout<<"\t修改图书文件中的库存量\n";
cout<<"您要修改库存量的书名是:";
cin>>na;
for(int i=1;i<t+1;i++)
{
if(book[i].name==na)
book[i].chang_sum();
else k++;
}

if(k==t)
{
k=0;
cout<<"\t没找到与你的输入对应的书名!\n";
}
k=0;
int c=1;
char ch;
while(c==1)
{
cout<<"\t请按任意键继续修改,否则按n键退出!\n";
cin>>ch;

if(ch=='n'||ch=='N')
c=-1;
else
{
cout<<"您要修改库存量的书名是:";
cin>>na;
for(i=1;i<t+1;i++)

{
if(book[i].name==na)
book[i].chang_sum();

else k++;
}

if(k==t)
{
k=0;
cout<<"\t没找到与你的输入对应的书名!\n";
}
}
}

}

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
void serchbook()//根据书名查询某本图书的信息
{
cout<<"\t根据书名查询某本图书的信息\n";
string nam;
int k=0;
cout<<"\t输入你要查询书的书名:";
cin>>nam;
for(int i=0;i<t+1;i++)
{
if(book[i].name ==nam)

book[i].display();
else k++;
}

if(k==t)
{
k=0;
cout<<"\t没找到与你的输入对应的书名!\n";
}
int c=1;
char ch;
while(c==1)
{
cout<<"\n\t请按任意键继续查询,否则按n键退出!\n";
cin>>ch;

if(ch=='n'||ch=='N')
c=-1;
else
{
cout<<"\t输入你要查询书的书名:";
cin>>nam;
for(int i=0;i<t+1;i++)
{
if(book[i].name ==nam)

book[i].display();
else k++;
}

if(k==t)
{
k=0;
cout<<"\t没找到与你的输入对应的书名!\n";
}
}
}
}

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
void oder() //分别打印根据库存量和出版日期排序的结果
{

cout<<"\t1.根据库存量和出版日期排序的结果\n";
for(int i=1;i<t;i++) // 根据库存量
for(int j=1;j<t-i;j++)
if(book[j].sum<book[j+1].sum)
book[j].f (book[j+1]);

cout<<"\n\t根据库存量排序的结果\n";
cout<<"\n________________________________________________________________________\n";
cout<<"书名"<<setw(10)<<"书号"<<setw(10)<<"编号"<<setw(10)<<"出版社"
<<setw(10)<<"作者"<<setw(10)<<"定价"<<setw(10)<<"库存量"<<setw(10)
<<"出版日期\n";
for(int j=1;j<t+1;j++)
book[j].display2();
cout<<"\n________________________________________________________________________\n";

for(i=1;i<t;i++) // 根据出版日期排序的结果
for(int j=1;j<t-i;j++)
{
if(book[j].date .year >book[j+1].date .year )
book[j].f (book[j+1]);
if((book[j].date .year ==book[j+1].date .year )&&
(book[j].date .mouth >book[j+1].date .mouth))
book[j].f (book[j+1]);

if((book[j].date .year ==book[j+1].date .year )&&

(book[j].date .mouth ==book[j+1].date .mouth)&&

(book[j].date.day >book[j+1].date.day))
book[j].f (book[j+1]);
}

cout<<"\n\t2.根据出版日期排序的结果\n";
cout<<"\n________________________________________________________________________\n";
cout<<"书名"<<setw(10)<<"书号"<<setw(10)<<"编号"<<setw(10)<<"出版社"
<<setw(10)<<"作者"<<setw(10)<<"定价"<<setw(10)<<"库存量"<<setw(10)
<<"出版日期\n";
for(j=1;j<t+1;j++)
book[j].display2();
cout<<"\n________________________________________________________________________\n";

}

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
int main()
{
int c;
bool tp=1;
while(tp==1)
{
cout<<"\t\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n"
<<"\t请选择数字操作 \n\n"
<<"\t1.增加新图书,即将图书的全部信息输入到文件中 \n\n"
<<"\t2.根据销售情况和采购情况实时修改图书文件中的库存量\n\n"
<<"\t3.根据当天日期修改图书价格"
<<"\n\t一年前出版的图书打九折,\n\n"
<<"\t 两年前出版的打八折, \n\n"
<<"\t 三年前出版的全部打七折 \n\n"

<<"\t4.根据书名查询某本图书的信息 \n\n"
<<"\t5.分别打印根据库存量和出版日期排序的结果 \n\n"
<<"\t6.退出. \n\n"
<<"\t\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n";
cin>>c;
cout<<"\n你选择了"<<c<<"操作!\n";

switch(c)
{
case 1: get_in();tp=1;break;
case 2: changesum();tp=1;break;
case 3: changprice();tp=1;break;
case 4: serchbook();tp=1;break;
case 5:oder();tp=1;break;
case 6:tp=0;cout<<"\t已推出所有操作!";break;
default: cout<<"\n\n\t错误选择!\n";tp=1;break;
}
}
return 0;
}本回答被网友采纳
相似回答