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

上传人:b****3 文档编号:5466983 上传时间:2023-05-08 格式:DOCX 页数:24 大小:353.85KB
下载 相关 举报
数据结构课程设计通讯录管理系统.docx_第1页
第1页 / 共24页
数据结构课程设计通讯录管理系统.docx_第2页
第2页 / 共24页
数据结构课程设计通讯录管理系统.docx_第3页
第3页 / 共24页
数据结构课程设计通讯录管理系统.docx_第4页
第4页 / 共24页
数据结构课程设计通讯录管理系统.docx_第5页
第5页 / 共24页
数据结构课程设计通讯录管理系统.docx_第6页
第6页 / 共24页
数据结构课程设计通讯录管理系统.docx_第7页
第7页 / 共24页
数据结构课程设计通讯录管理系统.docx_第8页
第8页 / 共24页
数据结构课程设计通讯录管理系统.docx_第9页
第9页 / 共24页
数据结构课程设计通讯录管理系统.docx_第10页
第10页 / 共24页
数据结构课程设计通讯录管理系统.docx_第11页
第11页 / 共24页
数据结构课程设计通讯录管理系统.docx_第12页
第12页 / 共24页
数据结构课程设计通讯录管理系统.docx_第13页
第13页 / 共24页
数据结构课程设计通讯录管理系统.docx_第14页
第14页 / 共24页
数据结构课程设计通讯录管理系统.docx_第15页
第15页 / 共24页
数据结构课程设计通讯录管理系统.docx_第16页
第16页 / 共24页
数据结构课程设计通讯录管理系统.docx_第17页
第17页 / 共24页
数据结构课程设计通讯录管理系统.docx_第18页
第18页 / 共24页
数据结构课程设计通讯录管理系统.docx_第19页
第19页 / 共24页
数据结构课程设计通讯录管理系统.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《数据结构课程设计通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计通讯录管理系统.docx(24页珍藏版)》请在冰点文库上搜索。

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

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

广东某某学院

《数据结构课程设计》

题目:

通讯录管理系统

学号:

姓名:

年级:

学院:

专业:

指导教师:

一、功能需求

运用所学知识设计一个学生通讯录管理系统,对列表里的名单进行管理,包括添加、录入、删除、查找、排序、格式化等功能。

通讯录人员内容包括学号、姓名、电话号码等信息。

二、功能分析

学生包括姓名、学号、电话号码等信息。

(1)新增学生:

将新增员工对象按姓名以字典方式员工管理文件中,基本信息中的编号是按照添加顺序自动增加的。

(2)删除学生:

从学生通讯录中删除一名学生,根据姓名删除。

(3)查找学生:

从学生通讯录中查询符合学号条件的学生。

(4)修改信息:

根据姓名检索出对象,可对某个属性修改,如学号、姓名、电话号码。

(5)排序:

按照名字所对应的字母大小对所有的学生进行排序(降序)。

(6)录入:

将学生的信息保存。

(7)读取:

将通讯录中所有学生信息读取,在屏幕中显示出来,不存在的则用0来代替。

(8)格式化:

将通讯录中的所有信息删除。

三、基本思想

数据结构

线性表查找:

从一端开始从头到尾查找和自己输入的相等的值,有则查找成功,没有则失败。

冒泡排序:

通过交换排序中的冒泡排序法,运用拷贝函数完成排序。

 

四、流程图

五、测试结果

 

六、调试情况分析

1.操作界面相对简洁

2.功能要求基本实现

 

七、心得体会

1.本学期十分特殊,因为疫情原因,平时的线下学习变成了线上学习。

因此我们在家度过了这个特殊的学期。

本学期在家中学习,比在学校的学习效率低了很多。

但经过了一个学期的学习,对数据结构有了一定的了解,也对c/c++编程设计有了进一步的认识。

在线上的学习过程中,我一开始很难把数据结构所学内容和自己所学的c++结合在一起,因此在做课程设计的任务当中遇到了很多困难。

不过因为在线上学习,所以在不懂的时候还可以通过看课堂视频的回放,查补自己的一些缺漏。

