姓名:任光烨 日期:2018年7月24日
今日学习任务:自学文件操作,单链表,完成通讯录4.0。
今日完成情况:都已完成,100~200行代码。
今日开发中出现的问题汇总:全局变量的延迟问题,fwrite函数的参数,。
今日未解决问题:无。
今日开发收获:文件操作以及数据结构
自我评价:
其他:附通讯录4.0源代码
通讯录现已完成功能汇总:
1.信息录入
2信息按序号以及名字大小冒泡排序输出
3修改信息
4删除信息
5按照电话号码以及名字查找信息
实现功能需自行创建data文件,可按自己需求修改信息存储文件的目录。
#include<stdio.h>
#include<string.h>
#define nmemb 10
int i=0;//信息总数
struct test
{
int num;
char name[30];
char sex[30];
char address[30];
char tel[30];
}stu[nmemb];
int screen1();//声明
void screen2()//显示功能
{
int ag=0,b=0;
int ig,jg;
int og=0;
char new3[30];
aa: printf("请选择显示方式:1.按序号显示2.按名字大小显示\n");
printf("请输入:");
scanf("%d",&ag);
if(ag==1)
{
for(b=0;b<i;b++)
{
printf("序号为:%d\n",stu[b].num);
printf("姓名为:%s\n",stu[b].name);
printf("性别为:%s\n",stu[b].sex);
printf("地址为:%s\n",stu[b].address);
printf("电话为:%s\n",stu[b].tel);
}
screen1();
}
else if(ag==2)
{
for(ig=0;ig<i-1;ig++)
{
for(jg=0;jg<i-1-ig;jg++)
{
if(strcmp(stu[ig].name,stu[ig+1].name)>0)
{
strcpy(new3,stu[ig].name);
strcpy(stu[ig].name,stu[ig+1].name);
strcpy(stu[ig+1].name,new3);
strcpy(new3,stu[ig].sex);
strcpy(stu[ig].sex,stu[ig+1].sex);
strcpy(stu[ig+1].sex,new3);
strcpy(new3,stu[ig].address);
strcpy(stu[ig].address,stu[ig+1].address);
strcpy(stu[ig+1].address,new3);
strcpy(new3,stu[ig].tel);
strcpy(stu[ig].tel,stu[ig+1].tel);
strcpy(stu[ig+1].tel,new3);
}
}
}
for(b=0;b<i;b++)
{
printf("序号为:%d\n",stu[b].num);
printf("姓名为:%s\n",stu[b].name);
printf("性别为:%s\n",stu[b].sex);
printf("地址为:%s\n",stu[b].address);
printf("电话为:%s\n",stu[b].tel);
}
}
else
{
printf("输入错误");
ag=0;
goto aa;
}
screen1();
}
void screen3()//输入信息功能
{
int c=0,d=0;
for(c=i;c<10;c++)
{
// printf("请输入序号:");
// scanf("%d",&stu[c].num);
printf("请输入姓名:");
scanf("%s",stu[c].name);
printf("请输入性别:");
scanf("%s",stu[c].sex);
printf("请输入地址:");
scanf("%s",stu[c].address);
printf("请输入号码:");
scanf("%s",stu[c].tel);
printf("输入成功\n");
i++;
lopa:printf("继续输入请按1,退出请按2\n");
printf("请输入:");
scanf("%d",&d);
if(d==1);
else if(d==2) break;
else
{
goto lopa;
}
if(i==nmemb)
{
printf("通讯录已满");
}
}
screen1();
}
void screen4()//删除信息功能
{
int e=0,f=0,g=0;
for(g=0;g<i;g++)
{
printf("序号为:%d\n",stu[g].num);
printf("姓名为:%s\n",stu[g].name);
printf("性别为:%s\n",stu[g].sex);
printf("地址为:%s\n",stu[g].address);
printf("电话为:%s\n",stu[g].tel);
}
printf("请选择需要删除的序号:");
scanf("%d",&e);
for(f=e;f<i;f++)
{
strcpy( stu[f-1].name,stu[f].name);
strcpy( stu[f-1].tel,stu[f].tel);
strcpy( stu[f-1].sex,stu[f].sex);
strcpy( stu[f-1].address,stu[f].address);
}
strcpy( stu[i].name,"");
strcpy( stu[i].tel,"");
strcpy( stu[i].sex,"");
strcpy( stu[i].address,"");
i--;
printf("删除成功\n");
screen1();
}
void screen5()
{
int j=0,k=0;
char new1[30];
kkk: printf("请选择查找方法:1.按电话号码查找 2.按姓名查找 3.返回主菜单\n");
strcpy(new1,"");
printf("请输入:");
scanf("%d",&j);
if(j==1)
{
printf("请输入所要查询的电话号码:");
scanf("%s",new1);
for(k=0;k<10;k++)
{
if(strcmp(new1,stu[k].tel)==0)
{
printf("已找到相关信息:\n");
printf("序号为:%d\n",stu[k].num);
printf("姓名为:%s\n",stu[k].name);
printf("性别为:%s\n",stu[k].sex);
printf("地址为:%s\n",stu[k].address);
printf("电话为:%s\n",stu[k].tel);
break;
}
if(k==9)
{
printf("未找到相关信息\n");
}
}
}
else if(j==2)
{
printf("请输入所要查找的姓名:");
scanf("%s",new1);
for(k=0;k<10;k++)
{
if(strcmp(new1,stu[k].name)==0)
{
printf("已找到相关信息:\n");
printf("序号为:%d\n",stu[k].num);
printf("姓名为:%s\n",stu[k].name);
printf("性别为:%s\n",stu[k].sex);
printf("地址为:%s\n",stu[k].address);
printf("电话为:%s\n",stu[k].tel);
break;
}
if(k==9)
{
printf("未找到相关信息\n");
}
}
screen1();
}
else if(j==3)
{
screen1();
}
else
{
printf("输入错误\n");
goto kkk;
}
screen1();
}
void screen6()//修改信息功能
{
int o,p,q,r;
char new2[10];
for(r=0;r<i;r++)
{
printf("序号为:%d\n",stu[r].num);
printf("姓名为:%s\n",stu[r].name);
printf("性别为:%s\n",stu[r].sex);
printf("地址为:%s\n",stu[r].address);
printf("电话为:%s\n",stu[r].tel);
}
printf("请输入需要修改信息的序号:\n");
printf("请输入:");
scanf("%d",&q);
printf("序号为:%d\n",stu[q-1].num);
printf("姓名为:%s\n",stu[q-1].name);
printf("性别为:%s\n",stu[q-1].sex);
printf("地址为:%s\n",stu[q-1].address);
printf("电话为:%s\n",stu[q-1].tel);
ee: printf("请选择需要修改的内容:1.姓名 2.性别 3 地址 4.电话号码 5.返回主界面\n");
strcpy(new2,"");
printf("请输入: ");
scanf("%d",&o);
if(o==1)
{
p=0;
ff: printf("请输入新姓名:");
scanf("%s",new2);
printf("%s",new2);
gg: printf("请确认信息是否正确\n");
printf("确认请按1,重新输入请按2 : ");
scanf("%d",&p);
if(p==1)
{
strcpy( stu[q-1].name,new2);
printf("修改成功\n");
goto ee;
}
else if(p==2)
{
goto ff;
}
else
{
printf("输入错误");
goto gg;
}
}
else if(o==2)
{
p=0;
ff1: printf("请输入新性别:");
scanf("%s",new2);
printf("%s",new2);
gg1: printf("请确认信息是否正确\n");
printf("确认请按1,重新输入请按2 : ");
scanf("%d",&p);
if(p==1)
{
strcpy( stu[q-1].sex,new2);
printf("修改成功\n");
goto ee;
}
else if(p==2)
{
goto ff1;
}
else
{
printf("输入错误");
goto gg1;
}
}
else if(o==3)
{
p=0;
ff2: printf("请输入新地址:");
scanf("%s",new2);
printf("%s",new2);
gg2: printf("请确认信息是否正确\n");
printf("确认请按1,重新输入请按2 : ");
scanf("%d",&p);
if(p==1)
{
strcpy( stu[q-1].address,new2);
printf("修改成功\n");
goto ee;
}
else if(p==2)
{
goto ff2;
}
else
{
printf("输入错误");
goto gg2;
}
}
else if(o==4)
{
p=0;
ff3: printf("请输入新号码:");
scanf("%s",new2);
printf("%s",new2);
gg3: printf("请确认信息是否正确\n");
printf("确认请按1,重新输入请按2 : ");
scanf("%d",&p);
if(p==1)
{
strcpy( stu[q-1].tel,new2);
printf("修改成功\n");
goto ee;
}
else if(p==2)
{
goto ff3;
}
else
{
printf("输入错误");
goto gg3;
}
}
else if(o==5)
{
screen1();
}
else
{
printf("输入错误");
goto ee;
}
screen1();
}
int screen1()//主屏幕
{
int a=0;
int flag = 1;
printf("****************************\n");
printf("************功能************\n");
printf(" 1. 显示通讯录 \n");
printf(" 2. 添加新信息 \n");
printf(" 3. 删除信息 \n");
printf(" 4. 查找信息 \n");
printf(" 5. 修改信息 \n");
printf(" 6. 结束功能 \n");
printf("****************************\n");
printf("请选择功能(1~6):");
scanf("%d",&a);
switch(a)
{
case 1:
screen2();
break;
case 2:
screen3();
break;
case 3:
screen4();
break;
case 4:
screen5();
break;
case 5:
screen6();
break;
case 6:
flag=0;
sleep(0.5);
break;
default :printf("输入错误\n");break;
}
return flag;
}
int main()
{
int h=0;
int flag=1;
FILE * stream;
stream=fopen("/root/Desktop/addresslist/data","r");
if(stream == NULL)
{
printf("文件打开失败");
}
fread(&i,sizeof(int),1,stream);
printf("总数为:%d",i);
fread(stu,sizeof(struct test),i,stream);
fclose(stream);
for(h=0;h<10;h++)
{
stu[h].num=h+1;
}
while(flag)
{
flag=screen1();
}
stream=fopen("/root/Desktop/addresslist/data","w+");
fwrite(&i,sizeof(int),1,stream);
fwrite(stu,sizeof(struct test),10,stream);
fclose(stream);
return 0;
}