C语言通讯录3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一系统功能和原始数据
⑴通讯录信息和数据格式
⑵程序功能
二程序总体设计
⑴数据结构
⑵模块划分
三功能块函数设计和调试(1)/*菜单*/
(2)/*添加条目*/
(3)/*输出学生信息*/ (4)/*查找信息1.按姓名*/ (5)/*删除信息*/
(6)/*文件信息输出到链表*/
四输出结果
五归纳总结
(1)开发经验
(2)感想和心得体会
(3)设计中尚存的不足之处
(4)实训中遇到的问题及解决方法
一.系统功能和原始数据
⑴通讯录信息和数据格式
姓名单位地址邮箱电话
⑵程序功能
<1>输入记录<2>显示全部记录<3>查找记录<4>删除记录<5>插入记
录<6>保存文件<>7读入文件<8>按序号显示记录<9>按姓名排序<10>快速查找记录
二.程序总体设计
⑴数据结构
依据给定的通讯录信息和数据格式,链表结点必须用结构实现。结构类型的层次结构:
struct Telephone
{
char number[200];
char name[20];
char off[20];
char addrass[20];
char mail[20];
char telephone[20];
struct Telephone *next;
};⑵模块划分
主函数
main()
TEL *head=NULL;
void Menu(); /*菜单*/
void Crease(); /*添加条目*/
void print(); /*输出条目*/
void Search(); /*查找条目(按姓名)*/
void Delate(); /*删除信息*/ void Save(); /*保存到文件*/
void Open(); /*打开文件*/
void Change(); /*修改信息*/
void Arrange(); /*排序*/
void main()
{
char ch;
Open(); /*打开文件*/
while(1)
{
Menu(); /*显示菜单*/
scanf(" %c",&ch);
switch(ch)
{
case '1':Crease(); /*添加条目*/
break;
case '2':Search(); /*查找条目1.按姓名*/
break;
case '3':Change(); /*修改信息*/
print();
break;
case '4': Delate(); /*删除信息*/
print(); /*输出删除后的结果*/
break;
case '5':print(); /*输出条目*/
break;
case '0':Save(); /*保存并释放内存*/
exit(0); /*退出*/
break;
default:
printf("选择错误!");
break;
}
}
}三.功能块函数设计和调试
(1)/*菜单*/
void Menu()
{
printf("\n*****************通讯录系统*****************\n");
printf("\t1.录入。\n");
printf("\t2.按姓名查询\n");
printf("\t3.修改信息\n");
printf("\t4.删除\n");
printf("\t5.输出\n");
printf("\t0.保存并退出!\n");
printf("*************************************************\n");
printf("\t请选择:");
}
(2)/*添加条目*/
void Crease()
{
TEL *p1=NULL,*p2=NULL;
p1=(TEL *)malloc(sizeof(TEL)); /*申请结点*/
printf("输入编号:");
scanf("%s",p1->number);
printf("输入姓名:"); /*添加信息*/
scanf("%s",p1->name);
printf("输入单位:");
scanf("%s",p1->off);
printf("输入地址:");
scanf("%s",p1->addrass);
printf("输入邮箱:");
scanf("%s",p1->mail);
printf("输入电话:");
scanf("%s",p1->telephone);
p1->next=NULL; /*保存到链表*/
if(head==NULL)
{
head=(TEL *)malloc(sizeof(TEL)); /*申请空间*/
head->next=p1;
}
else
{
for(p2=head;p2->next!=NULL;p2=p2->next); /*找到结点尾*/
p2->next=p1;
}
printf("此信息已添加!");
}
(3)/*输出学生信息*/
void print()
{
TEL *p=NULL;
if(head==NULL)
{
printf("此通讯录中无记录,请输入记录后在使用本功能!\n");
return;
}
printf("**************通讯录系统*********************\n"); /*输出信息*/
printf("编号\t姓名\t单位\t地址\t邮箱\t电话\n");
for(p=head->next;p!=NULL;p=p->next)
printf("%s\t%s\t%s\t%s\t%s\t%s\n",p->number,p->name,p->off,p->addrass ,p->mail,p->telephone);
}
(4)/*查找信息1.按姓名*/
void Search()
{
TEL *p;
char findname[20];
printf("请输入要查找的姓名:");
scanf("%s",findname);
printf("**************通讯录系统*********************\n");
printf("编号\t姓名\t单位\t地址\t邮箱\t电话\n");
for(p=head;p!=NULL;p=p->next)
{
if(strcmp(p->name,findname)==0)