公文素材库 首页

C语言实训报告

时间:2019-05-29 15:24:58 网站:公文素材库

C语言实训报告

在这个星期里,我们在专业老师带领下进行了C语言程序实训练习。一周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用的技能!

首先,在实训中的第一步是编写一个图书管理系统的程序,虽然我们已经对C语言这门课学习了一学期,对其有一定了解,但运用起来十分困难,通过到网上查资料,调试等,终于编写好此程序。虽然只是一个程序,但所用的知识却都是我们本学期学习的重点知识。在做题的过程中让我们把这些知识复习了一遍,强化了知识!

其次,平时我们学C语言几乎都是为了考试或者做一些比较常规的题目,而这次实训却给我们将所学知识运用于解决实际问题的机会,也让我们感受到了编写软件程序的乐趣。但是不仅仅是如此,更为重要的是在运用所学知识的过程中,记住这些知识,并能够广泛的运用!再次,通过实训,让我了解到在编写程序中,真的是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。没能够使自己编写出来的程序运行出想要的结果,意味着这是一个不理想的程序,对于本次编写来说则是失败的。同时,我也了解到了编程需要很大的耐心,因为平时练习的都是小程序,所以句段比较少,一些错误都很容易被检查出来,但是这次实训却是上百段的语句,难以检查,似乎也没有经验去怎么检查,所以每次我们都需要一点点去调试,然后找到正确的方法、格式。虽然为了编写这个程序浪费了很多时间,也很累。但是却让我了解了图书的管理系统,不再像以前那样感觉好奇。而且也学会了简单的编程,对以后生活有很大的用处。通过实训,我们有能力自己确定其他的专题进行编程,可以丰富我们的知识以及见识。

通过这次为数几天的C语言实训,让我们了解了更多知识。也巩固了我们的知识理论,熟练的掌握了C语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握系统使用。对我们将来到社会工作有很大的帮助。同时他也让我知道,只要努力,任何东西都不会太难。

扩展阅读:C语言实训报告

《C语言程序设计》实训报告

课题名称:通讯录管理系统

专业:计算机信息管理班级:09信管(1)班学号:姓名:指导教师:

201*年7月1日

目录

1课程设计目的12课程设计题目13课程设计报告内容14结论105结束语106参考书目107程序运行108附录:(源程序清单)实训报告

一、课程设计题目

《通讯录管理系统》

二、实训目的

