收藏 分销(赏)

学生手机通信录管理系统样本.doc

上传人:二*** 文档编号:4576827 上传时间:2024-09-30 格式:DOC 页数:44 大小:306.50KB 下载积分:5 金币
下载 相关 举报
学生手机通信录管理系统样本.doc_第1页
第1页 / 共44页
本文档共44页,全文阅读请下载到手机保存,查看更方便
资源描述
程序设计报告书 ( / 年 第 一 学期) 题 目:通讯录管理系统 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 日 期 评 分 细 则 评分项 先进 良好 中档 差 遵守机房规章制度 上机时体现 学习态度 程序准备状况 程序设计能力 团队合伙精神 课题功能实现状况 算法设计合理性 顾客界面设计 报告书写认真限度 内容详实限度 文字表达纯熟限度 回答问题精确度 简 短 评 语 教师签名: 年 月 日 评分级别 备注 评分级别有五种:先进、良好、中档、及格、不及格 通讯录管理系统 一、 课题内容和规定 该课题规定设计一种简朴、实用通信录管理程序,重要功能涉及通信录数据录入、查找、修改、删除、排序、显示等。所有通信录数据都要运用文献系统保存,以备系统下次运营时使用。通过此课题,全面熟悉、掌握C语言基本知识,掌握C程序设计中顺序、分支、循环三种构造及数组、函数和C语言基本图形编程等办法,把编程和实际结合起来,纯熟掌握文献、数组、指针各种操作,以及某些基本算法思想应用。增强对不同问题运用和灵活选取适当数据构造以及算法描述本领,熟悉编制和调试程序技巧,掌握分析成果若干有效办法,进一步提高上机动手能力,培养使用计算机解决实际问题能力,养成提供文档资料习惯和规范编程思想,为后来在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较夯实基本。 二、 需求分析 系统功能模块图: 流程图 查询 修改 删除 排序 显示 添加 保存 读入 退出 添加:可以添加通讯录记录,依次输入序号,姓名,简拼,性别,工作单位,地址,电话,手机,电子邮件,备注后,会提示与否继续添加。 查询:可以选取用序号、姓名、简拼、电话方式查询 修改:先查找,再修改。若查找出多条记录,则进一步提示顾客选取记录序号,再修改 删除:输入欲删除那个人名字后,删除她(她)记录内容 排序:可按姓名、简拼等排序。规定排序后,记录序号也要重新编排 显示:可以以表格形式输出所有通讯录里记录 保存:,输入文献名(带后缀名)后,即可将通讯录信息保存到文献 读入:从文献中读入通信录数据。 界面功能规定: (1)采用和谐字符界面,实现一种功能控制菜单。 (2)每次操作都从该菜单选取,运用循环构造使得一次运营程序可进行多次操作。 三、概要设计 (1)重要构造体: typedef struct { char score; /*序号*/ char name[10]; /*姓名*/ char jianpin[50]; /*简拼*/ char sex[3]; /*性别*/ char company[20]; /*工作单位*/ char adds[20]; /*地址*/ char tel[15]; /*电话*/ char num[15]; /*手机*/ char email[20]; /*电子邮件*/ char remark[30]; /*备注*/ }Person; (2).工作流程图: 1.添加:添加通讯录记录 N 开始 i=0 sign!='n'&&sign!='N 输入 Return(n+i) 结束 Y 2.查询:查询通讯录记录 先选取查询方式,以姓名查询方式为例 N 开始 输入简拼 通讯录与否有此简拼 通讯录无此人 显示信息 结束 Y 输入电话 输入姓名 N 通讯录与否有此电话 通讯录与否有此姓名 通讯录无此人 通讯录无此人 显示信息 显示信息 结束 结束 Y Y N 3.修改:修改通讯录记录 开始 输入姓名 通讯录与否有此姓名 通讯录无此人 修改信息 结束 Y N 4.删除:删除通讯录记录 开始 输入姓名 通讯录与否有此姓名 通讯录无此人 删除信息 结束 Y N 5.显示:显示通讯录记录 开始 int i,i=1 i<n+1 输出一种记录 i++ 结束 Y N 四、源程序代码 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> typedef struct { char score; /*序号*/ char name[10]; /*姓名*/ char jianpin[50]; /*简拼*/ char sex[3]; /*性别*/ char company[20]; /*工作单位*/ char adds[20]; /*地址*/ char tel[15]; /*电话*/ char num[15]; /*手机*/ char email[20]; /*电子邮件*/ char remark[30]; /*备注*/ }Person; Person pe[80]; int menu_select() { char c; do{ system("cls"); printf("\t\t *欢迎使用通讯录* \n"); printf("\t\t┌───────┐\n"); printf("\t\t│ 1. 添加记录 │\n"); printf("\t\t│ 2. 显示记录 │\n"); printf("\t\t│ 3. 删除记录 │\n"); printf("\t\t│ 4. 查询记录 │\n"); printf("\t\t│ 5. 排列顺序 │\n"); printf("\t\t│ 6. 修改记录 │\n"); printf("\t\t│ 7. 保存记录 │\n"); printf("\t\t│ 8. 文献读入 │\n"); printf("\t\t│ 0. 退出程序 │\n"); printf("\t\t└───────┘\n"); printf("\t\t请您选取(0-8):"); c=getchar(); }while(c<'0'||c>'8'); return(c-'0'); } int Input(Person per[],int n) { int i=0; char sign,x[10]; while(sign!='n'&&sign!='N') { printf("\t序号:"); scanf("\t%d",&per[n+i].score); printf("\t姓名:"); scanf("\t%s",per[n+i].name); printf("\t简拼:"); scanf("\t%s",per[n+i].jianpin); printf("\t性别:"); scanf("\t%s",per[n+i].sex); printf("\t工作单位:"); scanf("\t%s",per[n+i].company); printf("\t地址:"); scanf("\t%s",per[n+i].adds); printf("\t电话:"); scanf("\t%s",per[n+i].tel); printf("\t手机:"); scanf("\t%s",per[n+i].num); printf("\t电子邮件:"); scanf("\t%s",per[n+i].email); printf("\t备注:"); scanf("\t%s",per[n+i].remark); gets(x); printf("\n\t与否继续添加?(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;i<n+1;i++) { printf("%-3d%-10s%-10s%-5s%-10s%-10s%-13s%-13s%-10s%-10s\n",per[i-1].score,per[i-1].name,per[i-1].jianpin,per[i-1].sex,per[i-1].company,per[i-1].adds,per[i-1].tel,per[i-1].num,per[i-1].email,per[i-1].remark); if(i>1&&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 s[20]; int i=0,j; printf("\t请输入想删除记录中名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n) i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return(n); } for(j=i;j<n-1;j++) { strcpy(per[j].name,per[j+1].name); strcpy(per[j].jianpin,per[j+1].jianpin); strcpy(per[j].sex,per[j+1].sex); strcpy(per[j].company,per[j+1].company); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].num,per[j+1].num); strcpy(per[j].tel,per[j+1].tel); strcpy(per[j].email,per[j+1].email); strcpy(per[j].remark,per[j+1].remark); per[j].score=per[j+1].score; } printf("\t\t\t删除成功\n"); return(n-1); } void Query_a_record(Person per[],int n) { int m; printf("\t\n请选取查询方式:\n"); printf("\t┌──────┐\n"); printf("\t│1------姓名 │\n"); printf("\t│2------简拼 │\n"); printf("\t│3------电话 │\n"); printf("\t│4------返回 │\n"); printf("\t└──────┘\n"); printf("请选取:"); scanf("%d",&m); while(m!=1&&m!=2&&m!=3&&m!=4) { printf("输入错误,请重新选取:"); scanf("%d",&m); } if(m==1) { char s[20]; int i=0; printf("\t请输入想查询姓名:"); scanf("\t%s",s); while(strcmp(per[i].name,s)!=0&&i<n) i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t序号:%d\n",per[i].score); printf("\t简拼:%s\n",per[i].jianpin); printf("\t性别:%s\n",per[i].sex); printf("\t工作单位:%s\n",per[i].company); printf("\t通讯地址:%s\n",per[i].adds); printf("\t电话号码:%s\n",per[i].num); printf("\t电子邮箱:%s\n",per[i].email); printf("\t备注:%s\n",per[i].remark); } ; if(m==2) { char s[20]; int i=0; printf("\t请输入想查询简拼:"); scanf("\t%s",s); while(strcmp(per[i].jianpin,s)!=0&&i<n) i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t序号:%d\n",per[i].score); printf("\t姓名:%s\n",per[i].name); printf("\t性别:%s\n",per[i].sex); printf("\t工作单位:%s\n",per[i].company); printf("\t通讯地址:%s\n",per[i].adds); printf("\t电话号码:%s\n",per[i].num); printf("\t电子邮箱:%s\n",per[i].email); printf("\t备注:%s\n",per[i].remark); } ; if(m==3) { char s[20]; int i=0; printf("\t请输入想查询电话:"); scanf("\t%s",s); while(strcmp(per[i].num,s)!=0&&i<n) i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t序号:%d\n",per[i].score); printf("\t姓名:%s\n",per[i].name); printf("\t简拼:%s\n",per[i].jianpin); printf("\t性别:%s\n",per[i].sex); printf("\t工作单位:%s\n",per[i].company); printf("\t通讯地址:%s\n",per[i].adds); printf("\t电子邮箱:%s\n",per[i].email); printf("\t备注:%s\n",per[i].remark); } ; } void SelectSort(Person per[],int n) { int i,j,flag; Person temp;/*暂时变量做互换数据用*/ int m; printf("\t\n请选取排序方式:\n"); printf("\t┌────────┐\n"); printf("\t│ 1------姓名 │\n"); printf("\t│ 2------简拼 │\n"); printf("\t│ 3------电话 │\n"); printf("\t│ 4------返回 │\n"); printf("\t└────────┘\n"); printf("请选取:"); scanf("%d",&m); while(m!=1&&m!=2&&m!=3&&m!=4) { printf("输入错误,请重新选取:"); scanf("%d",&m); } if(m==1) { for(i=0;i<n;i++) { flag=0; /*设标志判断与否发生过互换*/ for(j=0;j<n-1;j++) if((strcmp(per[j].name,per[j+1].name))>0) /*比较大小*/ { flag=1; strcpy(temp.name,per[j].name); /*互换记录*/ strcpy(temp. abbreviation,per[j].jianoin); strcpy(temp.sex,per[j].sex); strcpy(pany,per[j].company); strcpy(temp.adds,per[j].adds); strcpy(temp.tel,per[j].tel); strcpy(temp.num,per[j].num); strcpy(temp.email,per[j].email); strcpy(temp.remarks,per[j].remark); strcpy(per[j].name,per[j+1].name); strcpy(per[j]. abbreviation,per[j+1]. jianpin); strcpy(per[j].sex,per[j+1].sex); strcpy(per[j].company,per[j+1].company); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].tel,per[j+1].tel); strcpy(per[j].num,per[j+1].num); strcpy(per[j].email,per[j+1].email); strcpy(per[j].remarks,per[j+1].remark); strcpy(per[j+1].name,temp.name); strcpy(per[j+1]. abbreviation,temp. jianpin); strcpy(per[j+1].sex,temp.sex); strcpy(per[j+1].company,pany); strcpy(per[j+1].adds,temp.adds); strcpy(per[j+1].tel,temp.tel); strcpy(per[j+1].num,temp.num); strcpy(per[j+1].email,temp.email); strcpy(per[j+1].remarks,temp.remark); } if(flag==0)break; /*如果标志为0,阐明没有发生过互换循环结束*/ } } if(m==2) { for(i=0;i<n;i++) { flag=0; /*设标志判断与否发生过互换*/ for(j=0;j<n-1;j++) if((strcmp(per[j]. jianpin,per[j+1]. jianpin))>0) /*比较大小*/ { flag=1; strcpy(temp.name,per[j].name); /*互换记录*/ strcpy(temp. jianpin,per[j]. jianpin); strcpy(temp.sex,per[j].sex); strcpy(pany,per[j].company); strcpy(temp.adds,per[j].adds); strcpy(temp.tel,per[j].tel); strcpy(temp.num,per[j].num); strcpy(temp.email,per[j].email); strcpy(temp.remarks,per[j].remark); strcpy(per[j].name,per[j+1].name); strcpy(per[j]. abbreviation,per[j+1].jianpin); strcpy(per[j].sex,per[j+1].sex); strcpy(per[j].company,per[j+1].company); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].tel,per[j+1].tel); strcpy(per[j].num,per[j+1].num); strcpy(per[j].email,per[j+1].email); strcpy(per[j].remarks,per[j+1].remark); strcpy(per[j+1].name,temp.name); strcpy(per[j+1]. abbreviation,temp. jianpin); strcpy(per[j+1].sex,temp.sex); strcpy(per[j+1].company,pany); strcpy(per[j+1].adds,temp.adds); strcpy(per[j+1].tel,temp.tel); strcpy(per[j+1].num,temp.num); strcpy(per[j+1].email,temp.email); strcpy(per[j+1].remarks,temp.remark); } if(flag==0)break; /*如果标志为0,阐明没有发生过互换循环结束*/ } } if(m==3) { for(i=0;i<n;i++) { flag=0; /*设标志判断与否发生过互换*/ for(j=0;j<n-1;j++) if((strcmp(per[j].tel,per[j+1].tel))>0) /*比较大小*/ { flag=1; strcpy(temp.name,per[j].name); /*互换记录*/ strcpy(temp. abbreviation,per[j]. jianpin); strcpy(temp.sex,per[j].sex); strcpy(pany,per[j].company); strcpy(temp.adds,per[j].adds); strcpy(temp.tel,per[j].tel); strcpy(temp.num,per[j].num); strcpy(temp.email,per[j].email); strcpy(temp.remarks,per[j].remark); strcpy(per[j].name,per[j+1].name); strcpy(per[j]. abbreviation,per[j+1]. jianpin); strcpy(per[j].sex,per[j+1].sex); strcpy(per[j].company,per[j+1].company); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].tel,per[j+1].tel); strcpy(per[j].num,per[j+1].num); strcpy(per[j].email,per[j+1].email); strcpy(per[j].remarks,per[j+1].remark); strcpy(per[j+1].name,temp.name); strcpy(per[j+1]. abbreviation,temp. jianpin); strcpy(per[j+1].sex,temp.sex); strcpy(per[j+1].company,pany); strcpy(per[j+1].adds,temp.adds); strcpy(per[j+1].tel,temp.tel); strcpy(per[j+1].num,temp.num); strcpy(per[j+1].email,temp.email); strcpy(per[j+1].remarks,temp.remark); } if(flag==0)break; /*如果标志为0,阐明没有发生过互换循环结束*/ } } printf("排序成功\n"); /*显示排序成功*/ } void Change(Person per[],int n) { char s[20]; int i=0; int m; printf("\t\n请选取修改内容:\n"); printf("\t┌──────┐\n"); printf("\t│1------姓名 │\n"); printf("\t│2------简拼 │\n"); printf("\t│3------电话 │\n"); printf("\t│4------返回 │\n"); printf("\t└──────┘\n"); 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 < n;t++) { if (strcmp(per[t].name,s)==0) { count ++; printf("%-6d%-6s%-6s%-6s%-10s%-10s%-8s%-8s%-12s%-10s%\n",per[t].score,per[t].name,per[t].jianpin,per[t].sex,per[t].company,per[t].adds,per[t].tel,per[t].num,per[t].email,per[t].remark); } } printf("---------------------------------------------------------------------------------\n"); if (count > 1) { printf("查到多条数据,请输入序号:"); m = 5; } else { while(strcmp(per[i].name,s)!=0&&i<n) i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } //printf("\t序号:"); //scanf("\t%d",&per[i].score); printf("\t姓名:"); scanf("\t%s",per[i].name); printf("\t简拼:"); scanf("\t%s",per[i]. jianpin); printf("\t性别:"); scanf("\t%s",per[i].sex); printf("\t工作单位:"); scanf("\t%s",per[i].company); printf("\t地址:"); scanf("\t%s",per[i].adds); printf("\t电话:"); scanf("\t%s",per[i].tel); printf("\t手机:"); scanf("\t%s",per[i].num); printf("\t电子邮件:"); scanf("\t%s",per[i].email); printf("\t备注:"); scanf("\t%s",per[i].remark); printf("\t修改成功!"); } } if(m==2) { int i=0; printf("\t请输入想修改记录中姓名:"); scanf("%s",s);
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服