C语言实验报告.docx

上传人:b****9 文档编号:26286081 上传时间:2023-06-17 格式:DOCX 页数:26 大小:576.84KB
下载 相关 举报
C语言实验报告.docx_第1页
第1页 / 共26页
C语言实验报告.docx_第2页
第2页 / 共26页
C语言实验报告.docx_第3页
第3页 / 共26页
C语言实验报告.docx_第4页
第4页 / 共26页
C语言实验报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C语言实验报告.docx

《C语言实验报告.docx》由会员分享,可在线阅读,更多相关《C语言实验报告.docx(26页珍藏版)》请在冰豆网上搜索。

C语言实验报告.docx

C语言实验报告

 

C语言集中上机

实习报告

 

指导教师:

纪良浩

姓名:

梁皓

学号:

2012211516

班级:

0401204

时间:

2013年5月27日

 

实验题目通讯录

1、实验目的

为综合应用C语言程序设计理论知识、进一步提高自己综合解决问题、协调工作的能力和良好的软件开发习惯,所以设计一个个人通讯录管理系统,拥有对数据的各种操作功能,实现对通讯录的管理,从而巩固C语言程序设计。

二、实验内容

1.通讯录需求分析

2.通讯录总体设计

3.通讯录算法设计

4.通讯录代码编写

5.程序测试

6.实验心得体会

三、实践过程

1.通讯录应实现以下功能:

添加:

添加通讯录记录

显示:

显示通讯录记录

删除:

删除通讯录记录

查询:

查询通讯录记录

修改:

修改通讯录记录

保存:

将信息保存到文件

2.功能实现分析

首先该程序需要一个主菜单设计如下

添加:

可以添加通讯录记录,依次输入姓名、电话号码、通讯地址、邮政编码后,会提示是否继续添加。

显示:

可以以表格形式输出所有通讯录里的记录

删除:

输入欲删除的那个人的名字后,会自动删除他(她)的记录内容

查询:

可以选择用姓名、电话、地址三种方式查询

修改:

输入欲修改的那个人的名字后,再依次输入姓名、电话号码、通讯地址、邮政编码即可完成修改

保存:

输入文件名(带后缀名)后,即可将通讯录信息保存到文件

分别将其设计后大概为:

①添加:

②显示:

 

YY

N

N

 

 

③删除:

④查询(以姓名为例):

当然在代码的实现方面我也遇到了很多困难,毕竟这也是有一定难度的,也别是对于我这种很低端的人来说。

首先遇到的困难是程序该如何设计,第一步真的很难迈出。

做一件事情首先要有完整计划才能事半功倍,当然写一个程序,一个良好的程序设计是必须的。

在这里我去查找了很多资料和C语言教科书。

成功的解决了这个问题。

后来再如何判断是否存在此人这一位问题中遇到了瓶颈,后来经过查资料,同学讨论解决了该问题。

做菜单也遇到了一点困难,最后通过XX知道了解到可以用f(;;)做菜单在内置break等语句实现菜单功能。

⑤修改:

当然在编写代码中业余到了很难

4.程序测试

1.主菜单显示

2.添加功能

选择Y继续程序

选择N结束添加。

3.显示记录

4.查询记录(以姓名查询为例)

5.删除记录

6.修改记录

7.保存记录

8.退出程序

五、实验心得

在这次的C语言上机实验中,我收获颇丰。

不仅巩固了以前学习的C语言的知识同时锻炼了自己的动手操作能力和综合解决问题、协调工作的能力和养成了良好的软件开发习惯。

6、源代码

#include

#include/*standardlibrary标准库头文件*/

#include

typedefstruct

{

charname[10];/*姓名*/

charnum[15];/*号码*/

charpostcode[20];/*邮政编码*/

charadds[30];/*地址*/

}Person;

Personper[80];/*定义结构体*/

intmenu_select()/*菜单函数*/

{

charc;

do{

system("cls");

printf("\t\t通讯录\n");/*\t横向跳到下一制表位置*/

printf("\n");

printf("\t\t1.添加记录\n");

printf("\t\t2.显示记录\n");

printf("\t\t3.删除记录\n");

printf("\t\t4.查询记录\n");

printf("\t\t5.修改记录\n");

printf("\t\t6.保存记录\n");

printf("\t\t0.退出程序\n");

printf("\n");

printf("请您选择(0-6):

");

c=getchar();

}while(c<'0'||c>'6');/*判断C的大小,如果不是0-6.则循环上一过程*/

return(c-'0');

}

intInput(Personper[],intn)/*输入功能函数*/

{inti=0;

charsign,x[10];

while(sign!

='n'&&sign!

='N')

{

printf("\t姓名:

");

scanf("\t%s",per[n+i].name);

printf("\t电话号码:

");

scanf("\t%s",per[n+i].num);

printf("\t通讯住址:

");

scanf("\t%s",per[n+i].adds);

printf("\t邮政编码:

");

scanf("\t%s",per[n+i].postcode);

gets(x);

printf("\n\t是否继续添加?

(Y/N)");

scanf("\t%c",&sign);

i++;

}

return(n+i);

}

voidDisplay(Personper[],intn)/*显示函数*/

{

inti;

printf("----------------------------------------------------------------------\n");/*格式*/

printf("姓名电话号码通讯地址邮政编码\n");

printf("----------------------------------------------------------------------\n");

for(i=1;i

{

printf("%-8s%-13s%-15s%-15s\n",per[i-1].name,per[i-1].num,per[i-1].adds,per[i-1].postcode);

if(i>1&&i%10==0)

{

printf("\t-----------------------------------\n");

printf("\t");

system("pause");/*等待接收信号,重新运行*/

printf("\t-----------------------------------\n");

}

}

printf("----------------------------------------------------------------------\n");

system("pause");

}

intDelete_a_record(Personper[],intn)/*删除函数*/

{

chars[20];

inti=0,j;

printf("\t请输入想删除记录中的名字:

");

scanf("%s",s);

while(strcmp(per[i].name,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return(n);

}

for(j=i;j

{

strcpy(per[j].name,per[j+1].name);

strcpy(per[j].adds,per[j+1].adds);

strcpy(per[j].postcode,per[j+1].postcode);

}

printf("\t\t\t已经成功删除!

\n");

return(n-1);

}

voidQuery_a_record(Personper[],intn)/*查找函数*/

{

intm;

printf("\t\n请选择查询方式:

\n");

printf("\n");

printf("\t1------姓名\n");

printf("\t2------电话\n");

printf("\t3------地址\n");

printf("\t4------返回\n");

printf("\n");

printf("请选择(1-4):

");

scanf("%d",&m);

while(m!

=1&&m!

=2&&m!

=3&&m!

=4)

{

printf("输入错误,请重新选择:

");

scanf("%d",&m);

}

if(m==1)/*利用姓名查询*/

{

chars[20];

inti=0;

printf("\t请输入想查询的姓名:

");

scanf("\t%s",s);

while(strcmp(per[i].name,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t电话号码:

%s\n",per[i].num);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t邮政编码:

%s\n",per[i].postcode);

}

if(m==2)/*利用电话查询*/

{

chars[20];

inti=0;

printf("\t请输入想查询的电话:

");

scanf("\t%s",s);

while(strcmp(per[i].num,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t邮政编码:

%s\n",per[i].postcode);

}

if(m==3)/*利用地址查询*/

{

chars[20];inti=0;

printf("\t请输入想查询的地址:

");

scanf("\t%s",s);

while(strcmp(per[i].adds,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t电话号码:

%s\n",per[i].num);

printf("\t邮政编码:

%s\n",per[i].postcode);

}

}

voidChange(Personper[],intn)/*修改记录功能函数*/

{

chars[20];

inti=0;

printf("\t请输入想修改的记录中的名字:

");

scanf("%s",s);

while(strcmp(per[i].name,s)!

=0&&i

{

i++;

}

if(i==n)

{

scanf("\t%s",s);

while(strcmp(per[i].num,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t邮政编码:

%s\n",per[i].postcode);

}

if(n==3)

{

chars[20];

inti=0;

printf("\t请输入想查询的地址:

");

scanf("\t%s",s);

while(strcmp(per[i].adds,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t电话号码:

%s\n",per[i].num);

printf("\t邮政编码:

%s\n",per[i].postcode);

}

printf("\t请输入想修改的记录中的名字:

");

scanf("%s",s);

while(strcmp(per[i].name,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t姓名:

");

scanf("\t%s",per[i].name);

printf("\t电话号码:

");

scanf("\t%s",per[i].num);

printf("\t通讯住址:

");

scanf("\t%s",per[i].adds);

printf("\t邮政编码:

");

scanf("\t%s",per[i].postcode);

printf("\t修改成功!

");

}

voidWritetoText(Personper[],intn)/*保存功能*/

{

inti=0;

FILE*fp;/*定义文件指针*/

charfilename[20];/*定义文件名*/

printf("\t保存到文件\n");

printf("\t请输入所保存的文件名(需要加上后缀名):

");/*输入文件名*/

scanf("\t%s",filename);

if((fp=fopen(filename,"w"))==NULL)

{

printf("\t无法打开文件\n");

system("pause");

return;

}

fprintf(fp,"******************************************通讯录*****************************************\n");

fprintf(fp,"姓名电话号码通讯地址邮政编码\n");

fprintf(fp,"------------------------------------------------------------------------------------------\n");

while(i

{

fprintf(fp,"%-8s\t%-13s\t%-15s\t%-15s\n",per[i].name,per[i].num,per[i].adds,per[i].postcode);

i++;

}

fprintf(fp,"------------------------------------------------------------------------------------------\n");

fprintf(fp,"***************************************共有%d条记*****************************************\n",n);

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

printf("保存成功!

\n");}

voidmain()/*主函数*/

{

intn=0;

for(;;)

{

switch(menu_select())

{

case1:

printf("\n\t添加记录到通讯录\n");/*添加记录*/

n=Input(per,n);

break;

case2:

printf("\n\t\t\t通讯录记录表\n");/*显示记录*/

Display(per,n);

break;

case3:

printf("\n\t从通讯录中删除记录\n");

n=Delete_a_record(per,n);/*删除记录*/

printf("\t");

system("pause");

break;

case4:

printf("\n\t在通讯录中查找记录\n");

Query_a_record(per,n);/*查找记录*/

printf("\t");

system("pause");

break;

case5:

printf("\n\t修改通讯录中的记录\n");

Change(per,n);/*修改数据*/

printf("\t");

system("pause");

break;

case6:

printf("\n\t保存功能\n");

WritetoText(per,n);/*保存数据*/

printf("\t");

system("pause");

break;

case0:

printf("\n\t\t谢谢使用,再见!

\n");/*结束程序*/

printf("\n\t\t");

system("pause");

exit(0);/*无条件的退出程序*/

}

}

}

7、参考文献

谭浩强,C程序设计(第二版),北京:

清华大学出版社。

陈朔鹰,C语言程序设计习题集,北京:

人民邮电出版社。

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

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1