《通讯录管理系统c语言》实训报告含代码.docx

上传人:b****6 文档编号:4487911 上传时间:2022-12-01 格式:DOCX 页数:21 大小:100.49KB
下载 相关 举报
《通讯录管理系统c语言》实训报告含代码.docx_第1页
第1页 / 共21页
《通讯录管理系统c语言》实训报告含代码.docx_第2页
第2页 / 共21页
《通讯录管理系统c语言》实训报告含代码.docx_第3页
第3页 / 共21页
《通讯录管理系统c语言》实训报告含代码.docx_第4页
第4页 / 共21页
《通讯录管理系统c语言》实训报告含代码.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

《通讯录管理系统c语言》实训报告含代码.docx

《《通讯录管理系统c语言》实训报告含代码.docx》由会员分享,可在线阅读,更多相关《《通讯录管理系统c语言》实训报告含代码.docx(21页珍藏版)》请在冰豆网上搜索。

《通讯录管理系统c语言》实训报告含代码.docx

《通讯录管理系统c语言》实训报告含代码

《高级程序设计》

课程实训报告

 

题目:

通讯录管理系统

完成人:

专业班级:

学号:

指导教师:

 

2012年1月5日

1题目与要求

问题提出

本人计划编写一个通讯录管理系统。

通讯录一般包括通讯者的姓名、电话及类别等信息,用来管理学生基本信息及成绩信息。

要求实现通讯者的插入、查询、删除等操作。

本系统涉及的知识点

结构、数组、循环、函数、分支、文件操作等。

功能要求

1、建立学生信息,每个通讯者的信息包括:

姓名、电话号码、QQ、类别(小学,初中,高中,大学);

2、新增通讯录信息;

3、根据姓名,电话号码,QQ等查找该通讯者的信息并输出;

4、输入通讯者的姓名,进行查找并修改信息,若不存在该通讯者,则提示说明;

5、根据姓名删除指定信息;

6、显示全部的通讯者信息;

7、能够将输入信息导出文件,同时能把文件导入到内存中;

8、退出整个系统操作。

2功能设计

算法设计

1、利用switch语句设计如图1所示的主菜单:

图1学生信息管理系统主菜单

2、菜单选项示例:

选择1后,调用新增函数,进入函数后利用printf(),scnaf()语句实现一个如图2所示的输入。

图2排序子菜单

选择2后,调用查找函数,进入函数后利用switch语句实现一个如图3所示的菜单,该菜单中每个选项调用一个函数,完成通讯录信息的查找。

图3查找子菜单

3、根据所选菜单编写相应代码:

1)主函数main():

根据选单的选项调用各函数,并完成相应的功能。

2)菜单函数menu():

显示提示选单。

3)新增函数add():

在通讯录结构体总追加入新的通讯录信息,并返回选单。

4)查找函数find():

查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。

5)修改函数alter():

修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。

6)删除函数Delete():

删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。

7)显示函数list():

显示通讯录中的所有记录。

8)导入函数input():

能从指定的文件中读入通讯录的信息.

9)导出函数output的:

能将通讯录的信息写入指定的文件中

10)退出函数quit():

退出选单。

11)名字查找函数Find():

作为查找,输入修改,删除时调用的名字查找函数,判断是否存在要查找的记录,若存在则返回‘0’,不存在则返回其他值。

12)电话号码查找函数Find_num(),QQ查找函数Find_qq(),类别查找函数Find_type()与名字查找函数功能一致。

 

图4通讯录管理系统模块图

部分模块流程图

1).新增模块

Y

 

N

Y

NY

Y

N

2)删除模块

 

N

Y

Y

N

Y

Y

3程序代码设计

(1).菜单模块

1)函数原形:

voidmenu()

2)功能:

使用printf()语句输出主菜单提示。

4)说明:

每次执行完其他函数都调用菜单函数,使其返回主菜单,重新选择功能。

(2).新增模块

1)函数原形:

voidadd()

2)功能:

使用printf()、scnaf()、getchar()、while()、if()语句输出选项提示,并逐一输入通讯录全部信息(姓名、电话号码、QQ、类别)到结构体中。

利用while()进行重复输入,getchar()进行退出。

同时利用名字查找函数Find()对输入信息进行是否重复的判断。

3)变量及类型:

structstudentstud:

定义一个结构体变量,从第一次以后输入的数据放入其中,进行数据判断后才放入结构体数组中。

4)说明:

执行完输入函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。

3).查找模块

1)函数原形:

voidfind()

2)功能:

利用while()重复查找功能,getchar()进行退出循环。

switch(),getchar()进行按姓名、电话号码、QQ等查找方式的选择。

按照相应的选择方式调用名字查找函数Find(),电话号码查找函数Find_num(),QQ查找函数Find_qq(),类别查找函数Find_type()。

3)变量及类型:

chars[20]:

选择查找方式后将姓名、电话、QQ等放入其中再调用查找函数。

charch:

对查找方式进行选择。

charch1:

对退出查找进行选择。

(4).修改模块

1)函数原形:

voidalter()

2)功能:

用if-else作处理。

