امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
کمک در مورد پروژه های زیر
نویسنده پیام
drstreet آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #1
کمک در مورد پروژه های زیر
دوستان من توضیح خط به خط این پروژه های زیرو میخوام برای استادم هیچی زبان سی بلد نیستم مرسی که درکم میکنید بچه ها 20 نمره داره...
این برنامه ی منو
کد:
/*
  dynamic menu with C++ version 1.01 ,updated on July - 9 -2002


  This program must be run under BC v3.0 or higher version

  */

#include<conio.h>
#include<dos.h>
#include<stdio.h>

#define TRUE        1
#define FALSE       0
#define OK      1
#define FAIL    0

#define ENT   0x000d
#define ESC   0x001b
#define UP    0x4800
#define DOWN  0x5000
#define LEFT  0x4b00
#define RIGHT 0x4d00


/*
  This menu system designed for CGA/EGA/VGA adapter,monochrom is not
supported

*/



class base{

public:

int  StrLen(char*);
void StrCopy(char*,char*);
int  StrCmp(char*,char*);
};
//----------------------------------------------------------------------
int base::StrLen(char *s)
{
int i;

    i=0;
    while(*s++)i++;
    return i;
}
//---------------------------------------------------------------------
void base::StrCopy(char *dest,char *src)
{
    while(*src)*dest++=*src++;
    *dest=*src;
}
//---------------------------------------------------------------------
int base::StrCmp(char *dest,char *src)
{
    do{
    if(*src++!=*dest++)return TRUE;
    }while(*src&&*dest);
    return FALSE;
}
//*********************************************************************
class screen:public base{

private:

unsigned char TextAttribute,current_x,current_y;

public:

unsigned int  last_pressed_key;

screen(void);
unsigned int GetKey(void);
void SetColor(char,char);
void SetTColor(char);
void SetBColor(char);
void SetVideoMode(char);
void CLS(void);
int  ReadChar(int,int);
void PutChar(int,int,char);
void PutString(int,int,char*);
void Locate(char,char);
void SetCursor(char,char);
void HideCursor(void);
void ShowCursor(void);
void Fill(char,char,char,char,char);
void Box(int,int,int,int,char*);
void SaveScreen(int,int,int,int,int*);
void LoadScreen(int,int,int,int,int*);

};
//--------------------------------------------------------------
screen::screen(void)
{
  TextAttribute=14;
  current_x=0;
  current_y=0;
}
//--------------------------------------------------------------
unsigned int screen::GetKey(void)
{
unsigned int key;

    if(!(key=getch()))key=getch()<<8;
    last_pressed_key=key;

return key;
}
//--------------------------------------------------------------
void screen::SetColor(char tcolor,char bcolor)
{
     TextAttribute=bcolor<<4|tcolor;
}
//--------------------------------------------------------------
void screen::SetTColor(char text)
{
     TextAttribute=(TextAttribute&0xf0)|text;
}
//--------------------------------------------------------------
void screen::SetBColor(char text)
{
     TextAttribute=(TextAttribute&0x0f)|text<<4;
}
//--------------------------------------------------------------
void screen::SetVideoMode(char mode)
{
  asm{
    mov    ah,0
    mov    al,mode
    int    0x10
     }
}
//--------------------------------------------------------------
void screen::CLS(void)
{
    SetVideoMode(3);
}
//--------------------------------------------------------------
int screen::ReadChar(int x, int y)
{

int attrib;

  asm{
    mov    ax,0xb800
    mov    es,ax
    mov    ax,y
    mov    bl,160
    mul     bl
    mov    bx,x
    shl    bx,1
    add    bx,ax
    mov    ax,es:[bx]
    mov     attrib,ax
     }
    return attrib;
}
//--------------------------------------------------------------
void WriteChar(int  x,int y ,int char_attrib)
{
  asm{
    mov    ax,0xb800
    mov    es,ax
    mov    ax,y
    mov    bl,160
    mul     bl
    mov    bx,x
    shl    bx,1
    add    bx,ax
    mov    cx,char_attrib
    mov    es:[bx],cx

  }
}
//--------------------------------------------------------------
void screen::Locate(char x,char y)
{
char xx,yy;
asm{
       mov  ah,2
       mov  bh,0
       mov  dl,x
       mov  dh,y
       int  0x10
       mov  xx,dl
       mov  yy,dh
     }
     current_x=xx;
     current_y=yy;
}
//--------------------------------------------------------------
void screen::PutChar(int x,int y,char chr)
{
    WriteChar(x,y,(unsigned char)chr|(TextAttribute<<8));
}
//--------------------------------------------------------------
void screen::PutString(int x,int y,char *s)
{
    while(*s)PutChar(x++,y,*s++);
    Locate(x,y);
}
//--------------------------------------------------------------
void screen::SetCursor(char start,char end)
{
  asm{
    mov    ah,1
    mov    ch,start
    mov    cl,end
    int     0x10
     }
}
//--------------------------------------------------------------
void screen::HideCursor(void)
{
    SetCursor(1,0);
}
//--------------------------------------------------------------
void screen::ShowCursor(void)
{
    SetCursor(4,5);
}
//--------------------------------------------------------------
void screen::Fill(char x1,char y1,char width,char height,char chr)
{
char i,j,x2,y2;

    x2=x1+width-1;
    y2=y1+height-1;

    for(j=y1;j<=y2;j++)
     for(i=x1;i<=x2;i++)
        PutChar(i,j,chr);
}
//--------------------------------------------------------------
void screen::Box(int x1,int y1,int width,int height,char *pattern)
{
int i,j,x2,y2;


    x2=x1+width-1;
    y2=y1+height-1;

    for(i=x1;i<x2;i++)
    {
       PutChar(i,y1,pattern[1]);
       PutChar(i,y2,pattern[5]);
    }
    for(j=y1;j<y2;j++)
    {
       PutChar(x1,j,pattern[7]);
       PutChar(x2,j,pattern[3]);
    }
    PutChar(x1,y1,pattern[0]);
    PutChar(x2,y1,pattern[2]);
    PutChar(x2,y2,pattern[4]);
    PutChar(x1,y2,pattern[6]);
}
//--------------------------------------------------------------
void screen::SaveScreen(int x1,int y1,int width,int height,int *buff)
{
int i,j,x2,y2;

    x2=x1+width-1;
    y2=y1+height-1;

    for(j=y1;j<=y2;j++)
      for(i=x1;i<=x2;i++)
          *buff++=ReadChar(i,j);
}
//--------------------------------------------------------------
void screen::LoadScreen(int x1,int y1,int width,int height,int *buff)
{
int i,j,x2,y2;

    x2=x1+width-1;
    y2=y1+height-1;

    for(j=y1;j<=y2;j++)
      for(i=x1;i<=x2;i++)
          WriteChar(i,j,*buff++);
}
//**********************************************************************
struct bar_pad{
  char *prompt;
  char *popup_name;
  struct bar_pad *next;
};

