小型通讯录的设计c语言.docx

上传人:b****6 文档编号:8591780 上传时间:2023-02-01 格式:DOCX 页数:15 大小:54.35KB
下载 相关 举报
小型通讯录的设计c语言.docx_第1页
第1页 / 共15页
小型通讯录的设计c语言.docx_第2页
第2页 / 共15页
小型通讯录的设计c语言.docx_第3页
第3页 / 共15页
小型通讯录的设计c语言.docx_第4页
第4页 / 共15页
小型通讯录的设计c语言.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

小型通讯录的设计c语言.docx

《小型通讯录的设计c语言.docx》由会员分享,可在线阅读,更多相关《小型通讯录的设计c语言.docx(15页珍藏版)》请在冰豆网上搜索。

小型通讯录的设计c语言.docx

小型通讯录的设计c语言

 

高级语言(C)课程设计

 

题目:

小型通讯录设计

 

院(系、部):

信息工程

姓名:

班级:

指导教师签名:

2008年12月18日·北京

目录

一、任务书*************************************2

二、总体设计***********************************2

三、模块划分及功能*****************************2

四、算法说明***********************************2

五、流程图*************************************5

六、源程序清单*********************************6

七、程序测试***********************************27

八、结论、体会及建议***************************28

附:

参考文献资料********************************28

 

一、任务书

题目6:

小型通讯录设计

功能:

实现简单的通讯录信息管理,基本信息包括编号、姓名、电话、手机、邮编、地址和关系(如朋友、亲友、同事、同学等)

基本要求:

1.设计简单的菜单,能够进行系统功能选择。

2.实现信息的录入功能。

3.在已有信息的基础上添加新的记录。

4.删除指定编号的记录。

5.修改指定编号的记录

6.实现信息的浏览功能

7.按编号查询功能

8.按手机号排序功能

二、总体设计

利用structperson定义数据结构,用void声明函数,用开关语句switch,case分开事件进行程序,实现系统功能选择,利用if,while语句判断函数,for语句实现循环,利用printf和scanf进行输出与输入,用gets()输入字符串,最终实现通讯录功能。

三、模块划分及功能

主模块:

main()/*主函数*/

其他模块:

模块一:

creat()读入记录

模块二:

List()显示记录

模块三:

Delete()删除记录

模块四:

Find()按人名查找记录

模块五:

Find1()按编号查找记录

模块六:

Input()输入记录

模块七:

Alter()改变记录

模块八:

Paixu()排列记录

模块九:

Save()保存记录

四、算法说明

1:

定义结构体变量,进行函数声名。

#include/*I/O函数*/

#include/*字符串操作函数*/

#definemaxlen100/*输入人数最大量*/

2以下是函数声明:

voidcreat()/*读入记录*/

voidList()/*显示记录*/

voidDelete()/*删除记录*/

voidFind()/*按人名查找记录*/

voidFind1()/*按编号查找记录*/

voidInput()/*输入记录*/

voidAlter()/*改变记录*/

voidPaixu()/*排列记录*/

voidSave()/*保存记录*/

3开关语句

