當前位置:編程學習大全網 - 編程語言 - 可不可以用c++做壹個自己的編程軟件

可不可以用c++做壹個自己的編程軟件

//main()

#ifndef LIBRARY_H

#include<iostream>

#include<string>

#include<iomanip>

#include <fstream>

#include"book.h"

#define MAXSIZE 100 //圖書館最大存書數

using namespace std;

class Library

{

private:

Book Books[MAXSIZE];

int num; //當前圖書個數

public:

Library();

~Library();

int In_Book(Book c); //插入圖書

int Out_BookN(char *b);//刪除圖書

void Show_Book(); //顯示圖書館內所有的書

void Change_Book(int b,Book B); //修改圖書

void BookSort(); //按書號從大到小排序

int Seach_BookNo(char *b); //按書號查找

int Seach_BookName(char *s); //按書名查找

int Seach_BookWriter(char *s); //按作者查找

int Seach_Bookmoney(int a,int b); //按價格區間查找

void dataSave(); //存儲數據

void dataRead(); //讀取數據

};

Library::Library()

{

dataRead();

}

Library::~Library()

{

dataSave();

}

int Library::In_Book(Book c)

{

if(num>MAXSIZE-1)

{ cout<<"圖書館已滿!";

return 0;

}

if(Seach_BookNo(c.GetNo())==-1)

{ num++;

Books[num]=c;

dataSave();

return 1;}

else

{

cout<<"該書號已存在!"<<endl;

return 0;

}

}

int Library::Out_BookN(char *b)

{

int i,j;

i=Seach_BookNo(b);

if(i!=-1)

{

for(j=i;j<=num;j++)

Books[j]=Books[j+1];

num--;

dataSave();

return 1;

}

else

{cout<<"沒有該書!"<<endl;

return 0;}

}

void Library::Show_Book()

{

int i;

for(i=0;i<=num;i++)

Books[i].Print();

cout<<endl;

}

int Library::Seach_BookNo(char *b)

{

int i;

for(i=0;i<=num;i++)

if(Books[i].ifBookNo(b))

{Books[i].Print();

return i;}

return -1;

}

int Library::Seach_BookName(char* s)

{

int i,count=0;

for(i=0;i<=num;i++)

if(Books[i].ifBName(s))

{Books[i].Print();

count++;

}

return count;

}

int Library::Seach_BookWriter(char* s)

{

int i,count=0;

for(i=0;i<=num;i++)

if(Books[i].ifWriter(s))

{Books[i].Print();

count++;

}

return count;

}

int Library::Seach_Bookmoney(int a,int b)

{

int i,count=0;

for(i=0;i<=num;i++)

if(Books[i].ifmoney(a,b))

{Books[i].Print();

count++;

}

return count;

}

void Library::Change_Book(int b,Book B)

{

Books[b]=B;

dataSave();

}

void Library::dataSave() //存儲資料函數,將read[]寫入Book.dat文件中

{

fstream file("Book.dat",ios::out);

for (int i=0;i<=num;i++)

file.write((char *)&Books[i],sizeof(Books[i]));

file.close();

}

void Library::dataRead() //構造函數,將Book.dat讀到read[]中

{

Book s;

num=-1;

fstream file("Book.dat",ios::in);

while (1)

{

file.read((char *)&s,sizeof(s));

if (!file) break;

num++;

Books[num]=s;

}

file.close();

}

void Library::BookSort() //冒泡法排序,從小到大

{

int i,j;

Book B;

for(i=0;i<=num;i++)

for(j=0;j<=num-i-1;j++)

if(strcmp(Books[j].GetNo(),Books[j+1].GetNo())>0)

{

B=Books[j];

Books[j]=Books[j+1];

Books[j+1]=B;

}

dataSave();

}

#endif

//book.h

#ifndef BOOK_H

#include<iostream>

#include<string>

#include<iomanip>

#include <fstream>

using namespace std;

class Book

{

private:

char Bname[20]; //書名

char Writer[20]; //作者

char BookNo[7]; //書號

float money; //價格

public:

Book(char *N="*****",char *W="***",char *BN="000000",float M=0.00);

void Print(); //顯示

int ifBookNo(char *b); //判斷書號是否與b相同

char* GetNo(); //獲取書號

int ifBName(char* s); //判斷書名是否與s相同

int ifWriter(char* s); //判斷作者是否與s相同

int ifmoney(int a,int b);//判斷價格是否在a和b之間

};

Book::Book(char *N,char *W,char *BN,float M)

{

strcpy(Bname,N);

strcpy(Writer,W);

strcpy(BookNo,BN);

money=M;

}

