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

上传人:b****6 文档编号:7696808 上传时间:2023-01-25 格式:DOCX 页数:30 大小:214.97KB
下载 相关 举报
通讯录管理系统大数据结构课程设计.docx_第1页
第1页 / 共30页
通讯录管理系统大数据结构课程设计.docx_第2页
第2页 / 共30页
通讯录管理系统大数据结构课程设计.docx_第3页
第3页 / 共30页
通讯录管理系统大数据结构课程设计.docx_第4页
第4页 / 共30页
通讯录管理系统大数据结构课程设计.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

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

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

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

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

 

C语言课程设计:

 

通讯录管理系统

 

一、需求分析………………………………………………………2

二、概要设计………………………………………………………2

三、详细设计………………………………………………………3

四、上机操作………………………………………………………14

五、实习心得………………………………………………………19

六、源程序………………………………………………………20

 

一、需求分析

具有数据的插入、修改、删除、显示和查询功能的簿管理程序。

(1)数据包括:

人名、工作单位、和地址。

(2)可对记录中的某某和进展修改。

(3)可增加和删除记录。

(4)可显示所有的保存记录。

(5)可按人名或进展查询。

[提示]

建议采用结构体数组和文件系统实现。

结构体成员包括人名、工作单位、和地址。

根据题目的要求程序应该采用结构体数组和文件系统实现。

应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。

二、概要设计

根据上面的分析,可以将程序系统的设计分为如下几个模块:

插入、显示、删除、查询、修改、保存和退出。

三、详细设计

1、主函数;

主函数一般设计得比拟简洁,只提供输入,处理和输出局部的函数调用。

其中各功能模块用菜单方式选择。

流程图

N

Y

 

【程序】

intmain()//主函数

