课程设计通讯录管理系统Word格式.docx
《课程设计通讯录管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《课程设计通讯录管理系统Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
![课程设计通讯录管理系统Word格式.docx](https://file1.bdocx.com/fileroot1/2022-10/29/288a5a7f-f6d4-44f6-9080-58da20e49696/288a5a7f-f6d4-44f6-9080-58da20e496961.gif)
输入输出函数的应用、文件的读取与写入、结构、if条件语句、循环语句、查找、
二、设计过程
2.1设计思路
在通讯录中我们将个人基本资料存储在一个结构之中,可以方便存取。
对于程序中的相应功能我们用几个函数来分别展示其功能,通过菜单供用户选择功能。
另外,因为要求能保持记录到下次运行使用,所以要将通讯录保存到一个文件内。
2.2主题设计流程图:
2.3详细设计流程图:
(1)主函数
(2)查找(线性查找)
k>
i
此查找方法可以查找个人资料中的任何一项。
(3)删除
将文件中的数据读取到结构中后,首先使用查找功能,用线性查找的方法找出用户输入的要删除的数据。
通过查找确定了该数据排在结构中的第i个位置。
然后,依次将第i+1、i+2……个结构的数据复制到第i、i+1……个。
最后将原先最后一个结构用’\0’覆盖,这样就完成了删除数据。
(4)修改
将文件中的数据读取到结构中后,首先使用查找功能,用线性查找的方法找到用户输入的要修改的数据。
然后对该位置的数据进行修改,用修改后的数据覆盖原来的数据。
这样就完成了数据的修改。
三、结果和测试
3.1、执行软件
(1)当软件中总有输入人员信息时:
1、添加人员信息:
根据提示输入1,再按回车
输入添加的信息:
姓名(我们规定最多输入20个字符,若超过会提示出错,下同)
年龄(我们规定最大为99岁,输入除0~99数字之外的字符会提示出错,下同)
地址(我们规定最多输入40个字符,若超过会提示出错,下同)
电话(我们规定最多输入40个字符,若超过会提示出错,下同)
输入完毕后,再按回车
输入y,再按回车,保存文件,然后可以再根据提示使用其它功能
2、查找人员信息:
根据提示输入2,再按回车
再根据提示选择查找的途径,再按回车
输入要要查找的信息,再按回车
显示找到的人员信息
3、显示全部信息
根据提示输入3,再按回车
显示全部信息
4、修改人员信息
根据提示输入4,再按回车
输入需要修改的人员姓名,再按回车
显示修改前的信息
根据提示选择需要修改的信息,再按回车
输入修改的信息
5、删除人员信息
根据提示输入5,再按回车
显示人员信息
输入需要删除的人员姓名,再按回车
显示需要删除的人员信息
输入y,确定删除
(2)当软件中总没有输入人员信息时:
1、添加人员信息
根据提示输入1,再按回车
输入添加的信息:
姓名
年龄
地址
电话
输入完毕后,再按回车可以再根据提示使用查找功能
2、查找人员信息
根据提示输入2,再按回车
根据提示选择查找的途径
输入要查找的信息,再按回车
显示找不到
根据提示输入3,再按回车
显示没有记录
根据提示输入4,再按回车
输入需要修改的人员姓名,再按回车
根据提示输入5,再按回车
输入需要删除的人员的姓名,再按回车
3.2、功能模块的调试
(1)运行进入程序主菜单
进入主菜单界面
主菜单由主函数决定,有六个功能供选择。
这六个功能分别由六个子函数实现.
(2)增加模块
进入增加界面
可根据要求增加用户想增加的人员信息
(3)显示全部信息模块
进入显示全部信息界面
(4)修改模块
进入修改界面
(5)删除模块
进入删除界面
(6)退出模块
当选择“6”即退出功能时,系统就退出了界面.
四、总结
通过此次“个人通讯录”的课程设计,我们对函数的声明,函数的调用,函数体对所传数据的操作有了更深的了解,对文件的读取与写入认识更深,对选择语句与循环语句的运用也颇为熟稔,对数据数组与结构的认识也更为全面。
前进的拦路虎。
还有,测试过程中出现的一般问题不是编译错误,而是测试结果不太符合要求。
后来,在组员不断地相互鼓舞与协作下,通过查阅相关书籍和进行网络搜索,我们一步步地克服困难,一步步地迈进。
不可否认,测试成功的瞬间,我们心中溢上了满满的成就感!
编程任务完成了!
同时,我们也认识到,编程知识源远流长,我们需要不断地提高编程能力。
特别地,这次任务中,文件的读取与写入,数据与结构的处理和运用,都需要我们不断地巩固。
经过不断地努力,相信下次的编程会更好!
附录:
程序源代码
#include<
stdio.h>
stdlib.h>
string.h>
ctype.h>
structstudent
{
charname[100];
/*声明一个结构*/
charaddress[100];
charage[100];
charphone[100];
};
voidxinzeng();
/*函数原型*/
voidshow();
voiddelete_item();
voidSearch();
voidRework();
intmain()
{
charindex;
intchoice;
printf("
welcometouse!
"
);
do
printf("
\n======================================================"
/*主菜单*/
\n
(1)toaddaitem\n"
(2)tosearchforaitem\n"
(3)toshowalltheitems\n"
(4)torewritetheitem\n"
(5)todeleteoneitem\n"
(6)toexit\n"
now,pleasemakeachoice:
scanf("
%d"
&
choice);
%c"
index);
while(choice>
6||choice<
1)
{
/*对菜单的选择做出检验*/
\nyoutypeinawrongnumber!
pleasetypeinagain:
}
if(choice==1)
/*各个功能*/
xinzeng();
if(choice==2)
Search();
if(choice==3)
show();
if(choice==4)
Rework();
if(choice==5)
delete_item();
if(choice==6)
exit
(1);
}while
(1);
getch();
}
voidxinzeng()
{/*新增纪录的函数*/
intcheck1,check2,check3=0;
inti=0;
structstudentxinzeng1;
intconfirm;
FILE*infile;
/*打开或创建文件*/
infile=fopen("
name.txt"
"
a"
if(infile==NULL)/*检验文件是否打开*/
false"
=================1================================"
\npleaseenteraname:
gets(xinzeng1.name);
/*接受姓名输入并对输入的字符进行检验,检验是否超出规定大小*/
for(i=0;
i<
21;
i++)
if(xinzeng1.name[i]=='
\0'
)
check1=1;
}while(check1==0);
\npleaseentertheage:
gets(xinzeng1.age);
/*接收年龄*/
while(xinzeng1.age[1]!
='
&
xinzeng1.age[2]!
xinzeng1.age[3]!
{/*检验年龄输入是否正确*/
outofboard!
while(atoi(xinzeng1.age)>
99)
theageyoujusttypedinisuntrue!
while(isalpha(xinzeng1.age[0])!
=0||isalpha(xinzeng1.age[1])!
=0)
do/*接收地址输入并对其进行检验*/
\npleaseentertheaddress:
gets(xinzeng1.address);
41;
if(xinzeng1.address[i]=='
check2=1;
}while(check2==0);
do/*接收电话并对其进行检验*/
\npleaseenterthephone:
gets(xinzeng1.phone);
12;
if(xinzeng1.phone[i]=='
check3=1;
}while(check3==0);
\ndoyouwanttosaveittothefile?
(yorn)"
/*确认