c语言报告.docx
《c语言报告.docx》由会员分享,可在线阅读,更多相关《c语言报告.docx(40页珍藏版)》请在冰豆网上搜索。
c语言报告
C语言程序设计课程设计报告
题目:
c程序简化编写器程序设计
设计者:
**
专业班级:
****班
学号:
************
指导教师:
**
所属系部:
电子信息工程系
2013年07月10日
辽东学院信息技术学院
c程序简化编写器程序设计说明文档
题目(问题)描述
本系统主要实现简单的c程序编辑,通过本系统的引导,使用者可以快速编写c程序,由于本系统会自动添加和格式化敏感词汇和字符,所以在编辑简单程序或录入已经写在书面材料上的程序时会节省很多时间。
模块结构图
1:
预处理编辑
通过引导,先后完成文件名,头文件,常量声明,全局变量,
2主函数编辑
先完成变量声明,然后调用其他函数组编辑,ifwhilefor
会套用主函数编辑函数做子函数编辑函数,调用结束后分级返回
返回至主函数编辑以上级时,结束main();
3.头文件编辑
头文件选用和写入
4.变量声明
声明变量,并记录变量名至变量目录
5.其他函数编辑和基本语句编辑
模块化编辑不同函数和基本语句编辑,功能因函数种类而异;
系统流程图
重要数据的数据结构设计
typedefstructblml//变量目录
{
intin,cha,floa/*,qit*/;
charblnameint[50][15];//int族
charblnamechar[50][15];//char族
charblnamefloat[50][15];//float族
/*charblnameqita[50][15];*/
}BLML;
函数声明列表
voidzhu_cd();//主菜单
voidzhu(intmlfw,charname[],charfun[]);//函数编辑
charbl(charch[],intb2,intmlfw);//变量声明
voidforr(intmlfw);//for的实现
voidfz(intmlfw);//赋值的实现
voidiff(intmlfw);//if的实现
voidmldy(intmlfw,inttyp);//函数目录打印
voidtou(intmlfw);//预处理
voidxiywen();//小原文写入
voidzhu(intmlfw,charname[],charfun[]);//主函数编辑与子函数嵌套
voidzhu_cd(charch[],charch1[]);//主函数动态目录
voidmlxr(charch,inta,intmlfw);//函数目录写入
voidwhiled(intmlfw);//while的实现
voidwha(intmlfw);//while()
voidwhb(intmlfw);//do
voidscann(intmlfw);//scanf();引导
使用说明
本系统较为简单,运行系统时要参照系统流程图顺序;
1)输入文件名
2)选择头文件
3)输入常量
4)全局变量声明
5)主函数编写(安提示操作)
6)完成
总结
通过对c语言的学习我已经学会了许多的代码和很多的文本函数、图形函数,也通过这些代码编程出了c程序编写器,不仅锻炼了我对c语言的认识同时,使我了解了一些课堂没学到的函数,获得了很多程序设计的经验,补上了一些没搞懂的知识漏洞。
而且我所编的编写器所输出的文件是.c文件,要保证本程序没格式错同时还要保证,输出程序的格式没有错误,这使得我更深入的了解c语言的编写格式。
程序代码:
#include
#include
#include
#defineDASHENsunxun
#defineHSSX50//函数上线
typedefstructblml
{
intin,cha,floa/*,qit*/;
charblnameint[50][15];
charblnamechar[50][15];
charblnamefloat[50][15];
/*charblnameqita[50][15];*/
}BLML;
structhsml
{
intgs;
charhsname[15];
chartype[15];
charxsbllb[100];
};
intblt=1,i=1;//变量声明用全局变量
intmlb=1,mli=0;//目录用全局变量
intzit1=0;//子函数个数
charfname[23];
structhsmlhsml1[HSSX];//变量目录
BLMLml[HSSX];//子函数目录
voidqt(char[],intmlfw);//其他
voidzhu_cd();//主菜单
voidzhu(intmlfw,charname[],charfun[]);//函数编辑
charbl(charch[],intb2,intmlfw,inttt,charcv[]);//变量声明
voidforr(intmlfw);//for的实现
voidfz(intmlfw);//赋值的实现
voidiff(intmlfw);//if的实现
voidmldy(intmlfw,inttyp);//函数目录打印
voidtou(intmlfw);//预处理
voidxiywen();//小原文写入
voidzhu(intmlfw,charname[],charfun[]);//主函数编辑与子函数嵌套
voidzhu_cd(charch[],charch1[]);//主函数动态目录
voidmlxr(charch,inta,intmlfw,inttt);//函数目录写入
voidwhiled(intmlfw);//while的实现
voidwha(intmlfw);//while()
voidwhb(intmlfw);//do
voidprintt(intmlfw);//scanf();引导
voidscann(intmlfw);//scanf();引导
voidkuoz_cd(charch[],charch1[]);
voidkuoz(intmlfw,charname[],charfun[]);
voidzzzsm(intmlfw,charname[],charfun[],inthshuoxc)
{
FILE*p;charch;
if(hshuoxc)zhu_cd(name,fun);
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}
bl(name,1,mlfw,1,"函数");
fprintf(p,"\n%s%s(\n",hsml1[mlfw].type,hsml1[mlfw].hsname);fclose(p);
printf("1,编辑形参,@结束\n");
ch=getchar();
while(ch!
='@')
{if(ch!
='1')ch=getchar();
if(ch=='1')
{//形参编辑
ch=bl(name,blt,mlfw,2,"形参");hsml1[mlfw].gs++;
}
if(ch=='1'){if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs(";",p);fclose(p);}
}
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}
fputs(");\n",p);fclose(p);///子函数说声明
}
voidzzzhs(intmlfw,charname[],charfun[])///////////////////////////////////////////////子函数编辑
{
charch;charc='"';
FILE*p;
zhu_cd(name,fun);
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}
fprintf(p,"\n%s%s(\n",hsml1[mlfw].type,hsml1[mlfw].hsname);fclose(p);
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}
fprintf(p,"%s",hsml1[mlfw].xsbllb);
fputs(")\n{",p);fclose(p);
ch=getchar();
while(ch!
='@')
{
if(ch!
='\n')
{
switch(ch)
{
case'1':
bl(name,0,mlfw,0,0);system("cls");zhu_cd(name,fun);printf("第%d项操作完成!
!
!
!
\n",i++);break;
case'2':
iff(mlfw);system("cls");zhu_cd(name,fun);printf("第%d项操作完成!
!
!
!
\n",i++);break;
case'3':
forr(mlfw);system("cls");zhu_cd(name,fun);printf("第%d项操作完成!
!
!
!
\n",i++);break;
case'4':
fz(mlfw);system("cls");zhu_cd(name,fun);printf("第%d项操作完成!
!
!
!
\n",i++);break;
case'5':
whiled(mlfw);system("cls");zhu_cd(name,fun);printf("第%d项操作完成!
!
!
!
\n",i++);break;
case'6':
scann(mlfw);system("cls");zhu_cd(name,fun);printf("第%d项操作完成!
!
!
!
\n",i++);break;
case'7':
printt(mlfw);system("cls");zhu_cd(name,fun);printf("第%d项操作完成!
!
!
!
\n",i++);break;
case'8':
break;
case'9':
kuoz(mlfw,name,fun);break;
case'0':
qt(name,mlfw);system("cls");zhu_cd(name,fun);printf("第%d项操作完成!
!
!
!
\n",i++);break;
default:
break;
}
}
ch=getchar();
}
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}
fputs("\n}\n",p);fclose(p);
}
voidzihsbj()
{
intmlfw1=2,j;charch,name[]={"仔仔"},fun[HSSX];
printf("1,声明子函数,@结束或跳过\n");
ch=getchar();
while(ch!
='@')
{
if(zit1>HSSX){
ch='@';
printf("错误!
!
%d个子函数是目前的上限\n更多子函数请用%d上限版\n本程序不会终止\n",HSSX-2,2*HSSX-4);
printf("为更多完成子函数请按3在“其他”中编写\n");
ch=getchar();
if(ch=='3')qt(name,0);
}
if(ch=='1')
{
zzzsm(mlfw1++,"仔仔","子函数",0);
zit1++;
}
printf("1,声明子函数,@结束或跳过\n");
if(zit1<=HSSX)ch=getchar();
}
for(j=2;j{
strcat(fun,hsml1[j].hsname);
zzzhs(j,name,fun);
}
printf("为完成在其他中声明的子函数请按3在“其他”中编写\n");
ch=getchar();
if(ch=='3')qt(name,0);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////扩展包
voidkuoz_cd(charch[],charch1[])//扩展数动态目录//////////////////////////////////////////////////////////////
{
printf("一起来编%s吧!
选择所要的操作\n",ch1);
printf("=====================================\n");
printf("1.暂无\n2.暂无\n3.暂无\n4.暂无\n5.暂无\n6.暂无7暂无8.暂无9.扩展包(暂无)\n");
printf("@.返回上层\n");
}
voidkuoz(intmlfw,charname[],charfun[])//扩展函数编辑二级
{
charch;/////可以此为模板做下级菜单(函数级别降一级)
FILE*p;
kuoz_cd(name,fun);//菜单屏显二级
if((p=fopen(fname,"a"))==NULL)
{
printf("文件!
错误\n");
exit(0);
}
fclose(p);
ch=getchar();
while(ch!
='@')
{
if(ch!
='\n')
{
switch(ch)
{
case'1':
case'2':
case'3':
case'4':
case'5':
case'6':
case'7':
case'8':
case'9':
case'0':
default:
break;
}//一级
}ch=getchar();
}
zhu_cd(name,fun);
}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
intgszf()//格式字符提取
{
FILE*p;
intb1=1,b2=0;charch;
ch=getchar();
if((p=fopen(fname,"a"))==NULL)
{
printf("文件!
错误\n");
exit(0);
}
while(b1)
{
if(ch!
='\n'){
if(ch=='/')
{
ch=getchar();
if(ch=='*')
b1=0;elsefputs("/",p);
}
else
fputc(ch,p);if(ch=='%')b2++;
}
ch=getchar();
}fclose(p);
returnb2;
}
voidsclb(intg,intintt)//输出列表
{
FILE*p;inttpsclb=0,jj=1,oo;
oo=g;
if(g){
if(intt)printf("请输入输出列表包含的第一个变量名,“/*”结束\n1.");elseprintf("请输入输出列表包含的第一个变量名的地址,“/*”结束\n1.");
for(;g>0;g--)
{
xiywen();
if(g!
=1){if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}if(oo)fputs(",",p);fclose(p);jj++;}
printf("%d.",jj);
tpsclb++;
if(tpsclb==10)tpsclb=0;
}
}
}
voidscann(intmlfw)//scanf();引导
{
charc='"';intsct1;FILE*p;
mldy(mlfw,1);
mldy(mlfw,2);
mldy(mlfw,3);
printf("===================================================\n\n原型scanf(“格式字符”,输出列表)\n请输入格式字符“/*”结束\n");
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs("scanf(",p);fputc(c,p);fclose(p);
sct1=gszf();
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputc(c,p);fputs(",",p);fclose(p);
sclb(sct1,1);
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs(");\n",p);fclose(p);
}
voidprintt(intmlfw)//scanf();引导
{
charc='"';intsct1;FILE*p;
mldy(mlfw,1);
mldy(mlfw,2);
mldy(mlfw,3);
printf("===================================================\n\n原型printf(“格式字符”,输出列表)\n请输入格式字符“/*”结束\n");
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs("printf(",p);fputc(c,p);fclose(p);
sct1=gszf();
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputc(c,p);fputs(",",p);fclose(p);
sclb(sct1,0);
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs(");\n",p);fclose(p);
}
voidwha(intmlfw)//while()
{
FILE*p;
printf("输入循环条件,输入‘/*’结束\n");
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs("while(",p);fclose(p);
xiywen();
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs(")",p);fclose(p);
}
voidwhb(intmlfw)//do
{
FILE*p;
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs("do",p);fclose(p);
}
voidwhiled(intmlfw)//while的实现
{
FILE*p;
charname[]={"外奥"},fun[]={"while循环"};
intwh=1;charch;
system("cls");
printf("while编辑\n==============================================\n1.while(){}型\n2.do{}while()型\n==========================================\n");
mldy(mlfw,1);
mldy(mlfw,2);
mldy(mlfw,3);
printf("以上为变量目录\n============================================\n");
ch=getchar();
while(ch!
='1'&&ch!
='2')ch=getchar();if(ch!
='1')wh=0;
if(wh)
wha(mlfw);
else
whb(mlfw);
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs("\n{\n",p);fclose(p);
zhu(mlfw,name,fun);
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs("\n}",p);fclose(p);
if(!
wh){wha(mlfw);if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs(";\n",p);fclose(p);}
if((p=fopen(fname,"a"))==NULL){printf("文件!
错误\n");exit(0);}fputs(";\n",p);fclose