面向对象程序课程设计通讯录管理系统.docx

上传人:b****7 文档编号:25594815 上传时间:2023-06-10 格式:DOCX 页数:23 大小:89.55KB
下载 相关 举报
面向对象程序课程设计通讯录管理系统.docx_第1页
第1页 / 共23页
面向对象程序课程设计通讯录管理系统.docx_第2页
第2页 / 共23页
面向对象程序课程设计通讯录管理系统.docx_第3页
第3页 / 共23页
面向对象程序课程设计通讯录管理系统.docx_第4页
第4页 / 共23页
面向对象程序课程设计通讯录管理系统.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

面向对象程序课程设计通讯录管理系统.docx

《面向对象程序课程设计通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《面向对象程序课程设计通讯录管理系统.docx(23页珍藏版)》请在冰豆网上搜索。

面向对象程序课程设计通讯录管理系统.docx

面向对象程序课程设计通讯录管理系统

1程序的目的和需求分析

1.1设计项目名称:

学生通讯录管理系统

1.2课程设计目的:

通过设计一个《学生通讯录管理系统》,进一步熟悉C++中类的概念、基本知识和技能,类的封装、继承的实现方式。

掌握面向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。

了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C++的理解与VisualC++环境的使用:

逐步熟悉程序设计的方法,并养成良好的编程习惯。

1.3任务与需求分析

本课题主要任务是编译学生通讯录管理系统,可以录入、显示、查找、插入、排序、删除和保存学生通讯信息。

(1)录入通讯信息——建立一个函数,可以添加学生通讯信息,添加完后返回主菜单;

(2)显示通讯信息——建立一个函数,可以显示全部学生的通讯信息,实现后可返回主菜单。

(3)查找通讯信息--建立二个函数,可以分别通过学号、姓名查询通讯信息,查询完后返回主菜单。

(4)插入通讯信息——建立一个函数,保留原通讯信息,添加新通讯信息,插入后可返回主菜单。

(5)排序通讯信息——建立一个函数,按姓名进行排序,排序后可返回主菜单。

(6)删除通讯信息——建立二个函数,可以通过学生姓名、学号删除学生通讯信息,实现后返回主菜单。

(7)退出通讯系统。

2程序的主要功能

2.1输入功能:

添加一个学生的基本通讯信息,包括姓名、电话号码、地址、邮编和e-mail。

2.2显示功能:

显示所有学生的信息包括姓名、电话号码、地址、邮编和e-mail。

2.3查找功能:

根据你键入的学生姓名或电话号码,显示其详细信息。

2.4排序功能:

能够对所有学生的信息按姓名进行排序。

2.5删除功能:

能够对一个学生的通讯信息进行删除,按姓名或电话号码进行删除。

2.6保存功能:

对输入的所有信息进行保存。

2.7退出系统

3程序运行平台

vC++6.0具体操作如下:

新建文件,编写代码,把程序分成若干模块。

分别编写各模块,编写好后编译,纠错,改正错误后,连接,然后运行程序。

4总体设计

主函数

保存信息

删除信息

插入信息

查找信息

显示信息

输入信息

5设计思路

1.通讯录的主要信息包括:

姓名,电话号码,地址,邮编和e-mail.

2.用结构体数组来存储信息,用intmenu_select()函数来实现主菜单信息,用intadduser()函数来实现信息的输入,用intlist()函数来显示打印信息,用intsearch()函数来按姓名查找信息,用intdisplay()函数来按电话号码查找信息,用intadd()函数来插入信息,用intlistbyname()函数来按姓名排序,用

intdele()函数来删除信息,用intsave()函数来保存信息,用intexit()函数来退出通讯录系统.

3.把整个系统分成几个函数,对单个函数进行编程,对函数进行调用来实现整个系统任务.

6详细设计与模块分析

6.1添加模块

系统将提示用户输入新添加的学生的信息,根据提示输入学生姓名、电话号码、地址和e-mail。

输入完后,系统将提示是否继续添加,按n停止按y继续。

 

 

6.2显示模块

显示模块将输出所有学生的通讯信息。

按系统的提示按相应按键,系统将调用已录入的学生通讯信息,并全部输出。

6.3查找模块

首先由用户输入要查找的学生的姓名或电话号码,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的学生资料。

具体流程图如下:

 

 

6.4删除模块

首先由用户输入要删除的单个学生姓名或学号或电话,然后调用删除函数,删除该名学生的资料。

具体流程图如下:

 

 

7程序代码

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#include"conio.h"

#include"stdlib.h"

#definenull0

structrecord

{

charname[20];

charphone[20];

charadress[40];

charpostcode[10];

chare_mail[30];

}student[500];

structLinkList

