برنامه کتابخانه
جمعه 29 شهریور 1392 7:53 AMقبلا چند تا سورس مدیریت کتابخانه دیگه هم ارسال کرده بودم ولی این رو هم براتون آماده کردم شاید استاد ها به یکی بودن کد هاتون گیر بدن یا علاقه مندان بخوان که با سبک های مختلف برنامه نویسی به زبان سی آشنا بشن آخه هر کسی یه روش مخصوص خودش رو داره.
#include <iostream>
#include <conio>
#include <fstream>
#include <algorithm>
#include <stdio>
#include <stdlib>
# define esc 27
#define enter 13
#define up 72
#define down 80
#define tab 9
class library
{
public:
struct book
{
char name[20];
char writer[20];
char date[15];
char publisher[20];
char subject[20];
int id,price;
}book1,booktemp;
int menu();
char addmenu(int *,char *);
void add();
void searchmenu(int *,char *);
void search();
void show(int*,char*,char *);
void deletmenu(char *);
void delet();
}book;
//***********************main***************************************************
int main()
{
while(1)
{
window(1,1,80,25);
textbackground(0);
textcolor(15);
clrscr();
gotoxy(29,3);
cprintf("WELCOM TO MY LIBRARY");
gotoxy(55,23);
cprintf("*** SPRING OF 1387 **");
int select=book.menu();
switch(select)
{
case 1:book.add();break;
case 2:book.search();break;
case 3:book.delet();
case 4:
cout<<"\a";
window(10,5,70,20);
textbackground(1);
textcolor(15);
clrscr();
gotoxy(15,7);
cprintf("ARE YOU SURE (y/n)?");
char ex=getch();
if(ex==13||ex==121||ex==89)
return 0;
}
}
return 0;
}
//******************************functions***************************************
int library::menu()
{
char item[4][20]={
"1->Insert","2->Search","3->Delet","4->Exit"},key;
int i=0,j=0;
window(10,5,70,20);
textbackground(3);
clrscr();
window(1,1,25,80);
while(1)
{
for(i=0;i<4;i++)
{
textbackground(3);
textcolor(14);
if(i==j)
{
textbackground(1);
textcolor(15);
}
gotoxy(2,2+(2*i));
cprintf("%s",item[i]);
}
gotoxy(2,2+(2*j));
key=getch();
switch(key)
{
case 49:j=0;break;
case 50:j=1;break;
case 51:j=2;break;
case 52:j=3;break;
case up:if(j==0)j=3;else j--;break;
case down:if(j==3)j=0;else j++;break;
case tab:if(j==3)j=0;else j++;break;
case enter:break;
case esc:return 4;
}
if(key==13)break;
}
return j+1;
}
//*****************************************
char library::addmenu(int *j,char *key)
{
char add[7][20]={
"Name :","Writer :","Date publisher :","Price :","publisher :","Subject :","Code:"};
int i,flag=0;
window(21,5,50,20);
textbackground(1);
clrscr();
while(1)
{
for(i=0;i<7;i++)
{
textbackground(1);
textcolor(14);
if(i==*j)
{
textbackground(3);
textcolor(15);
}
gotoxy(2,2+(2*i));
cprintf("%s",add[i]);
}
gotoxy(2,2+(2*(*j)));
*key=getch();
switch(*key)
{
case up:if(*j==0)*j=6;else (*j)--;break;
case down:if(*j==6)*j=0;else (*j)++;break;
case tab:if(*j==6)*j=0;else (*j)++;break;
case enter:break;
case esc:break;
}
if(*key==13||*key==27)break;
}
}
//****************************************************
void library::add()
{
char add[7][20]={
"Name :","Writer :","Date publisher :","Price :","publisher :","Subject :","Code:"},key;
int j=0;
char ch=addmenu(&j,&key);
ofstream file1("C:\\library.dat",ios::app);
if(!file1) cout<<"\ncan not open file";
if(ch==13)
{
gotoxy(2,2+(2*j));textbackground(1);textcolor(14);cprintf("%s",add[j]);
gotoxy(2,2);textbackground(3);textcolor(15);cprintf("%s",add[0]);
gotoxy(8,2);cin.get(book1.name,20);cin.get();
gotoxy(10,4);cin.get(book1.writer,20);cin.get();
gotoxy(18,6);cin.get(book1.date,20);cin.get();
gotoxy(9,8);cin>>book1.price;cin.get();
gotoxy(13,10);cin.get(book1.publisher,20);cin.get();
gotoxy(11,12);cin.get(book1.subject,20);cin.get();
gotoxy(7,14);cin>>book1.id;cin.get();
file1.write((char*)&book1,sizeof(struct book));
file1.close();
}
}
//********************************************************
void library::searchmenu(int*j,char*key)
{
char add[3][20]={"Name :","subject :","Code:"};
int i,flag=0;
window(21,7,50,15);
textbackground(1);
clrscr();
while(1)
{
for(i=0;i<3;i++)
{
textbackground(1);
textcolor(14);
if(i==*j)
{
textbackground(3);
textcolor(15);
}
gotoxy(2,2+(2*i));
cprintf("%s",add[i]);
}
gotoxy(2,2+(2*(*j)));
*key=getch();
switch(*key)
{
case up:if(*j==0)*j=2;else (*j)--;break;
case down:if(*j==2)*j=0;else (*j)++;break;
case tab:if(*j==2)*j=0;else (*j)++;break;
case enter:break;
case esc:break;
}
if(*key==13||*key==27)break;
}
}
//*************************************************************
void library::search ()
{
char add[3][20]={"Name :","subject :","Code:"},ch,n[20];
int i,j,cod;
searchmenu(&j,&ch);
if(ch!=27)
{
switch(j)
{
case 0:gotoxy(8,2);cin.get(n,20);cin.get();i=1;break;
case 1:gotoxy(11,4);cin.get(n,20);cin.get();i=2;break;
case 2:gotoxy(7,6);cin.get(n,20);cin.get();i=3;break;
}
}
int x=atol(n);
show(&x,n,&ch);
}
//*************************************************************
void library::show(int *x,char*n,char *ch)
{
char item[7][20]={
"Name :",
"Writer :",
"Date publisher :",
"Price :",
"publisher :",
"Subject :",
"Code:"
};
if(*ch!=27)
{
ifstream file1("C:\\library.dat",ios::out);
if(!file1) cout<<"\ncan not open file";
int j=0;
if((*x)>0) while(file1.read((char*)&book1,sizeof(struct book)))
if(*x==book1.id)
{
j=1;
booktemp=book1;
break;
}
if(*x==0) while(file1.read((char*)&book1,sizeof(struct book)))
if(strcmp(book1.name,n)==0||strcmp(book1.subject,n)==0)
{
j=1;
booktemp=book1;
break;
}
file1.close();
window(10,5,70,20);
textbackground(6);
clrscr();
if(j==0)
{
textcolor(1);
gotoxy(6,7);
cprintf("!!! NOT FOUND THIS BOOK IN THE LIBRARY !!!");
gotoxy(15,10);
cprintf("PRESS ANY KEY TO COMTINUE :");
}
else
{
for(int i=0;i<7;i++)
{
textcolor(1);
gotoxy(2,(i+1)*2);
cprintf("%s",item[i]);
}
gotoxy(8,2);cprintf("%s",book1.name);
gotoxy(10,4);cprintf("%s",book1.writer);
gotoxy(18,6);cprintf("%s",book1.date);
gotoxy(9,8);cout<<book1.price;
gotoxy(13,10);cprintf("%s",book1.publisher);
gotoxy(11,12);cprintf("%s",book1.subject);
gotoxy(7,14);cout<<book1.id;
}
getch();
}
}
//**********************************************
void library::deletmenu(char *key)
{
window(20,9,35,11);
textbackground(1);
textcolor(14);
clrscr();
textcolor(15);
textbackground(3);
gotoxy(2,2);cprintf("Book code :");
gotoxy(2,2);
*key=getch();
}
//********************************
void library::delet()
{
char add[7][20]={
"Name :",
"Writer :",
"Date publisher :",
"Price :","publisher :",
"Subject :",
"Code:"};
char ch;
int code,i,f;
ofstream file2("C:\\temp.dat",ios::in);
if(!file2) cout<<"\ncan not open file";
ifstream file1("C:\\library.dat",ios::out);
if(!file1) cout<<"\ncan not open file";
deletmenu(&ch);
if(ch!=27)
{
gotoxy(13,2);
cin>>code;
}
while(file1.read((char*)&book1,sizeof(struct book)))
{
if(book1.id!=code)
file2.write((char*)&book1,sizeof(struct book));
if(book1.id==code)
{
window(10,5,70,22);
textbackground(1);
textcolor(15);
clrscr();
gotoxy(10,2);cprintf("PLEASE ENTER NEW INFORMATION OF BOOK");cin.get();
gotoxy(2,4);cprintf("%s",add[0]);cin.get(booktemp.name,20);cin.get();
gotoxy(2,6);cprintf("%s",add[1]);cin.get(booktemp.writer,20);cin.get();
gotoxy(2,8);cprintf("%s",add[2]);cin.get(booktemp.date,20);cin.get();
gotoxy(2,10);cprintf("%s",add[3]);cin>>booktemp.price;cin.get();
gotoxy(2,12);cprintf("%s",add[4]);cin.get(booktemp.publisher,20);cin.get();
gotoxy(2,14);cprintf("%s",add[5]);cin.get(booktemp.subject,20);cin.get();
gotoxy(2,16);cprintf("%s",add[6]);cin>>booktemp.id;cin.get();
file2.write((char*)&booktemp,sizeof(struct book));
}
}//end of while
file1.close();
file2.close();
remove("C:\\library.dat");
rename("C:\\temp.dat","C:\\library.dat");
}