struct popup_pad{
  char *prompt;
  struct popup_pad *next;
};

struct bar_menu{
  char *name;
  int x,y,count,act;
  struct bar_pad *pad;
  struct bar_menu *next;
};

struct popup_menu{
  char *name;
  int x,y,count,act,max;
  struct popup_pad  *pad;
  struct popup_menu *next;
};

class menu:public screen{

protected:

struct{

char text,background,
      a_text,a_background,
      b_text,b_background,
      s_text,s_background;
}menu_color;


struct bar_menu *bar;
struct popup_menu *popup;

char   default_border[8];

char  *current_popup_name;
char  *current_bar_name;

void   AddBarPad(struct bar_menu*,char*,char*);
struct bar_pad* GotoBarPad(struct bar_menu*,int);
void   DeleteBarPads(struct bar_menu*);
struct bar_menu* GotoBar(char*);

void   AddPopupPad(struct popup_menu*,char*);
struct popup_pad *GotoPopupPad(struct popup_menu*,int);
void   DeletePopupPads(struct popup_menu*);
struct popup_menu *GotoPopup(char*);

public:

menu(void);
~menu(void);
void DefineBar(char*,int,int);
void DefineBarPad(char*,char*,char*);
void DeleteBars(void);
void DefinePopup(char*,int,int);
void DefinePopupPad(char*,char*);
void DeletePopups(void);
char ActivateBar(char*);
char ActivatePopup(char*);
virtual void OnPopupPad(char*,int){};
virtual void OnBarPad(char*,int){};
virtual void OnSelectBar(char*,int){};
virtual void OnSelectPopup(char*,int){};
};

menu::menu(void)
{


    bar=NULL;
    popup=NULL;
    current_bar_name=NULL;
    current_popup_name=NULL;

    menu_color.text=BLACK;
    menu_color.background=LIGHTGRAY;
    menu_color.a_text=WHITE;
    menu_color.a_background=RED;
    menu_color.b_text=BLACK;
    menu_color.b_background=LIGHTGRAY;
    menu_color.s_text=BLACK;
    menu_color.s_background=BLACK;

    default_border[0]='ع';
    default_border[1]='ؤ';
    default_border[2]='·';
    default_border[3]='؛';
    default_border[4]='¼';
    default_border[5]='ح';
    default_border[6]='ش';
    default_border[7]='³';
}
menu::~menu(void)
{
DeleteBars();
DeletePopups();
}


void menu::AddBarPad(struct bar_menu *bm,char *prompt,char
*popup_name){
struct bar_pad *p,*tmp;
p=new bar_pad;
p->prompt=new char[StrLen(prompt)+1];
p->popup_name=new char[StrLen(popup_name)+1];
StrCopy(p->prompt,prompt);
StrCopy(p->popup_name,popup_name);
p->next=NULL;
if(bm->pad==NULL){
  bm->pad=p;
  bm->count=1;
}else{
  tmp=bm->pad;
  while(tmp->next)tmp=tmp->next;
  tmp->next=p;
  bm->count++;
}
}
struct bar_pad* menu::GotoBarPad(struct bar_menu *bm,int n){
struct bar_pad *p;
int i;
p=bm->pad;
for(i=1;i<n;i++)p=p->next;
return p;
}
void menu::DeleteBarPads(struct bar_menu *bm){
struct bar_pad *tmp;
while(bm->pad){
  tmp=bm->pad;
  bm->pad=tmp->next;
  delete[] tmp->prompt;
  delete[] tmp->popup_name;
  delete tmp;
}
bm->count=0;
}

