小型通讯录的设计c语言.docx
- 文档编号:8591780
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:15
- 大小:54.35KB
小型通讯录的设计c语言.docx
《小型通讯录的设计c语言.docx》由会员分享,可在线阅读,更多相关《小型通讯录的设计c语言.docx(15页珍藏版)》请在冰豆网上搜索。
小型通讯录的设计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
#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 互联网上查阅的相关资料
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小型 通讯录 设计 语言
![提示](https://static.bdocx.com/images/bang_tan.gif)