c语言程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
-通讯录
唐山学院课程设计
一 引言
在C语言中,数组这样的构造数据类型可以将多个数据用一个名字来命名,为储存和处理带来很大的方便。但是现实生活中还存在着大量需要作为一个整体来处理的数据,而这些数据的类型又不尽相同。例如要处理学籍数据,需要处理学生的学号(num)、姓名(name)、性别(sex)、年龄(age)、成绩(score)、和地址(addr)等数据。这样一组相互关联的数据如果用简单的变量储存,则难以反映出它们的内在联系,而且是程序冗长晦涩;而数组则无法容纳不同变量的元素。结构体(structure,也称“结构” )就是C语言所提供的处理一组不同类型数据的类型。但是这种类型需要用户自行定制,因为处理学生的结构体形式与处理教师的结构体形式不同,处理人的结构体形式与处理企业、处理产品、处理公文等的结构体形式均不同,等等。因此,在结构体的大框架内,
[1]还要根据具体需要来定制自己的结构体类型。
一个结构体只能存放一个对象的信息,但经常都是对一组对象来处理若干数据,这样就会用到结构体数组,结构体数组可以将若干待处理对象编成数组形式,然后再把每个对象的信息又存放到结构体中,这样就实现了对若干不同的对象来
[2]处理若干不同类型的数据。因此结构体把数组在生活当中有广泛的应用。
随着全球信息化水平逐步提高,通讯系统逐步成熟,通信成为我们生活中不可缺少的一部分。通信系统的发达,通信方式的增多,
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
信息量的增大,对于通信信息的处理将越来越复杂,仅仅靠人工操作已经满足不了人们的需求,使用功能全、信息量大的管理系统是一个不错的选择。本次课设……本次课程设计主要运用C语言中的结构体、数组、链
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
等数据结构,设计一个简单的管理系统应用程序。本次课设主要考察了对函数的编写,对指针和数组的相关操作、结构体的定义和使用、算法的
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
及设计、
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图的绘制以及对课程设计说明书的规范书写等项目,对于熟悉编程环境、掌握编程流程、了解编程规范都有积极作用。通过这次课设我们可以了解到数据结构算法的基本思想、锻炼编程思维,养成良好的编程习惯以及严谨的编程态度,为以后的设计打下良好的基础。
本程序基于结构体数组设计出了通讯录管理系统的基本功能,能对成员的学号、姓名、年龄、电话等进行添加、显示、查找、删除、修改等操作,并且能通过姓名、学号、电话来查找、删除、修改通讯录,符合一般管理系统的功能。
1
唐山学院课程设计
二 总体设计
首先,将通讯录的学号、姓名、年龄、电话、邮箱、QQ号进行结构体的声明,再定义结构数组以便进行统一处理。之后设计菜单函数,显示操作项目,并对添加、显示、查找、修改、删除、排序等功能模块进行调用,以实现管理系统的整体功能。是用户的工作平台,也是用户与系统对话的平台。像删除、查找、修改等模块都有子菜单,这样使条理更清晰,像删除、修改等操作都会有询问信
加入通讯录的容量,息,只有用户确认才会进行操作,使程序更加地人性化,并且
使用户可以了解通讯录的存储,总体设计框图如图1所示。
主菜单
1 2 3 4 5 6 显查添删修排
示找加除改序
通通通通通通
讯讯讯讯讯讯
录 录 录 录 录 录
图1 程序的总体框图
2
唐山学院课程设计
三 详细设计
1 流程介绍
本程序一共有6个流程,即显示流程、查找流程、添加流程、删除流程、修
改流程和排序流程,分别实现上述六种功能,下面介绍一下这六个流程。 (1)显示流程
通过此流程可以对录入的信息进行输出,只有当有录入信息时才会输出,否
则显示“没有此学生”。流程图如图2所示。
开始
N Y是否有学生信息, Y
显示通讯录信息 “没有此学生”
结束
图2 显示功能的流程图
3
唐山学院课程设计
(2)查找流程
通过此流程可以实现对录入信息的查找,此程序支持三种查找方式,按学号、姓名、电话查找,然后判断是否有此人,有则输出该用户信息,并且显示通讯录使用容量和剩余容量,否则输出“没有此人信息”并进行重新选择。流程图如图3所示。
开始
输入查找人学号 输入查找人姓名 输入查找人电话
9姓名 9姓名 9姓名
N Y 判断是否有此人, Y
输出此人信息 “没有此人信息”
YN 是否继续查找, Y
结束
图3 查找功能的流程图
4
唐山学院课程设计
(3)添加流程
通过此流程可以实现对信息的添加,首先先对容量进行测试如果没有容量则提示信息已满,若有容量,则显示通讯录使用量和总容量,再对姓名、学号等逐项输入,输入完毕后系统会提示是否继续添加,若是,则继续添加,若否则返回菜单函数。流程图如图4所示。
开始
YN 判断是否有空位, Y
显示通讯录容量 信息已满
输入通讯录
YN 是否继续添加, Y
结束
图4 添加功能的流程图
5
唐山学院课程设计
(4)删除流程
通过此流程可以对录入的信息进行删除。此程序提供学号、姓名、电话来查找删除人若没有此人,则显示没有此人信息,并返回删除菜单。若有此人,系统会询问用户是否删除信息,是则删除,否则不删除,并返回删除菜单。流程图如图5所示。
开始
输入删除人学号 输入删除人姓名 输入删除人电话
9姓名 9姓名
N Y 判断是否有此人, Y
没有此人信息 Y 是否删除, Y
N
删除此人信息
Y N 是否继续删除, Y
结束
图5 删除功能的流程图
6
唐山学院课程设计
(5)修改流程
通过此流程可以实现对录入信息的修改。此程序提供学号、姓名、电话三种方式查找待修改人,进行判断是否有此人,若没有,则显示没有此人信息,并返回修改菜单,若有则会逐项进行修改。系统会在修改完成后询问用户是否进行修改,选否则不修改,并且返回修改菜单。流程图如图6所示。
开始
知道姓名, 知道学号, 知道电话, 9姓名 9姓名 9姓名
YN 判断是否有此人, Y 没有此人信息 Y 是否修改, Y
N
修改此人信息
YN 是否继续修改, Y
结束 图6 修改功能的流程图
7
唐山学院课程设计
(6)排序流程
通过此函数可以实现对录入信息进行排序。的功能此程序提供按学号和姓名
的排序,此函数的算法即冒泡法排序通过对排序量进行交换,从而达到排序的目
的。流程图如图7所示。
开始
以学号排序 以姓名排序
定义js(通讯录条数)
定义i,j=0(循环变量)
N j
#include
#include
#include
#define N 30
#define M 80
/****************************定义结构体
******************************/ typedef struct
{char num[M];
char name[M];
int age;
char phonum[M];
char address[M];
char qq[M];
}STUDENT;
STUDENT std[N];
/*****************************声明变量
******************************/ void menu(void);
void xianshi(STUDENT s[N]); void chazhao(STUDENT s[N]); void tianjia(STUDENT s[N]); void shanchu(STUDENT s[N]); void xiugai(STUDENT s[N]); void paixu();
void iprint(int n);
void hprint();
int find(char s[M],int i,char c[M],int sign);
void choice(int sign); void print(int n);
void replace(int n);
12
唐山学院课程设计
int panduan(void);
void input(int i);
void ginput(int i);
void turn( int k);
void jiaohuan(char s[M],char c[M]); /****************************主函数
********************************/ main()
{
menu();
return 0;
}
/******************************主菜单
******************************/ void menu(void)
{
int a;
system("cls");
printf("*****************************欢迎进入通讯录管理系统
*****************************\n\n"); //输出主菜单
printf("\t\t\t\t1.显示通讯录\n");
printf("\t\t\t\t2.查找通讯录\n");
printf("\t\t\t\t3.添加通讯录\n");
printf("\t\t\t\t4.删除通讯录\n");
printf("\t\t\t\t5.修改通讯录\n");
printf("\t\t\t\t6.排序通讯录\n");
printf("\t\t\t\t0.退出\n");
printf("请选择:(0~6)");
scanf("%d",&a);
while(a>6) //判断输入是否正确
{
printf("输入错误,请重新输入:(0~6)");
scanf("%d",&a);
}
13
唐山学院课程设计
switch(a)
{
case 0: exit(1);break;
case 1: xianshi(std);break;
case 2: chazhao(std);break;
case 3: tianjia(std);break;
case 4: shanchu(std);break;
case 5: xiugai(std);break;
case 6: paixu();break;
}
}
/******************************显示通讯录
******************************/
void xianshi(STUDENT s[N]) {
int i;
system("cls");
printf("******************************显示通讯录
******************************\n\n");
hprint();
for(i=0;std[i].age!=0;i++)
{
iprint(i);
}
if(i==0)
printf("\n\n\t\t\t无学生信息\n\n");
else
printf("\n已添加%d条\n还剩%d条",i,N-i);
system("pause");
system("cls");
menu();
}
14
唐山学院课程设计
/**********************查找通讯录**********************/
void chazhao(STUDENT s[N]) {
int sign=1,flag;
system("cls");
printf("******************************查找通讯录
******************************\n");
printf("\t\t\t1.按学号查找\n");
printf("\t\t\t2.按姓名查找\n");
printf("\t\t\t3.按电话查找\n");
printf("\t\t\t0.返回\n");
printf("请选择:(0~3)");
choice(sign);
printf("\n是否继续查找?(Y/N)"); //继续添加
flag=panduan();
if(flag==1)
chazhao(std);
else
{
system("cls");
menu();
}
}
/***********************添加通讯录********************/
void tianjia(STUDENT s[N]) {
int i,flag;
system("cls");
printf("******************************添加通讯录
******************************\n\n");
for(i=0;;i++)
{
15
唐山学院课程设计
if(i==N) //判断是否有空位
{
printf("通讯录已满~");
break;
}
if((s[i].age!=0)) //寻找空位
continue;
printf("\n容量:%d/%d\n\n",i+1,N);
input(i);
printf("\n是否继续添加?(Y/N)"); //继续添加
flag=panduan();
if(flag==1)
tianjia(std);
else
{
system("cls");
menu();
}
}
}
/****************************删除通讯录
******************************/
void shanchu(STUDENT s[N]) {
int flag,sign=2;
system("cls");
printf("******************************删除通讯录
******************************\n\n");
for(;;)
{
printf("\t\t1.按学号删除\n");
printf("\t\t2.按姓名删除\n");
16
唐山学院课程设计
printf("\t\t0.返回\n");
printf("请选择(0~2)");
choice(sign);
}
printf("是否继续删除,(Y/N)"); //继续删除,
flag=panduan();
if(flag==1) //判断
shanchu(std);
else
{
system("cls");
menu();
}
}
/****************************修改通讯录
******************************/
void xiugai(STUDENT s[N]) {
int flag,js=0,sign=3;
system("cls");
printf("****************************修改通讯录
******************************\n\n");
printf("\t\t\t1.知道学号,\n");
printf("\t\t\t2.知道姓名,\n");
printf("\t\t\t3.知道电话,\n");
printf("\t\t\t0.返回\n");
printf("请选择(0~3)");
choice(sign);
printf("是否继续修改,(Y/N)");
flag=panduan();
if(flag==1)
xiugai(std);
else
17
唐山学院课程设计
menu();
}
/***************************排序通讯录
*****************************/
void paixu()
{
int i,j;
printf("***************************排序通讯录
*****************************\n\n");
printf("\t\t1.按学号排序\n");
printf("\t\t2.按姓名排序\n");
printf("\t\t0.返回\n");
printf("请选择(0~2)");
do
{
scanf("%d",&j);
if(j==0)
menu();
else if(j==1||j==2)
{
turn(j);
break;
}
else
printf("输入错误,请重新输入(0~2)");
}while(j>2);
system("cls");
hprint();
for(i=0;std[i].age!=0;i++)
iprint(i);
system("pause");
menu();
18
唐山学院课程设计
}
/****************综合功能函数**************/ void choice(int sign) {
int i,j,flag,js=0;
char c[M];
do{
scanf("%d",&j);
printf("\n");
if(j==0)
menu();
else if(j==1)
{
if(sign==1)
printf("请输入查找人的学号:");
if(sign==2)
printf("请输入删除人的学号:");
if(sign==3)
printf("请输入修改人的学号:");
scanf("%s",c);
hprint();
for(i=0;i2);
}
21
唐山学院课程设计
/**************冒泡法排序函数****************/
void turn( int k)
{
int i,j,js,t,flag;
for(js=0;std[js].age!=0;js++);
for(j=0;j<=js-2;j++)
{
for(i=0;i0)
{
jiaohuan(std[i].num,std[i+1].num);
jiaohuan(std[i].name,std[i+1].name);
jiaohuan(std[i].phonum,std[i+1].phonum);
jiaohuan(std[i].address,std[i+1].address);
jiaohuan(std[i].qq,std[i+1].qq);
t=std[i].age;
std[i].age=std[i+1].age;
std[i+1].age=t;
}
}
}
}
/*****输出表头函数*****/
void hprint()
{
printf(" 学 号 姓 名 年龄 手机号码 QQ号码
22
唐山学院课程设计
电子邮箱(或地址) \n");
printf("________________________________________________________
_______________________\n");
}
/*****输出信息函数*****/
void iprint(int n)
{
printf("%10s",std[n].num);
printf("%10s",std[n].name);
printf("%4d",std[n].age);
printf("%13s ",std[n].phonum);
printf("%12s",std[n].qq);
printf(" %s",std[n].address);
printf("\n");
}
/******输入函数*******/
void input(int i)
{
printf("请输入学号:"); //输入信息
scanf("%s",std[i].num);
printf("请输入姓名:");
scanf("%s",std[i].name);
printf("请输入年龄:");
scanf("%d",&std[i].age);
printf("请输入手机号:");
scanf("%s",std[i].phonum);
printf("请输入QQ号:");
scanf("%s",std[i].qq);
printf("请输入电子邮箱(或地址):");
scanf("%s",std[i].address); }
23
唐山学院课程设计
/******缓冲输入函数(修改)*****/
void ginput(int i)
{
int gage,flag;
char gnum[M],gname[M],gphonum[M],gaddress[M],gqq[M]; //定义
缓冲数组
printf("请输入学号:"); //缓冲赋
值
scanf("%s",gnum);
printf("请输入姓名:");
scanf("%s",gname);
printf("请输入年龄:");
scanf("%d",&gage);
printf("请输入手机号:");
scanf("%s",gphonum);
printf("请输入QQ号:");
scanf("%s",gqq);
printf("请输入邮箱(或地址):");
scanf("%s",gaddress);
printf("\n是否进行修改,(Y/N)");
flag=panduan();
if(flag==1) //判断
{
strcpy(std[i].address,gaddress); //修改
std[i].age=gage;
strcpy(std[i].name,gaddress);
strcpy(std[i].address,gname);
strcpy(std[i].num,gnum);
strcpy(std[i].phonum,gphonum);
strcpy(std[i].qq,gqq);
}
else
xiugai(std);
}
24
唐山学院课程设计
/*****取代函数*****/
void replace(int n)
{
int i;
for(i=n;i
本文档为【c语言程序设计-通讯录】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。