當前位置:編程學習大全網 - 編程語言 - 各位程序設計高手請幫幫忙

各位程序設計高手請幫幫忙

/*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;

}

  • 上一篇:2022自動化專業就業方向多嗎 未來的發展怎麽樣
  • 下一篇:PHP開發自學難嗎,PHP自學要多長時間?
  • copyright 2024編程學習大全網