《学生手机通信录管理系统.docx》由会员分享,可在线阅读,更多相关《学生手机通信录管理系统.docx(32页珍藏版)》请在三一办公上搜索。
1、程序设计报告书( 2012 / 2013 学年 第 一 学期)题 目:通讯录管理系统专 业 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 日 期 评 分 细 则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简 短 评 语教师签名: 年 月 日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格通讯录管理系统一、 课题内容和要求该课题要求设计一个简单、实用的通信录管理程序,主要功能包括通信录数据的录入、查找、修改、删除、排序、显
2、示等。所有通信录数据都要利用文件系统保存,以备系统下次运行时使用。通过此课题,全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,熟练掌握文件、数组、指针的各种操作,以及一些基本算法思想的应用。增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。二、 需求分析系统功能
3、模块图:流程图查询修改删除排序显示添加保存读入退出添加:可以添加通讯录记录,依次输入序号,姓名,简拼,性别,工作单位,地址,电话,手机,电子邮件,备注后,会提示是否继续添加。查询:可以选择用序号、姓名、简拼、电话方式查询修改:先查找,再修改。若查找出多条记录,则进一步提示用户选择记录的序号,再修改删除:输入欲删除的那个人的名字后,删除他(她)的记录内容排序:可按姓名、简拼等排序。要求排序后,记录的序号也要重新编排显示:可以以表格形式输出所有通讯录里的记录保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件读入:从文件中读入通信录数据。界面功能要求:(1)采用友好的字符界面,实现一个功能
4、控制菜单。(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添加
5、:添加通讯录记录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#
6、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);
7、 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(
8、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+pany);printf(t地址:); scanf(t%s,per
9、n+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(序号 姓名
10、简拼 性别 工作单位 地址 电话 手机 电子邮件 备注 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
11、); 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(pany,perj+pany); 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.rem
12、ark);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(%
13、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,pany); printf(t通讯地址: %sn,peri.adds);printf(t电话号码: %sn,p
14、eri.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工
15、作单位: %sn,pany); 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); p
16、rintf(t姓名: %sn,peri.name);printf(t简拼: %sn,peri.jianpin); printf(t性别: %sn,peri.sex);printf(t工作单位: %sn,pany); 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);
17、 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); /*交换记录*/ s
18、trcpy(temp. abbreviation,perj.jianoin); strcpy(temp.sex,perj.sex); strcpy(pany,pany); 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. j
19、ianpin); strcpy(perj.sex,perj+1.sex); strcpy(pany,perj+pany); 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); strcp
20、y(perj+1.sex,temp.sex); strcpy(perj+pany,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
21、=0;j0) /*比较大小*/ flag=1; strcpy(temp.name,perj.name); /*交换记录*/ strcpy(temp. jianpin,perj. jianpin); strcpy(temp.sex,perj.sex); strcpy(pany,pany); 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(
22、perj.name,perj+1.name); strcpy(perj. abbreviation,perj+1.jianpin); strcpy(perj.sex,perj+1.sex); strcpy(pany,perj+pany); 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,tem
23、p.name); strcpy(perj+1. abbreviation,temp. jianpin); strcpy(perj+1.sex,temp.sex); strcpy(perj+pany,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,说明没有发生过交换循
24、环结束*/ 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,pany); strcpy(temp.adds,perj.adds); strcpy(temp.tel,perj.tel); strcpy(temp.num,perj.num); strcpy(te
25、mp.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(pany,perj+pany); strcpy(perj.adds,perj+1.adds); strcpy(perj.tel,perj+1.tel); strcpy(perj.num,perj+1.num); strcpy(perj.email,perj+1.em
26、ail); 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+pany,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(p
27、erj+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(
28、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) print
29、f(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,pany);printf(t地址:);scanf(t%s,peri.adds);printf(t电话:); scanf(t%s,peri.tel); printf(t手机:); scanf(t%s,peri.num); printf(t电子邮件:);