(1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。(2)掌握C的基本概念和基础知识。

(3)通过训练能够读懂较为复杂的C语言源程序并具备基本C语言程序设计的能力。(4)熟练掌握各种常用类的定义,继承,文件的应用,为更好的理解面向对象打下更好的基础。

(5)通过实训,培养自己编写、调试、分析大型应用程序的能力。(6)掌握面向对象的基本原理,提高学生综合程序设计的能力。

(7)培养自己独立解决问题,查找资料的能力。同学之间相互帮助,相互交流,相互合作的团队精神。

(8)培养自己良好的学习兴趣,独立的编程风格。

(9)通过实训检查自己学习上的不足,达到熟练掌握C语言的基本知识和技能。

三、课程设计报告内容

3.1功能要求

该系统运行在DOS环境下,人机界面为命令行文本界面。完成的任务是对若干人的通信录信息进行管理,且数据保存到文件中。实现的主要功能是:

添加:增加一个或几个人的通信录信息。删除:删除已输入的通信录信息。查询:根据输入的姓名查找通信录信息。修改:根据输入的姓名修改通信录信息。显示:输出所有通信录信息。3.2设计环境

所使用的语言采用标准C,开发工具选用在Windows环境下的C-free、Win-TC或者VisualC++6.0。3.3数据结构

实训报告

本系统是对通信录的信息进行管理,通信录记录的信息采用C的结构体数据类型描述,定义如下:

structren/*定义个人资料结构体类型*/{

charname[10];/*姓名*/intage;/*年龄*/chartel[12];/*电话号码*/charcity[20];/*城市*/charunits[30];/*所在单位*/charnote[20];/*备注*/};

3.4实现方法及主要算法分析

(1)主界面的设计:主界面采用文本菜单的形式,各功能调用通过菜单进行选择。采用循环处理,以便执行完某项处理后,仍可选择其他项处理。在循环内先显示提示信息,然后读取用户输入,使用switch语句对用户的输入进行判断,分别调用相应的模块,当某模块结束后再次回到文本菜单,直到用户选择结束程序菜单,才退出循环,从而退出系统。(2)外部文件的类型:文件采用的二进制的文件,对文件的读写采用顺序文件的方式,并使用fread和fwrite等函数对文件进行操作。

(3)清屏函数:一般由上一级菜单屏幕进入下一级菜单屏幕或由下一级菜单屏幕返回上一级菜单屏幕都需要清除屏幕原来显示的内容。同时在调用程序的过程中,记录需要清屏的位置,然后修改代码,加入clrscr()函数清屏。

(4)提示信息:一般的输入与输出需有相应的提示信息,以增加用户的交互性,增加输出的可读性,以帮助用户使用程序。

(5)设置颜色:textbackground()、textcolor()函数设置背景和前景颜色(6)光标定位:gotoxy(列,行);光标定位

实训报告

3.5模块设计

根据功能要求,本系统为五大主要模块,具体模块如表所示。

表通讯录管理管理系统的模块

main()add()del()edit()search()display()pause()pause2()load_rec()search_name()search_city()

3.6处理流程

-3-

主控函数增加个人资料删除个人资料修改个人资料查找个人资料主函数浏览所有信息等待"Y"、"y"、"n"、‘Y’键输入等待任意键输入统计记录数按姓名查找个人资料按城市查找个人资料实训报告

(1)通讯录主界面模块

开始清屏显示菜单输入选项至select增加记录删除记录修改记录显示所有记录查找记录结束

(2)增加记录模块(3)显示记录模块

实训报告

开始函数清屏提示输入输入通信录数据打开数据文件移动指针到文件尾部将所输出数据写到文件关闭文件是否继续返回

(4)删除记录

开始函数清屏打开数据文件将所有记录读入到数组ren中关闭文件显示ren中所有记录返回-5-

实训报告

开始函数清屏提示输入姓名输入姓名打开数据文件将所有记录读入到数组ren中关闭文件在数组ren中搜索姓名相同的字段

(5)修改记录

-6-

查找到?显示该记录删除?删除该记录打开数据文件将所有记录读入到数组ren中关闭文件返回实训报告

开始函数清屏提示输入姓名输入姓名打开数据文件将所有记录读入到数组ren中关闭文件在数组ren中搜索姓名相同的字段

-7-

查找到?显示该记录修改?修改该记录打开数据文件将所有记录读入到数组ren中关闭文件返回实训报告

(6)查找主模块开始函数清屏显示菜单输入选项至按姓名查找按城市查找返回(7)按姓名查找,按城市查找开始函数开始函数清屏提示输入姓名清屏提示输入城市输入姓名打开数据文件将所有记录读入到数组ren中输入城市打开数据文件将所有记录读入到数组ren中关闭文件在数组ren中搜索姓名相同的字段并显示关闭文件在数组ren中搜索城市相同的字段并显示返回返回

实训报告

四、结论

通信录管理系统的编写,看似杂乱无头绪,实际上却并不如此。它的每一个功能都能分成模块,有句话说的好,大事化小,小事化了。C语言编程也正式如此,把一个大的程序分为若干相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,这样不仅降低了难度还使得思路清晰,很容易编写出要做的程序,从而为设计一些较大的软件打下了良好的基础。

分析问题:

通讯录管理的整体功能都包括登陆限制、增加成员、删除成员、查看成员、修改成员、登陆口令五大板块,而查看有包括姓名查看,城市查看,年龄查看三个模块。

(1)设计的数据对象包括整形:年龄。字符型:姓名、电话、城市、所在单位、备注。(2)数据结构线性数据结构,定义人数上限为100.

算法的设计:(1)自顶向下

现有全局,在进行整体设计,然后再进行下层的设计,逐步实现精细化。采用这种方法能够做到胸有全局,能全盘考虑,不至于顾此失彼,头重脚轻。(2)逐步细化

一步步地将上层的任务分解成较小的、易于实现的任务,知道可以很简单实现为止。

编写源程序:

(1)不求速度,但求质量!一步一个脚印,编写程序时候宁可速度慢些也要尽量保证质

量,做到尽量不出错。

(2)精力集中,全神贯注!写程序时候最忌讳三心二意,这样才能思路清晰保证质量。(3)保持一个良好的编程心态,不要被长长的代码吓到,更不要厌烦,既然同样都是写,

为什么不仲满激情的去写那?程序的编译与运行:

(1)查找错误是一件让人闹心的事,但是要注重技巧,注意平时经验的积累。才能在

最快的时间找出错误

(2)用心去查找,也许你会发现错误并不是很难找

(3)程序编译成功不要满足现状,要积极测试程序的可用性,对功能不理想,存在缺

点的地方,积极的改进,完善。

实训报告

五、结束语

在实训过程中,使我良好的锻炼了自己,首先是兴趣方面,通过编写通讯录管理系统使我更加喜欢编程,使我从以前的迷茫状态中解脱出来,使我了解了编程的真正意义。我想这对我以后的人生有着很大的帮助。其次通过编写通讯录管理系统使我对写程序有了一定的思路,不像以前无从下手,使我理解了算法的意义,使我懂得了模块化思想的好处。通过一个星期的编写代码,使我对书本上的知识有了更深的理解,甚至有很多不懂的问题在这过程中自然而然的理解了。对期末考试更有了信心。在方建文老师的悉心指导下,我对C语言有了更深刻的理解,对程序的算法,数据的定义,程序的改错等方面的能力有了很大提高,自身的注意力,耐心,和对编程的兴趣有了很大增长,使我获益匪浅。

六、参考书目:

[1]周成义,汤德俊,钟菊,《C语言程序设计与数据结构》,中国铁道出版社,北京,201*年8月[2](美)克尼汉,(美)里奇著,徐宝文,李志译,《C程序设计语言》,机械工业出版社201*年01月

七、程序运行

系统各个模块运行调试,并附上运行结果截图。

实训报告

实训报告

八、附录:(源程序清单)

/*通讯录程序*/

实训报告

#defineM100#include#include#includestructrecord{};

voidmodi_seq(structrecordinfo[],intn);voidcreat();voidappend();voiddisplay();voidlocate();voidmodify();voiddele();

voiddisp_arr(structrecord*,int);voiddisp_row(structrecord);voiddisp_table();

voidmodi_sep(structrecord[],int);voiddisp_str(char,int);

voidsort(structrecord[],int);

voidsort_name(structrecord[],int);voidsort_city(structrecord[],int);voiddele_name(structrecord[],int*);voiddele_sequ(structrecord[],int*);#includevoidmain(){

charname[20];intage;chartele[15];charcity[20];charunits[30];charnote[20];

charchoice;while(1){

printf("\\n\\n");disp_str("",18);

printf("通讯录管理程序\\n");disp_str("*",50);putchar("\\n");disp_str("",16);

printf("1.通讯录信息输入\\n");disp_str("",16);

printf("2.显示通讯录信息\\n");disp_str("",16);

实训报告

printf("3.通讯录记录查询\\n");

disp_str("",16);

printf("4.修改通讯录信息\\n");disp_str("",16);printf("5.通讯录记录删除\\n");disp_str("",16);printf("6.建立通讯录文件\\n");disp_str("",16);

printf("7.退出通讯录程序\\n");disp_str("*",50);putchar("\\n");disp_str("",14);

printf("请输入代码选择(1~7)");choice=getchar();getchar();switch(choice){case"1":append();

break;

case"2":display();break;case"3":locate();break;

case"4":

modify();break;case"5":dele();break;case"6":creat();break;case"7":return1;default:continue;

}}}

