C语言实训报告
广东交通职业技术学院
C语言实训报告
信息111班潘康乐44号
一、实训要求
1、实训目的
《言程序设计课程实训是三年制高职计算机应用技术、计算机网络技术、软件技术专业的重要的实训环节之一。教育目标是在学生学习了C语言程序设计的基本知识、基本理论的基础上,通过综合实训,培养学生的动手能力,培养学生学习新知识的能力,提高学生分析问题和解决问题的综合能力,培养学生的团队合作精神,为今后从事专业工作打下必要的基础。
课程设计应强调以能力培养为主,在独立完成设计任务同时注意多方面能力的培养与提高,主要包括以下方面:
1.独立工作能力和创造力。
2.综合运用专业及基础知识,解决实际工程技术问题的能力。3.查阅图书资料、产品手册和各种工具书的能力。4.C语言编程能力。
5.写技术报告和编制技术资料的能力。
2、内容及要求
在已经学过的C语言基础上学习数组和函数两内容,并结合LED屏实现LED屏的动态显示和绘图等操作。
二、实训的详细内容
1、点亮32*32的点阵屏上的任意一点
使用“DrawPoint(x,y,COLOR_RD,ON
)”就可以了,其中的x,y分别对应横纵坐标。广东交通职业技术学院
2,在屏幕上按次序显示4个汉字
这时我要用到字摸提取工具,由于我是第一次使用字模工具,所以在字模提取软件的设置还不了解,在随后的使用中我发现屏幕上没有出现汉字,而是全屏的乱点。在之后老师的讲解中我了解到原来是我们的师兄在制作32*32的点阵显示屏的点阵排序出了点错,我更改了字模软件的设置之后屏幕显示出字来了。
下面是显示“胖胖最帅”四个字的程序全部代码:
#include"SysInit.h"
#include"LED_Screen.h"
Unsignedcharxdataddata1[16][2]=
{0x00,0x02,0x3C,0x02,0x64,0x12,0xA4,0x32,0xA4,0x0A,0x3C,0x02,0xE4,0x3F,0x24,0x02,
0x3C,0x02,0x24,0x02,0xE4,0x7F,0x24,0x02,0x22,0x02,0x22,0x02,0x2A,0x02,0x11,0x02};
unsignedcharxdataddata2[16][2]=
{0x00,0x02,0x3C,0x02,0x64,0x12,0xA4,0x32,0xA4,0x0A,0x3C,0x02,0xE4,0x3F,0x24,0x02,
0x3C,0x02,0x24,0x02,0xE4,0x7F,0x24,0x02,0x22,0x02,0x22,0x02,0x2A,0x02,0x11,0x02};
unsignedcharxdataddata3[16][2]=
{0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x00,0x00,0xFF,0x7F,0x44,0x00,
0x7C,0x3F,0x44,0x11,0x7C,0x0A,0xC4,0x04,0x7C,0x0A,0x47,0x71,0xC0,0x20,0x40,0x00};
unsignedcharxdataddata4[16][2]=
{0x10,0x04,0x10,0x04,0x10,0x04,0xD2,0x7F,0x52,0x44,0x52,0x44,0x52,0x44,0x52,0x44,广东交通职业技术学院
0x52,0x44,0x52,0x44,0x52,0x44,0x48,0x74,0x48,0x24,0x04,0x04,0x02,0x04,0x01,0x04};voidmain(void){unsignedcharx,y;sys_init();}
Delay(1000);
for(y=0;y广东交通职业技术学院
0x00,0xF0,0x1E,0x00,0x00,0xF0,0x1E,0x00,0x00,0x78,0x3C,0x00,0x00,0x78,0x00,0x00,0x00,0x38,0xE0,0x01,0x00,0x3C,0x10,0x03,0x00,0x1C,0x10,0x02,0x00,0x1E,0x08,0x06,0x00,0x1E,0x18,0x06,0x00,0x0F,0x10,0x07,0x00,0x0F,0xB0,0x03,0x80,0x87,0xF7,0x03,0x80,0x07,0x1E,0x00,0xC0,0x03,0x78,0x00,0xC0,0x03,0xF0,0x01,0xC0,0x01,0xE0,0x03,0xE0,0x01,0xC0,0x07,0xF0,0x01,0x80,0x0F,0xF0,0x00,0x00,0x1F,0xF0,0xFF,0xFF,0x1F,0xF0,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00};
//*******************************************************************************//
voidmain(void){unsignedcharx,y;sys_init();
Delay(1000);
for(y=0;y广东交通职业技术学院
};unsignedcharxdataddata3[16][2]=
{0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x00,0x00,0xFF,0x7F,0x44,0x00,
0x7C,0x3F,0x44,0x11,0x7C,0x0A,0xC4,0x04,0x7C,0x0A,0x47,0x71,0xC0,0x20,0x40,0x00};
unsignedcharxdataddata4[16][2]=
{0x10,0x04,0x10,0x04,0x10,0x04,0xD2,0x7F,0x52,0x44,0x52,0x44,0x52,0x44,0x52,0x44,
0x52,0x44,0x52,0x44,0x52,0x44,0x48,0x74,0x48,0x24,0x04,0x04,0x02,0x04,0x01,0x04};
voidmain(void)
{unsignedcharx,y;sys_init();}
for(y=0;y
扩展阅读: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语言实训报告:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。