欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C课程设计报告个人通信录管理系统.docx

    • 资源ID:10466102       资源大小:444.18KB        全文页数:34页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C课程设计报告个人通信录管理系统.docx

    1、C课程设计报告个人通信录管理系统安徽工业大学程序实习综合实习报告课题名称:个人通讯录管理系统实习成员:姓名学号贡献率(%)e-mail组长成员专业班级: 指导 教师: 2011 年 12月10日课题名称:个人通讯录管理系统设计要点:建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。功能要求(1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。(2) 输入功能:可以一次完成若干条信息的输入。(3) 显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示)(4) 查

    2、找功能:可以按姓名等多种方式查找通讯信息(5) 增加、删除、修改功能:完成通讯录信息的多种更新系统整体设计:一.主函数设计: 其功能实现从屏幕输出6个选择:1、添加信息; 2、删除信息;3、修改信息;4、查询信息;5、显示信息;6、保存;0、退出程序。这样,便可以从中选择出一项对通讯录进行操作。 二信息添加功能设计: 该模块通过Tianjia();函数实现,可以从键盘输入通讯录的各项信息。 三信息查询功能设计: 该模块通过Chaxun();函数实现,从键盘输入需要查询的姓名或手机号,便可以显示出其他全部信息。 四信息删除功能设计: 该模块通过Shanchu();函数实现,输入所需要删除人的姓名

    3、,便可以从通讯录中删除其全部信息。 五信息修改功能: 该模块通过Xiugai();函数实现,输入所需要修改人的姓名,屏幕便显示其全部信息,根据提示,输入所需要修改的信息,便完成信息的修改。 六信息显示功能设计: 该模块通过Xianshi();函数实现,选择信息显示菜单,便可以显示全部通讯录信息。菜单设计:系统流程图:1、添加联系人函数(void tianjia())定义指向结构体的指针;移动指针,使其指向最后一个节点,准备插入下一个联系人信息;依次输入编号、姓名、固定电话、移动手机、单位、QQ、email、分类;2、删除联系人函数(void shanchu(struct person *)定义

    4、指向结构体的指针;检验链表中是否有记录。若无记录,则返回;根据者姓名查找要删除的联系人;输入联系人姓名,删除对应结点。3、修改联系人函数(void xiugai())定义指向结构体的指针;检验链表中是否有记录。若无记录,则返回;根据姓名查找要修改的联系人;修改信息(可选择是否修改部分信息);4、查询联系人信息函数(void find(struct person *))检验链表中是否有记录。若无记录,则返回;根据编号、姓名或固定电话三种方式查找要联系人;调用函数在链表中查找相应结点;调用显示联系人函数,输出结点信息。5、显示联系人函数(void print())定义指向结构体的指针;检验是否有记

    5、录。若无记录,则返回;若有记录,移动指针,依次输出记录;6、保存联系人信息函数(void save(struct person *))定义指向结构体的指针;以读写方式打开一个文本文件;若打开错误,则返回;若成功,则逐条输出联系人信息:关闭文件;程序运行结果:主菜单显示,选择其中一项可对通信录进行操作。选择添加联系人,依次输入编号、姓名、固定电话、移动手机、单位、email、QQ、分类各个信息。添加联系人结束后,输入0可返回主菜单。返回主菜单后,选择5显示所有联系人,便可以查看到已输入的所有的联系人信息。在主菜单选择4 查询联系人,便可以通过1编号查询、2姓名查询、3固定电话查询三种方式查询所要

    6、找的联系人的信息。查询联系人时,当输入有误时,会有提示出现,提示输入有误,请重新输入。当查询的人的信息在通讯录中不存在时,界面上会显示通讯录中无此人。当选择主菜单中的3修改联系人时,系统会提示首先通过姓名查找到联系人,输入姓名后,查找到联系人,并显示出来,依次可选择修改除编号以为的其他联系人的信息,选择1 是,便可以修改该项信息,2否,则是不修改。当输入不是1或2而是其他数字时,系统就会提示输入有误,请重新输入。当在主菜单中选择2 删除联系人时,系统会提示1通过姓名删除,输入1时,可通过姓名查找到联系人,便可以进行删除操作,当输入的是0时,则可以返回主菜单。删除联系人之前,系统会提示是否确定删

    7、除联系人,选择1是或2否,当输入其他数字时,系统会提示输入有误,请重新输入。删除成功后按任意键便可返回主菜单。完成一切操作后,选择6保存,便可以保存所建立的通讯录。选择0退出系统,便可以退出本系统。总结:在编写代码时,本程序运用的是结构体指针,建立单链表,此部分的内容较难,本程序参考书上的内容和一些资料。通过本次课程设计,我们认识到自己还存在很多不足,还需要在编程的道路上多经历一些风雨,多编写程序,多多磨练自己。当我们遇到问题是,需要戒骄戒躁,仔细耐心的检查错误,学会对程序进行调试。当自己的一个人的能力有限时,应该多问问他人,并且要学会与别人合作,这样便可以为以后自己真正编写大的软件打下一个好

    8、的基础。源代码:main#include #include #include #include printhead.c#include formatprint.c#include chaxun.c#include xianshi.c#include shanchu.c#include tianjia.c#include xiugai.c#include save.c/*自定义函数说明*/void main(); /*主函数*/struct person *creat(); /*创建链表*/void tianjia(); /*插入一结点,输入联系人信息*/void formatprint();

    9、/*格式化输出*/void printhead(); /*输出表头*/void xianshi(); /*输出所有单链表中的数据*/void xiugai(); /*修改通讯记录*/void shanchu(struct person *); /*根据编号或者名字分别调用以下两个函数*/ void shanchuchubyname(struct person *); /*通过姓名删除联系人*/void chaxun(struct person *); /*查找功能。调用后根据查找方式编号或姓名分别调用以下两个函数*/ struct person *chaxunbynum(); /*通过编号查找

    10、并输出联系人*/ struct person *chaxunbyname(); /*通过名字查找并输出联系人*/ struct person *chaxunbyphone(); /*通过固定电话查找并输出联系人*/void menu(); /*主菜单界面*/void baocun(struct person *); /*数据保存。若用户没有保存数据但对数据进行了修改,在退出系统时,会提示用户是否保存*/void stringinput(); /*字符串输入*/void menu() /*主菜单界面*/ printf( 3通讯录3nn); printf( 33333333333333333333

    11、33333333目录33333333333333333333333333333n); printf( 3 1 添加联系人 2 删除联系人 3n); printf( 3 3 修改联系人 4 查询联系人 3n); printf( 3 5 显示所有联系人 6 保存 3n); printf( 3 0 退出系统 3n); printf( 3333333333333333333333333333333333333333333333333333333333333n);struct person *creat() /*创建链表*/ struct person *head; head=(struct perso

    12、n *)malloc(sizeof(struct person); if(!head) printf(n 不能申请到内存空间,返回主菜单 n); return NULL; /*返回主菜单*/ head-next=NULL; printf(空间创建成功,您可以使用本系统n); return(head);void main(void) int select; /*选择功能变量*/ int select_saver; /*是否保存变量*/ struct person *head; head=creat(); system(color 52); while(head) menu(); printf(n

    13、 请选择:); scanf(%d,&select); if(!select) if(saver=1) /*若对链表的数据有修改且未进行保存,则此标志为1*/ printf(n是否保存文件?(1(是)/2(否):); scanf(%d,&select_saver); while (select_saver!=1&select_saver!=2) printf(输入错误,请重新输入!n); printf(n是否保存文件?(1(是)/2(否):); scanf(%d,&select_saver); if(select_saver=1) baocun(head); break; switch(sele

    14、ct) case 1: tianjia(head);break; /*添加联系人*/ case 2: shanchu(head);break; /*删除联系人*/ case 3: xiugai(head);break; /*修改联系人*/ case 4: chaxun(head);break; /*查询联系人*/ case 5: xianshi(head);break; /*显示联系人*/ case 6:baocun (head);break; /*保存联系人*/ default: printf(n*输入错误! 请重新输入*n);break; system(pause);formatprint

    15、#define LENGTH_NUM 4#define LENGTH_NAME 10#define LENGTH_PHONE 10#define LENGTH_MOBILEPHONE 15#define LENGTH_ADDRESS 10#define LENGTH_EMAIL 20#define LENGTH_QQ 15#define LENGTH_KIND 10struct person /*定义结构体类型person*/ char numLENGTH_NUM; /*联系人编号*/ char nameLENGTH_NAME; /*联系人姓名*/ char phoneLENGTH_PHONE

    16、; /*联系人固定电话号码*/ char mobilephoneLENGTH_MOBILEPHONE; /*联系人移动电话*/ char addressLENGTH_ADDRESS; /*联系人地址*/ char emailLENGTH_EMAIL; /*联系人电子邮箱*/ char qqLENGTH_QQ; /*联系人QQ*/ char kindLENGTH_KIND; /*联系人分类*/ struct person *next; /*下一个节点*/;void formatprint(struct person *node) /*格式化输出*/ struct person *pt=node;

    17、 printf(FORMAT,DATA);printhead#define HEAD1 -所有通讯记录-n#define HEAD2 |编号| 姓名 | 固定电话| 移动手机 |单位| 邮箱 | QQ | 分类 |n#define HEAD3 |-|-|-|-|-|-|-|-|n#define FORMAT |%-4s|%-8s|%-9s|%-11s|%-4s|%-17s|%-11s|%-7sn#define DATA pt-num,pt-name,pt-phone,pt-mobilephone,pt-address,pt-email,pt-qq,pt-kind#define END -nvo

    18、id printhead() /*输出表头*/ printf(HEAD1); printf(HEAD2); printf(HEAD3);tianjiavoid tianjia(struct person *node) struct person *p,*pt=node,*ptr=node-next; int flag=0; char nummberLENGTH_NUM; xianshi(node); /*显示已有的联系人信息*/ while(pt-next!=NULL) /*将指针移指向链表末尾,准备添加联系人*/ pt=pt-next; while(node) /*可输入多个联系人,直至输入

    19、的编号为0时,结束添加联系人*/ while(node) stringinput(nummber,LENGTH_NUM, 请输入编号:); flag=0; if(!strcmp(nummber,0) /*若输入为0,则退出添加联系人操作,返回主菜单*/ return; ptr=node-next; while(ptr) /*查询该编号是否已经存在,若存在则要求重新输入*/ if(!strcmp(ptr-num,nummber) flag=1; break; ptr=ptr-next; if(flag=1) /*提示用户是否重新输入*/ printf(编号 %s 已经存在n,nummber);

    20、else break; p=(struct person *)malloc(sizeof(struct person); if(!p) printf(n 不能申请到内存空间,返回主菜单 n); return; strcpy(p-num,nummber); stringinput(p-name,LENGTH_NAME,姓名:); stringinput(p-phone,LENGTH_PHONE,固定电话:); stringinput(p-mobilephone,LENGTH_MOBILEPHONE,移动手机:); stringinput(p-address,LENGTH_ADDRESS,单位:)

    21、; stringinput(p-email,LENGTH_EMAIL,email:); stringinput(p-qq,LENGTH_QQ,QQ:); stringinput(p-kind,LENGTH_KIND,分类:); p-next=NULL; /*添加结束*/ pt-next=p; /*将新建的结点接入原链表尾部*/ pt=p; saver=1; /*数据保存变量被开启,说明对数据进行了修改*/ shanchuint saver; /*是否需要保存的标志全局变量*/void shanchu(struct person *node) /*根据名字分别调用以下两个函数*/ int m;

    22、void shanchubyname(struct person *); /*函数声明*/ if(!node-next) printf(n无通讯记录!n); return; printf(1:通过姓名删除,请按 1n); printf(:); scanf(%d,&m); /*输入1调用以下函数*/ if(m=1) shanchubyname(node); /*通过姓名删除联系人*/ else if(m=0) return; else printf(输入有误,返回主菜单!); return;void shanchubyname(struct person *node) /*通过姓名删除联系人*/

    23、 struct person *p=node,*pt; int flag; printf(删除联系人:n); p=chaxunbyname(p); if(p) printf(确定删除该联系人吗?(1(是)/2(否); scanf(%d,&flag); while (flag!=1&flag!=2) printf(输入错误,请重新输入!n); printf(确定删除该联系人吗?(1(是)/2(否); scanf(%d,&flag); if(flag=1) pt=node; while(pt-next!=p) pt=pt-next; pt-next=p-next; free(p); /*释放p节省

    24、空间*/ printf(n删除联系人成功!n); saver=1; /*数据保存变量被开启,说明对数据进行了修改*/ system(pause); Chaxunvoid stringinput(char *str,unsigned int length,char *caution) /*字符串输入*/ char string255; do printf(caution); /*提示信息*/ scanf(%s,string); if(strlen(string) length) printf(n 超过指定长度! 请重新输入 n); while(strlen(string) length); st

    25、rcpy(str,string); void chaxun(struct person *node) /*查找功能。调用后根据查找方式编号或姓名分别调用以下两个函数*/ struct person *chaxunbynum(struct person *); /*函数声名*/ struct person *chaxunbyname(struct person *); /*函数声名*/ struct person *chaxunbyphone(struct person *); /*函数声名*/ int m; if(!node-next) /*链表为空*/ printf(n无通讯记录!n); r

    26、eturn; printf(1:通过编号查找,请按 1n); printf(2:通过姓名查找,请按 2n); printf(3:通过固定电话查找,请按 3n); printf(:); scanf(%d,&m); /*输入1,2,3分别调用以下两个函数*/ switch(m) case 1:chaxunbynum(node);break; /*通过编号查找并输出联系人*/ case 2:chaxunbyname(node);break; /*通过姓名查找并输出联系人*/ case 3:chaxunbyphone(node);break; /*通过固定电话查找并输出联系人*/ case 0:bre

    27、ak; default: printf(输入错误,请重新输入:n); chaxun(node); struct person *chaxunbynum(struct person *node) /*通过编号查找并输出联系人*/ char nummberLENGTH_NUM; struct person *p=node-next; stringinput(nummber,LENGTH_NUM,请输入编号:); while(p) if(strcmp(p-num,nummber)=0) /*找到nummber对应的编号*/ break; /*跳出*/ p=p-next; printf(HEAD2); printf(HEAD3); if(p) formatprint(p); printf(END); else printf(n通讯录中无此人!n); return p;struct person *chaxunbyname(struct person *node) /*通过名字查找并输出联系人*/


    注意事项

    本文(C课程设计报告个人通信录管理系统.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开