调用名字查找函数Find(),如果无该查找记录则提示且退出修改函数。

反之利用switch()修改的选择1.覆盖修改(重新输入全部信息),2.部分修改,当选择2时提供姓名、电话号码、QQ、类别四个修改选项,且利用while()进行多项修改。

3)变量及类型:

char,s[20]:

选择查找方式后将姓名、电话、QQ等放入其中再调用查找函数。

char,ch:

选择2部分修改时,当选择提供姓名、电话号码、QQ、类别四个修改选项

charch1:

控制退出switch()。

charch2:

控制退出while()。

(5).删除模块

1)函数原形:

voidDelete()

2)功能:

调用名字查找函数Find()判断数据的重复性,while()进行多次操作。

3)变量及类型:

chars[20]:

对数据姓名、电话、QQ等放入其中再调用查找函数。

charch:

控制退出while()

charch1:

控制退出while()

(6).显示模块

1)函数原形:

voidlist()

2)功能:

for,printf显示去全部的通讯录信息。

3)变量及类型:

(7).导出模块

1)函数原形:

voidoutput()

2)功能:

将内存中的数据导出到文件中。

3)变量及类型:

FILE*fp:

进行文件指针操作。

(8).导入模块

1)函数原形voidinput()

2)功能:

将文件中的数据导出到中内存。

3)变量及类型:

FILE*fp:

进行文件指针操作。

(8).查找返回模块

1)函数原形intFind(chars[]),intFind_num(chars[]),intFind_qq(chars[]),intFind_type(chars[])。

2)功能:

用于名字,电话号码,QQ,类别查找。

3)变量及类型:

inti:

用于for循环。

intc:

对名字判断后返回值。

4总结

1.通过本次实训巩固对高级语言程序设计这门课程的教学内容,提高对C语言的基本应用能力

2.同时通过本实训课程,训练程序设计的思维能力,提高了分析问题和解决问题的能力,为后续专业课程的学习打下良好的基础。

3.掌握了C语言程序设计方法,熟悉使用软件开发C语言程序的过程。

熟悉C语言基本数据类型的定义和使用、用户自定义类型的定义和使用。

4.熟悉顺序结构、分支结构和循环结构的设计思想以及代码实现,体会了模块化程序设计的思想。

要求各个功能用函数实现

5.问题分析与算法设计的能力进一步提高。

参考文献

[1]张磊,C语言程序设计(第2版),高等教育出版社,2009

[2],张磊,C语言程序设计实验与实训指导及题解(第2版),高等教育出版社,2009

附录:

程序清单

#include<>

#include<>

#defineM100

staticintN=0,I=0;

structstudent

{

charname[20];

charnum[20];

charqq[20];

chartype[10];

}stu[M];

voidmenu();

voidadd();

voidfind();

voidalter();

voidDelete();

voidlist();

voidinput();

voidoutput();

intquit();

intFind(char[]);

intFind_num(char[]);

intFind_qq(char[]);

intFind_type(char[]);

voidmain()

