如果會(huì)編程序而不會(huì)畫流程圖,建議先把自己的程序研究一遍。
創(chuàng)新互聯(lián)是一家從事企業(yè)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)制作的專業(yè)的建站公司,擁有經(jīng)驗(yàn)豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁(yè)設(shè)計(jì)人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實(shí)力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨(dú)特的設(shè)計(jì)風(fēng)格。自公司成立以來曾獨(dú)立設(shè)計(jì)制作的站點(diǎn)上千多家。
若是畫主程序流程圖,那就需看懂主函數(shù)的程序,按照main()函數(shù)中的具體書寫過程來畫,例如:
程序開始---定義變量---初始化變量---使用選擇或者循環(huán)或者順序結(jié)構(gòu)---調(diào)用某一個(gè)子函數(shù)(可以沒有)---程序結(jié)束
以上是最簡(jiǎn)單的程序流程圖畫法。
若你是畫某一算法或是某一模塊的流程圖,就要把相應(yīng)的算法或是模塊看懂。分析算法或是模塊的具體走法,根據(jù)此走法就可以畫出對(duì)應(yīng)的流程圖。
如果你是初學(xué)者,想根據(jù)流程圖的畫法而去嘗試編程,建議就一定要研究清楚每一個(gè)使用到的算法,讀懂題目再開始編程。
下面是使VISO畫流程圖的幾個(gè)要點(diǎn):
1、選擇下載一個(gè)合適版本的VISO
2、程序開始結(jié)束用膠囊
3、分頁(yè)用圓圈
4、輸入用平行四邊形
5、語句用方塊
6、判斷用菱形
7、打印用波浪
畫法如下:
第一步:以特定的圖形符號(hào)加上說明,表示算法的圖,稱為流程圖或框圖
打開流程編輯工具。
第二步:選擇對(duì)應(yīng)的圖形
開始結(jié)束用橢圓形
過程用長(zhǎng)方形
第三步::繪制整個(gè)流程的過程
第四步:將各個(gè)流程節(jié)點(diǎn)用線連接起來
第五步:添加備注
#includestdlib.h
int N1,N2,kk1,kk2,kk3;
struct couse * head1;
struct student * head2;
struct couse//課程信息結(jié)構(gòu)體
{
int num1;
char name1[20];
int score;
int nelepeo;//課程已選人數(shù)
int Melepeo;//課程人數(shù)上限
struct couse * next;
};
struct student//學(xué)生信息結(jié)構(gòu)體
{
int num2;
char name2[20];
int nelenum[50];//已選課程編號(hào)
int nelen;//已選課程數(shù)量
struct student * next;
};
void Ms()
{
for(kk1=0;kk11100;kk1++)
for(kk2=0;kk21200;kk2++)
for(kk3=0;kk31200;kk3++);
}
void keyboardc()//錄入課程子函數(shù)(從鍵盤錄入)
{
struct couse *p1,*p2;
N1=0;
p1=p2=(struct couse*)malloc(sizeof(struct couse));
printf("課程編號(hào)\t課程名稱\t學(xué)分\t課程人數(shù)上限\n");
scanf("%d%s%d%d",p1-num1,p1-name1,p1-score,p1-Melepeo);
p1-nelepeo=0;
head1=NULL;
while(p1-num1!=0)
{
N1=N1+1;
if(N1==1)head1=p1;
else p2-next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
scanf("%d%s%d%d",p1-num1,p1-name1,p1-score,p1-Melepeo);
p1-nelepeo=0;
}
p2-next=NULL;
}
void filec()//錄入鍵盤子函數(shù)(從文件錄入)
{
FILE * fp;
char filepath[20];
struct couse *p1,*p2;
N1=0;
printf("輸入要讀入的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct couse*)malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",p1-num1,p1-name1,p1-score,p1-nelepeo,p1-Melepeo);
head1=NULL;
while(!feof(fp))
{
N1=N1+1;
if(N1==1)head1=p1;
else p2-next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",p1-num1,p1-name1,p1-score,p1-nelepeo,p1-Melepeo);
}
p2-next=NULL;
}
void inputc()//錄入課程主函數(shù)
{
int i;
printf("\t\t\t錄入課程信息\n");
printf("\n1.從鍵盤錄入\n");
printf("2.從文件錄入\n");
printf("3.返回主菜單\n");
printf("請(qǐng)選擇(1~3):\n");
scanf("%d",i);
switch(i)
{
case(1):keyboardc();break;
case(2):filec();break;
case(3):break;
}
}
void insertc(struct couse *incouse)//課程管理子函數(shù)(增加課程)
{
struct couse *p0,*p1,*p2;
p1=head1;
p0=incouse;
if(head1==NULL)
{
head1=p0;
p0-next=NULL;
}
else
{
while((p0-num1 p1-num1) (p1-next!=NULL))
{
p2=p1;
p1=p1-next;
}
if(p0-num1 = p1-num1)
{
if(head1==p1) head1=p0;
else p2-next=p0;
p0-next=p1;
}
else
{
p1-next=p0;
p0-next=NULL;
}
}
N1=N1+1;
}
void delc(int num1)//課程管理子函數(shù)(刪除課程)
{
struct couse *p1,*p2;
if(head1==NULL)
{
printf("\n沒有課程,無法刪除!\n");
goto end;
}
p1=head1;
while(num1!=p1-num1 p1-next!=NULL)
{
p2=p1;
p1=p1-next;
}
if(num1==p1-num1)
{
if(p1==head1) head1=p1-next;
else p2-next=p1-next;
printf("已刪除該編號(hào)課程!\n");
N1=N1-1;
}
else printf("無該編號(hào)的課程!\n");
end:;
}
void managementc()//課程管理主函數(shù)
{
struct couse * incouse;
int i,num1;
printf("\t\t\t課程管理\n");
printf("1.新增課程\n");
printf("2.刪除課程\n");
printf("3.返回主菜單\n");
printf("請(qǐng)選擇(1~3):\n");
scanf("%d",i);
switch(i)
{
case(1):
{
incouse=(struct couse *)malloc(sizeof(struct couse));
printf("課程編號(hào)\t課程名稱\t學(xué)分\t課程人數(shù)上限\n");
scanf("%d%s%d%d",incouse-num1,incouse-name1,incouse-score,incouse-Melepeo);
incouse-nelepeo=0;
insertc(incouse);
break;
}
case(2):
{
printf("請(qǐng)輸入要?jiǎng)h除課程的編號(hào):\n");
scanf("%d",num1);
delc(num1);
break;
}
case(3):break;
}
}
void keyboards()//錄入學(xué)生信息子函數(shù)(從鍵盤錄入)
{
int i;
struct student *p1,*p2;
N2=0;
p1=p2=(struct student *)malloc(sizeof(struct student));
printf("學(xué)生學(xué)號(hào)\t學(xué)生姓名\n");
scanf("%d%s",p1-num2,p1-name2);
p1-nelen=0;
for(i=0;i20;i++) p1-nelenum[i]=0;
head2=NULL;
while(p1-num2!=0)
{
N2=N2+1;
if(N2==1)head2=p1;
else p2-next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
scanf("%d%s",p1-num2,p1-name2);
p1-nelen=0;
for(i=0;i20;i++) p1-nelenum[i]=0;
}
p2-next=NULL;
}
void files()//錄入學(xué)生信息子函數(shù)(從文件錄入)
{
int i=0;
FILE * fp;
char filepath[20];
struct student *p1,*p2;
N2=0;
printf("輸入要讀入的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct student*)malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
head2=NULL;
while(!feof(fp))
{
i=0;
N2=N2+1;
if(N2==1)head2=p1;
else p2-next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
}
p2-next=NULL;
}
void inputs()//錄入學(xué)生信息主函數(shù)
{
int i;
printf("\t\t\t錄入學(xué)生信息\n");
printf("\n1.從鍵盤錄入\n");
printf("2.從文件錄入\n");
printf("3.返回主菜單\n");
printf("請(qǐng)選擇(1~3):\n");
scanf("%d",i);
switch(i)
{
case(1):keyboards();break;
case(2):files();break;
case(3):break;
}
}
void inserts(struct student * incouse)//學(xué)生信息管理子函數(shù)(填加學(xué)生信息)
{
struct student *p0,*p1,*p2;
p1=head2;
p0=incouse;
if(head2==NULL)
{
head2=p0;
p0-next=NULL;
}
else
{
while((p0-num2 p1-num2) (p1-next!=NULL))
{
p2=p1;
p1=p1-next;
}
if(p0-num2 = p1-num2)
{
if(head2==p1) head2=p0;
else p2-next=p0;
p0-next=p1;
}
else
{
p1-next=p0;
p0-next=NULL;
}
}
N2=N2+1;
}
void dels(int num2)//學(xué)生信息管理子函數(shù)(刪除學(xué)生信息)
{
struct student *p1,*p2;
if(head2==NULL)
{
printf("\n沒有該學(xué)生信息,無法刪除!\n");
goto end;
}
p1=head2;
while(num2!=p1-num2 p1-next!=NULL)
{
p2=p1;
p1=p1-next;
}
if(num2==p1-num2)
{
if(p1==head2) head2=p1-next;
else p2-next=p1-next;
printf("已刪除該學(xué)生信息!\n");
N2=N2-1;
}
else printf("無該學(xué)號(hào)的學(xué)生!\n");
end:;
}
void managements()//學(xué)生信息管理主函數(shù)
{
struct student * incouse;
int i,num2;
printf("\t\t\t學(xué)生信息管理\n");
printf("1.新增學(xué)生信息\n");
printf("2.刪除學(xué)生信息\n");
printf("3.返回主菜單\n");
printf("請(qǐng)選擇(1~3):\n");
scanf("%d",i);
switch(i)
{
case(1):
{
incouse=(struct student *)malloc(sizeof(struct student));
incouse-nelen=0;
incouse-nelenum[0]=0;
printf("學(xué)生學(xué)號(hào)\t學(xué)生姓名\n");
scanf("%d%s",incouse-num2,incouse-name2);
inserts(incouse);
break;
}
case(2):
{
printf("請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):\n");
scanf("%d",num2);
dels(num2);
break;
}
case(3):break;
}
}
void elect(struct student * s)//選課
{
struct couse * p;
int num1,i;
printf("請(qǐng)輸入要選課的編號(hào):\n");
scanf("%d",num1);
for(i=0;s-nelenum[i]!=0;i++);
s-nelenum[i]=num1;
(s-nelen)++;
p=head1;
while(p-num1!=num1) p=p-next;
(p-nelepeo)++;
}
void cheak()//學(xué)生選課子函數(shù)(查詢可選課程)
{
char e;
struct couse * c;
struct student * s;
int num2,i,j=0,t=0;
printf("請(qǐng)輸入你的學(xué)號(hào):");
scanf("%d",num2);
s=head2;
while(s-num2!=num2 s-next!=NULL) s=s-next;
if(s-num2!=num2)
{
printf("不存在你的信息,請(qǐng)進(jìn)入主菜單錄入你的信息!\n");
goto end;
}
c=head1;
printf("你的可選課程編號(hào):\n");
while(c!=NULL)
{
for(t=0,i=0;s-nelenum[i]!=0;i++)
{
if(c-num1==s-nelenum[i]) t=1;
}
if(t==0 (c-nelepeo!=c-Melepeo))
{
printf("%d\n",c-num1);
j++;
}
c=c-next;
}
if(j==0)
{
printf("你已選完所有課程,無法再多選!\n");
goto end;
}
printf("選課(y/n)?:\n");
getchar();
e=getchar();
i=0;
while(e=='y')
{
elect(s);
printf("繼續(xù)選課(y/n)?:\n");
getchar();
e=getchar();
}
end:;
}
void back(struct student * p)//退課
{
struct couse * p1;
int num1,i,j;
printf("請(qǐng)輸入你要退掉的課程編號(hào):\n");
scanf("%d",num1);
p1=head1;
while(p1-num1!=num1) p1=p1-next;
for(i=0;p-nelenum[i]!=num1;i++);
for(j=i;p-nelenum[j]!=0;j++) p-nelenum[j]=p-nelenum[j+1];
p-nelenum[--j]=0;
(p1-nelepeo)--;
printf("退課成功!\n");
}
void hcheak()//學(xué)生選課子函數(shù)(查詢已選課程)
{
char c;
struct couse * p0;
struct student * p;
int num2,i,f=0;
printf("請(qǐng)輸入學(xué)號(hào):\n");
scanf("%d",num2);
p=head2;
while(p-num2!=num2 p!=NULL) p=p-next;
if(p==NULL)
{
printf("不存在你的信息,請(qǐng)回主菜單錄入信息:\n");
goto end;
}
printf("已選課程編號(hào):\n");
if(p-nelenum[0]==0)
{
printf("你還沒選課!\n");
goto end;
}
for(i=0;p-nelenum[i]!=0;i++)
{
printf("%d\n",p-nelenum[i]);
p0=head1;
while(p0-num1!=p-nelenum[i]) p0=p0-next;
f=f+p0-score;
}
printf("總學(xué)分:%d\n",f);
printf("是否進(jìn)行退課(y/n)?");
getchar();
c=getchar();
while(c=='y')
{
back(p);
printf("繼續(xù)退課(y/n)?");
getchar();
c=getchar();
(p-nelen)--;
}
end:;
}
void elective()//學(xué)生選課主函數(shù)
{
int i;
printf("\t\t\t學(xué)生選課\n");
printf("1.查詢可選課程\n");
printf("2.查詢已選課程\n");
printf("3.返回主菜單\n");
printf("請(qǐng)輸入(1~3):\n");
scanf("%d",i);
switch(i)
{
case(1):cheak();break;
case(2):hcheak();break;
case(3):break;
}
}
void listc()//輸出課程信息
{
struct couse * p;
p=head1;
printf("課程編號(hào) 課程名稱 學(xué)分 課程已選人數(shù) 課程人數(shù)上限\n");
while(p!=NULL)
{
printf("%-8d%10s%6d%8d%12d\n",p-num1,p-name1,p-score,p-nelepeo,p-Melepeo);
p=p-next;
}
}
void lists()//輸出學(xué)生信息
{
struct student * p;
p=head2;
printf("學(xué)生學(xué)號(hào) 學(xué)生姓名 已選課程數(shù)量\n");
while(p!=NULL)
{
printf("%-4d %10s %6d\n",p-num2,p-name2,p-nelen);
p=p-next;
}
}
void intoc()//存儲(chǔ)課程信息
{
FILE * fp;
struct couse * p;
char filepath[30];
printf("輸入課程信息要保存的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失敗!");
exit(0);
}
p=head1;
while(p!=NULL)
{
fprintf(fp,"%d %s %d %d %d\n",p-num1,p-name1,p-score,p-nelepeo,p-Melepeo);
p=p-next;
}
fclose(fp);
printf("課程信息已保存在%s中!\n",filepath);
}
void intos()//存儲(chǔ)學(xué)生信息
{
FILE * fp;
struct student * p;
char filepath[30];
printf("輸入學(xué)生信息要保存的文件路徑:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失敗!");
exit(0);
}
p=head2;
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p-next;
}
fclose(fp);
printf("學(xué)生信息已保存在%s中!\n",filepath);
}
void into()//存儲(chǔ)信息
{
int i;
printf("1.存儲(chǔ)課程信息\n");
printf("2.存儲(chǔ)學(xué)生信息\n");
printf("3.返回主菜單\n");
printf("請(qǐng)輸入(1~3)\n");
scanf("%d",i);
switch(i)
{
case(1):intoc();break;
case(2):intos();break;
case(3):break;
}
}
void store()//信息主函數(shù)
{
int i;
printf("\t\t系統(tǒng)信息查看及存儲(chǔ)\n");
printf("1.查看課程信息\n");
printf("2.查看學(xué)生信息\n");
printf("3.存儲(chǔ)信息\n");
printf("4.返回主菜單\n");
printf("請(qǐng)輸入(1~4):\n");
scanf("%d",i);
switch(i)
{
case(1):listc();break;
case(2):lists();break;
case(3):into();break;
case(4):break;
}
}
int main()//主函數(shù)
{
int i;
start:
printf("\n\t\t\t歡迎使用學(xué)生選課系統(tǒng)!\n");
printf("菜單:\n");
printf("1.錄入課程信息\n");
printf("2.課程管理\n");
printf("3.錄入學(xué)生信息\n");
printf("4.學(xué)生信息管理\n");
printf("5.學(xué)生選課\n");
printf("6.系統(tǒng)信息查看及存儲(chǔ)\n");
printf("7.退出系統(tǒng)\n");
printf("\n請(qǐng)輸入菜單選項(xiàng)(1~7):\n");
scanf("%d",i);
if(i1 || i7)
{
printf("輸入錯(cuò)誤,請(qǐng)重輸:\n");
goto start;
}
switch(i)
{
case(1):
{
system("cls");
inputc();
goto start;
break;
}
case(2):
{
system("cls");
managementc();
goto start;
break;
}
case(3):
{
system("cls");
inputs();
goto start;
break;
}
case(4):
{
system("cls");
managements();
goto start;
break;
}
case(5):
{
system("cls");
elective();
goto start;
break;
}
case(6):
{
system("cls");
store();
goto start;
break;
}
case(7):
{
system("cls");
printf("感謝使用本系統(tǒng)!\n\n再見!\n");
}
}
return(0);
}
當(dāng)前名稱:c語言課程函數(shù)流程圖 c語言第七章函數(shù)課程
路徑分享:http://vcdvsql.cn/article8/doissip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、軟件開發(fā)、App設(shè)計(jì)、App開發(fā)、云服務(wù)器、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)