学生手机通信录管理系统_第1页
学生手机通信录管理系统_第2页
学生手机通信录管理系统_第3页
学生手机通信录管理系统_第4页
学生手机通信录管理系统_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计报告书(2023/2023学年第一学期)题目:通讯录管理系统专业学生姓名班级学号指导教师指导单位日期评分细则评分项优秀良好中档差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真限度内容详实限度文字表达纯熟限度回答问题准确度简短评语教师署名:年月日评分等级备注评分等级有五种:优秀、良好、中档、及格、不及格通讯录管理系统课题内容和规定该课题规定设计一个简朴、实用的通信录管理程序,重要功能涉及通信录数据的录入、查找、修改、删除、排序、显示等。所有通信录数据都要运用文献系统保存,以备系统下次运营时使用。通过此课题,全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,纯熟掌握文献、数组、指针的各种操作,以及一些基本算法思想的应用。增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。需求分析系统功能模块图:流程图流程图查询修改删除排序显示添加保存读入退出添加:可以添加通讯录记录,依次输入序号,姓名,简拼,性别,工作单位,地址,电话,手机,电子邮件,备注后,会提醒是否继续添加。查询:可以选择用序号、姓名、简拼、电话方式查询修改:先查找,再修改。若查找出多条记录,则进一步提醒用户选择记录的序号,再修改删除:输入欲删除的那个人的名字后,删除他(她)的记录内容排序:可按姓名、简拼等排序。规定排序后,记录的序号也要重新编排显示:可以以表格形式输出所有通讯录里的记录保存:,输入文献名(带后缀名)后,即可将通讯录信息保存到文献读入:从文献中读入通信录数据。界面功能规定:(1)采用和谐的字符界面,实现一个功能控制菜单。(2)每次操作都从该菜单选择,运用循环结构使得一次运营程序可进行多次操作。三、概要设计(1)重要结构体:typedefstruct { charscore;/*序号*/ charname[10];/*姓名*/charjianpin[50];/*简拼*/charsex[3];/*性别*/charcompany[20];/*工作单位*/charadds[20];/*地址*/chartel[15];/*电话*/charnum[15];/*手机*/ charemail[20]; /*电子邮件*/ charremark[30]; /*备注*/ }Person;(2).工作流程图:1.添加:添加通讯录记录N开始N开始i=0sign!='n'&&sign!='N输入Return(n+i)结束Y2.查询:查询通讯录记录先选择查询方式,以姓名查询方式为例N开始N开始输入简拼通讯录是否有此简拼通讯录无此人显示信息结束Y输入电话输入姓名N通讯录是否有此电话通讯录是否有此姓名通讯录无此人通讯录无此人显示信息显示信息结束结束YYN3.修改:修改通讯录记录开始开始输入姓名通讯录是否有此姓名通讯录无此人修改信息结束YN4.删除:删除通讯录记录开始开始输入姓名通讯录是否有此姓名通讯录无此人删除信息结束YN5.显示:显示通讯录记录开始开始inti,i=1i<n+1输出一个记录i++结束YN四、源程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>typedefstruct { charscore;/*序号*/ charname[10];/*姓名*/charjianpin[50];/*简拼*/charsex[3];/*性别*/charcompany[20];/*工作单位*/charadds[20];/*地址*/chartel[15];/*电话*/charnum[15];/*手机*/ charemail[20]; /*电子邮件*/ charremark[30]; /*备注*/ }Person;Personpe[80];intmenu_select() { charc; 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'); }intInput(Personper[],intn){ inti=0; charsign,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);}voidDisplay(Personper[],intn){ inti; 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");}intDelete_a_record(Personper[],intn){ chars[20]; inti=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);}voidQuery_a_record(Personper[],intn){ intm; 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) { chars[20]; inti=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) { chars[20]; inti=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) { chars[20]; inti=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); };}voidSelectSort(Personper[],intn){inti,j,flag;Persontemp;/*临时变量做互换数据用*/intm; 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(,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,); 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(,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,); 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(,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,); 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");/*显示排序成功*/}voidChange(Personper[],intn){ chars[20]; inti=0; intm;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); } intcount=0; if(m==1) { inti=0; printf("\t请输入想修改的记录中的姓名:"); scanf("%s",s); printf("---------------------------------------------------------------------------------\n");/*格式*/ printf("序号姓名简拼性别工作单位地址电话手机电子邮件备注\n"); printf("---------------------------------------------------------------------------------\n"); for(intt=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) { inti=0; printf("\t请输入想修改的记录中的姓名:"); scanf("%s",s); printf("---------------------------------------------------------------------------------\n");/*格式*/ printf("序号姓名简拼性别工作单位地址电话手机电子邮件备注\n"); printf("---------------------------------------------------------------------------------\n"); for(intt=0;t<n;t++){ if(strcmp(per[t].jianpin,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].jianpin,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==3) { inti=0; printf("\t请输入想修改的记录中的姓名:"); scanf("%s",s); printf("---------------------------------------------------------------------------------\n");/*格式*/ printf("序号姓名简拼性别工作单位地址电话手机电子邮件备注\n"); printf("---------------------------------------------------------------------------------\n"); for(intt=0;t<n;t++){ if(strcmp(per[t].tel,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].tel,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==5) { inti=0; scanf("%s",s); while(per[i].score!=atoi(s)&&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修改成功!"); }}voidWritetoText(Personper[],intn){ inti=0; FILE*fp;/*定义文献指针*/ charfilename[20];/*定义文献名*/ 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(i<n) { fprintf(fp,"%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\t%-20s\t%-20s\t%-20s\t%20s\n",per[i].score,per[i].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); i++; } fprintf(fp,"------------------------------------------------------------------------------------------\n"); fprintf(fp,"***************************************共有%d条记录****************************************\n",n); fclose(fp);/*关闭文献*/ printf("保存成功\n");}intLoad(Personper[],intn){inti;FILE*fp;/*指向文献的指针*/if((fp=fopen("record.txt","rb"))==NULL)/*打开文献*/{printf("无法打开文献\n");/*不能打开*/exit(1);/*退出*/}fscanf(fp,"%d",&n);/*读入记录数*/for(i=0;i<n;i++)fscanf(fp,"%20s%30s%10s",per[i].name,per[i].company,per[i].tel);/*按格式读入记录*/fclose(fp);/*关闭文献*/printf("你已经成功地从文献中读取数据\n");/*显示保存成功*/returnn;/*返回记录数*/}voidmain()/*主函数*/{ intn=0; for(;;) { switch(menu_select()) { case1: printf("\n\t添加记录到通讯录\n");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论