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

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

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

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

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

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

一、设计题目(问题)描述和要求

某一中学,现在需要建立学生通讯录管理系统,以管理学生信息。

要求:

(1)可以录入新的通讯信息(包括姓名,通讯地址,邮编,联系电话等)

(2)可以按照姓名进行查询相关信息

(3)可以修改相关信息

二、系统分析与概要设计

根据问题描述和要求,系统要求能够按姓名查找、增加、删除和保存各学生的信息。

确定程序应该具备如下功能:

“查询学生信息”、“增加学生信息”、“修改学生信息”“删除学生信息”、“数据存盘”基本模块。

系统可以将学生信息数据保存到磁盘文件student.txt,从而可以通过磁盘文件读出学生数据信息,为了便于统计在生成学生信息时同时生成学生编号,这样每输入一个学生信息编号顺序加1,这样也方便了管理员查询学生信息。

三、详细设计和编码

1.数据类型定义

根据系统要求,可以将姓名和邮编和联系电话通讯地址定义为字符型。

2.各模块算法描述

查询学生信息:

Que_name()输入要查询的学生姓名,比较名字与保存的信息是否相同,若相同则查找到,否则,没查找到。

增加学生信息:

Add()输入要添加的学生信息并保存。

删除学生信息:

Del()输入要删除的学生姓名,若与数据相同则删除,否则输出查找不到该信息。

修改学生信息:

Mod()输入要修改的学生姓名,输入要修改的信息,并确认。

数据存盘:

Sav()创建文件,将信息写入文件。

3.程序关键算法流程图

(1)主函数流程

(2)某操作算法流程

Student:

:

Add()

(3)Student:

:

Del()

4)Student:

:

Mod()

(5)Student:

:

Que_name()

(6)Student:

:

Sav()

(7)Student:

:

Load()

四、调试分析

(内容包括:

调试过程中遇到的问题并且是如何解决的以及对设计实现的回顾讨论和分析;算法的时空分析和改进设想;经验和体会等)

五、测试结果

六、小结

通过本次设计,加强了对于编写管理系统程序的运用,能够更好的运用循环。

对于以后的编程运用起了很大的帮助。

七、附录

(附上带详细注释的源程序)

#include

#include

#include

usingnamespacestd;

structstudent

{

charnum[20];

charname[20];

charaddress[50];

charpostcode[20];

chartelphone[20];

}student[2000];//定义学生类结构体

voidMenu();//声明菜单函数

voidInput();//声明录入函数

voidSav(int);//声明保存函数

intLoad();//声明信息导入函数

voidQue_name();//声明按姓名查找函数

voidDel();//声明删除函数

voidMod();//声明修改函数

voidScan();//声明浏览函信息数

voidAdd();//声明添加函数

voidMenu()//菜单函数

{

cout<<"\t*********欢迎来到平顶山学院学生通讯录信息管理系统!

*********"<

cout<<"\t**请按要求正确录入学生的通讯录信息**"<

cout<<"\t**1.录入相关学生通讯录信息**"<

cout<<"\t**2.保存相关学生通讯录信息**"<

cout<<"\t**3.按姓名查找相关学生通讯录信息**"<

cout<<"\t**4.修改相关学生通讯录信息**"<

cout<<"\t**5.删除相关学生通讯录信息**"<

cout<<"\t**6.添加相关学生通讯录信息**"<

cout<<"\t**7.退出该学生通讯录信息系统**"<

cout<<"\t*****************欢迎欢迎您的光临**************************"<

}

voidmain()//主函数的实现

{

intn;

loop:

Menu();//调用菜单函数

cout<<"请输入您所要进行的操作过程的序号(1-7):

";

cin>>n;

system("cls");

switch(n)

{

case1:

cout<<"请输入相关学生通讯信息:

"<

case2:

cout<<"请保存相关学生通讯信息:

"<

case3:

cout<<"按姓名查找相关学生通讯信息:

"<

case4:

cout<<"修改相关学生通讯信息:

"<

case5:

cout<<"删除相关学生通讯信息:

"<

case6:

cout<<"添加相关学生通讯信息:

"<

default:

break;

}

cout<<"\t\t\t*********欢迎您的使用!

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

}

voidInput()//学生通讯信息录入函数

