永发信息网

c程序简化 在线等待 拜托高手!!

答案:1  悬赏:0  手机版
解决时间 2021-07-19 04:32

能再简化点么?最好把list 和list1 简化成一个 在线等待 谢谢啦


#include "stdio.h"
#include"conio.h"
#define M 50
void show_menu()
{
printf("\n\n");
printf("┏━━━━━━主菜单━━━━━━┓\n");
printf("┃    1.显示通讯录  ┃\n");
printf("┃    2.添加记录     ┃\n");
printf("┃    3.编辑记录     ┃\n");
printf("┃    4.整理记录     ┃\n");
printf("┃    5.导出通讯录    ┃\n");
printf("┃    6.导入通讯录    ┃\n");
printf("┃    9.退出       ┃\n");
printf("┗━━━━━━━━━━━━━━━┛\n");
printf("\n\n");
}
typedef struct
{
char name[9];
char addr[31];
char tele[12];
int scor;
}ADDRESS;
int menu_select()
{
char c[2];
printf("输入你的选择(1~9)");
scanf("%s",c);
return atoi(c);
}
void list(ADDRESS t[],int n)
{ int i,r=0;
clrscr();
gotoxy(6,3);
printf("┏━━━━┯━━━━━━━━━显示通讯录━━┯━━━━━━━┯━━━━┓");
gotoxy(6,4);
printf("┃姓名 │住址             │电话号码   │ 积分  ┃");
gotoxy(6,5);
printf("┠────┼────────────────┼───────┼────┨");
for(i=0,r=6;i<n;i++,r++)
{ gotoxy(6,r);printf("┃");
gotoxy(8,r);printf("%s",t[i].name);
gotoxy(16,r);printf("│");
gotoxy(18,r);printf("%s",t[i].addr);
gotoxy(50,r);printf("│");
gotoxy(52,r);printf("%s",t[i].tele);
gotoxy(66,r);printf("│");
gotoxy(68,r);printf("%d",t[i].scor);
gotoxy(76,r);printf("┃\n");
}
gotoxy(6,r);printf("┗━━━━┷━━━━━━━━━━━━━━━━┷━━━━━━━┷━━━━┛");
}
int enter(ADDRESS t[],int n)
{
int k=0;
printf("请输入以下信息,姓名若输入'?'则结束:姓名 住址 电话 积分\n");
printf("┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n");
while(1)
{
scanf("%s",t[n].name);
if(strcmp(t[n].name,"?")==0)break;
scanf("%s%s%d",t[n].addr,t[n].tele,&t[n].scor);
printf("┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n");
n++;k++;
}
printf("要添加%d记录结束!",k);
return n;
}


void show_menu1()
{
printf("\n\n");
printf("┏━━━━━━主菜单━━━━━━┓\n");
printf("┃    1.插入记录  ┃\n");
printf("┃    2.删除记录     ┃\n");
printf("┃    3.修改记录     ┃\n");
printf("┃    4.退出       ┃\n");
printf("┗━━━━━━━━━━━━━━━┛\n");
printf("\n\n");
}
int menu_select1()
{
char c[2];
printf("输入你的选择(1~4)");
scanf("%s",c);
return atoi(c);
}
void list1(ADDRESS t[],int n)
{ int i,r=0;
clrscr();
gotoxy(6,3);
printf("┏━━━━┯━━━━━━━━━显示通讯录━━┯━━━━━━━┯━━━━┓");
gotoxy(6,4);
printf("┃姓名 │住址             │电话号码   │ 积分  ┃");
gotoxy(6,5);
printf("┠────┼────────────────┼───────┼────┨");
for(i=0,r=6;i<n;i++,r++)
{ gotoxy(6,r);printf("%d",i+1);
gotoxy(8,r);printf("%s",t[i].name);
gotoxy(16,r);printf("│");
gotoxy(18,r);printf("%s",t[i].addr);
gotoxy(50,r);printf("│");
gotoxy(52,r);printf("%s",t[i].tele);
gotoxy(66,r);printf("│");
gotoxy(68,r);printf("%d",t[i].scor);
gotoxy(76,r);printf("┃\n");
}
gotoxy(6,r);printf("┗━━━━┷━━━━━━━━━━━━━━━━┷━━━━━━━┷━━━━┛");
}
int insert(ADDRESS t[],int n)
{
int i,k;
clrscr();
list1(t,n);
printf("\n请输入要输入的数据x(姓名 住址 电话 积分)和插入的位置k");
printf("\n┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈\n");
scanf("%s%s%s%d%d",t[n+1].name,t[n+1].addr,t[n+1].tele,&t[n+1].scor,&k);
for(i=n-1;i>=k-1;i--)
{
strcpy(t[i+1].name,t[i].name);
strcpy(t[i+1].addr,t[i].addr);
strcpy(t[i+1].tele,t[i].tele);
t[i+1].scor=t[i].scor;
}
strcpy(t[k-1].name,t[n+1].name);
strcpy(t[k-1].addr,t[n+1].addr);
strcpy(t[k-1].tele,t[n+1].tele);
t[k-1].scor=t[n+1].scor;
printf("\n您已插入了一条记录!");
n++;
list(t,n);
return n;
}
int delet(ADDRESS t[],int n)
{
int i,k;
clrscr();
list1(t,n);
printf("\n请输入你要删除的元素位置k\n");
scanf("%d",&k);
for(i=k-1;i<n;i++)
{
strcpy(t[i].name,t[i+1].name);
strcpy(t[i].addr,t[i+1].addr);
strcpy(t[i].tele,t[i+1].tele);
t[i].scor=t[i+1].scor;
}
printf("\n您已删除了一条记录!");
n--;
list(t,n);
return n;
}
int amend(ADDRESS t[],int n)
{

char c[2],s[50];
list(t,n);
printf("\n输入你要修改记录的序号%d:",n);
scanf("%s",c);
n=atoi(c);
clrscr();
printf("%s\n",t[n-1].name);
gets(s);
gets(s);
if(s[0])strcpy(t[n-1].name,s);
printf("%s\n",t[n-1].addr);
getch();
gets(s);
if(s[0])strcpy(t[n-1].addr,s);
printf("%s\n",t[n-1].tele);
gets(s);
if(s[0])strcpy(t[n-1].tele,s);
printf("%d\n",t[n-1].scor);
gets(s);
if(s[0])t[n-1].scor=atoi(s);
printf("\n您已修改了一条记录!");
return n;
}
int eidt(ADDRESS t[],int n)
{
int i;
while(1)
{ clrscr();
show_menu1();
i=menu_select1();
switch(i)
{ case 1:n=insert(t,n);getch();break;
case 2:n=delet(t,n);getch();break;
case 3:n=amend(t,n);getch();break;
}
if(i==4)break;
}
return n;
}

