-
این برنامه با C++
سلام.
استاد ما واسه عید! یه تکلیف بهمون داده که شامل این میشه:
برنامه ای تحت داس که شامل منو باشه و این کارو رو انجام بده:
با استفاده از struct و برای هر دانشجو، شماره ی دانشجویی، نام، نام خانوادگی، آدرس، تلفن و رشته ی تحصیلی رو بگیره، اونو توی یک فایل ذخیره کنه، فایل رو مرتب کنه.
منو هم شامل این موارد باشه:
درج
ویرایش
لیست
لیست مرتب شده
حذف
خروج
حالا من اصلا نمیدونم واسه ساخت منوی تحت داس با C++ باید چکار کرد و در ضمن برای مرتب کردن همچین لیستی چه الگوریتمی کارامدتره و کار با فایلها هم نمیدونم!
ممنون میشم اساتید راهنمایی کنن.
-
این برنامه به زبان c است. یک اجرا بگیرید تا متوجه بشید استادتون چی می خواد:
کد:
# include<stdio.h>
# include<conio.h>
# include<stdlib.h>
# include<string.h>
# include<alloc.h>
struct salary{//????? ???????? ???? ?? ??????? ??????
char name[20];
char fam[25];
int id;
int year;
int sc;
struct salary *next;
}*start,*x,*y;
/* ************** DEFINITION GLOBAL VARIABLE ************** */
int e,a1,p,s,n,i,c,flag;
void *f;
FILE *fp;
char string1[10],string2[10],a;
/* ********************* ADD FUNCTION ********************* */
void add(struct salary)
{
x=(salary*)malloc(sizeof(*start));
if(start==NULL)
{
start=x;
y=x;
}
else
{
y->next=x;
y=x;
}
printf("\nenter your name:");
scanf("%s",x->name);
printf("\nenter your fam:");
scanf("%s",x->fam);
printf("\nenter a login year:");
scanf("%d",&x->year);
printf("\nenter your id:");
scanf("%d",&x->id);
printf("\nenter your salary:");
scanf("%d",&x->sc);
y->next=NULL;
}
/* ********************* SHOW FUNCTION ********************* */
void show(struct salary)
{
x=start;
while(! x==NULL)
{
printf("\nname=%s \t fam=%s \t id=%d \t year=%d \t sc=%d",x->name,x->fam,x->id,x->year,x->sc);
x=x->next;
}
}
/* ********************* SEARCH FUNCTION ******************* */
void search(struct salary)
{
printf("\nfor search name please press --->1");
printf("\nfor search fam color please press --->2");
printf("\nfor search id price please press --->3");
printf("\nenter a selection number for edit:");
scanf("%d",&s);
switch(s)
{
case 1:
{
flag=0;
printf("\nenter a name for search:" );
scanf("%s",string1);
x=start;
while(! x==NULL)
{
if(strcmpi(x->name,string1)==0)
{
printf("\nfam=%s \t id=%d \t year=%d \t sc=%d",x->fam,x->id,x->year,x->sc);
flag=1;
}
x=x->next;
}
if(flag==0)
printf("not found!!!");
break;
}
case 2:
{
flag=0;
printf("\nenter fam for search:" );
scanf("%s",string1);
x=start;
while(! x==NULL)
{
if(strcmpi(x->fam,string1)==0)
{
printf("\nname=%s \t id=%d \t year=%d \t sc=%d",x->name,x->id,x->year,x->sc);
flag=1;
}
x=x->next;
}
if (flag==0)
printf("not found!!!");
break;
}
case 3:
{
flag=0;
printf("\nenter a ID for search:" );
scanf("%d",&p);
x=start;
while(! x==NULL)
{
if(x->id==p)
{
printf("\nname=%s \t fam=%s \t year=%d \t sc=%d",x->name,x->fam,x->year,x->sc);
flag=1;
}
x=x->next;
}
if(flag==0)
printf("not found!!!");
break;
}
}
}
/* ********************* EDIT FUNCTION ********************* */
void edit(struct salary)
{
printf("\nfor edit name please press --->1");
printf("\nfor edit fam please press --->2");
printf("\nfor edit salary please press --->3");
printf("\nenter a selection number for edit:");
scanf("%d",&e);
switch(e)
{
case 1:
{
flag=0;
printf("enter name for edit:");
scanf("%s",string1);
// strcpy(string2,string1);
x=start;
while(! x==NULL)
{
if(strcmpi(x->name,string1)==0)
{
printf("\nname=%s \t fam=%s \t id=%d \t year=%d \t sc=%d",x->name,x->fam,x->id,x->year,x->sc);
flag=1;
}
x=x->next;
}
if(flag==1)
{
printf("\nwhat is name you want edit it");
printf("\nenter a id:");
scanf("%d",&c);
x=start;
while(! x==NULL)
{
if (((strcmpi(x->name,string1)==0)) && (x->id==c))
{
printf("\nenter a new name:");
scanf("%s",x->name);
flag=1;
}
x=x->next;
}
}
if(flag==0)
printf("\nnot found!!!");
break;
}
case 2:
{
flag=0;
printf("enter fam for edit:");
scanf("%s",string1);
x=start;
while(! x==NULL)
{
if(strcmpi(x->fam,string1)==0)
{
printf("\nname=%s \t fam=%s \t id=%d \t year=%d \t sc=%d",x->name,x->fam,x->id,x->year,x->sc);
flag=1;
}
x=x->next;
}
if(flag==1)
{
printf("\nwhat is fam you want edit it");
printf("\nenter a name:");
scanf("%s",string2);
x=start;
while(! x==NULL)
{
if (((strcmpi(x->fam,string1)==0)) && ((strcmpi(x->name,string2)==0)))
{
printf("\nenter a new fam:");
scanf("%s",x->fam);
flag=1;
}
x=x->next;
}
}
if(flag==0)
printf("\nnot found!!!");
break;
}
case 3:
{
flag=0;
printf("\nenter salary:");
scanf("%d",&p);
x=start;
while(! x==NULL)
{
if(x->sc==p)
{
printf("\nenter a new salary:");
scanf("%d",&x->sc);
flag=1;
}
x=x->next;
}
if(flag==0)
printf("not found!!!");
break;
}
}
}
/* ******************** DELETE FUNCTION ******************** */
void deletion(struct salary)
{
flag=0;
printf("enter fam for delete:");
scanf("%s",string1);
// strcpy(string2,string1);
x=start;
while(! x==NULL)
{
if(strcmpi(x->fam,string1)==0)
{
printf("\nname=%s \t fam=%s \t id=%d \t year=%d \t sc=%d ",x->name,x->fam,x->id,x->year,x->sc);
flag=1;
}
x=x->next;
}
if(flag==1)
{
printf("\nwhat is fam you want delete it");
printf("\nenter a name:");
scanf("%s",string2);
x=start;
while(! x==NULL)
{
if (((strcmpi(x->fam,string1)==0)) && (strcmpi(x->name,string2)==0))
{
if(x==start)
start=x->next;
else
y->next=x->next;
free(x);
flag=1;
}
y=x;
x=x->next;
}
}
if(flag==0)
printf("\nnot found!!!");
}
/* ********************* EXIT FUNCTION ********************* */
void outgo(struct salary)
{
fp=fopen("salary.txt","w");
if(fp == NULL)
{
printf("can not save these changes!!!");
}
x=start;
// y=start;
while(! x==NULL)
{
fprintf(fp,"%s \t %s \t %d \t %d \t %d",x->name,x->fam,x->id,x->year,x->sc);
x=x->next;
}
}
/* *********************found min and max and avg salary********* */
void found(struct salary)
{
int min,max,sum,i;
sum=0;
i=0;
x=start;
min=x->sc;
max=x->sc;
while(! x==NULL)
{
sum=sum+x->sc;
if(x->sc>max) max=x->sc;
if (x->sc<min)min=x->sc;
i++;
x=x->next;
}
printf("\n\t min=%d \t max=%d \t avg=%d",min,max,sum/i);
}
/* ********************* SHOW MAXIMUM SALARY **************** */
void found2(struct salary)
{
a=0;
flag=0;
printf("enter SALARY for show max salary:");
scanf("%d",&a1);
x=start;
while(! x==NULL)
{
if(x->sc>a1)
{
printf("\nname=%s \t fam=%s \t id=%d \t year=%d \t sc=%d ",x->name,x->fam,x->id,x->year,x->sc);
flag=1;
}
x=x->next;
}
if (flag==0) printf("\n!!! NOT FOUND !!!");
}
/* ********************* SHOW INFORMATIONS IN YEAR *************** */
void found3(struct salary)
{
a=0;
flag=0;
printf("enter YEAR for show INFORMATIONS:");
scanf("%d",&a1);
x=start;
while(! x==NULL)
{
if(x->year==a1)
{
printf("\nname=%s \t fam=%s \t id=%d \t year=%d \t sc=%d ",x->name,x->fam,x->id,x->year,x->sc);
flag=1;
}
x=x->next;
}
if (flag==0) printf("\n!!! NOT FOUND !!!");
}
/* ********************* MAIN FUNCTION ******************** */
main()
{
struct salary m;
start=NULL;
clrscr();
fp=fopen("salary.txt","r+");
rewind(fp);
start=NULL;
while(! feof(fp))
{
if(fp==NULL)
break;
x=(struct salary*)malloc(sizeof(struct salary));
if(start==NULL)
{
start=x;
y=x;
}
else
{
y->next=x;
y=x;
}
fscanf(fp,"%s \t %s \t %d \t %d \t %d",x->name,x->fam,&x->id,&x->year,&x->sc);
x->next=NULL;
}
fclose(fp);
while(1)
{
printf("\n1-ADD SPECIFICATION");
printf("\n2-SHOW SPECIFICATION");
printf("\n3-SEARCH SPECIFICATION");
printf("\n4-EDIT SPECIFICATION");
printf("\n5-DELETE SPECIFICATION");
printf("\n6-FOUND MIN,MAX AND AVG SALARY");
printf("\n7-FOUND MAX SALARY BY ENTER YOUR SALARY");
printf("\n8-SHOW INFORMATIONS IN YOUR YEAR");
printf("\n9-SAVE INFORMATION");
printf("\n10-EXIT");
printf("\nENTER A NUMBER FOR SELECT ITEM OF UP MENO:");
scanf("%d",&n);
switch (n)
{
/* ************************ ADD FUNCTION ************************* */
case 1:
{
add(m);
break;
}
/* ************************ SHOW FUNCTION ************************ */
case 2:
{
show(m);
break;
}
/* *********************** SEARCH FUNCTION *********************** */
case 3:
{
search(m);
break;
}
/* ************************ EDIT FUNCTION ************************ */
case 4:
{
edit(m);
break;
}
/* *********************** REMOVE FUNCTION *********************** */
case 5:
{
deletion(m);
break;
}
/* ********************** FOUND MIN,MAX,AVG *********************** */
case 6:
{
found(m);
break;
}
/* *********************** FOUND MAX SALARY ************************ */
case 7:
{
found2(m);
break;
}
/* *********************** SHOW INFORMATIONS IN YOUR YEAR ********* */
case 8:
{
found3(m);
break;
}
/* *********************** EXODUS FUNCTION *********************** */
case 9:
{
outgo(m);
// exit(n);
break;
}
/* **************************** EXIT ***************************** */
case 10:
{
printf("are you sure to exit??(y=yes)");
a=getche();
if (a=='y') exit(0);break;
}
/* *************************** END OF PROGRAM ********************* */
}
}
}
-
ممنون. اما منظور من معرفی توابع و اشیای ساخت منو و کار با فایلها بود. کسی میتونه راهنمایی کنه؟