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平台獨有的。