void menu::DefineBar(char *name,int x,int y){
struct bar_menu *p,*tmp;
p=new bar_menu;
p->name=new char[StrLen(name)+1];
StrCopy(p->name,name);
p->x=x;
p->y=y;
p->count=p->act=0;
p->pad=NULL;
p->next=NULL;
if(bar==NULL)bar=p;
else{
  tmp=bar;
  while(tmp->next)tmp=tmp->next;
  tmp->next=p;
}
}
struct bar_menu* menu::GotoBar(char *name){
struct bar_menu *p;
p=bar;
while(p){
  if(!StrCmp(p->name,name))return p;
  p=p->next;
}
return NULL;
}
void menu::DefineBarPad(char *name,char *prompt,char *popup_name){
struct bar_menu *p;
p=GotoBar(name);
if(p)AddBarPad(p,prompt,popup_name);
}
void menu::DeleteBars(void){
struct bar_menu *tmp;
while(bar){
  tmp=bar;
  bar=tmp->next;
  DeleteBarPads(tmp);
  delete tmp;
}
}
void menu::AddPopupPad(struct popup_menu *pm,char *prompt){
struct popup_pad *p,*tmp;
p=new popup_pad;
p->prompt=new char[StrLen(prompt)+1];
StrCopy(p->prompt,prompt);
p->next=NULL;
if(pm->pad==NULL){
  pm->pad=p;
  pm->count=1;
}else{
  tmp=pm->pad;
  while(tmp->next)tmp=tmp->next;
  tmp->next=p;
  pm->count++;
}
}
void menu::DeletePopupPads(struct popup_menu *pm){
struct popup_pad *tmp;
while(pm->pad){
  tmp=pm->pad;
  pm->pad=tmp->next;
  delete[] tmp->prompt;
  delete tmp;
}
pm->count=0;
if(current_bar_name){
  delete[] current_bar_name;
  current_bar_name=NULL;
}
}
struct popup_pad* menu::GotoPopupPad(struct popup_menu *pm,int n){
struct popup_pad *p;
int i;
p=pm->pad;
for(i=1;i<n;i++)p=p->next;
return p;
}
void menu::DefinePopup(char *name,int x,int y){
struct popup_menu *p,*tmp;
p=new popup_menu;
p->name=new char[StrLen(name)+1];
StrCopy(p->name,name);
p->x=x;
p->y=y;
p->count=0;
p->act=1;
p->max=5;
p->pad=NULL;
p->next=NULL;
if(popup==NULL)popup=p;
else{
  tmp=popup;
  while(tmp->next)tmp=tmp->next;
  tmp->next=p;
}
}
struct popup_menu* menu::GotoPopup(char *name){
struct popup_menu *p;
p=popup;
while(p){
  if(!StrCmp(p->name,name))return p;
  p=p->next;
}
return NULL;
}
void menu::DefinePopupPad(char *name,char *prompt){
struct popup_menu *p;
p=GotoPopup(name);
if(p) AddPopupPad(p,prompt);
}
void menu::DeletePopups(void){
struct popup_menu *tmp;
while(popup){
  tmp=popup;
  popup=tmp->next;
  DeletePopupPads(tmp);
  delete tmp;
}
if(current_popup_name){
  delete[] current_popup_name;
  current_popup_name=NULL;
}
}
char menu::ActivateBar(char *name)
{
struct bar_menu *bmenu;
struct bar_pad  *bpad;
int i,l,act;
unsigned int key;
bmenu=GotoBar(name);
if(bmenu&&bmenu->count){
  if(current_bar_name)delete[] current_bar_name;
  current_bar_name=new char[StrLen(name+1)];
  StrCopy(current_bar_name,name);
  key=0;
  bmenu->act=1;
  SetColor(menu_color.text,menu_color.background);
  Fill(0,bmenu->y,80,1,' ');
  while(key!=ESC&&bmenu->count){
   l=0;
   for(i=1;i<=bmenu->count;i++){
    bpad=GotoBarPad(bmenu,i);
    SetColor(menu_color.text,menu_color.background);
    PutString(bmenu->x+l,bmenu->y,bpad->prompt);
    l+=StrLen(bpad->prompt);
   }
   l=0;
   for(i=1;i<=bmenu->act;i++){
    bpad=GotoBarPad(bmenu,i);
    if(i<bmenu->act)l+=StrLen(bpad->prompt);
   }
   SetColor(menu_color.a_text,menu_color.a_background);
   PutString(bmenu->x+l,bmenu->y,bpad->prompt);
   OnBarPad(bmenu->name,bmenu->act);
   if(ActivatePopup(bpad->popup_name)) key=last_pressed_key;
   else key=GetKey();
   switch(key){
    case LEFT:bmenu->act--;break;
    case RIGHT:bmenu->act++;break;
   }
   if(bmenu->act<1)bmenu->act=bmenu->count;
   if(bmenu->act>bmenu->count)bmenu->act=1;
  }
}else return FAIL;
return OK;
}
char menu::ActivatePopup(char *name){
struct popup_menu *pmenu;
struct popup_pad  *ppad;
int i,len,act;
char rotate_flag,loop_flag;
int  
i_start,i_end,border_x,border_y,border_width,border_mid_x,border_height;
int  pad_x,pad_y;

int buff[80*25];

unsigned int key;

pmenu=GotoPopup(name);

if(pmenu&&pmenu->count){
  if(current_popup_name)delete[] current_popup_name;
  current_popup_name=new char[StrLen(name+1)];
  StrCopy(current_popup_name,name);

  if(pmenu->max>pmenu->count)pmenu->max=pmenu->count;
  i_start=1;
  i_end=pmenu->count-pmenu->max+1;
  if(pmenu->act>pmenu->max){
   act=pmenu->max;
   i_start=pmenu->act-pmenu->max+1;
  }else act=pmenu->act;

  border_width=0;

  for(i=1;i<=pmenu->count;i++){
   ppad=GotoPopupPad(pmenu,i);
   len=StrLen(ppad->prompt);
   if(len>border_width)border_width=len;//detect max width
  }

  border_x=pmenu->x;
  border_y=pmenu->y;
  border_width+=2;
  border_height=pmenu->max+2;
  pad_x=border_x+1;
  pad_y=border_y+1;
  key=0;

  SaveScreen(border_x,border_y,border_width+2,border_height+1,buff);

  SetColor(menu_color.b_text,menu_color.b_background);
  Fill(border_x,border_y,border_width,border_height,32);
  Box(border_x,border_y,border_width,border_height,default_border);
  SetColor(menu_color.s_text,menu_color.s_background);
  SetColor(menu_color.s_text,menu_color.s_background);
  Fill(border_x+border_width,border_y+1,2,border_height,32);
  Fill(border_x+1,border_y+border_height,border_width,1,32);

  loop_flag=TRUE;

  while(loop_flag){
   SetColor(menu_color.b_text,menu_color.b_background);
   for(i=0;i<pmenu->max;i++){
    ppad=GotoPopupPad(pmenu,i+i_start);
    SetColor(menu_color.text,menu_color.background);
    PutString(pad_x,pad_y+i,ppad->prompt);
    len=StrLen(ppad->prompt);
    Fill(pad_x+len,pad_y+i,border_width-len-2,1,' ');
   }

   SetColor(menu_color.b_text,menu_color.b_background);
   border_mid_x=border_width/2+border_x;
   PutChar(border_mid_x,border_y,default_border[1]);
   PutChar(border_mid_x,border_y+border_height-1,default_border[5]);

   if(i_start>1) PutChar(border_mid_x,border_y,30);
   if(i_start<i_end) PutChar(border_mid_x,border_y+border_height-1,31);
   SetColor(menu_color.a_text,menu_color.a_background);
   ppad=GotoPopupPad(pmenu,act+i_start-1);
   PutString(pmenu->x+1,pmenu->y+act,ppad->prompt);

   pmenu->act=act+i_start-1;

   OnPopupPad(pmenu->name,pmenu->act);

   key=GetKey();

   switch(key){
    case UP  :act--;break;
    case DOWN:act++;break;
    case LEFT:loop_flag=FALSE;break;
    case RIGHT:loop_flag=FALSE;break;
    case ESC:loop_flag=FALSE;break;
    case ENT:loop_flag=FALSE;break;
   }
   if(act<1){
    act=1;i_start--;
   }
   if(act>pmenu->max){
    act=pmenu->max;i_start++;
   }
   if(i_start<1){
    i_start=i_end;
    act=pmenu->max;
   }
   if(i_start>i_end){
    i_start=1;
    act=1;
   }
  }

  LoadScreen(border_x,border_y,border_width+2,border_height+1,buff);

  if(key==ENT)OnSelectPopup(pmenu->name,pmenu->act);
}else return FALSE;
return OK;
}
//**************************************************************************
class menu_test:public menu{

public:

void OnPopupPad(char *popup_name,int act){
gotoxy(35,25);
printf("%15s %d",popup_name,act);
}
void OnBarPad(char *bar_name,int act){
gotoxy(20,25);
printf("%10s %d",bar_name,act);
}
void OnSelectBar(char *bar_name,int act){
gotoxy(10,19);
printf("%10s %d",bar_name, act);
}
void OnSelectPopup(char *popup_name,int act){
gotoxy(10,19);
printf("%10s %d",popup_name, act);
GetKey();
}


void run(void)
{


SetColor(1,7);
Fill(0,0,80,25,'±');
Fill(0,24,80,25,' ');
HideCursor();

DefineBar("main",2,0);
DefineBarPad("main"," File  ","file");
DefineBarPad("main"," Edit  ","edit");
DefineBarPad("main"," Search  ","search");
DefineBarPad("main"," Run  ","run");
DefineBarPad("main"," Compile ","compile");
DefineBarPad("main"," Help    ","help");

DefinePopup("file",1,1);
DefinePopupPad("file"," New          ");
DefinePopupPad("file"," Open         ");
DefinePopupPad("file"," Save         ");
DefinePopupPad("file"," Save As      ");
DefinePopupPad("file"," Change Dir   ");
DefinePopupPad("file"," Print        ");
DefinePopupPad("file"," OS Shell     ");
DefinePopupPad("file"," Exit         ");

DefinePopup("edit",8,1);
DefinePopupPad("edit"," Cut            ");
DefinePopupPad("edit"," Copy           ");
DefinePopupPad("edit"," Past           ");
DefinePopupPad("edit"," Clear          ");

DefinePopup("search",15,1);
DefinePopupPad("search"," Find              ");
DefinePopupPad("search"," Replace           ");
DefinePopupPad("search"," Search            ");
DefinePopupPad("search"," Go to Line Number ");

DefinePopup("run",24,1);
DefinePopupPad("run"," Run              ");
DefinePopupPad("run"," Trace Into       ");
DefinePopupPad("run"," Step Over        ");
DefinePopupPad("run"," Argoments ...    ");

DefinePopup("compile",30,1);
DefinePopupPad("compile"," Compile        ");
DefinePopupPad("compile"," Make           ");
DefinePopupPad("compile"," Link           ");
DefinePopupPad("compile"," Build All      ");

DefinePopup("help",39,1);
DefinePopupPad("help"," Contents     ");
DefinePopupPad("help"," Index        ");
DefinePopupPad("help"," About        ");


ActivateBar("main");

ShowCursor();

CLS();
}


};

