C语言课程设计通信录管理.docx

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

C语言课程设计通信录管理.docx

《C语言课程设计通信录管理.docx》由会员分享,可在线阅读,更多相关《C语言课程设计通信录管理.docx(29页珍藏版)》请在冰点文库上搜索。

C语言课程设计通信录管理.docx

C语言课程设计通信录管理

 

课程设计(论文)

 

题目名称通信录管理

课程名称C语言课程设计

学生姓名

学号

系、专业信息工程系、信息大类

指导教师邓波

 

2008年6月8日

目录

1前言2

2需求分析2

2.1要求2

2.2任务2

2.3运行环境2

2.4开发工具2

3概要设计2

3.1系统流程图:

3

3.2函数“输入”流程图4

3.3函数“显示”流程图4

3.4函数“删除”流程图5

3.5函数“增加”流程图6

3.6函数“保存”流程图6

4详细设计7

4.1通信录管理7

4.2分析和设计7

4.3具体代码实现11

5课程设计的总结与体会16

参考文献16

致谢16

 

1

前言

编写一个程序,可以存入通信录信息,并对其进行管理。

可以根据不同的提示,对通信录进行各种不同的管理。

2需求分析

2.1要求

(1)用C语言实现程序设计。

(2)利用结构体进行相关信息处理。

(3)画出主要流程图。

(4)系统的各个功能模块要求用函数形式实现。

(5)界面良好(良好的人机互交),流程要有注释。

2.2任务

(1)录入通信录信息(包括姓名、单位、电话号码)。

(2)显示通信录里的所有成员的信息。

(3)查询通信录中某个人的信息。

(4)增加某个人的信息到通信录中。

(5)删除通信录里某个人的信息。

(6)保存通信录的信息。

2.3运行环境

(1)WINDOWS2000/XP系统

(2)Turboc2.0编译环境

2.4开发工具

C语言

3概要设计

3.1系统流程图(如图3.1)

 

图3.1系统流程图

3.2函数“输入”流程图(如图3.2)

 

图3.2函数“输入”流程图

3.3函数“显示”流程图(如图3.3)

 

图3.3函数“显示”流程图

3.4函数“查找”流程图(如图3.4)

 

图3.4函数“查找”流程图

3.5函数“删除”流程图(如图3.5)

 

图3.5函数“删除”流程图

3.6函数“增加”流程图(如图3.6)

 

图3.6函数“增加”流程图

3.7函数“保存”流程图(如图3.7)

 

图3.7函数“保存”流程图

4详细设计

4.1通信录管理

根据提示,对通信录进行不同的管理。

4.2分析和设计

在程序的开头部分是就宏定义了M#defineM50,随着在主函数中又有ADDRESSadr[M];这就定义了50个用来存放通信录的各种信息的结构体变量。

然后定义结构体变量

typedefstruct/*定义数据结构*/

{

charname[20];/*姓名*/

charunits[30];/*单位*/

chartele[10];/*电话*/

}ADDRESS;

定义了用来存放通信录的各种信息的结构体变量。

可以将通信录成员的姓名、单位、电话号码存入文件之中。

函数原型

intenter(ADDRESSt[]);/*输入记录*/

voidlist(ADDRESSt[],intn);/*显示记录*/

voidsearch(ADDRESSt[],intn);/*按姓名查找显示记录*/

intdelete(ADDRESSt[],intn);/*删除记录*/

intadd(ADDRESSt[],intn);/*插入记录*/

voidsave(ADDRESSt[],intn);/*记录保存为文件*/

voidprint(ADDRESStemp);/*显示单条记录*/

intmenu_select();/*主菜单函数*/

这就是程序中所有的子函数,在这里起到一个函数声明的作用。

函数“输入”

intenter(ADDRESSt[])

{

inti,n;

char*s;

clrscr();/*清屏*/

printf("\npleaseinputnum\n");/*提示信息*/

scanf("%d",&n);/*输入记录数*/

printf("pleaseinputrecord\n");/*提示输入记录*/

printf("nameunittelephone\n");

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

for(i=0;i

{

scanf("%s%s%s",t[i].name,t[i].units,t[i].tele);/*输入记录*/

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

}

returnn;/*返回记录条数*/

}

/*显示记录,参数为记录数组和记录条数*/

这个函数表示的是调用的函数“输入”。

然后输入记录数,再将通信录成员的信息都输入系统,将其赋入结构体中,当输入成员的信息等于记录数时,结束输入。

函数“显示”

voidlist(ADDRESSt[],intn)

{

inti;

clrscr();

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

printf("nameunittelephone\n");

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

for(i=0;i

printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);

if((i+1)%10==0)/*判断输出是否达到10条记录*/

{

printf("Pressanykeycontinue...\n");/*提示信息*/

getch();/*按任意键继续*/

}

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

}

这个函数表示的是调用的函数“显示”。

显示通信录里成员的信息。

函数“查找”

voidsearch(ADDRESSt[],intn)

{

chars[20];/*保存待查找姓名字符串*/

inti;/*保存查找到结点的序号*/

clrscr();/*清屏*/

printf("pleasesearchname\n");

scanf("%s",s);/*输入待查找姓名*/

i=find(t,n,s);/*调用find函数,得到一个整数*/

if(i>n-1)/*如果整数i值大于n-1,说明没找到*/

printf("notfound\n");

else

print(t[i]);/*找到,调用显示函数显示记录*/

}

/*显示指定的一条记录*/

voidprint(ADDRESStemp)

{

clrscr();

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

printf("nameunittelephone\n");

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

printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);

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

}

