PDA

View Full Version : سوال: دفتر تلفن با switch



kurd_programming
چهارشنبه 14 خرداد 1393, 11:40 صبح
سلام
بنده در حال نوشتن پروژه دفتر تلفن هستم که با استراکت نوشتم کدش رو قرار میدم تا ببنید :

#include "stdafx.h"
#include<iostream>
#include<string>
#include<conio.h>


using namespace std;
struct tellphone{
char fname[100],lname[100];
double no;
};
int main()
{
int a=0,i,j,count=0;
char ans;
int src;
tellphone tell[100];
cout<<"************* WELCOME TO TELLPHONE menu ************* "<<endl;
cout<<"Enter 1 for insert : "<<endl;
cout<<"Enter 2 for edit : "<<endl;
cout<<"Enter 3 for search : "<<endl;
cin>>a;
switch(a)
{
case 1:
for(i=0;;i++)
{
cout<<"************* WELCOME TO Insert ************* "<<endl;
cout<<"Enter a first name : "<<endl;
cin.getline(tell[i].fname,30);
cout<<"Enter a Family : "<<endl;
cin.getline(tell[i].lname,30);
cout<<"Enter a No. phone : ";
cin>>tell[i].no;
cout<<"************* INSERT IS COMPLETE ************* "<<endl;
//cout<<"Do you want go to menu ? Y/N .... ";
count++;
//cin>>ans;
}
case 2:
cout<<"************* WELCOME TO EDIT *************"<<endl;
cout<<"Enter a no phone for edit :"<<endl;
cin>>src;
for(i=0;i<count;i++)
{
if(src==tell[i].no)
{
cout<<"Name is : "<<tell[i].fname<<endl;
cout<<"family is : "<<tell[i].lname<<endl;
cout<<"No.phone is : "<<tell[i].no<<endl;
cout<<"Enter a name for edit : "<<endl;
cin.getline(tell[i].fname,20);
cout<<"Enter a FAmily for edit : "<<endl;
cin.getline(tell[i].lname,20);
cout<<"Enter a no.phone for edit : "<<endl;
cin>>tell[i].no;
cout<<"*************EDIT it complete*************";
}else
{
cout<<"No not found :(";
}
}
//break;
case 3:
cout<<"************* WELCOME TO SEARCH *************"<<endl;
cout<<"Enter a no phone:"<<endl;
cin>>src;
for(i=0;i<count;i++)
{
if(src==tell[i].no)
{
cout<<"Name is : "<<tell[i].fname<<endl;
cout<<"family is : "<<tell[i].lname<<endl;
cout<<"No. phone is : "<<tell[i].no<<endl;
}else
{
cout<<"No not found : :(";
}
}
break;
}
_getch();
}