void main()
{
menu_test test;

      test.run();

}
اینم دفتر چه ی تلفن
کد:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <conio.h>
#include <fstream>

using namespace std;

struct Phone
{
    char name[15];
    char family[15];
    char tel[12];
    
    Phone *next;
};

Phone* Start_ptr = NULL;
Phone* current = NULL;

void Select ( int ); // which choice user selected;
void Add_new();
void Print_all();
void Menu1();
void Menu2();
void Edit_current();
void Uninstall();
void Delete_current ();
void Delete_all();
void Tel_or_name( int );
void Read_from_file();
void Write_to_file();
void Save_as_csv();
void Sort_name( int );
void Add_tail_from_file( Phone* );

Phone* Search( char* , int);


enum MENU{ ADD=1, SEARCH_NAME, SEARCH_NO, SORT_NAME, SORT_FAMIL, SHOW_ALL, SAVE, EXPORT_CSV, EXIT, UNINSTALL };

int main()
{
    Read_from_file();
    
    int choice;
    
    do
    {
        Menu1();    
        cin >> choice;
        system("cls");
        Select ( choice );
        
    }while ( choice != EXIT );
    
    Write_to_file();
    
    cout <<"Thank you\nSend your comment to arashmidos2006@gmail.com" << endl;
    Delete_all();
    
    return 0;
}