/*查找函数,参数为记录数组和记录条数以及姓名s*/

intfind(ADDRESSt[],intn,char*s)

{

inti;

for(i=0;i

{

if(strcmp(s,t[i].name)==0)/*记录中的姓名和待比较的姓名是否相等*/

returni;/*相等,则返回该记录的下标号,程序提前结结束*/

}

returni;/*返回i值*/

}

这个函数表示的是调用的函数“查找”。

按姓名方式查找某个人是否在通信录里的成员。

在search中调用了两个函数,分别是显示函数和查找函数,在查找函数中试应用比较函数,比较要查找的姓名和通信录里面的姓名是否相等。

如果相等则显示该成员信息,否则显示没有找到。

函数“删除”

intdelete(ADDRESSt[],intn)

{

chars[20];/*要删除记录的姓名*/

intch=0;

inti,j;

printf("pleasedeletedname\n");/*提示信息*/

scanf("%s",s);/*输入姓名*/

i=find(t,n,s);/*调用find函数*/

if(i>n-1)/*如果i>n-1超过了数组的长度*/

printf("nofoundnotdeleted\n");/*显示没找到要删除的记录*/

else

{

print(t[i]);/*调用输出函数显示该条记录信息*/

printf("Areyousuredeleteit(1/0)\n");/*确认是否要删除*/

scanf("%d",&ch);/*输入一个整数0或1*/

if(ch==1)/*如果确认删除整数为1*/

{

for(j=i+1;j

{

strcpy(t[j-1].name,t[j].name);/*将后一条记录的姓名拷贝到前一条*/

strcpy(t[j-1].units,t[j].units);/*将后一条记录的单位拷贝到前一条*/

strcpy(t[j-1].tele,t[j].tele);/*将后一条记录的电话拷贝到前一条*/

}

n--;/*记录数减1*/

}

}

returnn;/*返回记录数*/

}

这个函数表示的是调用的函数“删除”。

删除某个成员的信息。

首先是输入要删除人的姓名,然后调用find函数,如果没找到该成员则显示没有找到,如果找到了该成员,程序采用的方法是删除某位置的记录,后面的记录全部都往前一个位置。

函数“增加”

intadd(ADDRESSt[],intn)/*插入函数,参数为结构体数组和记录数*/

{

ADDRESStemp;/*新插入记录信息*/

inti,j;

chars[20];/*确定插入在哪个记录之前*/

printf("pleaseinputrecord\n");

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

printf("nameunittelephone\n");

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

scanf("%s%s%s",temp.name,temp.units,temp.tele);/*输入插入信息*/

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

printf("pleaseinputlocatename\n");

scanf("%s",s);/*输入插入位置的姓名*/

i=find(t,n,s);/*调用find,确定插入位置*/

for(j=n-1;j>=i;j--)/*从最后一个结点开始向后移动一条*/

{

strcpy(t[j+1].name,t[j].name);/*当前记录的姓名拷贝到后一条*/

strcpy(t[j+1].units,t[j].units);/*当前记录的单位拷贝到后一条*/

strcpy(t[j+1].tele,t[j].tele);/*当前记录的电话拷贝到后一条*/

}

strcpy(t[i].name,temp.name);/*将新插入记录的姓名拷贝到第i个位置*/

strcpy(t[i].units,temp.units);/*将新插入记录的单位拷贝到第i个位置*/

strcpy(t[i].tele,temp.tele);/*将新插入记录的电话拷贝到第i个位置*/

n++;/*记录数加1*/

returnn;/*返回记录数*/

}

这个函数表示的是调用的函数“增加”。

输入要增加的成员的信息,然后系统提示把新增的成员放通信录里的成员位置之前。

调用find函数,找到位置,然后该位置开始所有的成员往后移一个位置。

再将那个新纪录放在该位置上。

函数“保存”

voidsave(ADDRESSt[],intn)

{

inti;

FILE*fp;/*指向文件的指针*/

if((fp=fopen("record.txt","wb"))==NULL)/*打开文件,并判断打开是否正常*/

{

printf("cannotopenfile\n");/*没打开*/

exit

(1);/*退出*/

}

printf("\nSavingfile\n");/*输出提示信息*/

fprintf(fp,"%d",n);/*将记录数写入文件*/

fprintf(fp,"\r\n");/*将换行符号写入文件*/

for(i=0;i

{

fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式写入记录*/

fprintf(fp,"\r\n");/*将换行符号写入文件*/

}

fclose(fp);/*关闭文件*/

printf("****savesuccess***\n");/*显示保存成功*/

}

这个函数表示的是调用的函数“保存”。

打开文件,将信息存入文件中。

4.3具体代码实现

/******头文件(.h)***********/

#include"stdio.h"/*I/O函数*/

#include"stdlib.h"/*标准库函数*/

#include"string.h"/*字符串函数*/

#include"ctype.h"/*字符操作函数*/

#defineM50/*定义常数表示记录数*/

typedefstruct/*定义数据结构*/

{

charname[20];/*姓名*/

charunits[30];/*单位*/

chartele[10];/*电话*/

}ADDRESS;

/******以下是函数原型*******/

intenter(ADDRESSt[]);/*输入记录*/

voidlist(ADDRESSt[],intn);/*显示记录*/

voidsearch(ADDRESSt[],intn);/*按姓名查找显示记录*/

intdelete(ADDRESSt[],intn);/*删除记录*/

intadd(ADDRESSt[],intn);/*插入记录*/

voidsave(ADDRESSt[],intn);/*记录保存为文件*/

voidprint(ADDRESStemp);/*显示单条记录*/

intmenu_select();/*主菜单函数*/

/******主函数开始*******/

main()

{

inti;

ADDRESSadr[M];/*定义结构体数组*/

intlength;/*保存记录长度*/

clrscr();/*清屏*/

for(;;)/*无限循环*/

{

switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/

{

case0:

length=enter(adr);break;/*输入记录*/

case1:

list(adr,length);break;/*显示全部记录*/

case2:

search(adr,length);break;/*查找记录*/

case3:

length=delete(adr,length);break;/*删除记录*/

case4:

length=add(adr,length);break;/*插入记录*/

case5:

save(adr,length);break;/*保存文件*/

case6:

exit(0);/*如返回值为6则程序结束*/

}

}

}

/*菜单函数,函数返回值为整数,代表所选的菜单项*/

menu_select()

{

chars[80];

intc;

gotoxy(1,25);/*将光标定为在第25行,第1列*/

printf("pressanykeyentermenu......\n");/*提示压任意键继续*/

getch();/*读入任意字符*/

clrscr();/*清屏*/

gotoxy(1,1);

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

printf("0.Enterrecord\n");

printf("1.Listthefile\n");

printf("2.Searchrecordonname\n");

printf("3.Deletearecord\n");

printf("4.addrecord\n");

printf("5.Savethefile\n");

printf("6.Quit\n");

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

do{

printf("\nEnteryouchoice(0~6):

");/*提示输入选项*/

scanf("%s",s);/*输入选择项*/

c=atoi(s);/*将输入的字符串转化为整型数*/

}while(c<0||c>6);/*选择项不在0~6之间重输*/

returnc;/*返回选择项,主程序根据该数调用相应的函数*/

}

/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/

intenter(ADDRESSt[])

{

inti,n;

char*s;

clrscr();/*清屏*/

printf("\npleaseinputnum\n");/*提示信息*/

scanf("%d",&n);/*输入记录数*/

printf("pleaseinputrecord\n");/*提示输入记录*/

printf("nameunittelephone\n");

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

for(i=0;i

{

scanf("%s%s%s",t[i].name,t[i].units,t[i].tele);/*输入记录*/

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

}

returnn;/*返回记录条数*/

}

/*显示记录,参数为记录数组和记录条数*/

voidlist(ADDRESSt[],intn)

{

inti;

clrscr();

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

printf("nameunittelephone\n");

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

for(i=0;i

printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);

if((i+1)%10==0)/*判断输出是否达到10条记录*/

{

printf("Pressanykeycontinue...\n");/*提示信息*/

getch();/*按任意键继续*/

}

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

}

/*查找记录*/

voidsearch(ADDRESSt[],intn)

{

chars[20];/*保存待查找姓名字符串*/

inti;/*保存查找到结点的序号*/

clrscr();/*清屏*/

printf("pleasesearchname\n");

scanf("%s",s);/*输入待查找姓名*/

i=find(t,n,s);/*调用find函数,得到一个整数*/

if(i>n-1)/*如果整数i值大于n-1,说明没找到*/

printf("notfound\n");

else

print(t[i]);/*找到,调用显示函数显示记录*/

}

/*显示指定的一条记录*/

voidprint(ADDRESStemp)

{

clrscr();

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

printf("nameunittelephone\n");

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

printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);

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

}

/*查找函数,参数为记录数组和记录条数以及姓名s*/

intfind(ADDRESSt[],intn,char*s)

{

inti;

for(i=0;i

{

if(strcmp(s,t[i].name)==0)/*记录中的姓名和待比较的姓名

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

当前位置:首页 > 农林牧渔 > 林学

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

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