欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    数据结构课程设计——通讯录管理系统.doc

    • 资源ID:2396811       资源大小:53KB        全文页数:17页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计——通讯录管理系统.doc

    信息与计算科学学院课程设计报告书课程名称: 数据结构课程设计 班 级: 学 号: 姓 名: 指导老师: 1,设计项目名称:通讯录管理系统 2,课程设计目的: 通过设计一个通讯录管理系统,进一步熟悉C中类的概念、基本知识和技利用所学的基本知识和技能解决简单的面向对象的程序设计问题。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C的理解与Visual C+环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。3,内容及设计要求:编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中去。设计内容:本系统应完成一下几方面的功能:1)输入信息enter();2)显示信息display( );3)查找以姓名作为关键字 search( );4)删除信息delete( );5)存盘save ( );6)装入load( ) ;设计要求:1)每条信息至包含 :姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项2)作为一个完整的系统,应具有友好的界面和较强的容错能力3)上机能正常运行,并写出课程设计报告.3.12 详细功能如下:A,添加:系统将提示用户输入新添加人员信息,输入到文件中,人员信息数据包括姓名(name),街道(street),城市(city),邮编(eip),国家(state).B,删除: 首先由用户输入要删除的人员的姓名,然后调用删除函数,删除该人员的所有相关资料.C,显示所有人员信息: 该功能将显示已经保存的所有人员的姓名,街道,城市,邮编及国家.D,查询: 可由用户输入要查找的人员姓名,然后系统用查找函数查找,接着系统使用相关文件命令输出所查找的人员的全部信息.E,退出系统 关闭通讯录管理系统.3.2,规格说明:4,详细设计:4.1,通讯录管理系统功能说明图:通讯录管理系统删除联系人不保存退出保存退出新添联系人查询菜单 4.2,数据结构及各模块分析:4.21:设计类,对象及基本数据类型:4.211创建一个record类,它有五个数据成员:char name20; 姓名 char street20; 街道 char city20; 城市 char eip20; 邮编 char state20; 国家包含函数: 功能如下:void mainmenu(); 主菜单void searchmenu(); 查找菜单void enter(); 新添纪录 void search(); 按姓名查询 void display(); 显示所有 void load(); 读取文件 void save(); 写入文件 void delete(); 按姓名删除 4.212,结构体:struct record char street20; char name20; char city20; char state20; char eip20;student500;struct slnoderecord date;struct slnode *next;struct slnode *prior; 4.3,设计流程图 6,调试分析及心得体会:6.1,调试分析:void load()/从文件导入 if(fp=fopen("student","rb")=NULL) /打开文件进行读的操作 printf("ntt通讯录文件不存在"); if (fp=fopen("student","wb")=NULL)/打开文件进行读的操作 printf("ntt建立失败"); exit(0); else printf("ntt通讯录文件已建立"); printf("ntt按任意键进入主菜单"); getch(); /从键盘接收一个字符 return; /返回主函数的主菜单 exit(0); fseek(fp,0,2); /*文件位置指针移动到文件末尾*/ if (ftell(fp)>0) /*文件不为空*/ rewind(fp); /*文件位置指针移动到文件开始位置*/ for (num=0;!feof(fp) && fread(&studentnum,sizeof(struct record),1,fp);num+); .getch(); return; 6.11void search()/查找人 int j=0,a=0;/j用来记录查找. scanf("%s",name); for(int i=a;i<num;i+,p=p->next)/num用来表示联系人的个数if(strcmp(name,p->next->date.name)=0)/查找是否有该人,有则输出该点所有信息,并往下查找。 printf("查询到的信息:"); printf("n"); printf("姓名:"); printf("%s",p->next->date.name); . j+;if(j=0)printf("tt该通讯录没有该人!");if (i+1)<num) /确保扫描到所有的联系人 printf("ntt是否继续查找相同名字的学生信息:(y/n)"); .else printf("ntt按任意键返回主菜单"); .6.2,心得体会: 1),程序的编写应是:三分编写,七分调试; 2)程序编写之前需求分析,至关重要,将关系这整个项目的成败. 3)一名优秀程序员的成长,需要付出很多很多,编程是每天必做 4)熟能生巧,这次在用指针处理双向链表时,以前对这块内容并不十分清楚,这次感觉 很吃力,所以在今后的编程之中,尽可能把基本技能练习熟练. 5)做软件最终是满足用户的需求,所以做软件时应一切应以用记为导向.7,使用说明及操作展示:7.1运行环境: Microsoft Visual C+6.07.2在此,把软件使用过程写出,并对此程序的一些细节和具体的操作方法加以说明,说明如下:7.21将软件进行初始化,即在VC+6.0中运行该程序,进入程序主界面,首次运行会建立文件,提示文件是否成功建立。然后按任意键后进入主菜单。界面面显示的是“主菜单”,主菜单有五个方面: 1,新添记录2,查询菜单3,删除联系人4,保存退出5,不保存退出查询菜单包裹三个方面 1,显示所有 2,按姓名查询 3,返回主菜单 7.22,输入和存取人员信息,选择菜单界面的第1个选择进入此选择界面,根据提示,输入信息相关信息。7.23 按"2"显示查询的菜单。7.24按“3”删除指定联系人。7.25按“4”将输入的联系人信息保存到文件中并退出通讯录。7.26,按“5”退出通讯录,不保存输入的联系人信息。8,全部源代码:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct record char name20; char street20; char city20; char eip20; char state20; student500;struct slnoderecord date;struct slnode *next;struct slnode *prior;typedef slnode * linklist;linklist l;int num=0;FILE *fp; void mainmenu();void searchmenu();void enter();void search();void display();void load();void save();void delet();void listinsert();void initlist();void main() initlist();load();listinsert(); while (1)mainmenu(); void load() if(fp=fopen("student.bin","rb")=NULL) printf("ntt通讯录文件不存在"); if (fp=fopen("student","wb")=NULL) printf("ntt建立失败"); exit(0); else printf("ntt通讯录文件已建立"); printf("ntt按任意键进入主菜单"); getch(); return; exit(0); fseek(fp,0,2); if (ftell(fp)>0) rewind(fp); for (num=0;!feof(fp) && fread(&studentnum,sizeof(struct record),1,fp);num+); printf("ntt文件导入成功"); printf("ntt按任意键返回主菜单"); getch(); return; printf("ntt文件导入成功"); printf("ntt通讯录文件中无任何纪录"); printf("ntt按任意键返回主菜单"); getch(); return; void mainmenu()/主菜单 char choic; system("cls"); printf("ntt*欢迎进入通讯录系统*"); printf("ntt*1新添纪录 *"); printf("ntt*2查找联系人 *"); printf("ntt*3删除联系人 *"); printf("ntt*4保存退出 *"); printf("ntt*5不保存退出 *"); printf("ntt*"); printf("ntt请选择:"); choic=getch(); switch (choic) case '1':enter();break; case '2':searchmenu();break; case '3':delet();break; case '4':save();break;case '5':exit(0); default:mainmenu(); void searchmenu()/查询菜单 char choic; system("cls"); printf("ntt* 查询菜单 *"); printf("ntt* 1-显示所有 *"); printf("ntt* 2-按姓名查询 *"); printf("ntt* 3-返回主菜单 *"); printf("ntt*"); printf("ntt请选择:"); choic=getch(); switch (choic) case '1':display();break; case '2':search();break; case '3':mainmenu();break; void enter()/添加纪录 printf("ntt* 请输入学生信息 *n"); printf("ntt姓名:"); scanf("%s",&studentnum.name); printf("ntt街道:"); scanf("%s",&studentnum.street); printf("ntt城市:"); scanf("%s",&studentnum.city); printf("ntt输入邮编:"); scanf("%s",&studentnum.eip); printf("ntt国家:"); scanf("%s",&studentnum.state); num+; printf("ntt是否继续添加?(Y/N):"); if (getch()='y') enter(); return; void display()/显示所有 int i; system("cls"); if(num!=0) printf("ntt* 以下为通讯录所有信息*"); for (i=0;i<num;i+) printf("ntt姓名: %s",studenti.name); printf("ntt街道: %s",studenti.street); printf("ntt城市: %s",studenti.city); printf("ntt邮编: %s",studenti.eip); printf("ntt国家: %s",studenti.state); printf("tt"); if (i+1<num) printf("ntt_"); system("pause"); printf("ntt*"); else printf("ntt通讯录中无任何纪录"); printf("ntt按任意键返回主菜单:"); getch(); return; void save()/写入文件 int i; if (fp=fopen("student","wb")=NULL) printf("ntt文件打开失败"); for (i=0;i<num;i+) if (fwrite(&studenti,sizeof(struct record),1,fp)!=1) printf("ntt写入文件错误!n"); fclose(fp); printf("ntt通讯录文件已保存"); printf("ntt按任意键退出程序ntt"); exit(0); void listinsert()/增加一个结点 linklist s,p=l;for(int i=0;i<num;i+)s=new slnode; strcpy(s->date.name,studenti.name); strcpy(s->date.city,studenti.city); strcpy(s->date.street,studenti.street); strcpy(s->date.eip,studenti.eip); strcpy(s->date.state,studenti.state); s->prior=p->prior; s->next=p; p->prior->next=s; p->prior=s;p=p->next;void initlist()l=new slnode;l->next=l;l->prior=l;void search() int j=0,a=0;linklist p=l;printf("ntt* 按姓名查找 *"); char name20; printf("ntt请输入姓名:"); scanf("%s",name); for(int i=a;i<num;i+,p=p->next)if(strcmp(name,p->next->date.name)=0) printf("查询到的信息:"); printf("n"); printf("姓名:"); printf("%s",p->next->date.name); printf("n"); printf("城市:"); printf("%s",p->next->date.city); printf("n"); printf("国家:"); printf("%s",p->next->date.state); printf("n"); printf("街道:"); printf("%s",p->next->date.street); printf("n"); printf("邮政编码:"); printf("%s",p->next->date.eip); j+;if(j=0)printf("tt该通讯录没有该人!");if (i+1)<num) printf("ntt是否继续查找相同名字的学生信息:(y/n)"); if (getch()='y') a=i;continue; else return; else printf("ntt按任意键返回主菜单"); getch(); return; void delet() int a=0; int findmark=0; int j; int deletemark=0; int i; char name20; printf("ntt请输入要删除学生姓名:"); scanf("%s",name); for (i=a;i<num;i+) if (strcmp(studenti.name,name)=NULL) printf("ntt以下是您要删除的学生纪录:"); findmark+; printf("ntt_"); printf("ntt姓名: %s",studenti.name); printf("ntt街道: %s",studenti.street); printf("ntt城市: %s",studenti.city); printf("ntt邮编: %s",studenti.eip); printf("ntt国家: %s",studenti.state); printf("ntt_"); 待添加的隐藏文字内容2 printf("ntt是否删除?(y/n)"); if (getch()='y') for (j=i;j<num-1;j+) studentj=studentj+1; num-; deletemark+; printf("ntt删除成功"); if(i+1)<num) printf("ntt是否继续删除相同姓名的同学信息?(y/n)"); if (getch()='y') a=i; continue; printf("ntt是否继续删除?(y/n)"); if (getch()='y') delet(); return; if(i+1)<num) printf("ntt是否继续删除相同姓名的同学信息?(y/n)"); if (getch()='y') a=i; continue; else continue; if (deletemark=0)&&(findmark=0) printf("ntt没有该同学的纪录"); return; else if (findmark!=0) printf("ntt没有重名信息"); printf("ntt没有该同学的纪录"); return; 顺序栈的进栈,退栈,取栈顶:typedef int datatype;/*栈元素的数据类型*/#define M 64 /*栈可能达到的容量,此处设定为64*/typedef structdatatype dataM;int top;seqstack; /*顺序栈类型定义*/seqstack *s;/*s是顺序栈类型指针*/#include<stdio.h>#include<stdlib.h>int main(void) seqstack *CREAT();/*创建栈*/seqstack *PUSH(seqstack *s,datatype x);/*入栈*/datatype POP(seqstack *s);/*退栈*/ datatype TOP(seqstack *s);/*取栈顶*/ seqstack *SETNULL(seqstack *s);/*置栈空*/ datatype EMPTY(seqstack *s);/*判栈空*/int i;seqstack *t,k;t=CREAT();printf("显示栈内元素:"); for(i=0;i<=t->top;i+)printf("%4d",t->datai);int x;printf("n输入待插元素 x:");scanf("%d",&x); s=PUSH(t,x);if(s!=NULL)printf("n插入后的栈内元素:"); for(i=0;i<=s->top;i+) printf("%4d",s->datai);TOP(t);printf("取栈顶:");printf("%4d",s->datas->top); printf("n退栈后:"); if(POP(t)!=-1) printf("%d",POP(t); if(SETNULL(s)->top=-1) printf("n顺序栈已置空"); if(EMPTY(s)=-1) printf("n顺序栈是空的"); else printf("n顺序栈非空:"); return 0;seqstack *CREAT()seqstack *t;int x;t=(seqstack *)malloc(sizeof(seqstack);t->top=-1;int i=0;printf("n输入栈内元素 x:");scanf("%d",&x);while(x!=0)t->datai=x;i+;t->top+;printf("n 输入栈内元素 x:");scanf("%d",&x);return (t);seqstack *PUSH(seqstack *s,datatype x)/*将元素x插入顺序栈s的顶部*/if(s->top>=M-1)printf("noverfiow:");return (NULL);/*上溢*/s->top+;/*栈顶指针加1*/ s->datas->top=x;/*将x插入当前栈顶*/return (s);datatype POP(seqstack *s)/*若栈非空,取出栈顶元素删除之*/if(s->top=-1)printf("n栈是空的:");return(-1);int x;x=s->datas->top;s->top-;/*删去栈顶元素*/return (x);seqstack * SETNULL(seqstack *s)s->top=-1;return(s);datatype EMPTY(seqstack *s)if(s->top=-1)return(-1);return 0;datatype TOP(seqstack *s)if(EMPTY(s)printf("空栈"); return NULL;elsereturn(s->datas->top);

    注意事项

    本文(数据结构课程设计——通讯录管理系统.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开