/*===================Select=======================*/
void Select( int choose )
{    
    switch ( choose )
    {
    case ADD :
        Add_new();      break;
        
    case SEARCH_NAME :
        Tel_or_name(1); break;
        
    case SEARCH_NO :
        Tel_or_name(2); break;
        
    case SORT_NAME :
        Sort_name(1);   break;
        
    case SORT_FAMIL :
        Sort_name(2);   break;
        
    case SHOW_ALL :
        Print_all();    break;

    case SAVE :
        Write_to_file();
        cout <<"We will save your data automatically when your work finished" << endl;
        system("pause");
        break;
        
    case EXPORT_CSV :
        Save_as_csv();    break;

    case EXIT :
        return;

    case UNINSTALL :
        Uninstall();    break;

    default :
        cout <<"Select again :" << endl;
    }
    return;
}
/*=================Add_new=====================*/
void Add_new()
{
    Phone* temp = new Phone;
    Phone* temp2 = Start_ptr;
    
    system("cls");
    
    cout << "Enter the name : ";
    cin >> temp->name;
    cout << "Family : ";
    cin >> temp->family;
    cout << "Phone number : ";
    cin >> temp->tel;
    
    temp->next = NULL;
    
    if ( Start_ptr == NULL )
    {
        Start_ptr = temp;        
    }
    
    else
    {
        while( temp2->next != NULL )
        {
            temp2 = temp2->next;
        }
        temp2->next = temp;
    }
    
    return;
}
/*==============Print_all=======================*/
void Print_all()
{
    Phone* temp = Start_ptr;
    char show[35];
    
    if ( Start_ptr == NULL )
    {
        cout <<"The list is empty!" << endl;
        system("pause");
        return;
    }
    else
    {
        cout<<"\nName                                Phone       "
            <<"\n----------------------------------- ------------" << endl;
        do
        {
            strcpy(show, "");
            strcat(show, temp->family);
            strcat(show, ", ");
            strcat(show, temp->name);
            show[0] = toupper(show[0]);
            cout << setiosflags( ios::left )
                << setw(36) << show << setw(12) <<temp->tel <<endl;
            
            temp = temp->next;
        }while(temp != NULL);
    }
    cout << endl;
    system("pause");
    return;
}

/*=================Search=======================*/
Phone* Search( char* temp_search , int choice )
{
    /* If list is empty */
    if ( Start_ptr == NULL )
    {
        cout <<"List is empty!" << endl;
        return NULL;
    }

    /* Search by name */
    if ( choice == 1 )
    {
        while( current != NULL && strcmp( current->name, temp_search ) != 0 )
        {
            current = current->next;
        }
    }

    /* Search by tel */
    if ( choice == 2 )
    {
        while( current != NULL && strcmp( current->tel, temp_search ) != 0 )
        {
            current = current->next;
        }
        
    }

    /* If record found */
    if ( current != NULL )
    {
        cout << "Record found" << endl
            << current->name << " " << current->family << " : " << current->tel << endl;
        
        return current;
    }

    /* If record !found */
    else
    {
        cout <<"Record NOT found" << endl;
        current = Start_ptr; //move back the current pointer to fisrt node
        return NULL;
    }
}

/*====================Delete_current====================*/
void Delete_current()
{
    Phone* temp = NULL;
    Phone* prev = NULL;

    /* If it`s the fisrt node */
    if ( current == Start_ptr )
    {
        temp = Start_ptr;
        Start_ptr = Start_ptr->next; //If we have only 1 node, start_ptr will point to NULL
        delete temp;
        temp = NULL;
    }

    /* If it`s in the middle of list or the last node */
    else    
    {
        prev = Start_ptr;
        while( prev->next != current )
        {
            prev = prev->next;
        }
        prev->next = current->next;// If it`s the last node prev will point to NULL
        delete current;
        current = Start_ptr;
    }            
}

/*=================Delete_all=================*/
void Delete_all()
{
    if ( Start_ptr == NULL )
    {
        return; // we have no memory allocated
    }

    Phone* temp = Start_ptr;
    while( Start_ptr != NULL )
    {
        temp = Start_ptr;
        Start_ptr = Start_ptr->next;
        delete temp;
    }
}

