C语言实训报告
甘肃机电职业技术学院
C语言程序设计
实实习时间
指导教师学生姓名学号专业班级
报告
201*年11月29日至
201*年12月4日止
朱七二杨雪曼65
计算机信息与管理
G093501班
训一、课题名称:简单计算器
设计一个简单的程序来模拟计算器的功能。二、设计目的:
1、通过理论知识与实际需求相结合,编辑解决一些日常中的实际问题,培养初步的独立分析和设计能力。2、了解应用程序设计解决实际问题的具体过程和实现方法,掌握应用C语言进行程序设计的基本规范;3、重点掌握C语言的程序编写、函数设计、算法设计和程序调试方法;4、初步掌握系统开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。三、设计任务:
1、通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、*、等运算符号),然后将其信息存入文件中。输入一个算术计算式,就在屏幕上显示结果。2、输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;四、设计要求:
1、用C语言实现程序设计并进行调试;2、画出查询模块的流程图;
3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机互交)。5、完成设计说明书(A4)。五、代码设计:#include"stdio.h"main(){floatx,y;charoperator;
printf("x,yunsuanfu,y:");scanf("%f%c%f",&x,&operator,&y);switch(operator)
{case"+":printf("%.2f+%.2f=%.2f",x,y,x+y);break;case"-":printf("%.2f-%.2f=%.2f",x,y,x-y);break;case"*":printf("%.2f*%.2f=%.2f",x,y,x*y);break;case"/":if(y==0)
printf("chushushilingwuyiyi");else
printf("%.2f/%.2f=%.2f",x,y,x/y);break;
default:printf("yunsunfuwuxiao");}}
六、
详细设计:开始输入x,operator,yoperator=="+"Noperator=="-"Noperator=="*"Noperator=="/"NY输入x+yY输入x-yY输入x*yY输入x/y运算符无效结束
七、设计总结:
学习C程序这门课一个学期了,这是我们学的第一门专业课,所以作为我这个计算机系的学生来说当然十分重要,老师在第一节课说过,C语言是计算机的基础,大多数软件都需要用C语言来编写,通过一个学期的学习,使我初步掌握了一些关于这门课的知识
这次的课程设计是对我们一个学期来所学的知识的综合考察,里面涉及到了我们大多数所学知识。记得刚开始学这门课的时候,对这门课充满了希望,自己有信心学好这门课,但是经过一段时间的学习之后。才发现程序设计并不好学,它既要你有很强的领悟能力,还要你课后的努力,也许是自己之前太有信心学好这门课了吧,中间遇到了很大的瓶颈,一度陷入无休止的烦恼中编程序时没有一次是成功的,总会遇到很多的error,改完一个又有一个,这时我会想到一句古话“天将降大人于斯人也,必先苦其心志,劳其筋骨,饿其体肤”,也许以后会有些许光明吧。之后,随着时间的推移,慢慢掌握了这门课学习的一些窍门,学习起来也比刚开始的时候好了一点,至于编程序吗还是有错误,但比以前少了,总让我看到希望了。这次的课程设计要求我们编一个简易计算器,刚开始的时候我一头雾水,丈二摸不着头脑,不知从哪里下手,后来经过老师和同学的帮助,从最简单的编框开始,慢慢的到最关键的算法,这其中经历了很多弯路,也犯过了很多错误,但是还是一一攻克了,好比红军长征两万五千里终于到达了终点。看到最后自己编写出来的计算器感到格外的高兴,暂且不说计算器的功能方面吧,但毕竟是自己写的第一个正式的程序,感到格外的高兴。
在编写程序的过程中受到了其他同学的指点,也许在某些程序方面会和有的同学想类似,另外老师也帮助了很多,一个好的学生离不开一个好老师吗,虽说我不算一个好学生,但是老师在我编程序过程中也起到了很大的作用,就像老师说的一句话一样“革命尚未成功,同志仍需努力”,我们在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语言实训报告:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。