求C++代码!!大神帮助啊!!! 关于图书管理系统的!!

C++中 根据输入的书名删除该图书信息的代码 急需 谢谢!!!
该书的信息保存在一个《书籍.txt》中

第1个回答  2015-04-20
// book.cpp : 定义控制台应用程序的入口点。
//

#include "book.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
#include<fstream>
using namespace std;

void gotoxy(int x,int y) // 列x: 0~79 行y: 0~24
{
HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen={x,y};
SetConsoleCursorPosition(hConsole,coordScreen);
return;
}

template <typename T>
void show_data(int x, int y, T data)
{
gotoxy(x,y);
cout<<data;
}
template <typename T>
void input_data(int x, int y, char prompt[], T & data)
{
gotoxy(x,y);
cout<<prompt;
cin>>data;
}

int show_main_menu() // 显示主菜单并选择
{
char ch;
while (1)
{
system("cls");
show_data(4,1,"┌────────────────────────────┐");
show_data(4,2,"│ │");
show_data(4,3,"│ 图 书 管 理 │");
show_data(4,4,"│ │");
show_data(4,5,"└────────────────────────────┘");
show_data(20, 8, "1 ---- 增加图书信息 ");
show_data(20,10, "2 ---- 修改图书信息 ");
show_data(20,12, "3 ---- 删除图书信息 ");
show_data(20,14, "4 ---- 浏览图书信息 ");
show_data(20,16, "0 ---- 退 出 ");
show_data(20,18, "请选择: ");
ch=getche();
if (ch>='0' && ch<='4')
break;
}
return ch-48;
}

int main( )
{ int selected = 0;
int n=0;
Book book[MAX_BOOK];
load_data_from_file(book,n);

while (1)
{
selected = show_main_menu();
switch(selected)
{
case 1: add_book(book, n); break;
case 2: update_book(book,n); break;
case 3: delete_book(book,n); break;
case 4: view_book(book, n); break;
case 0: break;
};
if (selected==0)
{
show_data(20,20,"退出图书管理,谢谢!\n");
break;
}
}
save_data_to_file(book,n);
return 0;
}

void add_book(Book book[], int & n) // 新增图书
{
Book bk;
while (1)
{
system("cls");
input_data(4, 2,"图书编号(输入0时结束): ", bk.book_no);
if (strcmp("0",bk.book_no)==0)
break;
input_data(4, 4,"图书名称: ", bk.book_name);
input_data(4, 6,"作 者: ", bk.author);
input_data(4, 8,"出 版 社: ", bk.publisher);
input_data(4, 10,"ISBN : ", bk.ISBN);
input_data(4, 12,"图书价格: ", bk.price);
input_data(4, 14,"总 页 数: ", bk.pages);
char yn;
input_data(4, 16,"是否保存(y/n?): ", yn);
if ('y'==yn || 'Y'==yn)
{
book[n]=bk;
n++;
}
}
}

void update_book(Book book[], int & n) //修改图书
{ Book bp;
int i,j,k,a;
char p;
while (1)
{
system("cls");
a=0;
input_data(4, 2,"请输入要修改图书的编号(输入0时结束): ", bp.book_no);
if (strcmp("0",bp.book_no)==0)
break;
for(i=0;i<n;i++)
{if(strcmp(book[i].book_no,bp.book_no)==0)
{bp=book[i];a=1;break;}
}
if(a==0)
{show_data(4, 4,"查无此书 ");system("pause");}
else
{
show_data(2, 4,"1---图书编号:");
show_data(2,6,"2---图书名称:");
show_data(2,8,"3---作者:");
show_data(2,10,"4---出版社:");
show_data(2, 12,"5---ISBN:");
show_data(2, 14,"6---图书价格:");
show_data(2, 16,"7---总 页 数:");
show_data(2, 18,"0---修改结束");

show_data(16,4,bp.book_no);
show_data(16,6,bp.book_name);
show_data(16,8,bp.author);
show_data(16,10,bp.publisher);
show_data(16,12,bp.ISBN);
show_data(16,14,bp.price);
show_data(16,16,bp.pages);
for(j=0;j<15;j++)
{show_data(2, 20,"请输入修改项前的序号 " );
p=getche();
k=p-48;
if (k>=1 && k<=7)
{switch (k)
{case 1 :input_data(38, 4,"", bp.book_no);break;
case 2 :input_data(38, 6,"", bp.book_name);break;
case 3 :input_data(38, 8,"", bp.author);break;
case 4 :input_data(38, 10,"", bp.publisher);break;
case 5 :input_data(38, 12,"", bp.ISBN);break;
case 6 :input_data(38, 14,"", bp.price);break;
case 7 :input_data(38, 16,"", bp.pages);break;
}
}
if(k==0) break;
}
char yn;
input_data(4, 22,"是否保存(y/n?): ", yn);
if ('y'==yn || 'Y'==yn)book[i]=bp;
}
}
}