/*=================Tel_or_name================*/
void Tel_or_name(int choose)
{
    Phone* temp_del = NULL;
    char temp_search[15];
    int choice;
    
    current = Start_ptr;
        
    cout <<"Enter the "<<(choose == 1 ? "name" : "tel") <<" to search : ";
    cin >> temp_search;
        
    temp_del = Search( temp_search, choose );
        
    while ( temp_del != NULL )
    {
        Menu2();
        cin >> choice;
            
        switch( choice )
        {
        case 1: current = current->next; temp_del = Search( temp_search, choose ); break;
        case 2: Delete_current(); break;
        case 3: Edit_current();   break;
        case 4: return;
        }
    }
    system("pause");
    
}
/*==============Write_to_file=============================*/
void Write_to_file()
{
    Phone* temp = Start_ptr;
    ofstream outFile("Data.dat" , ios::out );
    
    if( !outFile )
    {
        cerr << "Some error ocured during writing to file." << endl;
        system("pause");
        return;
    }
    
    while( temp != NULL )
    {
        outFile << temp->name << " " << temp->family << " " << temp->tel;
        if( temp->next != NULL )
        {
            outFile << endl;
        }
        temp = temp->next;
        
    }

    outFile.close();

    cout <<"Data saved successfully." << endl;
}
/*===============Read_from_file=============================*/
void Read_from_file()
{
    ifstream inputFile("Data.dat" , ios::in );
    
    if ( !inputFile )
    {
        cout << "Data couldn`t be loaded." << endl;
        system("pause");
        return;
    }

    do
    {
        Phone* temp = new Phone;
        
        inputFile >> temp->name;
        inputFile >> temp->family;
        inputFile >> temp->tel;
        temp->next = NULL;
        
        Add_tail_from_file( temp );

        //Where should I place delete temp?????    
    }while( !inputFile.eof() );

    cout <<"Data loaded successfully" << endl;
}
/*================Save_as_csv===========================*/
void Save_as_csv()
{
    ofstream outputFile;
    cout << "Enter the path you want to save your file.\nExample : c:\\\\program\\\\yourfile.csv" << endl;
    char path[100]="";
    cin>>path;
    
    outputFile.open( path, ios::out );
    
    if( !outputFile )
    {
        cerr << "Some error ocured during writing to file." << endl;
        exit(1);
    }
    
    outputFile << "Name" << ';' << "Family" << ';' <<"Tel" <<endl;
    
    Phone* temp = Start_ptr;
    
    while( temp != NULL )
    {
        outputFile << temp->name << ';' << temp->family << ';' << temp->tel << endl;
        temp = temp->next;
    }
    outputFile.close();
    cout << "Data saved successfully at " << path << endl;
    system("pause");
    
}
/*==============Add_tail_from_file=================*/
void Add_tail_from_file( Phone* temp )
{
    
    if ( Start_ptr == NULL )
    {
        Start_ptr = temp;    
    }
    else
    {
        Phone* temp2 = Start_ptr;
        while ( temp2->next != NULL )
        {
            temp2 = temp2->next;
        }
        temp2->next = temp;
    }
}

/*================Sort_name=================================*/

void Sort_name(int choice)
{
    /* If list is empty */
    if ( Start_ptr == NULL )
    {
        cout <<"The list is empty!" << endl;
        system("pause");
        return;
    }
    
    /* Determine the size of list */
    int counter = 1;
    Phone* temp = Start_ptr;
    
    while( temp->next != NULL )
    {
        temp = temp->next;
        counter++;
    }
    
    /* an Array of pointers to struct Phone. I couldn`t do this part by dynamic memory
    allocation i.e Phone* sort = new Phone[counter]
    or some thing like that. if you could help, please send me your suggestion .*/
    Phone* sort[1000];
    
    sort[0] = Start_ptr;
    for ( int cnt = 1; cnt < counter; cnt++ )
    {
        sort[cnt] = sort[cnt-1]->next;
    }
    sort[counter] = NULL;
    
    /* bubble sort */
    /* This part could be better too.for example if user enter capital 'F' it comes
       before 'a'. I had to change all letter to lower case but has no time. */
    
    for ( int i = 0; i < counter; i++ )
    {
        for ( int j = 0; j < counter - i - 1; j++)
        {
            /* Sort by name */
            if ( choice == 1 )
            {
                if ( strcmp(sort[j]->name, sort[j+1]->name) > 0 )
                {
                    Phone* temp2 = sort[j];
                    sort[j] = sort[j+1];
                    sort[j+1] = temp2;
                }
            }

            /* Sort by family */
            else
            {
                if ( strcmp(sort[j]->family, sort[j+1]->family) > 0 )
                {
                    Phone* temp2 = sort[j];
                    sort[j] = sort[j+1];
                    sort[j+1] = temp2;
                }
            }
        }
    }
    
    /* Showing sorted list */    
    char show[35];
    int index= 0;
    
    cout<<"\nName                                Phone       "
        <<"\n----------------------------------- ------------" << endl;
    do
    {
        strcpy(show, "");
        strcat(show, sort[index]->family);
        strcat(show, ", ");
        strcat(show, sort[index]->name);
        show[0] = toupper(show[0]);
        cout << setiosflags( ios::left )
            << setw(36) << show << setw(12) <<sort[index]->tel <<endl;
        
    }while(sort[++index] != NULL);
    
    cout << endl;
    system("pause");
    return;
}
/*====================Menu1=======================*/
void Menu1()
{
    system("cls");
        cout << "1.  Add new phone"
            <<"\n2.  Search for name"
            <<"\n3.  Search for number"
            <<"\n4.  Sort by name"
            <<"\n5.  Sort by family"
            <<"\n6.  Show all list"
            <<"\n7.  Save data"
            <<"\n8.  Export as CSV ( Comma Separated Values )"
            <<"\n9.  Exit"
            <<"\n10. Uninstall"
            <<"\n\nYour choice : ";
}

/*====================Menu2=======================*/
void Menu2()
{
    cout << "\n1.  Find next"
        <<"\n2.  Delete current person"
        <<"\n3.  Edit current person"
        <<"\n4.  continue" << endl
        <<"\nYour choice : ";
}

