收藏 分销(赏)

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

上传人:人****来 文档编号:3326206 上传时间:2024-07-02 格式:DOC 页数:47 大小:307.04KB 下载积分:12 金币
下载 相关 举报
学生手机通信录管理系统.doc_第1页
第1页 / 共47页
学生手机通信录管理系统.doc_第2页
第2页 / 共47页


点击查看更多>>
资源描述
程序设计报告书 ( 2023 / 2023 学年 第 一 学期) 题 目:通讯录管理系统 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 日 期 评 分 细 则 评分项 优秀 良好 中档 差 遵守机房规章制度 上机时的表现 学习态度 程序准备情况 程序设计能力 团队合作精神 课题功能实现情况 算法设计合理性 用户界面设计 报告书写认真限度 内容详实限度 文字表达纯熟限度 回答问题准确度 简 短 评 语 教师署名: 年 月 日 评分等级 备注 评分等级有五种:优秀、良好、中档、及格、不及格 通讯录管理系统 一、 课题内容和规定 该课题规定设计一个简朴、实用的通信录管理程序,重要功能涉及通信录数据的录入、查找、修改、删除、排序、显示等。所有通信录数据都要运用文献系统保存,以备系统下次运营时使用。通过此课题,全面熟悉、掌握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电子邮件:");
展开阅读全文

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


开通VIP      成为共赢上传

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

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服