{

inti,m;

cout<<"请输入您所要输入的学生通讯信息的个数(1-2000):

";

cin>>m;

for(i=0;i

{

cout<<"请输入学生的学号:

"<

cin>>student[i].num;

cout<<"请输入通讯录中学生的姓名:

"<

cin>>student[i].name;

cout<<"请输入通讯录中学生的电话号码:

"<

cin>>student[i].telphone;

cout<<"请输入通讯录学生的地址(格式如***省**市**县**乡):

"<

cin>>student[i].address;

cout<<"请输入通讯录中学生的邮编:

"<

cin>>student[i].postcode;

cout<<"该学生的通讯信息已经输入完毕,请继续输入下一个学生通讯信息!

"<

}

}

voidSav(intm)//如何写入信息?

保存通讯录文件函数

{

inti;

FILE*fp;

if((fp=fopen("E:

\\student.dat","wb"))==NULL)//创建文件并判断是否能打开

{

cout<<"该文件打开失败。

"<

exit(0);

}

for(i=0;i

if(fwrite(&student[i],sizeof(structstudent),1,fp)!

=1)//申请空间,写入学生信息,为何有个1?

?

?

{

cout<<"信息写入失败!

"<

fclose(fp);

}

}

voidQue_name()//按姓名查找函数

{

charname1[10];

inti,m;

m=Load();

cout<<"请输入您要查询学生通讯信息的名字"<

cin>>name1;

for(i=0;i

if(strcmp(name1,student[i].name)==0)

{

cout<<"查找到该学生的通讯信息如下:

"<

Scan();

break;

}

else

{

cout<<"抱歉,查无此人!

"<

return;

}

}

voidScan()

{

inti,m;

m=Load();//不明白这个,把函数赋给m吗?

cout<<"输出学生通讯信息如下:

"<

for(i=0;i

cout<<"学号:

"<

"

<

"<

<<""<<"通讯地址:

"<

"

<

}

intLoad()//导入函数

{

FILE*fp;

inti=0;

if((fp=fopen("E:

\\student.dat","rb"))==NULL)

{

cout<<"文件打开失败!

"<

exit(0);

}

else

{

do

{

fread(&student[i],sizeof(structstudent),1,fp);

i++;

}

while(feof(fp)==0);

}

return(i);

fclose(fp);

}

voidDel()//删除函数

{

intm;

inti,j,n,t,f;

charname1[10];

m=Load();

cout<<"查看学生的通讯信息如下:

"<

Scan();//调用浏览函数

cout<<"请输入您想删除的通讯信息的名字:

"<

cin>>name1;

for(f=1,i=0;f&&i

{

if(strcmp(student[i].name,name1)==0)

{

cout<<"查找到该学生的通讯信息如下:

"<

Scan();

cout<<"如果要删除该生信息,请按1,否则按0"<

cin>>n;

if(n==1)//如果删除,则其他的信息都向前移一行

{

for(j=i;j

{

student[j]=student[j+1];

}

f=0;

}

}

}

if(!

f)m=m-1;//?

?

?

elsecout<<"抱歉!

未找到该生信息。

"<

cout<<"输出其他学生通讯信息如下:

"<

Scan();//调用浏览函数

Sav(m);//调用保存函数

cout<<"如果您想继续删除通讯信息,请按1,否则按0。

"<

cin>>t;

switch(t)

{

case1:

Del();break;

case0:

break;

default:

break;

};

}

voidMod()//修改函数

{

charnum[20],tel[20],post[20];

charname[20];

charaddress[50];

intb,c,i,n,t,f;

intm=Load();//导入文件内的信息

cout<<"该学生先前的通讯信息为:

"<

Scan();//调用浏览函数

cout<<"请输入您想要修改通讯信息的名字:

"<

cin>>name;

for(f=1,i=0;f&&i

{

if(strcmp(student[i].name,name)==0)

{

cout<<"查找到该学生的通讯信息如下:

"<

Scan();

cout<<"确实要修改该生通讯信息请按1,否则按0"<

cin>>n;

if(n==1)

{

cout<<"请输入您要修改的项目(1-学号2-姓名3-联系电话4-通讯地址5-邮编):

"<

cin>>c;

if(c>6||c<1)

cout<<"抱歉,您的输入有误,请从新输入。

"<

}

f=0;

}

}

if(f==1)cout<<"抱歉,未找到此人!

"<

do

{

switch(c)//因为当找到第i个学生时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人

{

case1:

cout<<"将该生的学号改为:

";

cin>>num;

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

break;

case2:

cout<<"将该生的姓名改为:

";

cin>>name;

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

break;

case3:

cout<<"将该生的联系电话改为:

";

cin>>tel;

strcpy(student[i].telphone,tel);

break;

case4:

cout<<"将该生的通讯地址改为:

";

cin>>address;

strcpy(student[i].address,address);

break;

case5:

cout<<"将该生的邮编改为:

";

cin>>post;

strcpy(student[i].postcode,post);

break;

}

cout<

cout<<"确认您所修改的信息请按1,从新修改请按0:

"<

cin>>b;

}while(b==0);

Sav(m);

cout<<"修改后所有信息如下;"<

Scan();

cout<<"如果您想继续修改请按1,否则按0:

"<

cin>>t;

switch(t)

{

case1:

Mod();break;

case0:

break;

default:

break;

}

}

voidAdd()//添加函数

{

intn=Load();

inti,m;

cout<<"请输入您要添加的学生通讯信息的个数:

"<

cin>>m;

for(i=n;i

{

cout<<"请输入该生的学号:

";

cin>>student[i].num;

cout<

cout<<"请输入该生的姓名:

";

cin>>student[i].name;

cout<

cout<<"请输入该生的联系电话:

";

cin>>student[i].telphone;

cout<

cout<<"请输入该生的通讯地址:

";

cin>>student[i].address;

cout<<"请输入该生的邮编:

";

cin>>student[i].postcode;

cout<

system("cls");

cout<<"该生的通讯信息添加完毕,请输入您要添加的下一位学生的通讯信息!

"<

}

Sav(m+n);

cout<<"学生通讯信息添加完毕,查看信息如下:

"<

Scan();

}

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

当前位置:首页 > 人文社科 > 法律资料

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

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