当前位置:文档之家› 通讯录程序设计报告

通讯录程序设计报告

湖南文理学院电信学院课程设计报告题目:通讯录管理**:**学院:电气与信息工程学院专业:通信工程班级:三班学号:************指导教师:***完成日期:2010年9月 28 日课程设计任务书目录1.1.设计目的 (4)2.概论 (5)3.算法分析 (6)4.程序源代码 (6)5.测试及输出结果使用方法 (11)6.心得体会 (13)7.参考文献 (14)1.设计目的通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识;C语言程序这门课程并不简单,是需要用心去学习,慢慢体会的,这一次的小程序让我学到了很多很多,使我对C语言有了更深的认识,虽然只学了一学期,然后就编了这个程序,是有点辛苦,但是我感觉最深的是我学习到了更多的知识,在这里我要感谢我的C语言老师李书涛老师以及指导老师谭忠兵老师,因为他们的指导我才能有如此大的进步2.概论课程设计目的:1. 进一步掌握和利用C语言进行程序设计的能力;2. 进一步理解和运用结构化程序设计的思想和方法;3. 初步掌握开发一个小型实用系统的基本方法;4. 学会调试一个较长程序的基本方法;5. 学会利用流程图或N-S图表示算法;6. 掌握书写程设计开发文档的能力 (书写课程设计报告) 。

主要内容:1.添加数据:输入姓名、电话号码及地址,即可添加数据。

2.查找数据:输入所要查找的姓名即可查询。

3.修改数据:输入所要修改的姓名,进行修改,保存后即成功。

4.删除数据:输入所要删除的姓名,确定后即成功。

5.输出数据:点击后即可查看所有保存的通讯录数据。

0.退出程序。

3.算法分析:此程序运用了for while语句、switch语句、break语句等。

知识有函数结构,函数的调用,指针等知识。

4.程序源代码:#include<stdio.h>struct person{char name[8];char tel[15];char addr[50];};char filename[20];FILE *fp;void creat();void append();void search();void modify();void delete1();void output();main(){int m;creat();while(1){printf("\n\nappend,please press1"); /*添加,请按1*/printf("\nsearch,please press2"); /*查找,请按2*/printf("\nmodify,please press3"); /*修改,请按3*/printf("\ndelete,please press4"); /*删除,请按4*/printf("\noutput,please press5"); /*输出,请按5*/printf("\nexit,please press0\n"); /*退出,请按6*/scanf("%d",&m);if(m>=0&&m<=5){switch(m){case 1: append();break;case 2: search();break;case 3: modify();break;case 4: delete1();break;case 5: output();break;case 0: exit();}printf("\n\nFinsh please choose again!");/*操作完毕,请再次选择*/ }elseprintf("\n\nYou choose wrong please press other key!");/*选择错误,请再次选择*/}}void creat(){struct person one;long s1;printf("\nPlease enter the name of communication book:");/*请输入通讯簿名*/scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("\nCan't build up the communication book !");/*不能建立通讯簿*/exit();}fprintf(fp,"\n%-10s%-20s%-50s\n","name","telephone","address");printf("\nPlease input the name, telephone number and addresses( with 0 end) \n");/*请输入姓名、电话号码及住址(以0结束)*/scanf("%s",);while(strcmp(,"0")){scanf("%s%s",one.tel,one.addr);fprintf(fp,"%-10s%-20s%-50s\n",,one.tel,one.addr);scanf("%s",);}fclose(fp);}void append(){struct person one;if((fp=fopen(filename,"a"))==NULL){printf("\nCan't open the communication book!");/*不能打开通讯簿*/exit();}printf("\nPleasa enter the name,telephone number and addersses that to increase \n");/*请输入添加的姓名、电话号码及住址*/scanf("%s%s%s",,one.tel,one.addr);fprintf(fp,"%-10s%-20s%-50s\n",,one.tel,one.addr);fclose(fp);}void search(){int k=0;char namekey[8];struct person one;printf("\nPlease input the name:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL){printf("\nCan't open the communication book!");exit();}while(!feof(fp)){fscanf(fp,"%s%s%s\n",,one.tel,one.addr);if(!strcmp(namekey,)){printf("\n\nHave already check,the record is:");/*已查到,记录为*/printf("\n%-10s%-18s%-50s",,one.tel,one.addr);k=1;}}if(!k)printf("\n\nsorry,this person record is not in the communication book .");/*对不起,通讯簿中没有此人的记录*/fclose(fp);}void modify(){int m,k=0;long offset;char namekey[8];struct person one;printf("\nPlease input the name:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\nCan't open the communication book !");/*不能打开通讯簿*/exit();}while(!feof(fp)){offset=ftell(fp);fscanf(fp,"%s%s%s\n",,one.tel,one.addr);if(!strcmp(namekey,)){k=1;break;}}if(k){printf("\nHave already check,the record is:");printf("\n%-10s%-18s%-50s",,one.tel,one.addr);printf("\nPlease input new the name, telephone number and addresses:");/*请输入新姓名、电话号码及住址*/scanf("%s%s%s",,one.tel,one.addr);fseek(fp,offset,SEEK_SET);printf("%ld",ftell(fp));fprintf(fp,"%-10s%-20s%-50s\n",,one.tel,one.addr);}elseprintf("\nsorry,this person record is not in the communication book.");/*对不起,通讯簿中没有此人的记录*/fclose(fp);}void delete1(){int m,k=0,flag;long offset1,offset2;char namekey[8], valid[4];struct person one;printf("\nPlease input the name:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\nCan't open the communication book!");exit();}while(!feof(fp)){offset1=ftell(fp);fscanf(fp,"%s%s%s\n",,one.tel,one.addr);if(!strcmp(namekey,)){k=1;break;}}if(k){printf("\nHave already check,the record is:");printf("\n%-10s%-18s%-50s",,one.tel,one.addr);printf("\nReally need to delete,press1;don't delete,press0 :");/*确实要删除,按1;不删除,按0*/scanf("%d",&m);if(m){fseek(fp,offset1,SEEK_SET);fprintf(fp,"%-10s%-20s%-50s\n","","","");}}elseprintf("\nsorry,this person record is not in the communication book.");fclose(fp);}void output(){struct person one;if((fp=fopen(filename,"r"))==NULL){printf("\nCan't open the communication book!");/*不能打开通讯簿*/exit();}printf("%20s\n","COMMUNICATION BOOK ");while(!feof(fp)){fscanf(fp,"%s%s%s\n",,one.tel,one.addr);printf("%-10s%-20s%-50s",,one.tel,one.addr);}fclose(fp);}5.测试及输出结果使用方法:1.添加数据2.查找数据3.修改数据4.删除数据5.输出数据6.心得体会:经过不到两个星期的课程设计,使我对C语言有了更进一步的认识和了解,要学好它要重在实践,要通过不断的上机操作才能更好的学习好它。

相关主题