/*====================Uninstall===================*/
void Uninstall()
{
    char answer = 'n';
    cout <<"Are you sure you want to delete all files include your saved data ? ( y or n)" << endl;

    cin >> answer;

    if ( toupper( answer ) == 'Y' )
    {

    system("cls");
    cout << "Uninstalling...\n";
    remove("Phonebook.cpp");
    remove("Phonebook.plg");
    remove("Phonebook.dsp");
    remove("Phonebook.ncb");
    remove("Phonebook.exe");
    remove("Data.dat");
    cout <<"Some files couldn`t be deleted. remove them manually." << endl;
    system("pause");
    Delete_all();
    exit(1);
    }
}

/*====================Edit_current================*/
void Edit_current()
{
    strcpy(current->name,"");
    strcpy(current->family,"");

    cout << "Enter the name : ";
    cin >> current->name;
    cout << "Family : ";
    cin >> current->family;
    cout << "Phone number : ";
    cin >> current->tel;

    system("cls");
}
/*====================End=========================*/
بچه ها توضیح شو استاد از من خط به خط میخواد...از همتون ممنونم
۲۷-خرداد-۱۳۸۷, ۰۰:۲۸:۵۶
ارسال‌ها
پاسخ
تشکر شده توسط : www.Poroje.Com
drstreet آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #2
RE: کمک در مورد پروژه های زیر
چه سایت فعالی واقعا! دوستان حداقل کسی برنامه ای که توضیحشو داشته باشه ام نداره!؟ بخدا ضروریه...
۲۸-خرداد-۱۳۸۷, ۲۳:۲۰:۴۳
ارسال‌ها
پاسخ
تشکر شده توسط : www.Poroje.Com
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #3
RE: کمک در مورد پروژه های زیر
این یه دفترچه تلفن به زبان c++ هست البته احتمالا visual هست چون منو هم داره
(بیشتر نمیتونم توضیح بدم چون c++ بلد نیستم)
در ضمن پروژتونم باید تو بخش درخواست پروژه مطرح کنین نه اینجا
۲۸-خرداد-۱۳۸۷, ۲۳:۵۸:۳۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Darg, www.Poroje.Com
drstreet آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #4
RE: کمک در مورد پروژه های زیر
lord_viper نوشته است:این یه دفترچه تلفن به زبان c++ هست البته احتمالا visual هست چون منو هم داره
(بیشتر نمیتونم توضیح بدم چون c++ بلد نیستم)
در ضمن پروژتونم باید تو بخش درخواست پروژه مطرح کنین نه اینجا

پس اگه میشه این بحث را انتقال بدید...؟!
۲۹-خرداد-۱۳۸۷, ۰۱:۵۲:۳۷
ارسال‌ها
پاسخ
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #5
RE: کمک در مورد پروژه های زیر
نه همون طور که گفته : "This program must be run under BC v3.0 or higher version"

drstreet نوشته است:چه سایت فعالی واقعا! ....
آخه جناب "drstreet" وقتی خودت فعال نیستی چطور توقع داری بقیه فعال باشن. برنامه هم که همچین خیلی کوچیکه. 1370 خط رو آدم برای رفیقشم نمیشینه توضیح بده چه برسه به شما. اگه توی طول ترم درستونو خوب میخوندید کارتون به اینجا نمیکشید.
من فکر نکنم کسی اینقدر بیکار باشه که بیاد اینهمه برنامه رو "خط به خط" توضیح بده پس توصیه میکنم تا دیر نشده برید بدید به یه بنده خدایی n تومن هم میدید اونوقت به یه جایی میرسید.

و یه توصیه به اعضا.
در کل من به این جور جملات میگم جملات "گول زننده" و همینجور جملاته که باعث معتادی و در به دری میشه. این جور جملات همیشه در مواقعی عنوان میشه که دیگه از راه منطق نمیتونن به جایی برسند و با این جور جملات "گول زننده" سعی میکنند احساسات رو ترغیب کنند و عقل و از کار بندازند. در نتیجه شدیدا به همه توصیه میکنم هر وقت این جور جملاتی رو دیدن ازش دوری کنن. در کل پشت این جملات جز سر کار رفتن و بیچارگی چیز دیگه ای نیست.

میزان رای دشمن است!
[تصویر:  cff100.png]
(آخرین ویرایش در این ارسال: ۳۰-خرداد-۱۳۸۷, ۰۸:۲۱:۱۱، توسط ajlajlajl.)
۲۹-خرداد-۱۳۸۷, ۰۹:۰۵:۱۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Darg, sharin, علي برقي
drstreet آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #6
RE: کمک در مورد پروژه های زیر
... ... ...
3 سال تمام تو تیم دلتا سکیوریتی دارم خدمت میکنم! ... ... ...
...