void Book::Print()

{

cout<<BookNo<<setw(10)<<"書名:"<<Bname<<setw(5)<<"作者:"<<Writer<<"價格:"<<money<<endl;

}

int Book::ifBookNo(char* b)

{

if(strcmp(BookNo,b)==0)

return 1;

else

return 0;

}

char* Book::GetNo()

{

return BookNo;

}

int Book::ifBName(char* s)

{

if(strcmp(Bname,s)==0)

return 1;

else return 0;

}

int Book::ifWriter(char* s)

{

if(strcmp(Writer,s)==0)

return 1;

else return 0;

}

int Book::ifmoney(int a,int b)

{

if(money>=a&&money<=b)

return 1;

else return 0;

}

#endif

//library.h

#ifndef LIBRARY_H

#include<iostream>

#include<string>

#include<iomanip>

#include <fstream>

#include"book.h"

#define MAXSIZE 100 //圖書館最大存書數

using namespace std;

class Library

{

private:

Book Books[MAXSIZE];

int num; //當前圖書個數

public:

Library();

~Library();

int In_Book(Book c); //插入圖書

int Out_BookN(char *b);//刪除圖書

void Show_Book(); //顯示圖書館內所有的書

void Change_Book(int b,Book B); //修改圖書

void BookSort(); //按書號從大到小排序

int Seach_BookNo(char *b); //按書號查找

int Seach_BookName(char *s); //按書名查找

int Seach_BookWriter(char *s); //按作者查找

int Seach_Bookmoney(int a,int b); //按價格區間查找

void dataSave(); //存儲數據

void dataRead(); //讀取數據

};

Library::Library()

{

dataRead();

}

Library::~Library()

{

dataSave();

}

int Library::In_Book(Book c)

{

if(num>MAXSIZE-1)

{ cout<<"圖書館已滿!";

return 0;

}

if(Seach_BookNo(c.GetNo())==-1)

{ num++;

Books[num]=c;

dataSave();

return 1;}

else

{

cout<<"該書號已存在!"<<endl;

return 0;

}

}

int Library::Out_BookN(char *b)

{

int i,j;

i=Seach_BookNo(b);

if(i!=-1)

{

for(j=i;j<=num;j++)

Books[j]=Books[j+1];

num--;

dataSave();

return 1;

}

else

{cout<<"沒有該書!"<<endl;

return 0;}

}

void Library::Show_Book()

{

int i;

for(i=0;i<=num;i++)

Books[i].Print();

cout<<endl;

}

int Library::Seach_BookNo(char *b)

{

int i;

for(i=0;i<=num;i++)

if(Books[i].ifBookNo(b))

{Books[i].Print();

return i;}

return -1;

}

int Library::Seach_BookName(char* s)

{

int i,count=0;

for(i=0;i<=num;i++)

if(Books[i].ifBName(s))

{Books[i].Print();

count++;

}

return count;

}

int Library::Seach_BookWriter(char* s)

{

int i,count=0;

for(i=0;i<=num;i++)

if(Books[i].ifWriter(s))

{Books[i].Print();

count++;

}

return count;

}

int Library::Seach_Bookmoney(int a,int b)

{

int i,count=0;

for(i=0;i<=num;i++)

if(Books[i].ifmoney(a,b))

{Books[i].Print();

count++;

}

return count;

}

void Library::Change_Book(int b,Book B)

{

Books[b]=B;

dataSave();

}

void Library::dataSave() //存儲資料函數,將read[]寫入Book.dat文件中

{

fstream file("Book.dat",ios::out);

for (int i=0;i<=num;i++)

file.write((char *)&Books[i],sizeof(Books[i]));

file.close();

}

void Library::dataRead() //構造函數,將Book.dat讀到read[]中

{

Book s;

num=-1;

fstream file("Book.dat",ios::in);

while (1)

{

file.read((char *)&s,sizeof(s));

if (!file) break;

num++;

Books[num]=s;

}

file.close();

}

void Library::BookSort() //冒泡法排序,從小到大

{

int i,j;

Book B;

for(i=0;i<=num;i++)

for(j=0;j<=num-i-1;j++)

if(strcmp(Books[j].GetNo(),Books[j+1].GetNo())>0)

{

B=Books[j];

Books[j]=Books[j+1];

Books[j+1]=B;

}

dataSave();

}

#endif

  • 上一篇:什麽叫有,或者沒有?
  • 下一篇:全國計算機等級考試二級C語言程序設計要求
  • copyright 2024編程學習大全網