计算机软件基础课程设计电话本Word格式.docx
- 文档编号:5774857
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:52
- 大小:525.92KB
计算机软件基础课程设计电话本Word格式.docx
《计算机软件基础课程设计电话本Word格式.docx》由会员分享,可在线阅读,更多相关《计算机软件基础课程设计电话本Word格式.docx(52页珍藏版)》请在冰点文库上搜索。
(1)、主函数执行流程:
分析:
本电话簿管理系统总的执行流程如图1所示!
判断键入数值时:
选择1:
执行输入函数,实现从键盘输入数据的功能;
选择2:
执行查找函数,实现在已输入的数据中查询特定信息的功能;
选择3:
执行修改函数,实现修改已输入数据中的某些信息的功能;
选择4:
执行输出函数,实现在屏幕上显示已输入的数据信息的功能;
选择5:
执行插入函数,实现在已输入数据基础上插入新的数据的功能;
选择6:
执行删除函数,实现删除某些已输入的数据的功能;
选择7:
执行存储函数,实现把已输入数据保存在文档中的功能;
选择8:
执行读入函数,实现从已保存的文档中读入数据的功能;
选择0:
表示退出系统,实现系统的安全退出。
(2)、输入模块流程:
本电话簿系统的信息输入功能由main()函数调用input输入函数完成,执行流程如图2!
由do-while结构完成其循环,开始先比较数组中实际数据长度和系统允许的最大长度,判断数组中的空间是否已满,若满则退出输入函数到主菜单,方便用户删除;
若未满则提示让用户输入信息,输入完一条信息后进行一次判断,让用户选择是否继续输入,是则继续执行输入函数,否则退出输入到主菜单。
(3)、查找模块流程:
本电话簿系统的信息查询功能由main()函数调用seachname、seachtel、seachqq、seachadd等四个函数,分别实现由姓名查询、由电话查询、由qq查询、由地址查询等查询功能。
执行流程如图3!
可通过不同信息部分查询,选择不同查询方式,则输入相应的要查数据,通过for循环逐条比较输入信息与数组中已存信息,若有相同的,则输出相应的那条信息,否则退出循环到选择操作,可选择继续查询或者退出查询到主菜单。
(4)、修改模块流程:
本电话簿系统的信息修改功能由main()函数调用recompose修改函数完成,可分别修改姓名、电话、QQ、地址等。
用户输入要查询的姓名,通过for循环逐条比较输入信息与数组中已存信息,若有相同的,则提示并选择要修改信息的相应部分,直接输入新信息;
若找不到相应信息或执行完上一次修改,则进入选择操作,可选继续修改操作或回到主菜单。
(5)、输出模块:
本电话簿系统的信息输出功能由main()函数调用output输出函数完成。
由for循环逐条将已输入的信息显示在屏幕上。
流程:
开始→输出信息→结束输出操作
(6)、插入模块流程:
本电话簿系统的信息插入功能是由main()函数调用Insert插入函数完成执行的,流程如图5!
用户输入要插入的新信息,输入要在哪个名字后插入信息,for循环逐条查询该名字是否存在,若在,则将其向后复制一位,并把新信息插入其原来位置;
否则把新信息存放在最后位置。
信息数加一,完成插入操作,进入选择操作,可选继续插入操作或回到主菜单。
(7)、删除模块流程:
本电话簿系统的信息删除功能是由main()函数调用desl删除函数完成的,流程如图6。
用户输入要删除信息的名字,for循环查找该信息,若找到相同的,则把该条信息后的信息向前复制,覆盖掉原信息,完成删除。
若没找到或已完成删除操作,则进入选择操作,可选继续删除或退出删除进入主界面菜单。
(8)、存储模块流程:
本电话簿系统的信息保存功能是由main()函数调用WriteToFile信息保存函数实现的,简易流程如图7!
程序试图创建一个tel.txt文档,之后打开该文档,若成功打开则说明文档创建成功,则for循环逐条把数组中的信息存入到该文档中,信息存储成功;
否则说明文档创建失败。
不管是信息保存成功或是保存失败,结束保存操作,退回到主菜单。
(9)、文件读取模块流程:
本电话簿系统的信息读取功能是由main()函数调用ReadFromFile函数实现的,简易流程如图8,。
程序试图打开tel.txt文档,判断是否存在该文档,若存在,则把文档中的信息逐条输入到数组中,文件读取成功;
若不存在,提示文件读取失败。
不管文件读取成功或是读取失败,都结束文件读入操作,退回到主菜单。
2、数据结构设计:
(1)电话簿信息数据结构体:
structADDRESS//定义数据结构
{charname[20];
//姓名
chartel[20];
//电话
charqq[11];
//QQ号
charadd[20];
//地址
}DHB[10];
(2)、
2、函数功能描述:
(1)、输入:
input
函数原型:
voidinput(structADDRESSDHB[])//输入函数
{
intc;
do{
if(q==MAX)//比较实际信息数与允许加入的最大信息数,若两者相等,则说明空间已满
{
printf("
\n信息储存已满,需要删除其中的一些信息,才能执行输入操作!
\n"
);
return;
}
输入机主的姓名:
"
//输入机主的姓名
scanf("
%s"
&
DHB[q].name);
输入机主的电话:
//输入机主的电话
DHB[q].tel);
输入机主的QQ:
//输入机主的qq
DHB[q].qq);
输入机主的地址:
//输入机主的地址
DHB[q].add);
q++;
想继续执行输入操作请按1(否则按其它数字):
//提示信息
%d"
c);
}
while(1==c);
参数含义:
ADDRESS:
用户定义的数据结构
DHB[]:
用户定义的数组,用于存放信息
(2)、查询:
(a)、seachname
voidseachname(structADDRESSDHB[])//按姓名查询
inti;
charname[20];
//要查询的姓名
输入要查询的姓名:
name);
for(i=0;
i<
q;
i++)
if(strcmp(name,DHB[i].name)==0)//输入的姓名和待比较的姓名是否相等
break;
if(i>
q-1)//如果i>
q-1超过了数组的长度
没有找到要查询的信息!
//显示没找到要查询的记录
else
姓名:
%-15s电话:
%-12sQQ:
%-12s住址:
%-15s\n"
DHB[i].name,DHB[i].tel,DHB[i].qq,DHB[i].add);
//显示出查询的结果
(b)、seachtel
voidseachtel(structADDRESSDHB[])//按电话查询
输入要查询的电话:
tel);
if(strcmp(tel,DHB[i].tel)==0)//输入的电话和待比较的电话是否相等
break;
q-1)//如果i>
(c)、seachqq
voidseachqq(structADDRESSDHB[])//按qq查询
{
charqq[20];
//要查询的qq
输入要查询的qq:
qq);
if(strcmp(qq,DHB[i].qq)==0)//输入的qq和待比较的qq是否相等
n-1超过了数组的长度
DHB[i].name,DHB[i].tel,DHB[i].qq,DHB[i].add);
//显示出查询的结果
(d)、seachadd
voidseachadd(structADDRESSDHB[])//按地址查询
//要查询的地址
输入要查询的地址:
add);
if(strcmp(add,DHB[i].add)==0)//输入的地址和待比较的姓名是否相等
(3)、修改:
recompose
voidrecompose(structADDRESSDHB[])//修改函数
{
do{
inti,a;
//要修改记录的名字
输入要修改机主的姓名:
if(strcmp(name,DHB[i].name)==0)//比较输入要修改的姓名与已输入的姓名
break;
没有找到要修改的信息!
//显示没找到要删除的记录
修改姓名请按1:
修改电话请按2:
修改qq请按3:
修改地址请按4:
请选择(1~4):
a);
if(a==1)
输入新的姓名:
//输出机主的姓名
DHB[i].name);
if(a==2)
输入新的电话:
//输出机主的电话
DHB[i].tel);
if(a==3)
输入新的qq:
//输出机主的qq
DHB[i].qq);
}
if(a==4)
输入新的地址:
//输出机主的地址
DHB[i].add);
如果想继续执行修改操作请按1(否则按其它数字):
while(1==c);
(4)、输出:
output
voidoutput(structADDRESSDHB[])//输出函数
//输出通讯录的信息
(5)、插入:
Insert
voidInsert(structADDRESSDHB[],charname[])//插入函数,参数为结构体数组和记录数
intc;
structADDRESStemp;
//新插入记录信息
charname[15];
//要插入的名字
inti=1,j;
输入要插入的姓名:
temp.name);
输入要插入的电话:
temp.tel);
输入要插入的QQ:
temp.qq);
输入要插入的地址:
temp.add);
请输入到那个名字之前:
//提示信息
//输入姓名
{
if(strcmp(name,DHB[i].name)==0)//比较输入的与实际信息是否相同
}
if(i>
没有找到要插入的位置!
//显示没找到要插入的位置
printf("
姓名:
//显示出插入的位置
i++)//从第一条记录开始,直到最后一条
if(strcmp(name,DHB[i].name)==0)//输入的姓名和待比较的姓名是否相等
break;
}
for(j=q-1;
j>
=i;
j--)
{
strcpy(DHB[j+1].name,DHB[j].name);
//当前记录的机主姓名拷贝到后一条
strcpy(DHB[j+1].tel,DHB[j].tel);
//当前记录的机主电话拷贝到后一条
strcpy(DHB[j+1].qq,DHB[j].qq);
//当前记录的机主qq拷贝到后一条
strcpy(DHB[j+1].add,DHB[j].add);
//当前记录的机主地址拷贝到后一条
strcpy(DHB[j+1].name,temp.name);
//当要插入的机主姓名拷贝到j+1位置
strcpy(DHB[j+1].tel,temp.tel);
//当要插入的机主电话拷贝到j+1位置
strcpy(DHB[j+1].qq,temp.qq);
//当要插入的机主qq拷贝到j+1位置
strcpy(DHB[j+1].add,temp.add);
//当要插入的机主地址拷贝到j+1位置
//记录数加
插入成功"
\n如果想继续执行添加操作请按1(否则按其它数字):
(6)、删除:
desl
voiddesl(structADDRESSDHB[],charname[])//删除函数
inti,j;
请输入删除的名字:
if(strcmp(name,DHB[i].name)==0)//输入的姓名和待比较的姓名是否相等
没有找到要删除的信息!
%-15s\n"
//输出机主的信息
for(j=i+1;
j<
j++)
strcpy(DHB[j-1].name,DHB[j].name);
//将后一条记录的姓名拷贝到前一条
strcpy(DHB[j-1].tel,DHB[j].tel);
//将后一条记录的电话拷贝到前一条
strcpy(DHB[j-1].qq,DHB[j].qq);
//将后一条记录的qq拷贝到前一条
strcpy(DHB[j-1].add,DHB[j].add);
//将后一条记录的地址拷贝到前一条
}
q--;
//记录数减1
printf("
删除成功!
如果想继续执行删除操作请按1(否则按其它数字):
scanf("
(7)、储存:
WriteToFile
intReadFromFile(structADDRESSDHB[])//读入函数
FILE*fp;
//指向文件fp
if((fp=fopen("
tel.txt"
"
r"
))==NULL)//判断是否存在需要打开的文件
电话簿不存在,需重新建立!
return0;
!
feof(fp);
i++)
fread(&
DHB[i],sizeof(structADDRESS),1,fp);
//把文件中的信息读入到数组中
fclose(fp);
信息读取成功!
returni-1;
(8)、读取:
ReadFromFile
voidWriteToFile(structADDRESSDHB[])//信息保存函数
w+"
))==NULL)//判断是否存在文件若不存在则新建
不能打开文件!
for(i=0;
if(fwrite(&
DHB[i],sizeof(structADDRESS),1,fp)!
=1)//将数组中信息读入到所创建的文件中
写入文件错误!
文件保存成功!
三、程序实现:
源代码分析:
(1)、程序预处理:
#include<
stdio.h>
string.h>
#include<
stdlib.h>
windows.h>
conio.h>
#defineMAX50//自定义结构体
//姓名
//电话
//QQ号
//地址
intq=0,c=0;
//初始化q
加载头文件,定义数据结构体,定义数组,定义各个变量并初始化。
(2)、主函数:
voidmain()
inti,c;
system("
colorE0"
//确定字幕及字体的颜色
//-------------------实现登录功能-------------------
charszUser[20]={0};
char*PUser="
user"
;
//设置用户名
char*Pword="
1234"
//设置密码
charchPwd[5];
intflag_u=0,j=0,flag_p=0;
while(flag_u==0||flag_p==0)
j=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件 基础 课程设计 电话本
![提示](https://static.bingdoc.com/images/bang_tan.gif)