void delete_book(Book book[], int & n) //删除图书
{
Book bq;
int i,j;
while (1)
{
system("cls");
input_data(4, 2,"请输入要删除图书的编号(输入0时结束): ", bq.book_no);
if (strcmp("0",bq.book_no)==0)
break;
for(i=0;i<n;i++)
{if(strcmp(book[i].book_no,bq.book_no)==0){j=i; break;}}
if(i==n)
{show_data(4, 4,"查无此书 ");system("pause");}
else
{
show_data(1, 4,"图书编号:");
show_data(1,6,"图书名称:");
show_data(1,8,"作者:");
show_data(1,10,"出版社:");
show_data(1, 12,"ISBN:");
show_data(1, 14,"图书价格:");
show_data(1, 16,"总 页 数:");
show_data(10,4,book[j].book_no);
show_data(10,6,book[j].book_name);
show_data(10,8,book[j].author);
show_data(10,10,book[j].publisher);
show_data(10,12,book[j].ISBN);
show_data(10,14,book[j].price);
show_data(10,16,book[j].pages);
char yn;
input_data(4, 18,"是否删除(y/n?): ", yn);
if ('y'==yn || 'Y'==yn)
{for(i=0;i<=n-j;i++)
book[i+j]=book[i+j+1] ;
n--;}
}
}
}

void view_book(Book book[], int n) // 浏览所有图书信息
{
int i , row;
system("cls");
if (n==0)
{
show_data(10,10,"无图书信息,退出!");
system("pause");
return;
}
row=3;
for (i=0; i<n; i++)
{
if (row==3)
{ system("cls");
show_data(0, 1,"图书编号");
show_data(12,1,"图书名称");
show_data(34,1,"作者");
show_data(56,1,"出版社");
show_data(0,2,"---------------------------------------------------------------------");
}

show_data(0, row, book[i].book_no);
show_data(12,row,book[i].book_name);
show_data(34,row,book[i].author);
show_data(56,row,book[i].publisher);
row++;
if(row>=20 || i==n-1)
{
show_data(5,row+1,"按任意键继续");
getche();
row=3;
}
}
}

void load_data_from_file(Book book[], int &n) //从磁盘"book.dat"导入数据
{ int i;
ifstream infile("book.dat",ios::in);
infile>>n;
for(i=0;i<n;i++)
infile>>book[i].book_no>>book[i].book_name>>book[i].author>>book[i].publisher>>book[i].ISBN>>book[i].price>>book[i].pages;
infile.close();
}

void save_data_to_file(Book book[], int n) //在磁盘"book.dat"储存数据
{int i;
ofstream outfile("book.dat");
if(!outfile)
{cerr<<"open book.dat reeor"<<endl;
exit(1);
}
outfile<<n<<endl;
for(i=0;i<n;i++)
outfile<<book[i].book_no<<" "<<book[i].book_name<<" "<<book[i].author<<" "
<<book[i].publisher<<" "<<book[i].ISBN<<" "<<book[i].price<<" "<<book[i].pages<<endl;
outfile.close();
}

这个是我的代码,删除图书部分只需把比较内容由图书编号改为图书名称就可以了追问

呜呜 真的很感谢

呜呜 真的很感谢

本回答被提问者和网友采纳
相似回答