1. 如何编写程序
编写程序是一项系统而繁琐的工作,它不仅需要程序设计人员具有一定的功底,更需要有良好的编程习惯和风格。良好的编程习惯和风格不仅可以使程序代码更易于读懂和修改,更重要的是,它可以使程序的结构更加合理,有助于提高程序的执行效率。下面是我在程序设计中总结的一些经验,供大家参考。
设计顺序
在我们刚开始学习程序设计的时候,要编写一个程序,总是先进行一番构思,然后就一边写代码一边调试。这种方法一般只适用于非常小的程序,根据软件工程的特点,如果对所有程序都还按这种方法进行设计,是不合理的。
其实,设计程序就像我们盖高楼大厦,首先要设计图纸,然后动工。所以,对于个人编写程序来说,应遵循以下步骤:
1、问题分析:对我们要使用程序设计手段去解决的问题进行系统地分析,了解程序是做什么的,要达到一种什么样的效果等。
2、结构设计:也就是对程序的整体框架进行设计,设计出我们需要使用的模块等等,并画出流程图。
3、用户界面设计:在此,我们要设计出用于与用户交互的输入输出界面。
4、代码设计:在这个步骤中,我们要进行代码的编写。
5、调试:对程序中正在发生或可能发生的各种错误进行处理。
6、维护:通俗地说,维护就是对程序进行升级,对原有错误进行修改。
对于以上几个步骤,我想大多数人会认为代码设计最为重要,但如果程序的结构尚未清楚,我们在编写代码的时候就会发生混乱,一个程序性能的好坏,主要还是取决于它的结构是否合理。因此,在程序设计中,我们要尽可能注意这一点,这样才能使我们的程序更加完善。
设计环境
一个良好的编程环境可以使我们在编写程序时,不至于造成各种资源的紊乱,还可以避免资源的丢失。建议大家要在放源程序的目录下建立“programs”文件夹;然后再以你要编写的程序名和版本为名建立一个文件夹,用于存放整个源程序以及各种资源;最后,分别建立几个文件夹,“documents”:用于存放程序文档,包括流程图等;“resource”:用于存放图片,声音,影片等资源;“debug”:用于存放调试的程序。“release”:用于存放最终释放的程序。
例如:我们要制作一个英语学习软件,名为“english”,版本为1.0,那么我们的编程环境中应存在以下文件夹:
[drive]:\\…\\programs\\english1\\debug\\
[drive]:\\…\\programs\\english1\\documents\\
[drive]:\\…\\programs\\english1\\resource\\
[drive]:\\…\\programs\\english1\\release\\
另外,最好再建立一个专门的文件夹,用于存放各种模块,以便能实现代码的重用,这样,我们就不用在每次写程序时,都重写所有的模块,编程速度会有很大的提高。
设计技巧
代码如果写得很乱,程序便不易被阅读与修改,所以,在编写代码时要注意以下几点:
(1)注释:写注释虽然要占用一定的时间,但在阅读和修改代码时却会节省很多的时间。所以,建议大家在定义一个函数时,在函数的第一行写出函数的作用,再用一行解释函数的参数,并在每个变量的定义语句后注释出其作用。
(2)变量和函数的命名:每个程序都会使用很多的变量和函数,如果随意命名变量与函数,每次使用时还得在变量或函数的定义语句处查出它的数据类型及名称,而且随意命名还会造成变量与函数重复定义。
建议大家使用匈牙利命名法,方法是:每个变量或函数的开头都以其数据类型的缩写命名,然后再加上代表这个变量或函数的作用的英文单词简写共同组成变量或函数的名称。例如:要定义用于计数的整型变量count,其定义语句为c\\c++:int icount; basic:dim icount as integer。以这种方法定义,不仅可以有效地避免变量与函数的混乱与重复定义,还可以保证数据类型的匹配。
(3)控件命名:如果在windows下编程,你有可能会大量地使用控件,如果不对控件名严加管理,会造成很大程度的混乱,因此,建议在给控件命名时,以控件类型缩写再加上代表这个控件作用的英文单词的简写共同组成此控件的名称。例如:你要命名一个按钮控件,作用是进行删除操作,那么控件名可以命名为cmddel。
并不是每个人都能成为顶级程序员,但我们都在程序员之路上不断进步,追求更完美、更专业化的程序。不妨好好改造一下你的程序,你会从中感受到很多好处。
2. 怎样编写程序
在这里我们借助的软件是Visual C++6.0。
打开软件,先新建一个工程,在新建一个C++源文件,这些你听起来可能有点陌生,不要担心,你只需要按照下面的图片进行操作就好。
3. 程序设计问题...如何在程序中编写一个文件呢
呵呵,恰好,我去年写了一个课程设计
代码在这里
给你啦 如果你想明白程序的话,我QQ283540449
如果只是应付课程设计的话,直接上交吧
o(∩_∩)o...
环境VC6.0 输入数据后写入TXT文件
//#include "stdafx.h"
#include "stdio.h"
#include "iostream.h"
#include "string.h"
#define ERROR 0
#define OK 1
#define MAXSIZE 2500
#define EQ(a,b) ((a)==(b))
typedef int Status;
int N=4;//全局变量来储存所输入的个数;
struct student
{
//数据结构类型;
char name[10];
int num;
int room;
};
/*--------------------------------------------------------------------------*/
Status Input()
{
//数据输入;
int i=0;
int flag=1;
char ch;
FILE * fpdata;
student stu[MAXSIZE];
if((fpdata=fopen("studata.txt","wb"))==NULL)
{
printf("cannot open studata.c file!");
return ERROR;
}
while(flag)
{
printf("是否继续输入(Y/N):");
cin>>ch;
if(ch=='y'||ch=='Y')
{
scanf("%s%d%d",stu[i].name,&stu[i].num,&stu[i].room);
fwrite(&stu[i],sizeof(struct student),1,fpdata);
i++;
}
else flag=0;
}
N=i;
fclose(fpdata);
printf("数据输入完成!\n");
return OK;
}
Status Print(char *filename)
{
//输出数据;
FILE * fpdata;
student st;
int i=0;
if((fpdata=fopen(filename,"rb"))==NULL)
{
printf("cannot open studata.c file!");
return ERROR;
}
while(i<N)
{
fread(&st,sizeof(struct student),1,fpdata);
printf("%s %d %d\n",st.name,st.num,st.room);
i++;
}
fclose(fpdata);
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status NameSort()
{
//姓名排序;
int i,j;
FILE * fpdata;
FILE * fpnamesort;
student stu[MAXSIZE];
if((fpdata=fopen("studata.txt","rb"))==NULL)
{
printf("cannot open data.c file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,fpdata);
}
fclose(fpdata);
if((fpnamesort=fopen("namesort.txt","wb"))==NULL)
{
printf("cannot open nsort.c");
return ERROR;
}
for(i=2;i<=N;i++)
{
if(strcmp(stu[i].name,stu[i-1].name)<0)
{
strcpy(stu[0].name,stu[i].name);
stu[0].num=stu[i].num;
stu[0].room=stu[i].room;
strcpy(stu[i].name,stu[i-1].name);
stu[i].num=stu[i-1].num;
stu[i].room=stu[i-1].room;
for(j=i-2;(strcmp(stu[0].name,stu[j].name))<0;j--)
{
strcpy(stu[j+1].name,stu[j].name);
stu[j+1].num=stu[j].num;
stu[j+1].room=stu[j].room;
}
strcpy(stu[j+1].name,stu[0].name);
stu[j+1].num=stu[0].num;
stu[j+1].room=stu[0].room;
}
}
for(i=1;i<=N;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fpnamesort);
}
fclose(fpnamesort);
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status NumSort()
{
//学号排序;
int i,j;
FILE * fpdata;
FILE * fpnumsort;
student stu[MAXSIZE];
if((fpdata=fopen("studata.txt","rb"))==NULL)
{
printf("cannot open data.c file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,fpdata);
}
fclose(fpdata);
if((fpnumsort=fopen("numsort.txt","wb"))==NULL)
{
printf("cannot open nsort.c");
return ERROR;
}
for(i=2;i<=N;i++)
{
if(stu[i].num<stu[i-1].num)
{
strcpy(stu[0].name,stu[i].name);
stu[0].num=stu[i].num;
stu[0].room=stu[i].room;
strcpy(stu[i].name,stu[i-1].name);
stu[i].num=stu[i-1].num;
stu[i].room=stu[i-1].room;
for(j=i-2;stu[0].num<stu[j].num;j--)
{
strcpy(stu[j+1].name,stu[j].name);
stu[j+1].num=stu[j].num;
stu[j+1].room=stu[j].room;
}
strcpy(stu[j+1].name,stu[0].name);
stu[j+1].num=stu[0].num;
stu[j+1].room=stu[0].room;
}
}
for(i=1;i<=N;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fpnumsort);
}
fclose(fpnumsort);
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status RoomSort()
{
//房间号排序;
int i,j;
FILE * fpdata;
FILE * fproomsort;
student stu[MAXSIZE];
if((fpdata=fopen("studata.txt","rb"))==NULL)
{
printf("cannot open data.c file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,fpdata);
}
fclose(fpdata);
if((fproomsort=fopen("roomsort.txt","wb"))==NULL)
{
printf("cannot open nsort.c");
return ERROR;
}
for(i=2;i<=N;i++)
{
if(stu[i].room<stu[i-1].room)
{
strcpy(stu[0].name,stu[i].name);
stu[0].num=stu[i].num;
stu[0].room=stu[i].room;
strcpy(stu[i].name,stu[i-1].name);
stu[i].num=stu[i-1].num;
stu[i].room=stu[i-1].room;
for(j=i-2;stu[0].room<stu[j].room;j--)
{
strcpy(stu[j+1].name,stu[j].name);
stu[j+1].num=stu[j].num;
stu[j+1].room=stu[j].room;
}
strcpy(stu[j+1].name,stu[0].name);
stu[j+1].num=stu[0].num;
stu[j+1].room=stu[0].room;
}
}
for(i=1;i<=N;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fproomsort);
}
fclose(fproomsort);
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status NameSearch(char * namekey)
{
//按名字查询;
//顺序查找
int i;
FILE * f;
student stu[MAXSIZE];
if((f=fopen("namesort.txt","rb"))==NULL)
{
printf("cannot open namesort.txt file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,f);
}
int low=1;
int high=N;
//int mid;
int flag=0;
int m=N;
//char namekey;
//int t;
strcpy(stu[0].name,namekey);
for(m=N;m>0;--m)
{
if(!strcmp(stu[m].name,namekey))
printf("%s %d %d\n",stu[m].name,stu[m].num,stu[m].room);
}
return m;
fclose(f);
if(flag>0)
{
printf("%s %d %d\n",stu[flag].name,stu[flag].num,stu[flag].room);
}
else printf("对不起,没有找到相匹配的记录\n");
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status NumSearch(int key)
{
//按学号查询;
int i;
FILE * f;
student stu[MAXSIZE];
if((f=fopen("numsort.txt","rb"))==NULL)
{
printf("cannot open namesort.txt file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,f);
}
int low=1;
int high=N;
int mid;
int flag=0;
while(low<=high)
{
mid=(low+high)/2;
if(stu[mid].num==key)
{
flag=mid;
break;
}
else
{
if(stu[mid].num>key)
high=mid-1;
else
low=mid+1;
}
}
fclose(f);
if(flag>0)
{
printf("%s %d %d\n",stu[flag].name,stu[flag].num,stu[flag].room);
}
else printf("对不起,没有找到相匹配的记录\n");
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
Status RoomSearch(int key)
{
//按房间号查询;
int i;
FILE * f;
student stu[MAXSIZE];
if((f=fopen("roomsort.txt","rb"))==NULL)
{
printf("cannot open roomsort.txt file!");
return ERROR;
}
for(i=1;i<=N;i++)
{
fread(&stu[i],sizeof(struct student),1,f);
}
int low=1;
int high=N;
//int mid;
int flag=0;
int t;
stu[0].room=key;
for(t=N;t>0;--t)
{if(stu[t].room==key)
printf("%s %d %d\n",stu[t].name,stu[t].num,stu[t].room);
}
return t;
fclose(f);
if(flag>0)
{
printf("%s %d %d\n",stu[flag].name,stu[flag].num,stu[flag].room);
}
else printf("对不起,没有找到相匹配的记录\n");
return OK;
}
/* ******** ******** ********* ********* ********* ********* ********* */
/* ******** ******** ********* main() ********* ********* ********* */
/* ******** ******** ********* ********* ********* ********* ********* */
void main()
{
int num;
int room;
int flag,flag1,flag2;
char cha;
char name[10];
cout<<" ******** 学生宿舍管理系统 ********"<<endl;
printf(" ------Powered by GUOXIAOJIE\n");
printf("------------------------------------------------------\n");
cout<<"是否需要录入入住学生信息(Y/N)"<<endl;
char cha1;
cin>>cha1;
if(cha1=='Y'||cha1=='y')
{printf("------------------------------------------------------\n");
printf("请将住宿学生信息输入(姓名 学号 房间号)\n");
Input();
NameSort();
NumSort();
RoomSort();
}
while(flag)
{printf("------------------------------------------------------\n");
cout<<"**************** 学生宿舍管理系统 ****************"<<endl;
printf("------------------------------------------------------\n");
printf("请选择操作:\n");
printf("A.按姓名查询\n");
printf("B.按学号查询\n");
printf("C.按房号查询\n");
printf("D.退出\n");
cout<<"注意:字母请输入大写……"<<endl;
cin>>cha;
switch(cha)
{
case 'A' :
flag1=1;
while(flag1)
{printf("------------------------------------------------------\n");
printf("A.输入要查询的名字\n");
printf("B.按姓名全部输出\n");
printf("C.返回\n");
printf("注意:字母请输入大写……\n");
cin>>cha;
switch(cha)
{
case 'A':
scanf("%s",name);
printf("查询结果为:\n");
printf("------------------------------------------------------\n");
NameSearch(name);
printf("------------------------------------------------------\n");
break;
case 'B':
Print("namesort.txt");
break;
case 'C':
flag1=0;
break;
default:
printf("------------------------------------------------------\n");
printf("!!!!!!!!你输入的命令无效。注意:命令字母请输入大写!!!!!!!!!!!\n");
}
}
break;
case 'B' :
while(flag2)
{printf("------------------------------------------------------\n");
printf("A.输入要查询的学号\n");
printf("B.按学号全部输出\n");
printf("C.返回\n");
printf("注意:字母请输入大写……\n");
cin>>cha;
switch(cha)
{
case 'A':
scanf("%d",&num);
printf("查询结果为:\n");
printf("------------------------------------------------------\n");
NumSearch(num);
break;
case 'B':
Print("numsort.txt");
break;
case 'C':
flag2=0;
break;
default:
printf("------------------------------------------------------\n");
printf("!!!!!!!!你输入的命令无效。注意:命令字母请输入大写!!!!!!!!!!!\n");
}
}
break;
case 'C' :
flag1=1;
while(flag1)
{printf("------------------------------------------------------\n");
printf("A.输入要查询的宿舍号\n");
printf("B.按宿舍号全部输出\n");
printf("C.返回\n");
printf("注意:字母请输入大写……\n");
cin>>cha;
switch(cha)
{
case 'A':
scanf("%d",&room);
printf("查询结果为:\n");
printf("------------------------------------------------------\n");
RoomSearch(room);
printf("------------------------------------------------------\n");
break;
case 'B':
Print("roomsort.txt");
break;
case 'C':
flag1=0;
break;
default:
printf("------------------------------------------------------\n");
printf("!!!!!!!!你输入的命令无效。注意:命令字母请输入大写!!!!!!!!!!!\n");
}
}
break;
case 'D' :
flag=0;
break;
default:
printf("------------------------------------------------------\n");
printf("!!!!!!!!你输入的命令无效。注意:命令字母请输入大写!!!!!!!!!!!\n");
}
}
}
4. 程序是如何编写的
步骤如下:
编写设计环境,良好的编程习惯和风格不仅可以使程序代码更易于读懂和修改,更重要的是,它可以使程序的结构更加合理,有助于提高程序的执行效率。
结构设计:也就是对程序的整体框架进行设计,设计出我们需要使用的模块等等,并画出流程图。
用户界面设计:设计出用于与用户交互的输入输出界面。
代码设计:在这个步骤中,我们要进行代码的编写。
调试:对程序中正在发生或可能发生的各种错误进行处理。
维护:对程序进行升级,对原有错误进行修改。
5. C语言中,如何用多个文件编写程序
将一个函数写在一个文件里,然后再在另一个文件里用“include”包含这个文件。
举例:
在文件c1.c里编一个函数:
void printWord(){
printf("Hello!world!");
}
再建立一个文件c2.c,文件开头写上#include"c1.c",就可以调用c1.c里的函数printword()了
这样通过include操作,可以把任意多个文件连接起来,编译成一个程序运行。
6. 在WIN7中怎样编写程序文件
图标是俩齿轮的文件名称叫做“动态链接库”,它是给其它应用程序函数的。
这样的文件是用程序语言定的,程序语言有:C/C++,C#,VB,JAVA等,
你要写这样的文件,就得先学习编程,现在比较合适C++,因为学它的人比较多,
而且写出来的程序运行性能也好。
7. 怎样用文本文档文件编写程序
KEIL汇编语言写的不是创建一个文件,将其保存为一个C文件,但要保存为ASM文件类型,如果保存为C格式是一个C语言。保存后,程序从文本文件复制并粘贴在ASM文件就行了。
8. 如何编写程序文件
分管理手册、程序文件、记录文件。找一本质量体系书看看,上面就有。若要认证,认证代理机构会教你怎么写文件
9. 如何编写程序文件.ppt
打开powerpoint2010软件,软件建立的是一个空白的演示文稿,如图,空白幻灯片可能会让您望而生畏;不要被它吓倒。很快,您就能在其中熟练地添加各种内容了。PowerPoint 窗口中间放着一张很大的空白幻灯片。屏幕上写着“单击此处添加标题”。这听起来很容易,但您从没有这方面经验,因此空白画布可能让您觉得无所适从。
在幻灯片窗格中,直接在幻灯片的占位符内键入文本:在 PowerPoint 中打开的第一个窗口有一块较大的工作空间,该空间位于窗口中部,其周围有多个小区域。这块中心空间是幻灯片区域,正式名称为“幻灯片窗格”。在此空间中工作时,您将直接在幻灯片上键入文本。在其中键入文本的区域是一个带虚线边框的方框,称为“占位符”。在幻灯片上键入的所有文本都位于这样的方框中。大多数幻灯片包含一个或多个占位符,用于输入标题、正文文本(如列表或常规段落)和其他内容(如图片或图表)。
打开 PowerPoint 时,放映中只有一张幻灯片。其他幻灯片要由您添加。您可以逐步添加幻灯片,也可以一次添加多张幻灯片。插入新幻灯片的方法有很多种,此处介绍两种添加幻灯片的快捷方法:①选择“开始”菜单项中“新建幻灯片”的命令按钮,或②在窗口左侧的“幻灯片”选项卡上,右键单击要在其后添加新幻灯片的幻灯片缩略图,然后在快捷菜单上单击“新幻灯片”:
插入图片:使用“插入”菜单将“图片”插入到幻灯片上,如下图。图片注意事项:图片,尤其是高分辨率照片,会使演示文稿急剧增大。所以,应注意使用可优化此类图片的各种方法,以尽可能将其缩小。
预设和自定义动画:动画功能可以使文本和图片飞入、弹跳和缩小。ppt动画效果为幻灯片上的文本、图片和其他内容赋予动作。除添加动作外,它们还帮助您吸引观众的注意力、突出重点、在幻灯片间切换以及通过将内容移入和移走来最大化幻灯片空间。如果使用得当,动画效果将带来典雅、趣味和惊奇.在任务窗格中单击方案将它应用于已选择的幻灯片缩略图中。ppt怎么做动画呢?点击对象,然后在菜单项“动画”里的选择“添加动画”中的一种自定义动画:
幻灯片切换:单击“切换”菜单项,选择每张幻灯片之间的切换效果(切换方案),若要将方案应于到所有幻灯片,在“计时”中单击“应用于所有幻灯片”,用powerPoint2010,会发现ppt2010动画效果有着更多的切换特效:
预演播放:在我们的PPT制作完成后,执行菜单项“幻灯片”中的“开始放映幻灯片”组中的“从头开始”即可全屏播放该幻灯片,或者单击“幻灯片放映”菜单上的“排练计时”,你可以设置每张幻灯片播放的时间。
保存:点击powerpoint软件上的“保存”按钮,保存类型中,如果选择“powerpoint演示文稿(*.pptx)”,则为能够修改编辑的幻灯片; 如果选择“powerpoint放映”,则为可以自动放映的幻灯片,一般制作完成后,可以选择此类型。 到此,一个幻灯片就制作成功了。
10. exe文件如何编写
一个程序从生成到运行起来,这中间是非常复杂的一个过程,光是编译链接生成可执行程序就够研究一辈子。
这个问题里的信息量太大,需要好几本书才能回答。只针对的题目给简单的说说一个.exe是怎么生成的。
程序需要依靠源文件来编译,编译之后生成中间代码(.obj)文件,之后依靠链接器将所有的.obj文件以及依靠的.lib文件链接起来生成一个.exe的文件。
这是最简单的理解,现在稍微展开点说说.exe文件。
在Windows中,所有的可执行文件(.exe, .dll, .ocx, .sys等等)都是按照一定文件内容格式来组织——PE格式。PE格式记录了一个程序文件加载运行过程中的信息,例如文件类型,是一个dll还是一个exe;运行的平台,32位系统还是64位系统等等。当一个程序运行的时候,程序的加载器会根据PE格式的内容将程序文件中的数据段,代码段等等映射到内存中,并正确的导入程序要使用的系统API,同时要将文件中的一些偏移地址修正为映射入内存之后的地址,之后调用程序代码的入口点来执行。就是这样一个过程涉及到了系统的内存管理,进程管理,线程调度等等一系列问题。
而这些PE格式的内容就是链接器在链接程序的时候填入的,换句话说就是链接器生成了一个PE文件用于执行。
每个操作系统都会有自己所支持的可执行文件格式。PE格式是Windows平台独有的。