void sort(ADDRESS t[],int n,int m)
{
int i,j,k;
clrscr();
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
switch(m)
{
case 1:if(strcmp(t[j].name,t[k].name)<0)k=j;break;
case 2:if(strcmp(t[j].addr,t[k].addr)<0)k=j;break;
case 3:if((t[j].scor<t[k].scor)<0)k=j;
}
if(k!=i)
{t[n]=t[i];t[i]=t[k];t[k]=t[n];}

}
}
void show_menu2()
{
printf("\n\n");
printf("┏━━━━━━主菜单━━━━━━┓\n");
printf("┃    1.按姓名排序  ┃\n");
printf("┃    2.按住址排序    ┃\n");
printf("┃    3.按积分排序    ┃\n");
printf("┃    4.退出整理     ┃\n");
printf("┗━━━━━━━━━━━━━━━┛\n");
printf("\n\n");
}
int menu_select2()
{
char c[2];
printf("输入你的选择(1~4)");
scanf("%s",c);
return atoi(c);
}
void arrange(ADDRESS t[],int n)
{
int i;
while(1)
{
clrscr();
show_menu2();
i=menu_select2();
switch(i)
{ case 1:sort(t,n,1);list(t,n);getch();break;
case 2:sort(t,n,2);list(t,n);getch();break;
case 3:sort(t,n,3);list(t,n);getch();break;
}
if(i==4)break;
}
}

void save(ADDRESS t[],int n)
{
FILE *fp;
int i;
char s[81];
clrscr();
printf("请输入要保存的文件路径及名称:");
scanf("%s",s);
if((fp=fopen(s,"wb"))==NULL)
{printf("找不到该文件\n");getch();return;}
fprintf(fp,"%d",n);
fprintf(fp,"\r\n");
for(i=0;i<n;i++)
{
fprintf(fp,"%10s%35s%15s%6d",t[i].name,t[i].addr,t[i].tele,t[i].scor);
fprintf(fp,"\r\n");
}
fclose(fp);
printf("文件保存成功!\n");
getch();
}


int load(ADDRESS t[],int n)
{
FILE *fp;
int i;
char s[81];
clrscr();
printf("请输入要读入的文件路径及名称:");
scanf("%s",s);
if((fp=fopen(s,"rb"))==NULL)
{printf("找不到该文件\n");getch();}
fscanf(fp,"%d",&n);
for(i=0;i<n;i++)
fscanf(fp,"%10s%35s%15s%6d",t[i].name,t[i].addr,t[i].tele,&t[i].scor);
fclose(fp);
printf("已成功导入%d条记录\n",n);
getch();
return n;

}


void main()
{
int i;
ADDRESS addr[M]={"张婷婷","东校园18栋1号","13546782580",10,
"李晓清","西校园1栋503号","13878896542",23,
"东方博明","东校园5栋121号","13802497825",12};
int length=3;
while(1)
{ clrscr();
show_menu();
i=menu_select();
switch(i)
{ case 1:list(addr,length);getch();break;
case 2:length=enter(addr,length);getch();break;
case 3:length=eidt(addr,length);break;
case 4:arrange(addr,length);break;
case 5:save(addr,length);break;
case 6:length=load(addr,length);break;
case 9:exit(0);
}
}
}

最佳答案

想要减掉一个不是很容易,用goto语句的话肯定要附带FOR语句以及IF语句,我认为无需更改,要改的话应该会比目前这个要复杂。


或者把list变成子函数掉用,这样可能会好点!


我只是简短的看了下,没有试验!

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么增加问问的积分?
强人都是孤独的吗
道德经的经典语句,老子道德经中形容人要方圆
为什么我的爱情这么短暂
罗比尼奥会回到皇马吗?
我要私奔,谁陪我......?
怎么样才能把书念好?
求电脑上玩的极品飞车9或11的下载地址
孝顺的例子,近朱者赤、近墨者黑的例子,逆境
安全到达日本的句子,关于东京和巴黎的唯美句
这只圆脑袋猫是哪里的?
为什么我下载了3个分割包,第一个压缩时,到
大学如何渡过
仓库账务处理流程,仓库记账怎么做。
知道我的电脑为什么灯不上炫舞的网站吗
推荐资讯
求诺基亚6300开最小化软件
诸法是什么意思,如来者,即诸法如义 是什么意
注册bigbang官网
什么相处的成语,相的成语有哪些
爸爸的爱作文小学作文四年级400字左右
你认为中国没有一所创新型学校的根本原因是什
男人有多少?
天山不加外攻,只加身法,会心,能行吗,同等
求2007AUTCAD 破解版
天津市内哪有雅阁汽车俱乐部
高中什么时候分科?
目前手机开黄钻每月赠送多少点营养值?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?