{switch(menu())/*调用主菜单函数,返回值整数作开关语句的条件*/

{case1:

voidList()break;/*显示记录*/

case2:

voidDelete()break;/*删除记录*/

case3:

voidFind()break;/*按人名查找记录*/

case4:

voidFind1()break;/*按编号查找记录*/

case5:

voidInput()break;/*输入记录*/

case6:

voidAlter()break;/*改变记录*/

case7:

voidPaixu()break;/*按手机号降序排列记录*/

case8:

voidSave()break;/*保存记录*/

case9:

/*退出*/

4for语句为选择法排序

for(a=0;a

{for(b=a+1;b

{if(strcmp(k[a].phone,k[b].phone>0))/*若前者长度大于后者则进行交换*/

{f=k[b];

k[b]=k[a];

k[a]=f;

}

}

}

按编号查找记录

{printf("\n\n\tpleaseinputthenumber:

");

p9=head;

gets(number1);

while(strcmp(number1,p9->number)!

=0&&p9!

=NULL)/*判断输入的数字编号与已有的是否相等,如不相等则退出循环*/

p9=p9->next;

if(p9==NULL)

{printf("\n\n\tItisnotexitintheaddr-book!

");

}

else

{printf("name:

%s",p9->name);/*输出相应信息*/

printf("number:

%s",p9->number);

printf("addr:

%s",p9->addr);

printf("tel:

%s",p9->tel);

printf("phone:

%s",p9->phone);

printf("postnumber:

%s",p9->postnum);

printf("guanxi:

%s\n",p9->guanxi);

}

}

 

五、流程图

退出系统

六、源程序清单

#include

#include

#definemaxlen100

structpersons

{charname[15];

charnumber[10];

charaddr[20];

chartel[10];

charphone[15];

charpostnum[10];

charguanxi[15];

}persons[maxlen];

structm

{charname[15];

charnumber[10];

charaddr[20];

chartel[10];

charphone[15];

charpostnum[10];

charguanxi[15];

}k[maxlen],f;

typedefstructlnode

{charname[15];

charnumber[10];

charaddr[20];

chartel[10];

charphone[15];

charpostnum[15];

charguanxi[15];

structlnode*next;

}listnode,*linklist;

linklisthead=NULL,r=NULL;

listnode*s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;

inti,a,b,n=0;

charname1[15],ch;

charred[20];

charnumber1[10];

charstr1[20];

FILE*fp;

voidcreat()

{intj;

longk;

fp=fopen("lms.txt","r+t");

if(fp!

=NULL)

{for(i=1;i

{j=fgetc(fp);

if(j==EOF)

return;

k=i-1;

fseek(fp,k*sizeof(structpersons),0);

fread(&persons[i],sizeof(structpersons),1,fp);

s=(linklist)malloc(sizeof(listnode));

strcpy(s->name,persons[i].name);

strcpy(s->number,persons[i].number);

strcpy(s->addr,persons[i].addr);

strcpy(s->tel,persons[i].tel);

strcpy(s->phone,persons[i].phone);

strcpy(s->postnum,persons[i].postnum);

strcpy(s->guanxi,persons[i].guanxi);

if(head==NULL)

head=s;

else

r->next=s;

r=s;}

}

else

{fp=fopen("lms.txt","w");i=1;

}

}

voidList()

{p1=head;

while(p1!

=NULL)

{printf("\nname:

%s",p1->name);

printf("number:

%s",p1->number);

printf("addr:

%s",p1->addr);

printf("tel:

%s",p1->tel);

printf("phone:

%s",p1->phone);

printf("postnumber:

%s",p1->postnum);

printf("guanxi:

%s",p1->guanxi);

p1=p1->next;

}

}

voidDelete()

{printf("\n\n\tpleaseinputthename:

");

gets(name1);p4=head;

if(strcmp(p4->name,name1)==0)

{p4=p4->next;

head=p4;

}

else

{while(strcmp(p4->next->name,name1)!

=0)

{printf("\t\tDon'tfindthispeople");

break;}

}

}

voidFind()

{printf("\n\n\tpleaseinputthename:

");

p0=head;

gets(name1);

while(strcmp(name1,p0->name)!

=0&&p0!

=NULL)

p0=p0->next;

if(p0==NULL)

{printf("\n\n\tItisnotexitintheaddr-book!

");

}

else

{printf("name:

%s",p0->name);

printf("number:

%s",p0->number);

printf("addr:

%s",p0->addr);

printf("tel:

%s",p0->tel);

printf("phone:

%s",p0->phone);

printf("postnumber:

%s",p0->postnum);

printf("guanxi:

%s\n",p0->guanxi);

}

}

voidFind1()

{printf("\n\n\tpleaseinputthenumber:

");

p9=head;

gets(number1);

while(strcmp(number1,p9->number)!

=0&&p9!

=NULL)

p9=p9->next;

if(p9==NULL)

{printf("\n\n\tItisnotexitintheaddr-book!

");

}

else

{printf("name:

%s",p9->name);

printf("number:

%s",p9->number);

printf("addr:

%s",p9->addr);

printf("tel:

%s",p9->tel);

printf("phone:

%s",p9->phone);

printf("postnumber:

%s",p9->postnum);

printf("guanxi:

%s\n",p9->guanxi);

}

}

voidInput()

{s=(linklist)malloc(sizeof(listnode));

printf("\n\n\tpleaseinputthesb'sxinxi:

");

printf("\n\n\t\tname:

");

scanf("%s",s->name);

printf("\n\n\t\tnumber:

");

scanf("%s",s->number);

printf("\n\n\t\tAddr:

");

scanf("%s",s->addr);

printf("\n\n\t\ttel:

");

scanf("%s",s->tel);

printf("\n\n\t\tphone:

");

scanf("%s",s->phone);

printf("\n\n\t\tpostnumber:

");

scanf("%s",s->postnum);

printf("\n\n\t\tguanxi:

");

scanf("%s",s->guanxi);

if(head==NULL)

head=s;

else

r->next=s;

r=s;

}

voidAlter()

{

intj;

printf("\n\n\tPleaseinputthename:

");

gets(name1);

p3=head;

while(strcmp(name1,p3->name)!

=0&&p3!

=NULL)

p3=p3->next;

if(p3==NULL)

printf("\n\n\tItisnotexitintheaddr-book!

");

else

{printf("\n\n\tpleaseinputthenewmeg!

");

printf("\n\n\t\tname:

");

scanf("%s",&red);

strcpy(p3->name,red);

printf("\n\n\t\tnumber:

");

scanf("%s",&red);

strcpy(p3->number,red);

printf("\n\n\t\tAddr:

");

scanf("%s",&red);

strcpy(p3->addr,red);

printf("\n\n\t\ttel:

");

scanf("%s",&red);

strcpy(p3->tel,red);

printf("\n\n\t\tphone:

");

scanf("%s",&red);

strcpy(p3->phone,red);

printf("\n\n\t\tpostnumber:

");

scanf("%s",&red);

strcpy(p3->postnum,red);

printf("\n\n\t\tguanxi:

");

scanf("%s",&red);

strcpy(p3->guanxi,red);

}

}

voidPaixu()

{p8=head;

i=0;

while(p8!

=NULL)

{strcpy(k[i].name,p8->name);

strcpy(k[i].number,p8->number);

strcpy(k[i].addr,p8->addr);

strcpy(k[i].tel,p8->tel);

strcpy(k[i].phone,p8->phone);

strcpy(k[i].postnum,p8->postnum);

strcpy(k[i].guanxi,p8->guanxi);

p8=p8->next;

i++;

n=n+1;

}

for(a=0;a

{for(b=a+1;b

{if(strcmp(k[a].phone,k[b].phone)>0)

{f=k[b];

k[b]=k[a];

k[a]=f;

}

}

}

for(i=0;i

{

printf("\nname:

%s",k[i].name);

printf("number:

%s",k[i].number);

printf("addr:

%s",k[i].addr);

printf("tel:

%s",k[i].tel);

printf("phone:

%s",k[i].phone);

printf("postnumber%s",k[i].postnum);

printf("guanxi:

%s",k[i].guanxi);

}

}

voidSave()

{intj;

fp=fopen("lms.txt","w");

for(p2=head,j=0;p2!

=NULL;j++,p2=p2->next)

{strcpy(persons[j].name,p2->name);

strcpy(persons[j].number,p2->number);

strcpy(persons[j].addr,p2->addr);

strcpy(persons[j].tel,p2->tel);

strcpy(persons[j].phone,p2->phone);

strcpy(persons[j].postnum,p2->postnum);

strcpy(persons[j].guanxi,p2->guanxi);

fwrite(&persons[j],sizeof(structpersons),1,fp);

}

}

voidmain()

{creat();

do

{printf("\n\t***********************************************\n");

printf("\tWELCOMETOUSEAddressbook\n");

printf("\t**********************************************");

printf("\n\t\tPleasemakeachoicebelow:

");

printf("\n\t\t1.Listallthemeg");

printf("\n\t\t2.Deleteapieceofmeg");

printf("\n\t\t3.Findapieceofmegusename");

printf("\n\t\t4.Findapieceofmegusenumber");

printf("\n\t\t5.Addapieceofmeg");

printf("\n\t\t6.Alterapieceofmeg");

printf("\n\t\t7.listofphone");

printf("\n\t\t8.Save");

printf("\n\t\t9.Createanaddressbook");

printf("\n\t\t0.Quit");

printf("\n\tInputYourChoice:

");

ch=getchar();

switch(ch)

{case'1':

List();

break;

case'2':

Delete();

break;

case'3':

Find();

break;

case'4':

Find1();

break;

case'5':

Input();

break;

case'6':

Alter();

break;

case'7':

Paixu();

break;

case'8':

Save();

break;

case'9':

creat();

break;

case'0':

exit(0);

break;

default:

printf("\n\t********************************************\n");

printf("\n\tThenumshould0-9!

!

!

\n");

printf("\n\t********************************************\n");

break;

}

}while

(1);

}

 

七、程序测试

该程序可以实现某人通讯录管理,能够进行系统功能选择,实现信息的录入功能,在已有信息的基础上添加新的记录,删除、修改、查询指定遍号人的记录,进行排序,达到题目要求。

八、结论、体会及建议

经过几个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的不足之处,对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。

在实践中,有些问题遇到了之后想了好久,但也没有想出解决问题的方法,感觉很着急,这时应该请教老师或同学,看看他们是怎么来分析这个问题的,了解之后自己总结一下,重新构思问题,想出解决的办法,最后落实行动,检验一下自己的想法是否正确。

通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践。

以上就是我的一些感受。

最后感谢帮助过我的同学和老师,没有大家的帮助,我就不会取得今天的成绩。

附:

参考文献资料

苏小红等.C语言大学实用教程.电子工业出版社.2004

苏小红等.C语言大学实用教程习题与实验指导.电子工业出版社.2004

互联网上查阅的相关资料

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1