{

structrecordUS;

structLinkList*next;

}a;

structLinkList*head=null;

intnum=0;

FILE*fp;

intmenu_select();

intadduser();

intlist();

intsearch();

intdisplay();

intadd();

intlistbyname();

intdele();

intsave();

intexit();

 

voidmain()

{

system("cls");

for(;;)

{

switch(menu_select())

{

case0:

adduser();break;

case1:

list();break;

case2:

search();break;

case3:

display();break;

case4:

add();break;

case5:

listbyname();break;

case6:

dele();break;

case7:

save();break;

case8:

exit(0);

}

}

}

menu_select()

{

chars[80];

inta;

printf("*_*pressanykeyentermenu!

*_*\n");

getch();

system("cls");

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

printf("\t\t0.输入记录\n");

printf("\t\t1.显示记录\n");

printf("\t\t2.按姓名查找\n");

printf("\t\t3.按电话号码查找\n");

printf("\t\t4.插入记录\n");

printf("\t\t5.按姓名排序\n");

printf("\t\t6.删除记录\n");

printf("\t\t7.记录保存文件\n");

printf("\t\t8.Quit\n");

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

do{

printf("\nEnteryouchoice(0~11):

");

scanf("%s",s);

a=atoi(s);

}

while(a<0||a>11);

returna;

}

 

adduser()

{

printf("\n\t\t****************请输入用户信息****************\n");

printf("\n\t\t输入姓名:

");

scanf("%s",&student[num].name);

printf("\n\t\t输入电话号码:

");

scanf("%s",&student[num].phone);

printf("\n\t\t输入地址:

");

scanf("%s",&student[num].adress);

printf("\n\t\t输入邮编:

");

scanf("%s",&student[num].postcode);

printf("\n\t\t输入e-mail:

");

scanf("%s",&student[num].e_mail);

num++;

printf("\n\t\t是否继续添加?

(Y/N):

");

if(getch()=='y')

adduser();

return(0);

}

list()

{

inti;

system("cls");

if(num!

=0)

{

printf("\n\t\t***************以下为通讯录所有信息************");

for(i=0;i

{

printf("\n\t\t姓名:

%s",student[i].name);

printf("\n\t\t电话:

%s",student[i].phone);

printf("\n\t\t地址:

%s",student[i].adress);

printf("\n\t\t邮编:

%s",student[i].postcode);

printf("\n\t\te-mail:

%s",student[i].e_mail);

printf("\t\t");

if(i+1

{

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

system("pause");

}

}

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

}

else

printf("\n\t\t通讯录中无任何纪录");

printf("\n\t\t按任意键返回主菜单:

");

getch();

return(0);

}

search()

{

intmark=0;

inti;

inta=0;

printf("\n\t\t*****************按姓名查找*******************");

charname[20];

printf("\n\t\t请输入姓名:

");

scanf("%s",name);

for(i=a;i

{

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

{

printf("\n\t\t*************以下是您查找的用户信息***********");

printf("\n\t\t姓名:

%s",student[i].name);

printf("\n\t\t电话:

%s",student[i].phone);

printf("\n\t\t地址:

%s",student[i].adress);

printf("\n\t\te-mail:

%s",student[i].e_mail);

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

mark++;

if((i+1)

{

printf("\n\t\t是否继续查找相同名字的用户信息:

(y/n)");

if(getch()=='y')

{

a=i;

continue;

}

else

return(0);

}

else

{

printf("\n\t\t按任意键返回主菜单");

getch();

return(0);

}

}

}

if(mark!

=0)

{

printf("\n\t\t没有相同姓名的用户纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return(0);

}

else

{

printf("\n\t\t没有相同姓名的用户纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return(0);

}

}

display()

{

intmark=0;

inti;

inta=0;

printf("\n\t\t******************按电话查找******************");

charphone[10];

printf("\n\t\t请输入电话号码:

");

scanf("%s",phone);

for(i=0;i

{

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

{

printf("\n\t\t**************以下是您查找的用户信息**********");

printf("\n\t\t姓名:

%s",student[i].name);

printf("\n\t\t电话:

%s",student[i].phone);

printf("\n\t\t地址:

%s",student[i].adress);

printf("\n\t\te-mail:

%s",student[i].e_mail);

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

printf("\n\t\t按任意键返回主菜单:

");

mark++;

getch();

return(0);

}

}

if(mark==0)

{

printf("\n\t\t没有改用户的信息");

printf("\n\t\t按任意键返回主菜单");

getch();

return(0);

}

return(0);

}

add()

{

inti;

if((fp=fopen("student.bin","wb"))==NULL)

{

printf("\n\t\t文件打开失败");

}

for(i=0;i

{

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

=1)

{

printf("\n\t\t写入文件错误!

\n");

}

printf("\n\t\t****************请输入用户信息****************\n");

printf("\n\t\t输入姓名:

");

scanf("%s",&student[num].name);

printf("\n\t\t输入电话号码:

");

scanf("%s",&student[num].phone);

printf("\n\t\t输入地址:

");

scanf("%s",&student[num].adress);

printf("\n\t\t输入邮编:

");

scanf("%s",&student[num].postcode);

printf("\n\t\t输入e-mail:

");

scanf("%s",&student[num].e_mail);

num++;

printf("\n\t\t是否继续添加?

(Y/N):

");

if(getch()=='y')

adduser();

return(0);

}

fclose(fp);

printf("\n\t\t通讯录文件已保存");

printf("\n\t\t按任意键退出程序\n\t\t");

exit(0);

return(0);

}

voiddeletebyphone()

{

inti,j;

intdeletemark=0;

charphone[20];

printf("\n\t\t请输入要删除用户电话号码:

");

scanf("%s",phone);

if(num==0)

{

printf("\n\t\t对不起,文件中无任何纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

for(i=0;i

{

if(strcmp(student[i].phone,phone)==NULL)

{

printf("\n\t\t以下是您要删除的用户纪录:

");

printf("\n\t\t姓名:

%s",student[i].name);

printf("\n\t\t电话:

%s",student[i].phone);

printf("\n\t\t地址:

%s",student[i].adress);

printf("\n\t\te-mail:

%s",student[i].e_mail);

printf("\n\t\t是否删除?

(y/n)");

if(getch()=='y')

{

for(j=i;j

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

num--;

deletemark++;

printf("\n\t\t删除成功");

printf("\n\t\t是否继续删除?

(y/n)");

if(getch()=='y')

deletebyphone();

return;

}

else

return;

}

continue;

}

if(deletemark==0)

{

printf("\n\t\t没有该用户的纪录");

printf("\n\t\t是否继续删除?

(y/n)");

if(getch()=='y')

deletebyphone();

return;

}

}

voiddeletebyname()

{

inta=0;

intfindmark=0;

intj;

intdeletemark=0;

inti;

charname[20];

printf("\n\t\t请输入要删除用户姓名:

");

scanf("%s",name);

for(i=a;i

{

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

{

printf("\n\t\t以下是您要删除的用户纪录:

");

findmark++;

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

printf("\n\t\t姓名:

%s",student[i].name);

printf("\n\t\t电话:

%s",student[i].phone);

printf("\n\t\t地址:

%s",student[i].adress);

printf("\n\t\te-mail:

%s",student[i].e_mail);

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

printf("\n\t\t是否删除?

(y/n)");

if(getch()=='y')

{

for(j=i;j

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

num--;

deletemark++;

printf("\n\t\t删除成功");

if((i+1)

{

printf("\n\t\t是否继续删除相同姓名的用户信息?

(y/n)");

if(getch()=='y')

{

a=i;

continue;

}

}

printf("\n\t\t是否继续删除?

(y/n)");

if(getch()=='y')

deletebyname();

return;

}

if((i+1)

{

printf("\n\t\t是否继续删除相同姓名的用户信息?

(y/n)");

if(getch()=='y')

{

a=i;

continue;

}

}

}

else

continue;

}

if((deletemark==0)&&(findmark==0))

{

printf("\n\t\t没有该用户的纪录");

printf("\n\t\t是否继续删除?

(y/n)");

if(getch()=='y')

deletebyphone();

return;

return;

}

elseif(findmark!

=0)

{

printf("\n\t\t没有重名信息");

printf("\n\t\t没有该用户的纪录");

printf("\n\t\t是否继续删除?

(y/n)");

if(getch()=='y')

deletebyphone();

return;

return;

}

}

dele()

{

charchoic;

printf("\n\t\t1-按电话号码删除2-按姓名删除");

printf("\n\t\t请选择:

");

choic=getch();

switch(choic)

{

case'1':

deletebyphone();break;

case'2':

deletebyname();break;

}

return(0);

}

listbyname()

{

inti,j;

structrecordtmp;

for(i=1;i

{

if(strcmp(student[i].name,student[i-1].name)<0)

{

tmp=student[i];

j=i-1;

do

{

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

j--;

}while((strcmp(tmp.name,student[j].name)<0&&j>=0));

student[j+1]=tmp;

}

}

printf("\n\t\t排序成功,是否显示?

(y/n)");

if(getch()=='y')

list();

return(0);

}

save()

{

intj;

FILE*fp;

fp=fopen("student.txt","w");

if(fp==NULL)

printf("can'top

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

当前位置:首页 > PPT模板 > 简洁抽象

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

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