2.本次课程设计,因为自己对指针方面掌握薄弱,所以在本次课程设计中,没有用到指针,怕掌握不好导致很多错误。

这次课程设计,大部分使用的是结构体定义,针对指针,假期有空也会重新复习,争取能在以后有任务的时候用得上。

3.本次课程设计我们采用的是合作的方式,一人负责一块,因此对于有些地方的掌握可能还不太熟练。

未来争取能够和小伙伴一起学习,完完全全掌握通讯录代码的整体思路构造和细节方面的函数构造。

在c++语言的运用方面i按还不是很熟练,希望在小伙伴们的帮助下变得越来越熟练。

4.本次课程设计遇到了很多难题,我们通常会卡在某个点,比如说平时常见的格式错误,一时间找不出来的话会耽搁很久,而本次代码也有一些缺陷:

比如说代码中的排序操作中对于通讯录人数的限定。

虽然可以通过删除,改写代码数组的长度来实现对通讯录的扩充、增加,但还是很麻烦,没有运用到所学知识去弄一个自定义的数组。

还有就是通讯录的读取和录入,会出现用零代替、从下往上读取的方式。

相信在后面好好学习之后,我们可以掌握更多知识,去对这个通讯录进行完善。

一步步加深对知识的理解与运用,提高自身的能力。

5.本次课程设计中遇到了许多难题。

但大部分我们能够解决,因此代码中的缺陷也不算太多,但还是有,和小伙伴商量完之后大概就定下了这个通讯录设计的理念和模式。

本次设计比较可惜的是很少用到数据结构的知识。

但也是因为自己不够努力,不能学以致用。

希望下次能好好努力,争取用好自己所学的知识,真正意义上的做到学以致用。

通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。

基本完成完成课程设计的目的,分析和解决问题的实际工作能力,学到这些对我以后的帮助会很大。

希望下学期回到学校,能好好学习,把上学期学的不好的东西给掌握,自己在私下也要好好学习,做一个懂得查缺补漏的人。

本次课程设计也让我明白了团队的重要性,只有努力做好自己的部分,分工合作,我们才能越来越好,整个通讯录的功能才能越来越完善。

在这之中,小伙伴之间的沟通和交流也极其重要,碰到不懂的也可以找小伙伴交流讨论。

需要用到数据结构知识的,我们也会尽力去把他弄好。

但本次课程设计运动到的知识比较少,希望在以后能够更多的融入数据结构的知识。

紧接着就是和以后的结合。

现在我们做的编程还是比较简单,到以后可能需要做更多复杂的编程,所以在现在的教学中我们更要打好基础,以便后来能够在打好基础的情况下学到更多。

源代码:

#pragmawarning(disable:

4996)

#include

#include

#include

#include

#include

usingnamespacestd;

structstudent//结构体定义

{

charnum[12];

charname[30];

chartel[12];

};

classinter//类的定义

{

private:

studentst[10];

public:

voidaddition(charnum[12],charname[30],chartel[12]);

voiddel(charname[30]);

voidfind1(charnum[12]);

voidlist1();

intcorrect(charname[30]);

voidwrite();

voidformat();

voidread();

voidprint(inti);

intback();

};

voidinter:

:

addition(charnum[12],charname[30],chartel[12])//添加联系人

{

intx=1;//定义一个整形变量用于判断

for(inti=0;i<10;i++)

{

if(!

strcmp(st[i].num,"0"))

{

strcpy(st[i].num,num);

strcpy(st[i].name,name);

strcpy(st[i].tel,tel);

x=0;

}

if(x==0)

break;

}

}

voidinter:

:

del(charname[30])//删除联系人

{

booltemp=0;//定义一个布尔变量用于判断

for(inti=0;i<10;i++)

{

if(!

strcmp(st[i].name,name))//如果姓名相同

{

temp=1;

strcpy(st[i].num,"0");

strcpy(st[i].name,"0");

strcpy(st[i].tel,"0");

cout<<"*****删除成功!

*****"<

}

}

if(!

temp)

{

cout<<"*****查无此人*****"<

}

}