voiddisp_str(charch,intn){inti;

for(i=1;i实训报告

printf("%c",ch);

return;

}

voidappend(){structrecordinfo[M];

FILE*fp;charask;

inti=0;

if((fp=fopen("address.txl","rb+wb"))==NULL){printf("can"topenfile!\\n");return;}

while(!feof(fp))fread(&info[i++],sizeof(structrecord),1,fp);while(1){

if(i==M){

printf("纪录已满!");break;

i--;

}

printf("\\n\\n");disp_str("",10);

printf("添加通讯录信息(共有%d条记录)\\n",i);disp_str("*",50);

putchar("\\n");disp_str("",17);

printf("1.添加新的通讯纪录\\n");disp_str("",17);

printf("2.退出添加程序\\n");disp_str("*",50);

putchar("\\n");disp_str("",16);

printf("请输入代码选择(1~2)");ask=getchar();getchar();if(ask=="2")break;

elseif(ask=="1"){

printf("开始添加新的纪录信息:\\n");putchar("\\n");

printf("清输入一下信息:\\n");printf("姓名:");

实训报告

}

gets(info[i].name);printf("\\n年龄:");scanf("%d",&info[i].age);getchar();

printf("\\n电话:");gets(info[i].tele);printf("\\n所在城市:");gets(info[i].city);printf("\\n所在单位:");gets(info[i].units);printf("\\n备注:");gets(info[i].note);i++;

fwrite(&info[i],sizeof(structrecord),1,fp);

}//while(1)fclose(fp);return;

}

voidcreat(){FILE*fp;

if((fp=fopen("address.txl","wb"))==NULL){printf("can"topenfile!\\n");return;}

fclose(fp);

printf("\\n\\n文件成功建立,请使用“通讯录信息输入功能”输入信息!");getchar();return;

}

voiddisplay(){

structrecordinfo[M];FILE*fp;charask;inti=0;

if((fp=fopen("address.txl","rb"))==NULL){}

while(!feof(fp))fread(&info[i++],sizeof(structrecord),1,fp);i--;

-16-

printf("can"topenfile!\\n");

return;实训报告

while(1){printf("\\n\\n");disp_str("",10);

printf("显示通讯录信息(共有%d条记录)\\n",i);disp_str("*",50);putchar("\\n");disp_str("",17);

printf("1.按自然顺序显示\\n");disp_str("",17);

printf("2.按排序顺序显示\\n");disp_str("",17);

printf("3.退出显示程序\\n");disp_str("*",50);putchar("\\n");disp_str("",16);

printf("请输入代码选择1-3");ask=getchar();getchar();if(ask=="3"){

fclose(fp);

return;}

elseif(ask=="1")

disp_arr(info,i);elseif(ask=="2")sort(info,i);}

fclose(fp);

return;

}

voiddisp_arr(structrecordinfo[],intn){charpress;inti;

for(i=0;i实训报告

}

disp_table();

printf("%-7d",i+1);disp_row(info[i]);if((i+1)%20==0){

printf("\\n");

disp_str("*",78);

printf("按回车键继续显示下屏,按其他键结束显示!\\n");printf("请按键");press=getchar();}

disp_str("*",78);printf("\\n");

printf("按任意键继续......");getchar();getchar();if(press!="\\n"){}}

break;

return;}

voiddisp_row(structrecordrow){

printf("%-12s%-12s%-15s%-16s%-4d%-s\\n",row.name,row.tele,row.city,row.units,row.age,row.note);return;}voidsort(structrecordinfo[],intn){

charask;while(1){

printf("\\n\\n");disp_str("",16);printf("通讯录排序\\n");disp_str("*",50);putchar("\\n");disp_str("",17);

printf("1.按姓名排序\\n");disp_str("",17);

printf("2.按城市排序\\n");disp_str("",17);

实训报告

}

printf("3.返回上一层\\n");disp_str("*",50);

putchar("\\n");disp_str("",16);

printf("请输入号码选择(1-3)");ask=getchar();getchar();if(ask=="3")

break;

elseif(ask=="1")sort_name(info,n);elseif(ask=="2")

sort_city(info,n);

}

return;

voidsort_name(structrecordinfo[],intn){

inti,j;

structrecordinfo_t[M],temp;

for(i=0;i实训报告

}}}

temp=info_t[j];info_t[j]=info_t[j+1];info_t[j+1]=temp;

disp_arr(info_t,n);return;

voiddisp_table(){printf("姓名");

disp_str("",8);printf("电话");disp_str("",8);printf("城市");disp_str("",12);printf("单位");disp_str("",10);printf("年龄");disp_str("",2);printf("备注\\n");return;

}

voidlocate(){

structrecordtemp,info[M];charask,name[20],city[20];

intn=0,i,flag;FILE*fp;

if((fp=fopen("address.txl","rb"))==NULL){

printf("can"topenfile!\\n");return;

}

while(fread(&temp,sizeof(structrecord),1,fp)==1)info[n++]=temp;while(1){

flag=0;

disp_str("",20);printf("查询通讯录\\n");disp_str("*",50);putchar("\\n");

disp_str("",17);

printf("1.按姓名查询\\n");disp_str("",17);

实训报告

}}

printf("2.按城市查询\\n");disp_str("",17);

printf("3.返回上一层\\n");disp_str("*",50);putchar("\\n");disp_str("",16);

printf("请输入代码选择(1~3)");ask=getchar();getchar();if(ask=="1"){

printf("请输入要查询的姓名:");gets(name);

for(i=0;i实训报告

voidmodify(){

charask;structrecordtemp,info[M];FILE*fp;inti=0;

if((fp=fopen("address.txl","rb"))==NULL){}

printf("can"topenfile!\\n");return;

while(fread(&temp,sizeof(structrecord),1,fp)==1)

info[i++]=temp;while(1){}

disp_str("",20);

printf("编辑修改通讯录\\n");disp_str("*",50);putchar("\\n");disp_str("",17);

printf("1.浏览显示通讯录\\n");disp_str("",17);

printf("2.编辑修改通讯录\\n");disp_str("",17);

printf("3.返回上一层\\n");disp_str("*",50);putchar("\\n");

disp_str("",16);

printf("请输入号码选择(1-3)");ask=getchar();getchar();if(ask=="3")break;

elseif(ask=="1")disp_arr(info,i);elseif(ask=="2")

modi_seq(info,i);

fclose(fp);

fp=fopen("address.txl","wb");

fwrite(info,sizeof(structrecord),i,fp);fclose(fp);return;

}

voidmodi_seq(structrecordinfo[],intn){

实训报告

}

intsequence;charask;

while(1){printf("请输入序号:");scanf("%d",&sequence);

getchar();

if(sequencen){}

printf("当前要修改的记录信息:\\n");disp_table();

disp_row(info[sequence-1]);printf("请重新输入以下的信息:\\n");printf("姓名:");

gets(info[sequence-1].name);printf("年龄:");

scanf("%d",&info[sequence-1].age);getchar();

printf("电话:");

gets(info[sequence-1].tele);printf("所在城市:");

gets(info[sequence-1].city);printf("所在单位:");

printf("序号超出范围,请重新输入!\\n");getchar();continue;

gets(info[sequence-1].units);printf("备注:");gets(info[sequence-1].note);printf("继续修改请按y,否则按其他键......");}

ask=getchar();getchar();

if(ask!="y"&&ask!="Y")break;

return;

voiddele()

{

structrecordtemp,info[M];charask;

inti=0,lenth;

FILE*fp;if((fp=fopen("address.txl","rb"))==NULL)

{

实训报告

printf("can"topenfile!\\n");return;

}

while(fread(&temp,sizeof(structrecord),1,fp)==1)info[i++]=temp;lenth=i;while(1){

disp_str("",18);printf("记录的删除\\n");disp_str("*",50);

}{

putchar("\\n");disp_str("",17);

printf("1.按姓名删除\\n");disp_str("",17);

printf("2.按序号删除\\n");disp_str("",17);

printf("3.返回上一层\\n");disp_str("*",50);putchar("\\n");

disp_str("",14);

printf("请输入号码选择(1-3)");ask=getchar();getchar();if(ask=="3")break;

elseif(ask=="1")dele_name(info,&i);elseif(ask=="2")dele_sequ(info,&i);if(lenth>i){}

fclose(fp);

fp=fopen("address.txl","wb");

fwrite(info,sizeof(structrecord),lenth-1,fp);fclose(fp);

fp=fopen("address.txl","rb");

}

fclose(fp);return;

voiddele_name(structrecordinfo[],int*n)

chard_name[20],sure;inti;

实训报告

}

printf("请输入姓名:");gets(d_name);

getchar();

for(i=0;i实训报告

disp_row(info[d_sequence-1]);

printf("确定删除-y,否则按其他键......");sure=getchar();getchar();

if(sure!="y"&&sure!="Y")return;for(i=d_sequence-1;i

友情提示:本文中关于《C语言实训报告》给出的范例仅供您参考拓展思维使用,C语言实训报告:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


C语言实训报告
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/713321.html
相关阅读
最近更新
推荐专题