{

Manman[500],*pman=man;;

charcontrol;

intsize;

printf("\t\t**********************************************\n");//窗口初始化

printf("\t\t**********欢迎使用通讯录管理系统!

***********\n");

printf("\t\t*--------------------------------------------*\n");

printf("\t\t*请按回车键继续!

*\n");

printf("\t\t**********************************************\n");

scanf("%c",&control);

if(control)

{

size=Scan(pman);//判断文件是否存在

printf("\t\t\t请输入相应操作数操作\n");

for(;;)//菜单生成

{

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*0--退出系统*\n");

printf("\t\t**********************************************\n");

scanf("%s",&control);

switch(control)

{

case'1':

size=Insert(pman,size);break;//插入新的通讯录

case'2':

S_asname(pman,size);break;//按某某查找

case'3':

S_astel(pman,size);break;//按查找

case'4':

Delete(pman,size);break;//删除信息

case'5':

Display(pman,size);break;//显示所有信息

case'6':

Modify(pman,size);break;//修改信息

case'0':

printf("**************谢谢使用!

再见!

**************\n");//退出系统

return0;

default:

printf("**********输入数字有误,请重新输入**********\n");break;

}

}

}

return0;

}

2、插入模块

此模块为插入信息模块,插入后再调用保存函数来保存所插入的数据,支持多条信息的插入。

流程图

 

【程序】

intInsert(Man*pMan,intSize)//插入模块

{

inti,n;

printf("\t\t***********请输入要插入数据的个数.************\n");

printf("\t\t**********************************************\n");

scanf("%d",&n);

for(i=0;i

{printf("您将要录入第%d条记录(共有%d条)\n",i+1,n);

printf("请输入某某:

\n");

scanf("%s",&pMan[Size+i].Name);

printf("请输入工作单位:

\n");

scanf("%s",&pMan[Size+i].Depart);

printf("请输入:

\n");

scanf("%s",&pMan[Size+i].TEL);

printf("请输入Email地址:

\n");

scanf("%s",&pMan[Size+i].Email);

}

if(Save(pMan,Size+n))

{

printf("\t\t***********恭喜!

数据插入成功!

***********\n");

}

else

{

printf("\t\t***********操作失败,请稍后再试!

***********\n");

}

returnSize+n;

}

3、显示模块

此模块为显示所有记录,流程图如下:

【程序】

voidDisplay(Man*pMan,intSize)//显示所有记录

{

inti;

printf("\t人名\t工作单位\t\t地址\n");

printf("\t************************************************************\n");

for(i=0;i<=Size;i++,pMan++)//依次输出文件中的信息

{

printf("\t%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("\t-----------------------------------------------------------\n");

}

}

 

4、查找模块

本模块分为按某某查找和按查找两个子模块。

4.1按某某查找模块,流程图如下:

【程序】

voidS_asname(Man*pMan,intSize)//查找信息

{

inti=0;

charname[8];

printf("\t\t***********请输入要查询信息的某某:

***********\n");

printf("\t\t**********************************************\n");

scanf("%s",name);

while(iName,name))//查找

{

pMan++;

i++;

}

if(!

strcmp(pMan->Name,name))//找到后输出

{

printf("\t\t***************查到的信息为:

***************\n");

printf("\t*************************************************************\n");

printf("\t人名\t工作单位\t\t地址\n");

printf("\t*************************************************************\n");

printf("\t%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("\t*************************************************************\n");

}

else

{

printf("\t\t***********抱歉,没有找到相关数据************\n");

printf("\t\t**********************************************\n");

}

}

4.2按查找模块,此模块与按某某查找模块相似,流程图略。

【程序】

voidS_astel(Man*pMan,intSize)//按查找模块

{

inti=0;

chartel[12];

printf("\t\t***********请输入要查询信息的:

************\n");

printf("\t\t**********************************************\n");

scanf("%s",tel);

while(iTEL,tel))//查找信息

{

pMan++;

i++;

}

if(!

strcmp(pMan->TEL,tel))//输出找到的信息

{

printf("\t\t****************查到的信息为:

****************\n");

printf("\t*******************************************************\n");

printf("\t人名\t工作单位\t\t地址\n");

printf("\t*******************************************************\n");

printf("\t%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("\t*******************************************************\n");

}

else

{

printf("\t\t************抱歉,没有找到相关数据************\n");

printf("\t\t**********************************************\n");

}

}

5、删除模块

此模块先利用查找模块找到所要删除的信息,然后根据用户的选择来确定是否删除信息,此种调用到Save函数。

其流程图如下:

【程序】

voidDelete(Man*pMan,intSize)//删除信息

{

charname[8],control;

inti=0;

printf("\t\t***********请输入要删除信息的某某:

***********\n");

printf("\t\t**********************************************\n");

scanf("%s",name);

while(iName,name))//同查找,找到后跳出

{

pMan++;

i++;

}

if(!

strcmp(pMan->Name,name))//找到了,删除信息!

做出判断.

{

printf("您要删除的信息为:

\n");

printf("%s\t\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

printf("是否确认删除?

〔Y/N〕\n");

scanf("%s",&control);

switch(control)

{

case'y':

pMan->Name[0]='\0';

pMan->Depart[0]='\0';

pMan->TEL[0]='\0';

pMan->Email[0]='\0';

if(Save(pMan,Size))//将新信息写入文件

{

printf("\t\t**************恭喜!

信息删除成功!

**************\n");;

printf("\t\t**********************************************\n");break;

}

else

{

printf("\t\t************操作失败,请稍后再试!

*************\n");

printf("\t\t**********************************************\n");break;

}

case'n':

printf("信息未删除!

\n");break;

default:

printf("选择有误!

\n");break;

}

}

else

{

printf("\t\t*********抱歉,没有找到相关信息!

*********\n");

printf("\t\t******************************************\n");

}

}

6、修改模块

此模块先调用查找函数查找到所要修改的信息,然后用户根据需要来修改信息。

流程图如下:

【程序】

voidModify(Man*pMan,intSize)//修改模块

{

voidDisplay();

inti=0;

charname[8];

chardepart[20];

chartel[12];

charemail[30];

printf("\t\t************输入要修改信息的某某:

************\n");

printf("\t\t**********************************************\n");

scanf("%s",name);

while(iName,name))//遍历数组,查找数据,假如查到跳出循环

{

pMan++;

i++;

}

if(!

strcmp(pMan->Name,name))//如果找到,如此开始修改

{

printf("请输入修改后的某某:

\n");

scanf("%s",name);

strcpy(pMan->Name,name);

printf("请输入修改后的工作单位:

\n");

scanf("%s",depart);

strcpy(pMan->Depart,depart);

printf("请输入修改后的:

\n");

scanf("%s",tel);

strcpy(pMan->TEL,tel);

printf("请输入修改后的地址:

\n");

scanf("%s",email);

strcpy(pMan->Email,email);

if(Save(pMan,Size))//将修改信息写入文件,并判断是否写入成功

{

printf("\t\t**************恭喜!

信息修改成功!

**************\n");;

printf("\t\t**********************************************\n");

}

else

{

printf("\t\t*************操作失败,请稍后再试!

*************\n");

printf("\t\t**********************************************\n");

}

}

else

{

printf("\t\t************抱歉,没有找到相关信息!

************\n");

printf("\t\t**********************************************\n");

}

}

7、其他模块

【程序】

structMan//定义结构体

{

charName[8];//名字

charDepart[20];//工作单位

charTEL[12];//

charEmail[30];//

};

【程序】

intSave(Man*pMan,intSize)//把数据写入文件

{

inti;

FILE*out;

out=fopen("info.txt","w");

if(out==NULL)//判断文件打开成功与否

{

printf("\t\t************文件info.txt打开失败!

************\n");

printf("\t\t**********************************************\n");

return0;

}

for(i=0;i

{

fprintf(out,"%s\t%s\t%s\t%s\n",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

}

fclose(out);

return1;

}

【程序】

intScan(Man*pMan)//从文本中读取数据

{

printf("\t\t**********正在读取文件信息,请稍后!

***********\n");

inti;

FILE*in=fopen("info.txt","r");

if(in==NULL)//判断文件是否打开成功

{

printf("\t\t***********文件info.txt打开失败!

***********\n");

return0;

}

for(i=0;!

feof(in);i++,pMan++)//打开成功后一一读取,直到读完为止

fscanf(in,"%s%s%s%s",pMan->Name,pMan->Depart,pMan->TEL,pMan->Email);

fclose(in);

printf("\t\t*************文件数据读入成功!

*************\n");

return(i-1);

}

7.4getch()函数

【程序】

voidgetch()

{

charstop;

printf("\n确认?

(按任意键并回车返回!

)\n");

getchar();

scanf("%c",&stop);

return;

}

四、上机操作

namedepartphoneemail

 

2、要插入的信息

namedepartphoneemail

 

3、各模块功能的实现

〔1〕窗口的初始化

〔2〕主菜单

〔3〕显示所有信息

〔4〕插入信息

第一条

第二条

(6)按某某查找模块

(7)按查找模块

(8)删除没有的信息

删除已有信息

取消删除

确认删除

〔9〕退出系统

 

五、实习心得

在教师的带领下进展了C语言程序实践学习。

在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。

在这之前,我们已经对C语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在学习了解的X围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。

C语言是需要有一定根底、而且动手能力强的学科。

上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。

对于程序设计语言的学习目的,可以概括为学习语法规定、巩固贯穿系统知识、掌握程序设计方法、提高程序设计能力,这些都必须通过充分的实际上机操作才能完成。

课堂上许多关于C语言的语法规如此,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。

然而要使用C语言这个工具解决实际问题,又必须掌握它。

通过屡次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的根底上就会自然而然地掌握C语言的语法规定。

对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。

这次上机实习让我学到了很多有用的东西,巩固了之前的学习,让我学到了在教室和做题中学不到的一些知识,通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。

相信对以后初步掌握开发一个小型实用系统的根本方法,学会调试一个比拟长程序的根本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进展程序设计的能力。

我认为,这次实习对于我是非常有意义的,对我个人的影响比拟大,对我的动手能力有了很大的提高。

在体会到程序成功后的快乐后,发现自己也逐步喜欢上了这门语言,对以后的专业知识的学习也会很有帮助。

最后感谢在实习过程中帮助过我的教师和同学,正是你们的帮助才有了这次实习的成功!

 

六、源程序

#include

#include

structMan//定义结构体

{

charName[8];//名字

charDepart[20];//工作单位

charTEL[12];//

charEmail[30];//

};

 

voidgetch()

{

charstop;

printf("\n确认?

(按任意键并回车返回!

)\n");

getchar();

scanf("%c",&stop);

return;

}

 

intScan(Man*pMan)//从文本中读取数据

{

printf("\t\t**********正在读取文件信息,请稍后!

***********\n");

inti;

FILE*in=fopen("info.txt","r");

if(in==NULL)//判断文件是否打开成功

{

printf("\t\t***********文件info.txt打开失败!

***********\n");

return0;

}

for(

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

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1