intinter:

:

correct(charname[30])//修改联系人

{

intx;

for(inti=0;i<10;i++)

{

if(!

strcmp(st[i].name,name))

{

x=i;

cout<<"*修改内容*"<

cout<<"****************************"<

cout<<"*

(1)修改姓名*"<

cout<<"*

(2)修改学号*"<

cout<<"*(3)修改电话号码*"<

cout<<"****************************"<

cout<<"**请选择**"<

charselect;

cin>>select;

switch(select)//多分支语句

{

case'1':

cout<<"***输入要修改的姓名:

***";//选择1开始修改姓名

charname1[30];

cin>>name1;

strcpy(st[x].name,name1);

cout<<"***修改成功!

***"<

returnback();

break;

case'2':

cout<<"***输入要修改的学号:

***";//选择2开始修改学号

charnum1[12];

cin>>num1;

strcpy(st[x].num,num1);

cout<<"***修改成功!

***"<

returnback();

break;

case'3':

cout<<"***输入要修改电话号码***";//选择3开始修改电话号码

chartel1[12];

cin>>tel1;

strcpy(st[x].tel,tel1);

cout<<"***修改成功!

***"<

returnback();

break;

}

}

}

return0;

}

voidinter:

:

find1(charnum[12])//按学号查找

{

booltemp=0;

for(inti=0;i<10;i++)

{

if(!

strcmp(st[i].num,num))//字符串比较如果学号相同

{

temp=1;

print(i);

}//调用print()成员函数输出基本信息

}

if(!

temp)

cout<<"***输入的学号查找不到!

***"<

}

voidinter:

:

list1()//按姓名排序

{

for(inti=0;i<9;i++)//冒泡排序法

{

for(intj=0;j<9-i;j++)

{

if(strcmp(st[j].name,st[j+1].name)>0)//比较两个字符串的大小

{

charnum[12];

charname[30];

chartel[12];

strcpy(num,st[j].num);//将学号信息交换

strcpy(st[j].num,st[j+1].num);

strcpy(st[j+1].num,num);

strcpy(name,st[j].name);//将姓名信息交换

strcpy(st[j].name,st[j+1].name);

strcpy(st[j+1].name,name);

strcpy(tel,st[j].tel);//将号码信息交换

strcpy(st[j].tel,st[j+1].tel);

strcpy(st[j+1].tel,tel);

}

}

}

for(intk=0;k<10;k++)

{

if(strcmp(st[k].name,"0"))

print(k);

}

}

voidinter:

:

write()//导入文件

{

inti;

ofstreamoutfile("txl.txt",ios:

:

out);

if(!

outfile)//打开文件

{

cout<<"opentxl.txterror!

"<

exit

(1);

}

for(i=0;i<10;i++)

{

outfile<

:

left)<

}

outfile.close();//关闭文件

cout<

cout<<"*资料保存成功!

*"<

}

voidinter:

:

read()//读取文件

{

ifstreaminfile("txl.txt",ios:

:

out);

if(!

infile)//打开文件

{

cout<<"opentxl.txterror!

"<

exit

(1);

}

for(inti=0;i<10;i++)

{

infile>>st[i].num;

infile>>st[i].name;

infile>>st[i].tel;

print(i);

}

}

voidinter:

:

format()//格式化

{

for(inti=0;i<35;i++)

{

strcpy(st[i].num,"0");

strcpy(st[i].name,"0");

strcpy(st[i].tel,"0");

}

}

voidinter:

:

print(inti)//输出联系人

{

cout<

}

intinter:

:

back()//返回

{

cout<<"***退出请按T,回到主菜单请按F(不分大小写):

***"<

charback;

cin>>back;

if(back=='F'||back=='f')

return1;

else

return0;

}

voiddisplay()//输出菜单