{

intop;

menu();

while

(1)

{

printf("\t\n\t\t请选择功能(1-8):

");

scanf("%d",&op);

getchar();

switch(op)

{

case1:

printf("\n\t1.*****新增记录****\n");

add();

break;

case2:

printf("\n\t2.****查找通讯录***\n");

find();

break;

case3:

printf("\n\t3.****修改通讯录***\n");

alter();

break;

case4:

printf("\n\t4.****删除通讯录***\n");

Delete();

break;

case5:

printf("\n\t5.****显示通讯录***\n");

list();

break;

case6:

printf("\n\t6.*从内存导出文件中\n");

output();

break;

case7:

printf("\n\t7.*从文件导入内存中\n");

input();

break;

break;

case8:

printf("\n\t8.*退出\n");

op=quit();

break;

default:

printf("\t***Nothavethefunction!

***\n");

break;

}

if(op==8)

{

printf("\n\t感谢您的使用,已退出程序!

\n\t");

break;

}

else

continue;

}

}

 

voidmenu()

{

printf("\n");

printf("\t============通讯录管理菜单===========\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.退出*\n");

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

}

ame);

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

");

scanf("%s",stu[N].num);

printf("\t请输入QQ号:

");

scanf("%s",stu[N].qq);

printf("\t请输入类别(小学、初中、高中、大学):

");

scanf("%s",stu[N].type);

N++;

printf("\n\t是否输入下一条(Y)按任意键返回主菜单:

");

if(getchar()=='Y'||getchar()=='y')

continue;

break;

}

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

");

scanf("%s",&;

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

");

scanf("%s",&;

printf("\t请输入QQ号:

");

scanf("%s",&;

printf("\t请输入类别(小学、初中、高中、大学):

");

scanf("%s",&;

if(!

Find)

{

printf("\n\n\t发现通讯录中存在该记录,确认新增吗(Y)其它任意键将覆盖:

");

if(getchar()=='Y'||getchar()=='y')

{

stu[N]=stud;

N++;

}

else

stu[I]=stud;

printf("\n\t$$$$$$操作成功!

$$$$$$\n");

}

else

{

stu[N]=stud;

N++;

}

printf("\n\t是否输入下一条(Y)按任意键返回主菜单:

");

if(getchar()=='Y'||getchar()=='y')

continue;

break;

}

menu();

}

 

姓名查找*");

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

printf("\n\t*\t3.按QQ查找*");

printf("\n\t*\t4.按类别查找*");

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

printf("\n\t请输入查找方式(1-4):

");

ch=getchar();

getchar();

switch(ch)

{

case'1':

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

");

gets(s);

if(Find(s))

printf("\n\t$$$查找失败,请确认是否输入有误或不存在该记录!

$$$\n");

break;

case'2':

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

");

gets(s);

if(Find_num(s))

printf("\n\t$$$查找失败,请确认是否输入有误或不存在该记录!

$$$\n");

break;

case'3':

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

");

gets(s);

if(Find_qq(s))

printf("\n\t$$$查找失败,请确认是否输入有误或不存在该记录!

$$$\n");

break;

case'4':

printf("\n\t请输入类别:

");

gets(s);

if(Find_type(s))

printf("\n\t$$$查找失败,请确认是否输入有误或不存在该记录!

$$$\n");

break;

default:

printf("\t***Havenotthefunction!

***");

printf("\t\n");

break;

}

printf("\n\n\t继续查找吗(Y),按任意键返回主菜单:

");

ch1=getchar();

getchar();

if(ch1=='Y'||ch1=='y')

continue;

break;

}

menu();

}

 

盖修改(重新输入全部信息)*");

printf("\n\t*\t2.部分修改*");

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

printf("\n\t请选择修改的方式(1-2):

");

ch=getchar();

getchar();

switch(ch)

{

case'1':

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

");

scanf("%s",stu[I].name);

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

");

scanf("%s",stu[I].num);

printf("\t请输入QQ:

");

scanf("%s",stu[I].qq);

printf("\t请输入类别(小学、初中、高中、大学):

");

scanf("%s",stu[I].type);

printf("\n\t修改成功!

修改后记录为:

\n");

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

printf("\n\t姓名\t电话号码\tQQ\t\t类别");

printf("\n\t%-8s%-16s%-16s%-8s",stu[I].name,stu[I].num,stu[I].qq,stu[I].type);

break;

case'2':

while

(1)

{

printf("\n\t**请选择要修改的项目:

***");

printf("\n\t1.姓名");

printf("\n\t2.电话号码:

");

printf("\n\:

");

printf("\n\t4.类别:

");

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

printf("\n\t请输入要修改的项目(1-4):

");

ch1=getchar();

getchar();

switch(ch1)

{

case'1':

printf("\n\t请输入修改后的姓名:

");

scanf("%s",s);

break;

case'2':

printf("\n\t请输入修改后的电话号码:

");

scanf("%s",stu[I].num);

break;

case'3':

printf("\n\t请输入修改后的QQ:

");

scanf("%s",stu[I].qq);

break;

case'4':

printf("\n\t请输入修改后的类别(小学、初中、高中、大学):

");

scanf("%s",stu[I].type);

break;

}

getchar();

printf("\n\t$$$修改成功!

$$$\n\n修改后记录为:

");

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

printf("\n\t姓名\t电话号码\tQQ\t\t类别");

printf("\n\t%-8s%-16s%-16s%-8s",stu[I].name,stu[I].num,stu[I].qq,stu[I].type);

printf("\n\n\t继续修改(Y)按任意键返回主菜单:

");

ch2=getchar();

getchar();

if(ch2=='Y'||ch2=='y')

continue;

break;

}

break;

default:

printf("\t***Nothavethefunction!

***\n");

break;

}

}

menu();

}

ame,stu[i].num,stu[i].qq,stu[i].type);

c++;

}

printf("\n\n\t----------------------------当前记录共有%d条!

\n",i);

menu();

}

 

ame,s))==0)

{

I=i,c=0;

if(c1==0)

{

printf("\n\t查找成功:

");

printf("\n\t姓名\t电话号码\tQQ\t\t类别");

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

}

printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);

c1++;

break;

}

else

break;

}

}

if(c==0)

return(c);

else

return

(1);

}

 

intFind_num(chars[])

{

inti,c,c1=0;

for(i=0;i

{

while

(1)

{

if((strcmp(stu[i].num,s))==0)

{

I=i,c=0;

if(c1==0)

{

printf("\n\t查找成功:

");

printf("\n\t姓名\t电话号码\tQQ\t\t类别");

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

}

printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);

c1++;

break;

}

break;

}

}

if(c==0)

return(c);

else

return

(1);

}

 

intFind_qq(chars[])

{

inti,c,c1=0;

for(i=0;i

{

while

(1)

{

if((strcmp(stu[i].qq,s))==0)

{

I=i,c=0;

if(c1==0)

{

printf("\n\t查找成功:

");

printf("\n\t姓名\t电话号码\tQQ\t\t类别");

printf("\n\t~~~~~~~~~~~~~~~~~~~~~~

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

当前位置:首页 > 高中教育 > 英语

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

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