通讯录管理系统设计和实现计算机科学与技术专业

上传人:文*** 文档编号:240899603 上传时间:2024-05-16 格式:DOC 页数:30 大小:317.91KB
返回 下载 相关 举报
通讯录管理系统设计和实现计算机科学与技术专业_第1页
第1页 / 共30页
通讯录管理系统设计和实现计算机科学与技术专业_第2页
第2页 / 共30页
通讯录管理系统设计和实现计算机科学与技术专业_第3页
第3页 / 共30页
点击查看更多>>
资源描述
通讯录管理系统一、 课题内容和要求该课题要求设计一个简单、实用的通信录管理程序,主要功能包括通信录数据的录入、查找、修改、删除、排序、显示等。所有通信录数据都要利用文件系统保存,以备系统下次运行时使用。通过此课题,全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,熟练掌握文件、数组、指针的各种操作,以及一些基本算法思想的应用。增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。二、 需求分析系统功能模块图:流程图查询修改删除排序显示添加保存读入退出添加:可以添加通讯录记录,依次输入序号,姓名,简拼,性别,工作单位,地址,电话,手机,电子邮件,备注后,会提示是否继续添加。查询:可以选择用序号、姓名、简拼、电话方式查询修改:先查找,再修改。若查找出多条记录,则进一步提示用户选择记录的序号,再修改删除:输入欲删除的那个人的名字后,删除他(她)的记录内容排序:可按姓名、简拼等排序。要求排序后,记录的序号也要重新编排显示:可以以表格形式输出所有通讯录里的记录保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件读入:从文件中读入通信录数据。界面功能要求:(1)采用友好的字符界面,实现一个功能控制菜单。(2)每次操作都从该菜单选择,利用循环结构使得一次运行程序可进行多次操作。三、概要设计 (1)主要结构体:typedef struct char score; /*序号*/ char name10; /*姓名*/ char jianpin50; /*简拼*/ char sex3; /*性别*/ char company20; /*工作单位*/ char adds20; /*地址*/ char tel15; /*电话*/ char num15; /*手机*/ char email20; /*电子邮件*/ char remark30; /*备注*/Person;(2).工作流程图:1添加:添加通讯录记录N开始i=0sign!=n&sign!=N输入Return(n+i)结束Y2查询:查询通讯录记录先选择查询方式,以姓名查询方式为例N开始输入简拼通讯录是否有此简拼通讯录无此人显示信息结束Y输入电话输入姓名N通讯录是否有此电话通讯录是否有此姓名通讯录无此人通讯录无此人显示信息显示信息结束结束YYN3修改:修改通讯录记录开始输入姓名通讯录是否有此姓名通讯录无此人修改信息结束YN4删除:删除通讯录记录开始输入姓名通讯录是否有此姓名通讯录无此人删除信息结束YN5显示:显示通讯录记录开始int i,i=1in+1输出一个记录i+结束YN四、源程序代码 #include #include#include #includetypedef struct char score; /*序号*/ char name10; /*姓名*/ char jianpin50; /*简拼*/ char sex3; /*性别*/ char company20; /*工作单位*/ char adds20; /*地址*/ char tel15; /*电话*/ char num15; /*手机*/ char email20; /*电子邮件*/ char remark30; /*备注*/Person; Person pe80; int menu_select() char c; do system(cls); printf(tt *欢迎使用通讯录* n); printf(ttn); printf(tt 1. 添加记录 n); printf(tt 2. 显示记录 n); printf(tt 3. 删除记录 n); printf(tt 4. 查询记录 n); printf(tt 5. 排列顺序 n);printf(tt 6. 修改记录 n); printf(tt 7. 保存记录 n); printf(tt 8. 文件读入 n);printf(tt 0. 退出程序 n); printf(ttn); printf(tt请您选择(0-8):); c=getchar(); while(c8); return(c-0); int Input(Person per,int n) int i=0; char sign,x10; while(sign!=n&sign!=N) printf(t序号:); scanf(t%d,&pern+i.score); printf(t姓名:); scanf(t%s,pern+i.name); printf(t简拼:); scanf(t%s,pern+i.jianpin);printf(t性别:); scanf(t%s,pern+i.sex); printf(t工作单位:); scanf(t%s,pern+i.company);printf(t地址:); scanf(t%s,pern+i.adds); printf(t电话:); scanf(t%s,pern+i.tel); printf(t手机:); scanf(t%s,pern+i.num);printf(t电子邮件:);scanf(t%s,pern+i.email); printf(t备注:); scanf(t%s,pern+i.remark);gets(x); printf(nt是否继续添加?(Y/N); scanf(t%c,&sign); i+; return(n+i); void Display(Person per,int n) int i; printf(-n); /*格式*/ printf(序号 姓名 简拼 性别 工作单位 地址 电话 手机 电子邮件 备注 n); printf(-n); for(i=1;i1&i%10=0) printf(t-n); printf(t); system(pause); printf(t-n); printf(-n);system(pause); int Delete_a_record(Person per,int n) char s20; int i=0,j; printf(t请输入想删除记录中的名字:); scanf(%s,s); while(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return(n); for(j=i;jn-1;j+) strcpy(perj.name,perj+1.name); strcpy(perj.jianpin,perj+1.jianpin);strcpy(perj.sex,perj+1.sex);strcpy(perj.company,perj+1.company); strcpy(perj.adds,perj+1.adds); strcpy(perj.num,perj+1.num); strcpy(perj.tel,perj+1.tel);strcpy(perj.email,perj+1.email); strcpy(perj.remark,perj+1.remark);perj.score=perj+1.score; printf(ttt删除成功n); return(n-1); void Query_a_record(Person per,int n) int m;printf(tn请选择查询方式:n); printf(tn); printf(t1-姓名 n); printf(t2-简拼 n); printf(t3-电话 n); printf(t4-返回 n); printf(tn); printf(请选择:); scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4) printf(输入错误,请重新选择:);scanf(%d,&m); if(m=1)char s20; int i=0; printf(t请输入想查询的姓名:); scanf(t%s,s); while(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t序号: %dn,peri.score);printf(t简拼: %sn,peri.jianpin); printf(t性别: %sn,peri.sex);printf(t工作单位: %sn,peri.company); printf(t通讯地址: %sn,peri.adds);printf(t电话号码: %sn,peri.num); printf(t电子邮箱: %sn,peri.email);printf(t备注: %sn,peri.remark); ;if(m=2)char s20; int i=0; printf(t请输入想查询的简拼:); scanf(t%s,s); while(strcmp(peri.jianpin,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t序号: %dn,peri.score);printf(t姓名: %sn,peri.name); printf(t性别: %sn,peri.sex);printf(t工作单位: %sn,peri.company); printf(t通讯地址: %sn,peri.adds);printf(t电话号码: %sn,peri.num); printf(t电子邮箱: %sn,peri.email);printf(t备注: %sn,peri.remark); ; if(m=3)char s20; int i=0; printf(t请输入想查询的电话:); scanf(t%s,s); while(strcmp(peri.num,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t序号: %dn,peri.score); printf(t姓名: %sn,peri.name);printf(t简拼: %sn,peri.jianpin); printf(t性别: %sn,peri.sex);printf(t工作单位: %sn,peri.company); printf(t通讯地址: %sn,peri.adds);printf(t电子邮箱: %sn,peri.email);printf(t备注: %sn,peri.remark); ;void SelectSort(Person per,int n) int i,j,flag; Person temp; /*临时变量做交换数据用*/ int m;printf(tn请选择排序方式:n); printf(tn); printf(t 1-姓名 n); printf(t 2-简拼 n); printf(t 3-电话 n); printf(t 4-返回 n); printf(tn); printf(请选择:); scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4) printf(输入错误,请重新选择:);scanf(%d,&m);if(m=1)for(i=0;in;i+) flag=0; /*设标志判断是否发生过交换*/ for(j=0;j0) /*比较大小*/ flag=1; strcpy(temp.name,perj.name); /*交换记录*/ strcpy(temp. abbreviation,perj.jianoin); strcpy(temp.sex,perj.sex); strcpy(pany,perj.company); strcpy(temp.adds,perj.adds); strcpy(temp.tel,perj.tel); strcpy(temp.num,perj.num); strcpy(temp.email,perj.email); strcpy(temp.remarks,perj.remark); strcpy(perj.name,perj+1.name); strcpy(perj. abbreviation,perj+1. jianpin); strcpy(perj.sex,perj+1.sex); strcpy(perj.company,perj+1.company); strcpy(perj.adds,perj+1.adds); strcpy(perj.tel,perj+1.tel); strcpy(perj.num,perj+1.num); strcpy(perj.email,perj+1.email); strcpy(perj.remarks,perj+1.remark); strcpy(perj+1.name,temp.name); strcpy(perj+1. abbreviation,temp. jianpin); strcpy(perj+1.sex,temp.sex); strcpy(perj+1.company,pany); strcpy(perj+1.adds,temp.adds); strcpy(perj+1.tel,temp.tel); strcpy(perj+1.num,temp.num); strcpy(perj+1.email,temp.email); strcpy(perj+1.remarks,temp.remark); if(flag=0)break; /*如果标志为0,说明没有发生过交换循环结束*/ if(m=2)for(i=0;in;i+) flag=0; /*设标志判断是否发生过交换*/ for(j=0;j0) /*比较大小*/ flag=1; strcpy(temp.name,perj.name); /*交换记录*/ strcpy(temp. jianpin,perj. jianpin); strcpy(temp.sex,perj.sex); strcpy(pany,perj.company); strcpy(temp.adds,perj.adds); strcpy(temp.tel,perj.tel); strcpy(temp.num,perj.num); strcpy(temp.email,perj.email); strcpy(temp.remarks,perj.remark); strcpy(perj.name,perj+1.name); strcpy(perj. abbreviation,perj+1.jianpin); strcpy(perj.sex,perj+1.sex); strcpy(perj.company,perj+1.company); strcpy(perj.adds,perj+1.adds); strcpy(perj.tel,perj+1.tel); strcpy(perj.num,perj+1.num); strcpy(perj.email,perj+1.email); strcpy(perj.remarks,perj+1.remark); strcpy(perj+1.name,temp.name); strcpy(perj+1. abbreviation,temp. jianpin); strcpy(perj+1.sex,temp.sex); strcpy(perj+1.company,pany); strcpy(perj+1.adds,temp.adds); strcpy(perj+1.tel,temp.tel); strcpy(perj+1.num,temp.num); strcpy(perj+1.email,temp.email); strcpy(perj+1.remarks,temp.remark); if(flag=0)break; /*如果标志为0,说明没有发生过交换循环结束*/ if(m=3)for(i=0;in;i+) flag=0; /*设标志判断是否发生过交换*/ for(j=0;j0) /*比较大小*/ flag=1; strcpy(temp.name,perj.name); /*交换记录*/ strcpy(temp. abbreviation,perj. jianpin); strcpy(temp.sex,perj.sex); strcpy(pany,perj.company); strcpy(temp.adds,perj.adds); strcpy(temp.tel,perj.tel); strcpy(temp.num,perj.num); strcpy(temp.email,perj.email); strcpy(temp.remarks,perj.remark); strcpy(perj.name,perj+1.name); strcpy(perj. abbreviation,perj+1. jianpin); strcpy(perj.sex,perj+1.sex); strcpy(perj.company,perj+1.company); strcpy(perj.adds,perj+1.adds); strcpy(perj.tel,perj+1.tel); strcpy(perj.num,perj+1.num); strcpy(perj.email,perj+1.email); strcpy(perj.remarks,perj+1.remark); strcpy(perj+1.name,temp.name); strcpy(perj+1. abbreviation,temp. jianpin); strcpy(perj+1.sex,temp.sex); strcpy(perj+1.company,pany); strcpy(perj+1.adds,temp.adds); strcpy(perj+1.tel,temp.tel); strcpy(perj+1.num,temp.num); strcpy(perj+1.email,temp.email); strcpy(perj+1.remarks,temp.remark); if(flag=0)break; /*如果标志为0,说明没有发生过交换循环结束*/ printf(排序成功n); /*显示排序成功*/void Change(Person per,int n) char s20; int i=0; int m; printf(tn请选择修改内容:n); printf(tn); printf(t1-姓名 n); printf(t2-简拼 n); printf(t3-电话 n); printf(t4-返回 n); printf(tn); printf(请选择编号:); scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4) printf(输入错误,请重新选择:);scanf(%d,&m);int count = 0;if(m=1)int i=0; printf(t请输入想修改的记录中的姓名:); scanf(%s,s);printf(-n); /*格式*/ printf(序号 姓名 简拼 性别 工作单位 地址 电话 手机 电子邮件 备注n); printf(-n);for (int t = 0; t 1) printf(查到多条数据,请输入序号:);m = 5; else while(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; /printf(t序号:); /scanf(t%d,&peri.score); printf(t姓名:); scanf(t%s,peri.name); printf(t简拼:); scanf(t%s,peri. jianpin);printf(t性别:); scanf(t%s,peri.sex); printf(t工作单位:); scanf(t%s,peri.company);printf(t地址:);scanf(t%s,peri.adds);printf(t电话:); scanf(t%s,peri.tel); printf(t手机:); scanf(t%s,peri.num); printf(t电子邮件:); scanf(t%s,peri.email);printf(t备注:); scanf(t%s,peri.remark); printf(t修改成功!);if(m=2)int i=0; printf(t请输入想修改的记录中的姓名:); scanf(%s,s);printf(-n); /*格式*/ printf(序号 姓名 简拼 性别 工作单位 地址 电话 手机 电子邮件 备注n); printf(-n);for (int t = 0; t 1) printf(查到多条数据,请输入序号:);m = 5; else while(strcmp(peri. jianpin,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; /printf(t序号:); /scanf(t%d,&peri.score); printf(t姓名:); scanf(t%s,peri.name); printf(t简拼:); scanf(t%s,peri. jianpin);printf(t性别:); scanf(t%s,peri.sex); printf(t工作单位:); scanf(t%s,peri.company);printf(t地址:);scanf(t%s,peri.adds);printf(t电话:); scanf(t%s,peri.tel); printf(t手机:); scanf(t%s,peri.num); printf(t电子邮件:); scanf(t%s,peri.email);printf(t备注:); scanf(t%s,peri.remark); printf(t修改成功!);if(m=3)int i=0; printf(t请输入想修改的记录中的姓名:); scanf(%s,s);printf(-n); /*格式*/ printf(序号 姓名 简拼 性别 工作单位 地址 电话 手机 电子邮件 备注n); printf(-n);for (int t = 0; t 1) printf(查到多条数据,请输入序号:);m = 5; else while(strcmp(peri.tel,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; /printf(t序号:); /scanf(t%d,&peri.score); printf(t姓名:); scanf(t%s,peri.name); printf(t简拼:); scanf(t%s,peri. jianpin);printf(t性别:); scanf(t%s,peri.sex); printf(t工作单位:); scanf(t%s,peri.company);printf(t地址:);scanf(t%s,peri.adds);printf(t电话:); scanf(t%s,peri.tel); printf(t手机:); scanf(t%s,peri.num); printf(t电子邮件:); scanf(t%s,peri.email);printf(t备注:); scanf(t%s,peri.remark); printf(t修改成功!);if(m=5)int i=0; scanf(%s,s);while(peri.score != atoi(s)&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; /printf(t序号:); /scanf(t%d,&peri.score); printf(t姓名:); scanf(t%s,peri.name); printf(t简拼:); scanf(t%s,peri. jianpin);printf(t性别:); scanf(t%s,peri.sex); printf(t工作单位:); scanf(t%s,peri.company);printf(t地址:);scanf(t%s,peri.adds);printf(t电话:); scanf(t%s,peri.tel); printf(t手机:); scanf(t%s,peri.num); printf(t电子邮件:); scanf(t%s,peri.email);printf(t备注:); scanf(t%s,peri.remark); printf(t修改成功!);void WritetoText(Person per,int n) int i=0; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf(t保存到文件n); /*输入文件名*/ printf(t请输入所保存的文件名:); scanf(t%s,filename); if(fp=fopen(filename,w)=NULL) printf(t无法打开文件n); system(pause); return; fprintf(fp,*通讯录*n);fprintf(fp,序号 姓名 简拼 性别 工作单位 地址 电话 手机 电子邮件 备注n);fprintf(fp,-n);while(in) fprintf(fp,%-3dt%-6st%-3st%-13st%-20st%-20st%-20st%-20st%-20st%20sn,peri.score,peri.name, peri-1.jianpin,peri-1.sex,peri-1.company,peri-1.adds,peri-1.tel,peri-1.num,peri-1.email, peri-1.remark); i+; fprintf(fp,-n);fprintf(fp,*共有%d条记录*n,n); fclose(fp); /*关闭文件*/ printf(保存成功n); int Load(Person per,int n) int i; FILE *fp; /*指向文件的指针*/ if(fp=fopen(record.txt,rb)=NULL)/*打开文件*/ printf(无法打开文件n); /*不能打开*/ exit(1); /*退出*/ fscanf(fp,%d,&n); /*读入记录数*/ for(i=0;in;i+) fscanf(fp,%20s%30s%10s,peri.name,peri.company,peri.tel); /*按格式读入记录*/ fclose(fp); /*关闭文件*/ printf(你已
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!