(ویرایش شد ,درصورت تکرار برخورد جدی تری می شود)
(آخرین ویرایش در این ارسال: ۳۰-خرداد-۱۳۸۷, ۰۰:۴۰:۰۷، توسط Darg.)
۲۹-خرداد-۱۳۸۷, ۱۷:۵۳:۳۹
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #7
RE: کمک در مورد پروژه های زیر
drstreet نوشته است:... که چه برداشتی از صحبتهای من بکنه! =)) ... ...
جناب drstreet اولا که هر فرومی قوانینی داره و اون قوانین هم باید رعایت بشه
هر فورومی مدیرایی داره که حکم استاد رو دارن پس احترام استاد همیشه بجاست
شما با این لحن صحبتتون و متنی که نوشتین فکر میکنین چه شخصیتی از خودتون نشون دادین؟
نقل قول: 3 سال تمام تو تیم دلتا سکیوریتی دارم خدمت میکنم!
خب شما که 3 سال هست که دارین خدمت میکنین که دیگه نباید این اشتباهاتو انجام بدین
drstreet نوشته است:...بیاد اینجا توی سایت که یک مکان عمومی و فرهنگیه از این لغات استفاده کنه... ... ...
اگه به تاریخ عضویت نگاه کنین ایشون خیلی وقته که عضو هستن و شما تازه وارد این جمع شدین شما حرمت این مکان عمومی و فرهنگی رو حفظ نکردین
(همه ما اینجا اومدیم تا یه چیزی یاد بگیریم نه اینکه تکلیفامونو کسای دیگه واسمون انجام بدن)
(آخرین ویرایش در این ارسال: ۳۰-خرداد-۱۳۸۷, ۰۱:۰۲:۳۱، توسط Darg.)
۲۹-خرداد-۱۳۸۷, ۲۳:۳۰:۰۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Darg
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #8
RE: کمک در مورد پروژه های زیر
من کلا اهل این حرفا نیستم. و همیشه ترجیح میدم شوخی کنم تا جدی صحبت کنم ولی خب آقای "drstreet" توقع زیادی داشتند.و فکر نمیکردم که بهشون بر بخوره. توی صحبت هم فکر نکنم به کسی توهین کردم( اون عبارت هم نسبت به کسی نبود ) و لحن صحبتم رو هم فکر کنم عادی بود. در کل توی صحبتم چیزی نبود که به ایشون بر بخوره.
با این حال "خر کننده" رو به پیشنهاد جناب Darg به "گول زننده" تغییر دادم.( بابا اگه با یه اصفهانی دوست بشید که دو دقیقه یه بار بهتون بگه "خره" چیکار میکنید؟ ).امیدوارم کسی از حرفهای من ناراحت نشه چون اصلا منظور من این نبود.

میزان رای دشمن است!
[تصویر:  cff100.png]
۳۰-خرداد-۱۳۸۷, ۰۸:۴۳:۲۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : sharin
arian_vc آفلاین
در حال پیشرفت
***

ارسال‌ها: 328
موضوع‌ها: 40
تاریخ عضویت: مرداد ۱۳۸۵

تشکرها : 66
( 311 تشکر در 95 ارسال )
ارسال: #9
RE: کمک در مورد پروژه های زیر
نه آقا ویژوال نیست
منو داره ولی تحت dos هست
۳۰-خرداد-۱۳۸۷, ۱۱:۳۰:۵۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : www.Poroje.Com
drstreet آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: اسفند ۱۳۸۶

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #10
RE: کمک در مورد پروژه های زیر
دوستان عزیز اینجا یک سایت بسیار بزرگ و از سایتهایی که من خیلی بهش علاقه داشتم و همیشه و همه جا کسی سوال برنامه نویسی حتی تو سایت خودمون از ما کرده من این سایت رو معرفی کردم...من نگفتم شما تکلیف منو انجام بدید...فقط فکر میکردم توی سایت به این بزرگی یکی پیدا میشه مثل خودم واسه بچه های سایت دل سوز باشه...به هر حال منم از تند گویی خودم معذرت میخوام دوستان
۳۰-خرداد-۱۳۸۷, ۱۴:۴۱:۳۰
ارسال‌ها
پاسخ
تشکر شده توسط : www.Poroje.Com
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #11
RE: کمک در مورد پروژه های زیر
خب داداش من دارم میگم آدم برا رفیقشم 1700 خط رو خط به خط توضیح نمیده. خودت فکرش کن.

میزان رای دشمن است!
[تصویر:  cff100.png]
۳۰-خرداد-۱۳۸۷, ۱۵:۰۶:۵۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : SabSpussy


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [پروژه] پروژه و سروس برنامه ی ExeInside (Parse a PE) nImaarek 0 2,102 ۱۰-مرداد-۱۳۹۶, ۲۳:۱۳:۵۲
آخرین ارسال: nImaarek
  مشکل با پروژه موش و پنیر ! mdcnet 6 7,177 ۱۳-بهمن-۱۳۹۱, ۱۲:۴۲:۱۴
آخرین ارسال: shahmohammadi
  تمرین ها پروژه های درسی c و c++ محمد حسینی 39 54,040 ۲۰-آذر-۱۳۹۱, ۱۳:۴۷:۰۰
آخرین ارسال: memphis123
Question پروژه taras 2 3,194 ۰۹-اردیبهشت-۱۳۹۰, ۰۲:۲۰:۳۵
آخرین ارسال: مهندس نرم افزار
  در خواست پروژه Vig 8 8,059 ۱۵-فروردین-۱۳۹۰, ۰۸:۴۰:۵۲
آخرین ارسال: domain
Question کمک فوری (پروژه دانشجویی) - ساده ولی برای من سخت nasrin2006 9 11,391 ۱۲-اسفند-۱۳۸۹, ۱۸:۲۱:۳۶
آخرین ارسال: ارمیدا
  کمک فوری برای پروژه hosein_n 0 2,373 ۰۴-دى-۱۳۸۹, ۲۱:۲۶:۳۳
آخرین ارسال: hosein_n
  مهم:کمک درباره پروژه برنامه نویسی ویژوال سی ++ 6 arminjahanshahr 10 8,728 ۱۴-خرداد-۱۳۸۷, ۱۹:۰۸:۱۳
آخرین ارسال: arminjahanshahr
  يه سوال در مورد پروژه کتابخانه Rink8 0 2,434 ۰۸-اردیبهشت-۱۳۸۷, ۲۳:۰۳:۵۷
آخرین ارسال: Rink8

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS