C语言程序设计实习报告Word文档下载推荐.docx
《C语言程序设计实习报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实习报告Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
系统功能模块图:
输入新信息:
可输入新的数据。
可以添加通讯录记录,依次输入姓名、电话号码、分类、电子邮箱后,会提示是否继续添加。
输入姓名删除,输入欲删除的那个人的名字后,会自动删除他(她)的记录内容
可按1、办公类2、个人类3、商务类分类查询
输入欲修改的那个人的名字后,再依次输入姓名、电话号码、分类、电子邮箱即可完成修改。
下面就是总的程序流程图:
三、具体设计
代码如下:
#include"
stdio.h"
string.h"
#defineN15
typedefstructpeople
{
charname[20];
charnum[20];
charsort[20];
charemail[30];
}PEO;
PEOpeo[N];
voidenter();
voidmenu();
voidbrowse();
voidadd();
voidmodify();
voiddel();
modify_data(inti,intn);
voidprintf_face();
voidprintf_one(inti);
voidinput(inti);
voidsave(intn);
load();
voidprintf_sort(inti);
voidno_input(inti,intn);
voidname_input(inti,intn);
voidprintf_back();
voidmenu()
intn,w1;
do
{
puts("
\t\t\t**手机通讯录**\n"
);
\t\t****************菜单****************\n\n"
\t\t\t\t1.输入新信息"
\t\t\t\t2.查看类型"
\t\t\t\t3.添加信息"
);
\t\t\t\t4.修改信息"
\t\t\t\t5.删除信息"
\t\t\t\t6.返回"
\n\n\t\t***************************************\n"
printf("
选择所需功能(1-6):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
6)
{
w1=1;
getchar();
}
elsew1=0;
}while(w1==1);
switch(n)
case1:
enter();
break;
case2:
browse();
case3:
add();
case4:
modify();
case5:
del();
case6:
exit(0);
}
}
main()
menu();
voidenter()
inti,n;
printf("
输入联系人的个数(0-%d):
"
N-1);
scanf("
\n现在请开始输入\n\n"
for(i=0;
i<
n;
i++)
\n输入%d个联系人信息.\n"
i+1);
input(i);
if(i!
=0)save(n);
printf_back();
voidbrowse()
inti,k,n;
PEOp;
n=load();
\n\n选择类型sort(a:
办公类b:
个人类c:
商业类):
%s"
p.sort);
\n\tNamenum\n"
if(strcmp(p.sort,peo[i].sort)==0)
k=i;
printf_sort(k);
printf("
\n"
\n\n"
menu();
voidadd()
inti,k,m,n,j;
FILE*fp;
您要添加多少个联系人信息(1-%d):
N-n);
m);
k=m+n-1;
for(i=n;
=k;
if(i>
N-1)
储存已满,不能添加新信息"
\n输入%d个联系人记录.\n"
i-n+1);
if((fp=fopen("
shouji.txt"
"
ab"
))==NULL)
无法打开文件\n"
for(j=n;
j<
i;
j++)
if(fwrite(&
peo[j],sizeof(structpeople),1,fp)!
=1)
文件读写出错\n"
fclose(fp);
printf_back();
voidmodify()
inti,k,n,w0=1,w1,w2=0;
do
k=-1;
printf_face();
for(i=0;
if((i!
=0)&
&
(i%5==0))
{
printf("
\n\n请记住你要修改的联系人姓名,按任意键继续..."
getchar();
puts("
}
printf_one(i);
\n\n请输入您所需修改的联系人姓名!
name:
scanf("
p.name);
for(i=0;
if(strcmp(p.name,peo[i].name)==0)
{
k=i;
p=peo[i];
}
if(k==-1)printf("
\n\n输入错误!
请重新输入"
}while(k==-1);
printf_one(k);
w1=modify_data(k,n);
if(w1==1)
\nSuccessful^_^.\n\n确认需要修改其他信息?
\n\n\t1).是2).返回\t[]\b\b"
w0);
w2=1;
else
w0=0;
if(w2==1)
peo[k]=p;
if(w0!
=1&
w2==1)
save(n);
}while(w0==1);
voiddel()
intk,w1,w0=0,w2=0,n,i;
\n\n请记住你要删除的联系人姓名,按任意键继续...."
do
\n\n请输入需要删除的联系人姓名name:
请重试"
\n确认删除?
\n\n\t1).确认2).重新删除3).返回[]\b\b"
w1);
peo[k].name[0]=0;
\nSuccessful^_^.\n\n需要删除其他数据?
modify_data(inti,intn)
intc,w1;
\nmodifyby=>
\n\n1).姓名2).电话3).类型4).邮箱地址\n5).所有数据6).取消并返回"
请选择你要修改的选项(1-6):
c);
if(c>
6||c<
1)
puts("
\n选择错误!
请重新选择!
getchar();
}while(c>
1);
switch(c)
case1:
name_input(i,n);
case2:
no_input(i,n);
case3:
printf("
sort:
scanf("
peo[i].sort);
case4:
email:
peo[i].email);
case5:
input(i);
\nNow:
printf_one(i);
\n确认修改?
\n\n\t1).是2).重新修改3).立即返回[]\b\b"
}while(w1==2);
return(w1);
voidprintf_face()
\n\t姓名电话类型邮箱地址\n"
voidprintf_one(inti)
%10s%14s%10s%10s"
peo[i].name,peo[i].num,peo[i].sort,peo[i].email);
voidinput(inti)
name_input(i,i);
no_input(i,i);
sort(a:
voidsave(intn)
inti;
wb"
\nCannotopenfile\n"
returnNULL;
if(peo[i].name[0]!
=0)
peo[i],sizeof(structpeople),1,fp)!
filewriteerror\n"
fclose(fp);
load()
rb"
\nCannotopenfile\n"
!
feof(fp);
fread(&
peo[i],sizeof(structpeople),1,fp);
return(i-1);
voidprintf_sort(inti)
%10s%14s"
peo[i].name,peo[i].num);
voidno_input(inti,intn)
intj,w1,k;
w1=0;
NO.:
peo[i].num);
for(j=0;
peo[i].num[j]!
='
\0'
;
if(peo[i].num[j]<
'
0'
||peo[i].num[j]>
9'
)
输入错误!
只能输入数字(0-9).请重新输入!
w1=1;
if(w1!
for(k=0;
k<
k++)
if(k!
=i&
strcmp(peo[k].num,peo[i].num)==0)
{
puts("
这个记录不存在,请重新输入!
w1=1;
}
voidname_input(inti,intn)
intk,w1;
Name.:
peo[i].name);
for(k=0;
if(k!
strcmp(peo[i].name,peo[k].name)==0)
voidprintf_back()
\n\n\tSuccessful.^_^\n\n"
四、界面分析
1、开始界面
2、输入功能
3、查看功能
4、添加功能
5、修改功能
6、删除功能
7、返回
五、心得体会
本次的C程序实设计实验是我进入大学以来第一次独立设计的实验。
通过自己动手,发现和解决问题,我发现了自己的许多缺陷与不足。
平时没有掌握好的知识在这次实验中彻底暴露出来。
在经过不断思考和总结,以及不断查阅资料和上机运行,尝试再尝试的过程中,我终于解决其中大部分问题,但是还是存在一些问题无法解决。
但我相信,在今后的自我学习过程中能够解决好它们。
当我选择手机通讯录管理系统这个题目时,一开始想运用大量子函数及指针来完成,但是在仔细的构思之后,觉得不一定要用很多子函数解决问题,于是改变了编程思路,令程序设计起来没有那么复杂,界面看起来也清爽整洁多了。
通过结构体的使用,令定义方便简洁;
通过大量的使用if和while、do……while、switch…case语句后,充分体会了他们的强大功能与作用;
指针的运用也给设计带来了方便。
当然还有不少文件的读写问题,不过通过不断测试以及上网查询之后都顺利解决了。
在C课程设计过程中,遇到的许许多多的困难都让人抓狂。
在软件一次次的调试失败下想放弃的念头也不断出现,但最后我还是让自己坚持了下来,毫不畏惧困难。
在同学的帮助与老师之前的讲解下,我总算是不太顺利的完成了课程设计。
当软件调试成功时那种喜悦的感觉,真好,它是没有什么东西可以代替,这也有也是程序设计员都会为之兴奋之事吧。
在程序的编写过程中,发现的很多的知识的漏洞和缺陷,都将是我以后学的借鉴之处,通过不足,才知道如果改进、完善,才会更迫切的努力学习来弥补不足。
这次的最深刻的体会就是,书上和老师教的内容是很有限的,如果真的想学会C语言和其他科目,我们需要的不但是老师的教导,更应该不断地靠自己去学习,去向他人请教,积极地去了解和掌握更多的知识,而不能被动学习,这样我们才能编出更好的C程序,这样我们才能学好更多。