{

cout<<"**********************欢迎进入学生通讯录管理界面!

**********************"<

cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^***功能选择***^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<

cout<<"***********************************************************************"<

cout<<"*^^^^^^^^^^^^^^^^^^^^^^^^^

(1)编辑学生通讯信息^^^^^^^^^^^^^^^^^^^^^^^^^*"<

cout<<"*^^^^^^^^^^^^^^^^^^^^^^^^^

(2)查找学生通讯信息^^^^^^^^^^^^^^^^^^^^^^^^^*"<

cout<<"*^^^^^^^^^^^^^^^^^^^^^^^^^(3)排列学生通讯信息^^^^^^^^^^^^^^^^^^^^^^^^^*"<

cout<<"*^^^^^^^^^^^^^^^^^^^^^^^^^(4)录入学生通讯信息^^^^^^^^^^^^^^^^^^^^^^^^^*"<

cout<<"*^^^^^^^^^^^^^^^^^^^^^^^^^(5)读取学生通讯信息^^^^^^^^^^^^^^^^^^^^^^^^^*"<

cout<<"*^^^^^^^^^^^^^^^^^^^^^^^^^(6)格式化^^^^^^^^^^^^^^^^^^^^^^^^^*"<

cout<<"*^^^^^^^^^^^^^^^^^^^^^^^^^(7)退出^^^^^^^^^^^^^^^^^^^^^^^^^*"<

cout<<"***********************************************************************"<

cout<<"*****************************^^^请选择^^^******************************"<

}

voidmain()//主函数

{

intera;

a.format();

top:

display();

charselect1;

cin>>select1;

switch(select1)

{

case'1':

cout<<"

(1)编辑学生通讯信息"<

cout<<"***********************************"<

cout<<"*

(1)添加学生通讯信息*"<

cout<<"*

(2)删除学生通讯信息*"<

cout<<"*(3)修改学生通讯信息*"<

cout<<"***********************************"<

cout<<"***请选择***"<

charselect2;

cin>>select2;

switch(select2)

{

case'1':

cout<<"***请输入要添加的学生通讯信息***"<

charnum[12];

charname[30];

chartel[12];

cout<<"*输入学号:

";

cin>>num;

cout<<"*输入姓名:

";

cin>>name;

cout<<"*输入电话号码:

";

cin>>tel;

a.addition(num,name,tel);

cout<<"*添加成功!

*"<

cout<<"***退出请按T,回到主菜单请按F(不分大小写):

***"<

charback_addition;

cin>>back_addition;

if(back_addition=='F'||back_addition=='f')

{

system("cls");gototop;

}

else

gotobottom;

break;

case'2':

cout<<"***请输入要删除的学生姓名信息***"<

charname2[30];

cin>>name2;

a.del(name2);

cout<<"***退出请按T,回到主菜单请按F(不分大小写):

***"<

charback_del;

cin>>back_del;

if(back_del=='F'||back_del=='f')

{

system("cls");gototop;

}

else

{

cout<<"***输入的信息存在错误!

***"<

gotobottom;

}

break;

case'3':

cout<<"***请输入要修改的学生姓名信息***"<

charname3[30];

cin>>name3;

if(a.correct(name3))

{

system("cls");

gototop;

}

else

{

cout<<"***输入的信息存在错误!

***"<

system("cls");

gototop;

}

break;

}

break;

case'2':

cout<<"*查找*"<

cout<<"***********************************"<

cout<<"*

(1)根据学号查找*"<

cout<<"***********************************"<

charnum4[15];

cout<<"*输入学号:

";

cin>>num4;

a.find1(num4);

cout<<"***退出请按T,回到主菜单请按F(不分大小写):

***"<

charback_f2;

cin>>back_f2;

if(back_f2=='F'||back_f2=='f')

{

system("cls");

gototop;

}

else

gotobottom;

break;

case'3':

cout<<"*排序*"<

cout<<"***********************************"<

cout<<"*

(1)根据姓名排序*"<

cout<<"***********************************"<

a.list1();

cout<<"***退出请按T,回到主菜单请按F(不分大小写):

***"<

charback;

cin>>back;

if(back=='F'||back=='f')

{

system("cls");

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2