drstrike
شنبه 19 تیر 1389, 21:34 عصر
سلام...
این برنامه اطلاعات یه کتابو میگیره و چاپ میکنه...
میخوام رو داده های ورودی کنترل داشته باشم. مثلا اگه واسه شابک کتاب کاراکتر غیر عددی وارد شد، نامعتبر اعلام شه و دوباره اونو از کاربر بخواد ( از تابع isdigit استفاده کردم، جواب نداد).
مشکل دوم:
از تابع del که استفاده می کنم، تاریخ رو صفر نمی کنه؛ ظاهرا تابع clr داخلش اجرا نمی شه!
سورس برنامه:
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define K 80
void menu()
{
clrscr();
cout<<" 1.Add 2.Delete 3.View 4.Exit ";
}
void error()
{
cout<<"\n\t\t\t\tInvalid Import!";
getch();
}
class date
{
private:
int y,m,d;
public:
date(int year=0,int month=0, int day=0):
y(year),m(month),d(day){}
void clr(){y=m=d=0;}
void showdate(){cout<<y<<"/"<<m<<"/"<<d<<endl;}
void setdate(){cout<<"Year: "; cin>>y; cout<<"Month: "; cin>>m;
cout<<"day: "; cin>>d;}
};
class book: public date
{
private:
date publish; long int id,page; char name[K],author[K];
public:
book(){strcpy(name,'\0'); strcpy(author,'\0'); page=0; id=0;}
void del()
{
strcpy(name,'\0');
strcpy(author,'\0');
page=0;
id=0;
clr();
}
void insert()
{
clrscr();
cout<<"Enter Book ID: "; cin>>id;
cout<<"\nEnter Book Name: "; cin>>name;
cout<<"\nEnter Book author: "; cin>>author;
cout<<"\nEnter Book pages: "; cin>>page;
cout<<"\nEnter Publish Date:\n"; publish.setdate();
void view()
{
clrscr();
cout<<" ID Name Author Pages Publish Date\n ";
cout<<"-----------------------------------------------------------------------------";
gotoxy(2,3); cout<<id; gotoxy(16,3); cout<<name; gotoxy(33,3);
cout<<author; gotoxy(54,3); cout<<page; gotoxy(68,3); publish.showdate();
cout<<"\n\t\t\t Press Any Key..."; getch();
}
};
int main()
{
book x; int n;
for(;;)
{
menu();
cout<<"\n\n\nEnter Number of Item ";
cin>>n;
switch(n)
{
case 1: x.insert(); break;
case 2: x.del(); break;
case 3: x.view(); break;
case 4: exit(0);
default: cout<<"\n\t\t\t\tInvalid Number!"; getch();
}
}//end of for
getch();
return 0;
}
این برنامه اطلاعات یه کتابو میگیره و چاپ میکنه...
میخوام رو داده های ورودی کنترل داشته باشم. مثلا اگه واسه شابک کتاب کاراکتر غیر عددی وارد شد، نامعتبر اعلام شه و دوباره اونو از کاربر بخواد ( از تابع isdigit استفاده کردم، جواب نداد).
مشکل دوم:
از تابع del که استفاده می کنم، تاریخ رو صفر نمی کنه؛ ظاهرا تابع clr داخلش اجرا نمی شه!
سورس برنامه:
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define K 80
void menu()
{
clrscr();
cout<<" 1.Add 2.Delete 3.View 4.Exit ";
}
void error()
{
cout<<"\n\t\t\t\tInvalid Import!";
getch();
}
class date
{
private:
int y,m,d;
public:
date(int year=0,int month=0, int day=0):
y(year),m(month),d(day){}
void clr(){y=m=d=0;}
void showdate(){cout<<y<<"/"<<m<<"/"<<d<<endl;}
void setdate(){cout<<"Year: "; cin>>y; cout<<"Month: "; cin>>m;
cout<<"day: "; cin>>d;}
};
class book: public date
{
private:
date publish; long int id,page; char name[K],author[K];
public:
book(){strcpy(name,'\0'); strcpy(author,'\0'); page=0; id=0;}
void del()
{
strcpy(name,'\0');
strcpy(author,'\0');
page=0;
id=0;
clr();
}
void insert()
{
clrscr();
cout<<"Enter Book ID: "; cin>>id;
cout<<"\nEnter Book Name: "; cin>>name;
cout<<"\nEnter Book author: "; cin>>author;
cout<<"\nEnter Book pages: "; cin>>page;
cout<<"\nEnter Publish Date:\n"; publish.setdate();
void view()
{
clrscr();
cout<<" ID Name Author Pages Publish Date\n ";
cout<<"-----------------------------------------------------------------------------";
gotoxy(2,3); cout<<id; gotoxy(16,3); cout<<name; gotoxy(33,3);
cout<<author; gotoxy(54,3); cout<<page; gotoxy(68,3); publish.showdate();
cout<<"\n\t\t\t Press Any Key..."; getch();
}
};
int main()
{
book x; int n;
for(;;)
{
menu();
cout<<"\n\n\nEnter Number of Item ";
cin>>n;
switch(n)
{
case 1: x.insert(); break;
case 2: x.del(); break;
case 3: x.view(); break;
case 4: exit(0);
default: cout<<"\n\t\t\t\tInvalid Number!"; getch();
}
}//end of for
getch();
return 0;
}