同学通讯录信息管理Word格式文档下载.docx
- 文档编号:18648545
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:20
- 大小:22.54KB
同学通讯录信息管理Word格式文档下载.docx
《同学通讯录信息管理Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《同学通讯录信息管理Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
1、添加主要实现程序最初运行时学生通讯录的录入及其后的运行中录入学生通讯录的追加功能;
2、查询主要功能是按照学号或姓名对学生的通讯录记录进行查询;
3、显示主要功能是将学生通讯录的全部信息显示出来
4、删除主要功能是删除一些不需要的学生信息;
4、保存实现功能为将新的通讯录信息保存到文件中;
除上面介绍的功能之外,程序还具有退出,复制,以及其他附属功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个学生记录都包含学号、姓名、电话和地址,在程序当中,将学生通讯录类型定义为结构体类型,添加以及追加的学生通讯录信息现存入结构体数组中,再在save函数中写入D盘的myfile.dat文件中,其他函数每次对学生通讯录的访问,其数据来源都是结构体数组并可以对学生数据进行永久保存。
二、程序流程图
1、程序总体结构图
显示主菜单
do·
·
while(c!
=’!
’)
真
n=1
假
添加
n=2
查询
n=3
显示
n=4
删除
n=5
保存
n=6
退出
图1程序总体结构图
2、具体功能框图
(1)添加通讯录add
temp_letter=a
输入学号查询并显示学生通讯录信息
temp_letter=b
输入姓名查询并显示学生通讯录信息
temp_letter=c
图2添加学生通讯录
(2)学号查询num_inquire
i<
counter
stu[i].num=inquire.num
真
显示学生通讯录信息
count++
count=0
无此学生信息
图3学号查询
(3)姓名查询name_inquire
while(cha_name[j-1]!
=0)
cha_name[j]!
=stu[i].name[j]
count1=1
count1=0
count2++
count2=0
图4姓名查询
三、核心技术的实现说明及相应程序段
本程序主要由七个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,添加学生通讯录、查询学生通讯录是程序中较为核心的部分,下面分别进行说明。
1、添加学生通讯录
添加学生通讯录是将学生通讯录信息以结构体数组的形式储存到结构体数组中去。
具体的程序段如下:
intadd(ADDRESSt[],intn)/*插入函数,参数为结构体数组和记录数*/
{
ADDRESStemp;
/*新插入记录信息*/
inti,j;
chars[20];
/*确定插入在哪个记录之前*/
printf("
pleaseinputrecord\n"
);
************************************************\n"
nameunittelephone\n"
--------------------------------------------------\n"
scanf("
%s%s%s"
temp.name,temp.units,temp.tele);
/*输入插入信息*/
------------------------------------------------\n"
pleaseinputlocatename\n"
%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;
/*返回记录数*/
/*保存函数,参数为结构体数组和记录数
2、查询学生通讯录
通过调用两个自定义函数分别实现学号查询和姓名查询两种查询通讯录的方式。
switch()分支结构进行两种查询方式的选择。
3、学号查询
通过学号在已有记录中查找相同信息,并显示出来。
具体程序段如下:
voiddisplay(ADDRESSt[])
intid,n;
FILE*fp;
/*指向文件的指针*/
if((fp=fopen("
myfile.dat"
"
rb"
))==NULL)/*打开文件*/
cannotopenfile\n"
/*不能打开文件*/
exit
(1);
/*退出*/
Enterordernumber...\n"
/*显示信息*/
%d"
&
id);
/*输入序号*/
fscanf(fp,"
n);
/*从文件读入记录数*/
if(id>
=0&
&
id<
n)/*判断序号是否在记录范围内*/
fseek(fp,(id-1)*sizeof(ADDRESS),1);
/*移动文件指针到该记录位置*/
print(t[id]);
/*调用输出函数显示该记录*/
\r\n"
else
no%dnumberrecord!
!
\n"
id);
/*如果序号不合理显示信息*/
fclose(fp);
/*关闭文件*/
/*排序函数,参数为结构体数组和记录数*/
4、姓名查询
通过姓名在已有记录中查找相同信息,并显示出来。
voidsearch(ADDRESSt[],intn)
/*保存待查找姓名字符串*/
inti;
/*保存查找到结点的序号*/
clrscr();
/*清屏*/
pleasesearchname\n"
/*输入待查找姓名*/
/*调用find函数,得到一个整数*/
if(i>
n-1)/*如果整数i值大于n-1,说明没找到*/
notfound\n"
print(t[i]);
/*找到,调用显示函数显示记录*/
/*显示指定的一条记录*/
voidprint(ADDRESStemp)
\n\n********************************************\n"
%-20s%-30s%-10s\n"
**********************end***********************\n"
/*查找函数,参数为记录数组和记录条数以及姓名s*/
intfind(ADDRESSt[],intn,char*s)
for(i=0;
n;
i++)/*从第一条记录开始,直到最后一条*/
if(strcmp(s,t[i].name)==0)/*记录中的姓名和待比较的姓名是否相等*/
returni;
/*相等,则返回该记录的下标号,程序提前结结束*/
/*返回i值*/
}
六、源程序
#include"
stdio.h"
/*I/O函数*/
stdlib.h"
/*标准库函数*/
string.h"
/*字符串函数*/
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);
/*记录保存为文件*/
intload(ADDRESSt[]);
/*从文件中读记录*/
voiddisplay(ADDRESSt[]);
/*按序号查找显示记录*/
voidsort(ADDRESSt[],intn);
/*按姓名排序*/
voidqseek(ADDRESSt[],intn);
/*快速查找记录*/
voidcopy();
/*文件复制*/
voidprint(ADDRESStemp);
/*显示单条记录*/
intfind(ADDRESSt[],intn,char*s);
/*查找函数*/
intmenu_select();
/*主菜单函数*/
/******主函数开始*******/
main()
ADDRESSadr[M];
/*定义结构体数组*/
intlength;
/*保存记录长度*/
for(;
;
)/*无限循环*/
switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/
case0:
length=enter(adr);
break;
/*输入记录*/
case1:
list(adr,length);
/*显示全部记录*/
case2:
search(adr,length);
/*查找记录*/
case3:
length=delete(adr,length);
case4:
length=add(adr,length);
break;
case5:
save(adr,length);
/*保存文件*/
case6:
length=load(adr);
/*读文件*/
case7:
display(adr);
/*按序号显示记录*/
case8:
sort(adr,length);
case9:
qseek(adr,length);
case10:
copy();
/*复制文件*/
case11:
exit(0);
/*如返回值为11则程序结束*/
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
menu_select()
chars[80];
intc;
gotoxy(1,25);
/*将光标定为在第25行,第1列*/
pressanykeyentermenu......\n"
/*提示压任意键继续*/
getch();
/*读入任意字符*/
gotoxy(1,1);
********************MENU*********************\n\n"
0.Enter\n"
1.List\n"
2.Searchonname\n"
3.Delete\n"
4.add\n"
5.Save\n"
6.Load\n"
7.displayonorder\n"
8.sorttomakenewfile\n"
9.Quickseek\n"
10.copy\n"
11.Quit\n"
***********************************************\n"
do{
\nEnteryouchoice(0~11):
"
/*提示输入选项*/
/*输入选择项*/
c=atoi(s);
/*将输入的字符串转化为整型数*/
}while(c<
0||c>
11);
/*选择项不在0~11之间重输*/
returnc;
/*返回选择项,主程序根据该数调用相应的函数*/
/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
intenter(ADDRESSt[])
inti,n;
char*s;
\npleaseinputnum\n"
/*提示信息*/
/*输入记录数*/
pleaseinputrecord\n"
/*提示输入记录*/
i++)
t[i].name,t[i].units,t[i].tele);
----------------------------------------------\n"
/*返回记录条数*/
/*显示记录,参数为记录数组和记录条数*/
voidlist(ADDRESSt[],intn)
\n\n*******************ADDRESS******************\n"
if((i+1)%10==0)/*判断输出是否达到10条记录*/
Pressanykeycontinue...\n"
/*压任意键继续*/
************************end*******************\n"
/*查找记录*/
/*删除函数,参数为记录数组和记录条数*/
intdelete(ADDRESSt[],intn)
/*要删除记录的姓名*/
intch=0;
pleasedeletedname\n"
/*输入姓名*/
/*调用find函数*/
n-1)/*如果i>
n-1超过了数组的长度*/
nofoundnotdeleted\n"
/*显示没找到要删除的记录*/
/*调用输出函数显示该条记录信息*/
Areyousuredeleteit(1/0)\n"
/*确认是否要删除*/
ch);
/*输入一个整数0或1*/
if(ch==1)/*如果确认删除整数为1*/
for(j=i+1;
j<
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*/
/*插入记录函数,参数为结构体数组和记录数*/
intadd(ADDRESSt[],intn)/*插入函数,参数为结构体数组和记录数*/
---------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 同学 通讯录 信息管理
![提示](https://static.bdocx.com/images/bang_tan.gif)