حالا می خوام وقتی که مثلا شماره جدید درج شد بیاد دوباره پیغام رو نشون بده که می خواد به کدوم قسمت بره مربوط به switch ولی ارورر می ده نمیدونم چطور باید انجام بدم که بیاد سوال بپرسه به چه قسمتی بره ، مثلا اگه 3 رو وارد کرد قسمت چستجو رو فراخوانی کنه : شاید اصطلاح سویچ تو در تو باشه نمی دونم ..
ممنونم میشم دوستان کمک کنند :(

parvizwpf
چهارشنبه 14 خرداد 1393, 14:17 عصر
رو کدوم خط و چه اروری میده؟

kurd_programming
چهارشنبه 14 خرداد 1393, 17:20 عصر
رو کدوم خط و چه اروری میده؟
دوست عزیز هیچ اروری نداری فقط میخواستم مثلا با وارد کردن عدد 3 بعد عملیات درج بره case 3 رو اجرا کنه :(

vahid-p
چهارشنبه 14 خرداد 1393, 18:02 عصر
Wow!
چرا case 2 رو تو حلقه for مربوط به case 1 گذاشتی؟!!!!!
چرا break رو کامنت کردی؟!
همچنین بهتره برای switch از { و } استفاده کنید!

kurd_programming
چهارشنبه 14 خرداد 1393, 18:54 عصر
Wow!
چرا case 2 رو تو حلقه for مربوط به case 1 گذاشتی؟!!!!!
چرا break رو کامنت کردی؟!
همچنین بهتره برای switch از { و } استفاده کنید!
break ها رو همین طوری کامنت کردم
در ضمن {} ها افتاده دوباره پست رو ویرایش کردم
case 2 جداست

Salar Moghaddam
چهارشنبه 14 خرداد 1393, 19:18 عصر
سوال خوب = جواب خوب :)
الان ما دقیقا نه میدونیم ارور چیه نه میدونیم دقیقا می خواید چیکار کنید

kurd_programming
چهارشنبه 14 خرداد 1393, 23:50 عصر
سوال خوب = جواب خوب :)
الان ما دقیقا نه میدونیم ارور چیه نه میدونیم دقیقا می خواید چیکار کنید
ارور نداره :(
واقعا هم خودم هم نمی دونم چطوری سوالو مطرح کنم شما متوجه بشید :(
از اول که از کاربر می پرسه به کدام قسمت می خوای بری . مثلا کاربر 1 میزنه و case 1 که قسمت درج هست اجرا میشه حالا
در case 1 که کار درج انجام میشه . وقتی که درج انجام شد و کد 35 نمایش داده شد بعد اون کد از کاربر بپرسه که به کدوم قسمت میخواد مراجعه کنه میخواد بره و یرایش ، جستجو یا دوباره درج انجام بده .
نمیدونم چطور بنویسمش که این کارو انجام بدم

parvizwpf
چهارشنبه 14 خرداد 1393, 23:57 عصر
یه جورایی باید از
cout<<"************* WELCOME TO TELLPHONE menu ************* "<<endl;
به بعد رو داخل do while بزارید و یک آیتم هم به اون سه آیتم برای خروج اضافه کنید که کلا کد exit رو اجرا کنه.

vahid-p
پنج شنبه 15 خرداد 1393, 03:50 صبح
همونطور که دوستمون گفتند، میتونید مثلا یه case 4 تعریف کنید که return 0 کنه. کل خط 19 تا 81 رو داخل یک while(1) بذار که همواره درست باشه.

#include "stdafx.h"
#include<iostream>
#include<string>
#include<conio.h>


using namespace std;
struct tellphone{
char fname[100],lname[100];
double no;
};
int main()
{
int a=0,i,j,count=0;
char ans;
int src;
tellphone tell[100];
cout<<"************* WELCOME TO TELLPHONE menu ************* "<<endl;
while(1){
cout<<"1. Insert"<<endl;
cout<<"2. Edit"<<endl;
cout<<"3. Search"<<endl;
cout<<"4. Exit"<<endl;
cout<<"Enter number :";
cin>>a;
switch(a)
{
case 1:
for(i=0;;i++)
{
cout<<"************* WELCOME TO Insert ************* "<<endl;
cout<<"Enter a first name : "<<endl;
cin.getline(tell[i].fname,30);
cout<<"Enter a Family : "<<endl;
cin.getline(tell[i].lname,30);
cout<<"Enter a No. phone : ";
cin>>tell[i].no;
cout<<"************* INSERT IS COMPLETE ************* "<<endl;
//cout<<"Do you want go to menu ? Y/N .... ";
count++;

}
break;
case 2:
cout<<"************* WELCOME TO EDIT *************"<<endl;
cout<<"Enter a no phone for edit :"<<endl;
cin>>src;
for(i=0;i<count;i++)
{
if(src==tell[i].no)
{
cout<<"Name is : "<<tell[i].fname<<endl;
cout<<"family is : "<<tell[i].lname<<endl;
cout<<"No.phone is : "<<tell[i].no<<endl;
cout<<"Enter a name for edit : "<<endl;
cin.getline(tell[i].fname,20);
cout<<"Enter a FAmily for edit : "<<endl;
cin.getline(tell[i].lname,20);
cout<<"Enter a no.phone for edit : "<<endl;
cin>>tell[i].no;
cout<<"*************EDIT it complete*************";
}else
{
cout<<"No not found :(";
}
}
break;
case 3:
cout<<"************* WELCOME TO SEARCH *************"<<endl;
cout<<"Enter a no phone:"<<endl;
cin>>src;
for(i=0;i<count;i++)
{
if(src==tell[i].no)
{
cout<<"Name is : "<<tell[i].fname<<endl;
cout<<"family is : "<<tell[i].lname<<endl;
cout<<"No. phone is : "<<tell[i].no<<endl;
}else
{
cout<<"No not found : :(";
}
}
break;
case 4:
return 0;
break;
}
}
_getch();
}