首页 数据结构课程设计报告_通讯录管理系统

数据结构课程设计报告_通讯录管理系统

举报
开通vip

数据结构课程设计报告_通讯录管理系统1数据结构课程设计报告书题目:通讯录管理系统院系:信息科学技术学院专业班级:计算机科学与技术(非师范)学号:2013学生姓名:A学号:2013学生姓名:B指导教师:C2015年12月20日2目录第一章需求分析···················&mid...

数据结构课程设计报告_通讯录管理系统
1数据结构课程 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 报告书题目:通讯录管理系统院系:信息科学技术学院专业班级:计算机科学与技术(非师范)学号:2013学生姓名:A学号:2013学生姓名:B指导教师:C2015年12月20日2目录第一章需求分析··········································3第二章概要设计··········································4第三章详细设计··········································5第四章设计体会··········································9第五章用户使用和说明···································10第六章测试及输出结果···································11第七章参考文献·········································14第八章源代码···········································15成绩互评:姓名学号互评成绩A2013优秀B2013良好3第一章需求分析(1)用C语言设计出模拟手机通讯录管理系统,实现对用户通讯工具中的通讯录进行管理。(2)功能要求(在界面输入输出)a.添加功能:能够写入用户的姓名、性别、城市、邮编、电话、QQ号、e-mailb.显示功能:能够读取通讯录信息,并进行查看c.查询功能:根据用户要求可按照姓名或者电话号码进行查找d.修改功能:输入某个人的姓名时,可对此人的相应每一条信息进行修改。e.删除功能:输入某个人的姓名时,可对此人的相应数据进行删除,删除操作不能撤销。(3)测试结果:4第二章概要设计(1)系统功能模块结构图:(2)调用关系:用while()循环和switch()实现主界面的显示和各选项之间的连接(3) 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图:开始输入要运行的功能的序号判断用户的输入添加通讯录显示通讯录查询通讯录删除通讯录修改通讯录结束退出主函数添加通讯录显示通讯录查询通讯录修改通讯录删除通讯录退出5第三章详细设计整个系统共分为7模块,主函数加6个子函数,从而实现6大功能:输出界面、添加通讯录、显示通讯录、查询通讯录、修改通讯录、删除通讯录,各个程序的算法分析如下:(1)输出界面:voidmyprint(),显示菜单。让用户对操作选项进行选择,通过用户输入是否继续操作而重复显示菜单。(2)添加通讯录:voidmyadd(),添加通讯录。利用文件的fprintf()函数来将用户输入的信息保存到当前目录下address_list.txt的文件中。流程图如下:(3)显示通讯录:voidmydisplay(),显示通讯录,利用文件的fscanf()开始主界面输入1输入联系人的信息将数据保存到指定的文件里结束6来将保存在address_list.txt文件中的信息读取出来并输出在屏幕上。流程图如下:(4)查询通讯录:voidmysearch(),查询通讯录,利用文件的fscanf()来将保存在address_list.txt文件中的信息读取出来并保存在数组record中,按照用户输入的姓名或者手机号在数组中查找,如果找不到匹配的信息,则输出没有相应的联系人;如果找到了匹配的信息,则记录当前数组下标,然后在屏幕上输出。流程图如下:开始打开文件主界面输入2while(feof(fp)==0)fscanf()读取每一行的数据,printf在屏幕上输出结束7(5)修改通讯录:voidmymodify(),修改通讯录。利用文件的fscanf()来将保存在address_list.txt文件中的信息读取出来并保存在数组record中,按照用户输入的姓名在数组中查找,如果找不到匹配的信息,则输出没有相应的联系人;如果找到了匹配的信息,则记录当前数组下标,然后要求用户输入正确的联系人信息,最后将record中的信息用fprintf()函数重新写入address_list.txt文件中。流程图如下:开始主界面输入3输入要查找的名字在record数组中进行查询选择查询方式:1姓名、2电话输出该行数据结束12输入要查找的电话8(6)删除通讯录:voidmydelete(),修改通讯录。利用文件的fscanf()来将保存在address_list.txt文件中的信息读取出来并保存在数组record中,按照用户输入的姓名在数组中查找,如果找不到匹配的信息,则输出没有相应的联系人;如果找到了匹配的信息,则记录当前数组下标,然后将此下标后面的每个信息利用循环前移一位,进行覆盖删除。最后将record中的信息用fprintf()函数重新写入address_list.txt文件中。流程图如下:开始主界面输入4主界面输入输入要修改的联系人的姓名在record中查找是否有这个联系人吗?YN依次输入正确的信息结束存入record中,写入文件9第四章设计体会(1)调试中的问题与改进:这次课程设计中调试的主要问题出现在一开始程序运行是对的,但是每次输入数据时必须输入两次才能存储,我们仔细地研究了代码并且重新再阅读C语言教材,解决了问题。并且把程序进行了改进,使程序在使用上更加方便快捷。(2)心得与体会:这个程序设计我们花了我不少时间和精力。从一开始拿到题目,完全没有头绪,到后来慢慢分析题目,选数据结构,查资料,开始主界面输入5主界面输入输入要删除的联系人的姓名在record中查找是否有这个联系人吗?YN从record中删除这条记录结束将record的记录写入文件10到最后终于用将近一个星期写出了这个通讯录管理系统。这次程序设计让我对查找有了新的认识。之前学习C语言的时候觉得查找没什么用,经过这次程序设计,我发现查找的功能是十分强大的,主要看你会不会用而已。最后,尽管编程过程痛苦,但是让我巩固了以前的知识,提高了动手能力,而且程序写出来让我非常有成就感,所以还是很感谢有这门课程的。第五章用户使用说明(1)添加通讯录:在主菜单中输入1,进入添加通讯录界面。用户输入联系人姓名、性别、城市、邮编、电话、QQ、Email建立一个新的通讯录。输入结束后,系统会自动保存到文件中,并在屏幕上输出保存成功的信息。用户可以选择是否继续。(2)显示通讯录:在主菜单中输入2,进入显示通讯录界面。系统自动从address_list.txt文件中读取信息,并在屏幕上输出。用户可以选择是否继续。(4)查询通讯录:在主菜单中输入3,进入查询通讯录界面。查询方式有两种:1、按姓名查询,2、按手机号查询,再次进行选择之后,输入相应的信息进行查询,系统在屏幕上输出结果。11(5)修改通讯录:在主菜单中输入4,进入修改通讯录界面。用户通过姓名查找到联系人,修改信息,再次保存到address_list.txt文件中。(6)删除通讯录:在主菜单中输入5,进入删除通讯录界面。用户通过姓名查找到联系人,修改信息,再次保存到address_list.txt文件中。(7)退出在主菜单中输入6,退出通讯录管理系统。第六章测试及输出结果(1)添加通讯录:12(2)显示通讯录:接着上一步再输入4个联系人之后显示通讯录:(3)查询通讯录:a.按姓名查询:b.按电话查询:13(4)修改通讯录:修改完成后再次显示通讯录:(5)删除通讯录:14删除完成后再次显示通讯录:(6)退出在主界面输入6,屏幕显示pressanykeytocontinue15第七章参考文献[1]《C程序设计 教程 人力资源管理pdf成真迷上我教程下载西门子数控教程protel99se入门教程fi6130z安装使用教程 (第3版)》作者:崔武子李青等[2]《数据结构(C语言版)》作者:严蔚敏吴伟民第八章源代码#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>//函数声明voidmyprint();//显示菜单voidmyadd();//添加通讯录voidmydisplay();//显示voidmysearch();//查找voidmymodify();//修改voidmydelete();//删除structaddress_list{charname[20];//姓名charsex[10];//性别charcity[20];//城市charpostcode[10];//邮编charphone[20];//电话charqq[20];//QQcharemail[20];//Email};main(){charchoose='\0',yes_no='\0';do{myprint();printf("");choose=getch();16switch(choose){case'1':myadd();break;//添加case'2':mydisplay();break;//显示case'3':mysearch();break;//查询case'4':mymodify();break;//修改case'5':mydelete();break;//删除case'6':exit(0);default:printf("\n%c为非法选项!\n",choose);}printf("\n要继续选项吗(Y/N)?\n");do{yes_no=getch();}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');}while(yes_no=='Y'||yes_no=='y');}voidmyprint(){system("cls");printf("\n\n");printf("|----------------------------|\n");printf("|请输入编号(1-6)|\n");printf("|----------------------------|\n");printf("|1——添加通讯记录|\n");printf("|2——显示通讯录|\n");printf("|3——查询通讯记录|\n");printf("|4——修改通讯记录|\n");printf("|5——删除通讯记录|\n");printf("|6——退出|\n");printf("|----------------------------|\n");printf("|bystu_in_HaiNNU|\n");printf("|----------------------------|\n");}voidmyadd(){inti=0;structaddress_listmm;FILE*fp=NULL;fp=fopen("address_list.txt","a");if(fp==NULL){17printf("打开文件失败!\n");exit(0);}while(i<1)//一次只允许输入一个{system("cls");printf("\n姓名:");scanf("%s",mm.name);printf("\n性别:");scanf("%s",mm.sex);printf("\n城市:");scanf("%s",mm.city);printf("\n邮编:");scanf("%s",mm.postcode);printf("\n电话:");scanf("%s",mm.phone);printf("\nQQ号:");scanf("%s",mm.qq);printf("\n邮箱:");scanf("%s",mm.email);fprintf(fp,"%20s%20s%20s%20s%20s%20s%20s\n",mm.name,mm.sex,mm.city,mm.postcode,mm.phone,mm.qq,mm.email);//保存到文件中i++;}printf("保存成功!\n");fclose(fp);}voidmydisplay(){intn=0;structaddress_listmm;FILE*fp=NULL;fp=fopen("address_list.txt","r");if(fp==NULL){printf("打开文件失败!\n");exit(0);}system("cls");printf("---------------------------------------------------------------------------------------\n");printf("姓名性别城市邮编电话QQEmail\n");printf("---------------------------------------------------------------------------------------\n");while(feof(fp)==0){//从文件中读取数据并输出在屏幕上18fscanf(fp,"%20s%20s%20s%20s%20s%20s%20s\n",mm.name,mm.sex,mm.city,mm.postcode,mm.phone,mm.qq,mm.email);printf("%10s%10s%10s%10s%15s%15s%15s\n",mm.name,mm.sex,mm.city,mm.postcode,mm.phone,mm.qq,mm.email);n++;}if(n==0)printf("\n通讯录中没有记录!\n");elseprintf("\n通讯录中共有%d个记录!\n",n);fclose(fp);}voidmysearch(){intn=0,i=0,flag=0;charchoose='\0',search_info[]="";structaddress_listrecord[100]={0},*p=NULL;FILE*fp=NULL;fp=fopen("address_list.txt","r");if(fp==NULL){printf("打开文件失败!\n");exit(0);}p=record;while(feof(fp)==0){//从文件中读取数据并保存在数组中fscanf(fp,"%20s%20s%20s%20s%20s%20s%20s\n",p->name,p->sex,p->city,p->postcode,p->phone,p->qq,p->email);p++;n++;}fclose(fp);if(n==0){printf("通讯录中没有联系人!\n");return;}system("cls");printf("请选择查询类型:\n");19printf("------------------------\n");printf("1--姓名2--手机号\n");printf("------------------------\n");choose=getch();if(choose=='1'){printf("请输入要查询的姓名:\n");scanf("%s",search_info);for(i=0;i<100;i++)//在数组中查找和输入信息匹配的记录{if(strcmp(search_info,record[i].name)==0){printf("---------------------------------------------------------------------------------------\n");printf("姓名性别城市邮编电话QQEmail\n");printf("---------------------------------------------------------------------------------------\n");printf("%10s%10s%10s%10s%15s%15s%15s\n",record[i].name,record[i].sex,record[i].city,record[i].postcode,record[i].phone,record[i].qq,record[i].email);flag=1;}}if(flag==0)printf("通讯录中没有叫%s的人!\n",search_info);}elseif(choose=='2'){printf("请输入要查询的电话:\n");scanf("%s",search_info);for(i=0;i<100;i++){if(strcmp(search_info,record[i].phone)==0){printf("---------------------------------------------------------------------------------------\n");printf("姓名性别城市邮编电话QQEmail\n");20printf("---------------------------------------------------------------------------------------\n");printf("%10s%10s%10s%10s%15s%15s%15s\n",record[i].name,record[i].sex,record[i].city,record[i].postcode,record[i].phone,record[i].qq,record[i].email);flag=1;}}if(flag==0)printf("通讯录中没有电话号码是%s的人!\n",search_info);}elseprintf("\n选择错误!\n",choose);}voidmymodify(){intn=0,i=0,flag=0;structaddress_listrecord[100]={0},*p=NULL,modify_info;FILE*fp=NULL;fp=fopen("address_list.txt","r");if(fp==NULL){printf("打开文件失败!\n");exit(0);}p=record;while(feof(fp)==0){fscanf(fp,"%20s%20s%20s%20s%20s%20s%20s\n",p->name,p->sex,p->city,p->postcode,p->phone,p->qq,p->email);p++;n++;}fclose(fp);if(n==0){printf("通讯录中没有联系人!\n");return;}system("cls");printf("请输入要修改的联系人姓名:\n");21scanf("%s",modify_info.name);for(i=0;i<n;i++){if(strcmp(modify_info.name,record[i].name)==0){//输入正确的信息,并使用strcpy()函数修改信息printf("\n请输入正确的姓名:");scanf("%s",modify_info.name);printf("\n请输入正确的性别:");scanf("%s",modify_info.sex);printf("\n请输入正确的城市:");scanf("%s",modify_info.city);printf("\n请输入正确的邮编:");scanf("%s",modify_info.postcode);printf("\n请输入正确的电话:");scanf("%s",modify_info.phone);printf("\n请输入正确的QQ号:");scanf("%s",modify_info.qq);printf("\n请输入正确的邮箱:");scanf("%s",modify_info.email);strcpy(record[i].name,modify_info.name);strcpy(record[i].sex,modify_info.sex);strcpy(record[i].city,modify_info.city);strcpy(record[i].postcode,modify_info.postcode);strcpy(record[i].phone,modify_info.phone);strcpy(record[i].qq,modify_info.qq);strcpy(record[i].email,modify_info.email);flag=1;}}if(flag==1){fp=fopen("address_list.txt","w");if(fp==NULL){printf("修改联系人失败!\n");exit(0);}for(i=0;i<n;i++){fprintf(fp,"%20s%20s%20s%20s%20s%20s%20s\n",record[i].name,record[i].sex,record[i].city,record[i].postcode,record[i].phone,record[i].qq,record[i].email);22}printf("联系人修改成功!\n");fclose(fp);}elseif(flag==0)printf("通讯录中没有叫%s的人!\n",modify_info.name);}voidmydelete(){intn=0,i=0,flag=0;chardelete_info[]="";structaddress_listrecord[100]={0},*p=NULL;FILE*fp=NULL;fp=fopen("address_list.txt","r");if(fp==NULL){printf("打开文件失败!\n");exit(0);}p=record;while(feof(fp)==0){fscanf(fp,"%20s%20s%20s%20s%20s%20s%20s\n",p->name,p->sex,p->city,p->postcode,p->phone,p->qq,p->email);p++;n++;}fclose(fp);if(n==0){printf("通讯录中没有联系人!\n");return;}system("cls");printf("请输入要删除的姓名:\n");scanf("%s",delete_info);for(i=0;i<100;i++){if(strcmp(delete_info,record[i].name)==0){for(;i<n;i++){23//使用strcpy()函数前移数据实现覆盖删除strcpy(record[i].name,record[i+1].name);strcpy(record[i].sex,record[i+1].sex);strcpy(record[i].city,record[i+1].city);strcpy(record[i].postcode,record[i+1].postcode);strcpy(record[i].phone,record[i+1].phone);strcpy(record[i].qq,record[i+1].qq);strcpy(record[i].email,record[i+1].email);}flag=1;}}if(flag==1){fp=fopen("address_list.txt","w");if(fp==NULL){printf("删除联系人失败!\n");exit(0);}for(i=0;i<n-1;i++){fprintf(fp,"%20s%20s%20s%20s%20s%20s%20s\n",record[i].name,record[i].sex,record[i].city,record[i].postcode,record[i].phone,record[i].qq,record[i].email);}printf("联系人删除成功!\n");fclose(fp);}elseif(flag==0)printf("通讯录中没有叫%s的人!\n",delete_info);}
本文档为【数据结构课程设计报告_通讯录管理系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
建英
教育
格式:pdf
大小:497KB
软件:PDF阅读器
页数:0
分类:高中语文
上传时间:2019-07-02
浏览量:0