C语言通讯录3.docx

上传人:b****8 文档编号:13189711 上传时间:2023-06-11 格式:DOCX 页数:13 大小:29.91KB
下载 相关 举报
C语言通讯录3.docx_第1页
第1页 / 共13页
C语言通讯录3.docx_第2页
第2页 / 共13页
C语言通讯录3.docx_第3页
第3页 / 共13页
C语言通讯录3.docx_第4页
第4页 / 共13页
C语言通讯录3.docx_第5页
第5页 / 共13页
C语言通讯录3.docx_第6页
第6页 / 共13页
C语言通讯录3.docx_第7页
第7页 / 共13页
C语言通讯录3.docx_第8页
第8页 / 共13页
C语言通讯录3.docx_第9页
第9页 / 共13页
C语言通讯录3.docx_第10页
第10页 / 共13页
C语言通讯录3.docx_第11页
第11页 / 共13页
C语言通讯录3.docx_第12页
第12页 / 共13页
C语言通讯录3.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言通讯录3.docx

《C语言通讯录3.docx》由会员分享,可在线阅读,更多相关《C语言通讯录3.docx(13页珍藏版)》请在冰点文库上搜索。

C语言通讯录3.docx

C语言通讯录3

 

一系统功能和原始数据

⑴通讯录信息和数据格式

⑵程序功能

二程序总体设计

⑴数据结构

⑵模块划分

三功能块函数设计和调试

(1)/*菜单*/

(2)/*添加条目*/

(3)/*输出学生信息*/

(4)/*查找信息1.按姓名*/

(5)/*删除信息*/

(6)/*文件信息输出到链表*/

四输出结果

五归纳总结

(1)开发经验

(2)感想和心得体会

(3)设计中尚存的不足之处

(4)实训中遇到的问题及解决方法

 

一.       系统功能和原始数据

⑴通讯录信息和数据格式

姓名  单位 地址邮箱电话

⑵程序功能

<1>输入记录<2>显示全部记录<3>查找记录<4>删除记录<5>插入记录<6>保存文件<>7读入文件<8>按序号显示记录<9>按姓名排序<10>快速查找记录

二.程序总体设计

⑴  数据结构

    依据给定的通讯录信息和数据格式,链表结点必须用结构实现。

结构类型的层次结构:

structTelephone

{

charnumber[200];

charname[20];

charoff[20];

charaddrass[20];

charmail[20];

chartelephone[20];

structTelephone*next;

};⑵模块划分

主函数

main()

TEL*head=NULL;

voidMenu();/*菜单*/

voidCrease();/*添加条目*/

voidprint();/*输出条目*/

voidSearch();/*查找条目(按姓名)*/

voidDelate();/*删除信息*/

voidSave();/*保存到文件*/

voidOpen();/*打开文件*/

voidChange();/*修改信息*/

voidArrange();/*排序*/

voidmain()

{

charch;

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)/*菜单*/

voidMenu()

{

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)/*添加条目*/

voidCrease()

{

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)/*输出学生信息*/

voidprint()

{

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.按姓名*/

voidSearch()

{

TEL*p;

charfindname[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)

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);

}

}

(5)/*删除信息*/

voidDelate()

