您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C语言课程设计---通讯录管理系统
1中国地质大学本科生课程论文封面课程名称C语言程序设计教师姓名本科生姓名本科生学号本科生专业所在院系类别:日期:2课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总成绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。3目录课程设计评语......................................................................................................................................2目录....................................................................................................................................................31.课程论文题目................................................................................................................................42.程序设计思路................................................................................................................................43.功能模块图....................................................................................................................................54.数据结构设计................................................................................................................................55.算法设计........................................................................................................................................56.程序代码......................................................................................................................................147.程序运行结果..............................................................................................................................148.编程中遇到的困难及解决方法..................................................................................................279.总结心得及良好建议..................................................................................................................2810.致谢............................................................................................................................................2841.课程论文题目通讯录管理系统要求:设计具有数据插入、修改、删除、显示和查询功能的电话簿管理系统。⑴数据包括:人名、工作单位、电话号码和E-mail地址。⑵可对记录中的姓名和电话号码进行修改。⑶可增加或删除记录。⑷可显示所有保存的记录。⑸可按人名或电话号码进行查询。2.程序设计思路根据题目的要求,程序应该采用结构体数组和文件系统实现。应该有动态的存储空间和文件输入、输出等操作功能;在程序中应该包括添加、显示、删除、查询和修改以及保存和退出的功能;另外还应提供键盘式选择菜单实现功能选择。53.功能模块图4.数据结构设计整个程序中用到的数据主要是全局变量MAX100和字符变量name[10]、addr[20]、phnum[20]、email[20]。5.算法设计1.主函数主函数的设计一般比较的简单,只提供输入,功能处理和输出部分的函数调用。其中个功能模块用菜单方式选择。菜单部分也可以写成函数。[流程图]6[程序]main()/*****************主函数*****************/{intn;/**********变量保存选择菜单数子***************/creat();do{printf(\n\t***********************************************\n);printf(\n\n\t*************WELCOMETOUSE!***************\n);printf(\n\t**********************************************\n);printf(\n\n\t\t*****Pleasemakeachoicebelow*****\n);printf(\n\t\t1.Addapieceofmeg);printf(\n\t\t2.Listallthemeg);printf(\n\t\t3.Deleteapieceofmeg);printf(\n\t\t4.Findapieceofmeg);printf(\n\t\t5.Alterapieceofmeg);printf(\n\t\t6.SaveandQuit);printf(\n\t\t7.Createanaddressbook);printf(\n\n\n);printf(\t********InputYourChoice:****************\n);scanf(%d,&n);switch(n)/*****************输入n的在1-6之间执行switch************/{case1:Add();/*添加模块*/break;case2:List();/*显示模块*/break;case3:Delete();/*删除模块*/7break;case4:Find();/*查询模块:分为名字查询(0)和电话号码查询(1)*/break;case5:Alter();/*修改模块:分为修改名字(0)和修改电话号码(1)*/break;case6:exit(0);/*退出模块*/break;case7:creat();/*带回链表起始地址*/fclose(fp);default:/**********输入的n不在1-6之间执行default************/printf(\n\t********************************************\n);printf(\n\tThenumshouldbe1-6!!!\n);printf(\n\t********************************************\n);break;}}while(1);}2.各功能模块设计[数据结构]通讯录的数据信息:人名、工作单位、电话号码、E-mail地址均可以采用字符型数组;可以采用结构体的形式,把各信息作为结构的成员,由于通讯录要具8有添加、查找、和删除的功能,所以整个通讯录采用链表比较容易的实现以上功能。用结构体变量作为链表中的接点是最合适的。结构体变量可以是指针类型,我们可以用这个指针类型的成员来存放下一个结点的地址。结构体的类型如下:structpersons{typedefstructp{charname[10]charname[10];charaddr[20];charaddr[20];charphnum[20];charphnum[20];charemail[20];charemail[20];}persons[MAX];structp*next;}p,*linklist;structpersons类型为每个链表成员;typedefstructp为一个动态的结点,它的成员next存放下一个结点的地址。以下为各模块分析时要用的指针:linklisthead=NULL,t=NULL;/**************定义头指针和尾指针*************/p*s,*p0,*p1,*p2,*p3,*p4,*p5;inti;charname1[10],ch;charstr1[20];FILE*fp;/********************定义文件指针***********************/(1)输入模块[程序]voidcreat()/*将文件的信息读入结构体数组在转存入链表中*/{intj;longk;fp=fopen(people.txt,r+);/****************打开文件**********************/if(fp!=NULL){for(i=1;iMAX;i++){j=fgetc(fp);if(j==EOF)return;k=i-1;9fseek(fp,k*sizeof(structpersons),0);/************读取一个人的信息***************/fread(&persons[i],sizeof(structpersons),1,fp);s=(linklist)malloc(sizeof(p));/**************装存入链表中***********/strcpy(s-name,persons[i].name);strcpy(s-addr,persons[i].addr);strcpy(s-phnum,persons[i].phnum);strcpy(s-email,persons[i].email);if(head==NULL)/***********用尾插法将其插入链表中**********/head=s;else{t-next=s;t=s;}}}else{fp=fopen(people.txt,w);i=1;/*****不能打开另开辟一个文件*****/}}⑵添加模块由于运用的是链表的形式,且通讯录只是按照输入的先后循序排序,所以对添加的信息采用插入末端的方式,同时添加也使用于空通讯录的信息输入。[程序]voidAdd()/*******向通讯录中添加(或输入)一个人的信息*********/{s=(linklist)malloc(sizeof(p));s-next=NULL;printf(\n\n\t*********Pleaseinputthesb'smessage:**********);printf(\n\n\t\tname:);scanf(%s,s-name);printf(\n\n\t\tAddr:);scanf(%s,s-addr);printf(\n\n\t\tphnum:);scanf(%s,s
本文标题:C语言课程设计---通讯录管理系统
链接地址:https://www.777doc.com/doc-7462576 .html