{

charfindname[20];/*先查找后删除*/

TEL*p=head,*pr;

printf("输入要删除的姓名:

");

scanf("%s",findname);

if(head->next==NULL)

{

printf("空链表!

\n");

return;

}

while((strcmp(p->name,findname)!

=0)&&p->next!

=NULL)

{

pr=p;

p=p->next;

}

if(strcmp(findname,p->name)==0)/*输出删除信息*/

{

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);

if(p==head->next)

head->next=p->next;

else

pr->next=p->next;

free(p);

printf("此信息已删除!

");

}

elseprintf("无此信息!

\n");

}

voidSave()/*保存链表信息到文件并释放内存空间*/

{

TEL*p=NULL;

FILE*fp;

char*Book="books.txt";

if(head==NULL)

{

printf("\n记录为空!

\n");

return;

}

else

p=head->next;

if((fp=fopen(Book,"wb+"))==NULL)

{

printf("\n打不开文件!

\n");

return;

}

while(p!

=NULL)/*保存信息*/

{

fwrite(p,sizeof(TEL),1,fp);

p=p->next;

}

printf("保存完毕!

\n");

fclose(fp);

/*****释放链表空间*****/

for(;head->next!

=NULL;)

{

p=head->next;

head->next=head->next->next;

free(p);

}

free(head);

}

(6)/*文件信息输出到链表*/

voidOpen()

{

FILE*fp;

TEL*p1=NULL,*p2=NULL,*temp=NULL;

if((fp=fopen("books.txt","rb+"))==NULL)

{

printf("\n****************通讯录******************\n");

return;

}

head=(TEL*)malloc(sizeof(TEL));

head->next=NULL;

temp=p2=head;

while(!

feof(fp))/*循环读取*/

{

p1=(TEL*)malloc(sizeof(TEL));

temp=p2;

p2->next=p1;

p2=p1;

fread(p1,sizeof(TEL),1,fp);

}

temp->next=NULL;

fclose(fp);/*关闭文件*/

}

voidChange()

{

TEL*p;

charname[20];

printf("输入要修改人的姓名:

");

scanf("%s",name);

for(p=head->next;p!

=NULL;p=p->next)

{

if(strcmp(p->name,name)==0)

{printf("**************通讯录系统*********************\n");

printf("编号\t姓名\t单位\t地址\t邮箱\t电话\n");

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);

printf("输入要修改的内容:

\n");

printf("输入编号:

");

scanf("%s",p->number);

printf("输入姓名:

");

scanf("%s",p->name);

printf("输入单位:

");

scanf("%s",p->off);

printf("输入地址:

");

scanf("%s",p->addrass);

printf("输入邮箱:

");

scanf("%s",p->mail);

printf("输入电话:

");

scanf("%s",p->telephone);

}

elseprintf("无此信息!

\n");

}

}

四输出结果

5、归纳总结

5.1开发经验

通过对本题目的开发,体会到要掌握以下几点内容。

●大程序的设计风格。

按“自顶向下,逐步细化,模块化”的方法进行程序设计。

●编写主函数,并进行测试与调试。

当被调函数又需要调用其他函数时,也要遵循逐步细化的原则。

C语言提供丰富的库函数,编程序时要善于使用库函数,避免不必要的劳动。

●定义函数时,应选好参数的个数和数据类型。

5.2实训中遇到的问题及解决方法

在实训过程中,我遇到许多的问题,比如有些语句有语法错误,表达式不正确,或缺少等。

或者是没有申明某些变量。

这些都比较容易解决。

通过查阅课本和请教同学,在经过WIN-TV编译,知道哪有错误就改一下就行。

5.3设计中尚存的不足之处

关于这次的程序,也有挺多不足的地方。

首先,我觉得程序还不够完善,比如没有排序前和排序后的学生记录输出结果显示和程序没能增加更多的学生呢成绩记录,也就不能查询更多的学生成绩情况,甚至有些地方有点乱;其次,;最后,就是该程序界面不够美观大方。

5.4感想和心得体会

1.用模块化设计方法,将各子功能设计成函数,

可以先将各子函数先用主函数调试成功后,

再将各子函数连接成完整的程序源代码,

运用模块化程序设计的思想对于大的工程项目有很大益处,

并且是已成为一种行业规则,练习函数的实现将有助于未来的挑战和机遇。

2.通过这次实训,我感触甚深,要把所学的理论知识运用于解决实际问题不仅要付出艰辛的劳动,还得要有科学的方法和坚持不懈的努力。

加上我们只是学了一个学期的c语言,我们所学的知识还不足以独立编写程序代码。

但是我认为只要我们认真的去学去做,我们会受益非浅。

这次实训让我进一步理解了“编程是什么”,“如何去编程”,“编程的目的又是什么”,……发现自己的知识竟是如此贫乏,顿时感到了压力的存在,从而也激发了我的学习热情。

它会成为我今后不断进取、永不懈怠的动力。

在整个实训过程中,老师给了我很大的帮助,使我由不了解怎样运用数组到逐渐懂得数组的构造及掌握数组结构。

而且我能够坚持虚心的向老师以及同学请教问题。

它使我明白了虚心好学的重要性,更让我懂得了如何跟老师同学去相处、去沟通。

没有老师和同学们的无私帮助,我不可能圆满完成这次实训任务。

非常感谢帮助过我的所有老师和同学们,在此,谨向他们一并表示感谢!

我开始喜欢这个程序设计了,尤其觉得它是很有挑战性的,是对知识点扎实程度的考察,也是对个人能力的考察,还是对个人化毅力的考验。

它让我明白做任何事都不应该轻易放弃。

这样的课程设计,既有利于教学,又可以教会学生书本以外的很多知识。

现在我对它越来越感兴趣,今后我会更加关注C语言程序,把C语言学好。

希望老师以后多多指导,给予一定的帮助!

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2