課程設計流程圖
『壹』 C語言課程設計流程圖和功能圖怎麼畫啊
流程圖就是你的思路,你怎樣寫程序就怎麼畫,當然如果想不出來就畫不了。流程圖有基本的符號,符號查一查就知道
比如我要計算輸入年份是否閏年,那麼設計思路是:先輸入一個整數,然後計算整數除以4的余數,再判斷余數是否等於零,是,則是閏年,否,則不是閏年
『貳』 跪求C語言 課程設計 算 24點,只要設計流程圖
這要有人願意幫你畫流程圖也太牛了,我以前寫過一份代碼,計算4個數和+-*/拼成24點,不知道是不是你這個問題,直接用的全搜索,代碼如下
#include <stdio.h>
#include <string.h>
/*
* game to get 24, give n, four symbols ( + - * / )
* will max f(n) = 3**(n-1) * n! * (n-1)! values
* f(4) = 3888 f(5) = 233280
* f(6) = 20995200 f(7) = 2645395200
* so maybe 6 or 7 is the limited.
*/
#define LMX_ABS(a) ((a)<0?(-(a)):(a))
bool DblEqual_L(double a, double b)
{
return LMX_ABS(a-b) < 0.0000001;
}
#define MAXN 6
#define MAX_SAVE 128
int n = 4, aim = 24;
int v[MAXN] = { 5, 3, 7, 8 };
char symbols[8] = "+-_*/?";
struct Node
{
double val;
int syb;
struct Node *l, *r, *p;
};
Node node[(MAXN*2-1) * MAX_SAVE], curr[MAXN*2-1];
Node *root[MAX_SAVE];
bool used[MAXN*2-1];
int i_save, i_exist, i_base;
void DfsCopy_L(Node *q, Node *p)
{
if (p->l != NULL){
node[i_base].p = q;
node[i_base].val = p->l->val;
node[i_base].syb = p->l->syb;
q->l = &node[i_base];
i_base++;
node[i_base].p = q;
node[i_base].val = p->r->val;
node[i_base].syb = p->r->syb;
q->r = &node[i_base];
i_base++;
DfsCopy_L(q->l, p->l);
DfsCopy_L(q->r, p->r);
}
}
void Save_L(Node *p)
{
i_base = i_save*(MAXN*2-1);
root[i_save] = &node[i_base];
Node *q = root[i_save];
q->val = p->val;
q->syb = p->syb;
i_base++;
DfsCopy_L(q, p);
i_save++;
}
void Print_L(Node *p)
{
if (p->syb < 0) printf("%d", (int)(p->val+0.0001));
else if (p->syb == 2 || p->syb == 5){
printf("( ");
Print_L(p->r);
printf(" %c ", symbols[p->syb-1]);
Print_L(p->l);
printf(" )");
}else{
printf("( ");
Print_L(p->l);
printf(" %c ", symbols[p->syb]);
Print_L(p->r);
printf(" )");
}
}
double Cal_L(double a, double b, int k)
{
double r;
switch (k)
{
case 0: r = a+b; break;
case 1: r = a-b; break;
case 2: r = b-a; break;
case 3: r = a*b; break;
case 4: r = a/b; break;
case 5: r = b/a; break;
default: r = 1.0; break;
}
return r;
}
void go(int step)
{
if (step == 2*n-1){
int i = 2*n-2;
if (DblEqual_L(curr[i].val, aim)){
i_exist++;
if (i_save < MAX_SAVE){
Save_L(&curr[i]);
}
Print_L(&curr[i]);
printf("\n");
}
return;
}
int i, j, k;
for (i = 0; i < step-1; i++)
if (used[i])
for (j = i+1; j < step; j++)
if (used[j]){
used[i] = false;
used[j] = false;
used[step] = true;
curr[step].l = &curr[i];
curr[step].r = &curr[j];
curr[i].p = &curr[step];
curr[j].p = &curr[step];
for (k = 0; k < 6; k++)
{
curr[step].syb = k;
curr[step].val = Cal_L(curr[i].val, curr[j].val, k);
go(step+1);
}
used[i] = true;
used[j] = true;
used[step] = false;
}
}
int main( int argc, char *argv[] )
{
int i;
for (i = 0; i < n; i++)
{
curr[i].val = v[i];
curr[i].syb = -1;
used[i] = true;
}
go(n);
return 0;
}
『叄』 c語言課程設計流程圖書寫樣本
#include <stdio.h>
#include <graphics.h> /*圖形函數頭文件 */
#include <math.h>
#include <string.h>
typedef struct bk {
char book_num[11];
char book_name[41];
int book_kc;
int book_xc;
struct bk * next;
}book; /* 圖書信息*/
typedef struct rd {
char reader_num[11];
char reader_name[11];
char reader_book_num[11];
struct rd * next ;
}reader;/*讀者信息*/
struct bk * h_book,* h_reader; /*全局變數,分別為指向圖書信息鏈表和讀者信息鏈表的頭指針*/
void Form_Insert_New_Book(); /*新書入庫菜單*/
void Form_Find_Book(); /*查詢圖書菜單 */
void Form_Borrow_Book(); /*借書菜單*/
void Form_Return_Book(); /*還書菜單*/
void Find_Book(char *); /*查詢圖書*/
void Insert_New_Book(char *,char * ,int ); /*新書入庫,即在鏈表中插入一個新節點*/
void Borrow_Book(char *,char *);/*借書,修改讀者借閱信息和圖書的現存信息*/
void Return_Book(char *,char *);/*還書,修改讀者借閱信息和圖書的現存信息*/
void print_book(struct bk *);/*輸出全部圖書信息*/
void print_reader(struct rd *);/*輸出全部讀者信息*/
void load_data();/*從文件中讀取數據,鏈表頭指針指向第一個節點*/
void init_reader();/*第一次運行程序時對三個讀者的初始化*/
void init_book();/*第一次運行程序時對三本圖書的初始化*/
void save();/*將鏈表中的信息保存到文件中*/
void M_Form()/*主菜單*/
{ char ch;
printf("\n 圖書管理系統主窗口");
printf("\n 0:退出系統");
printf("\n 1:新書入庫");
printf("\n 2:圖書查詢");
printf("\n 3:借書登記");
printf("\n 4:還書管理");
printf("\n 5:輸出全部信息");
do{ /*此循環用來保證選擇正確的數字鍵執行相應的功能*/
printf("\n\n 請選擇相應的功能代碼:");
scanf("%c",&ch);
fflush(stdin); /*用於清除鍵盤緩沖區中的多餘字元*/
}while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5');
switch(ch) /*根據輸入的字元進行選擇執行相應的模塊*/
{ case '0':exit(0);
case '1':Form_Insert_New_Book();break;
case '2':Form_Find_Book();break;
case '3':Form_Borrow_Book();break;
case '4':Form_Return_Book();break;
case '5':load_data();print_book(h_book);print_reader(h_reader);M_Form();
default:printf("error\n");exit(0);
}
}
void Form_Find_Book()
{ char ch;
char book_num[11];
printf("\n 圖書查詢功能模塊,請選擇相應的功能代碼:\n");
printf(" 0:返回到主菜單\n");
printf(" 1:圖書查詢");
do{
printf("\n\n 請選擇相應的功能代碼:");
scanf("%c",&ch);
fflush(stdin);
}while(ch!='0'&&ch!='1');
switch(ch)
{ case '0':M_Form();break; /*選擇0,則返回到上一級目錄,即主菜單*/
case '1':
{ printf(" \n請輸入需要需要查詢的書的編號:");
scanf("%s",book_num);
fflush(stdin);
Find_Book(book_num); /*執行查詢*/
Form_Find_Book();/*查詢完畢後繼續返回到查詢窗口,執行下一個查詢*/
}
default:printf("error\n");exit(0);
}
}
void Find_Book(char book_num[]) /*查詢圖書模塊,根據圖書編號查詢*/
{ struct bk *p;
p=h_book;
while(p!=NULL&&strcmp(p->book_num,book_num)!=0)
p=p->next; /*此循環用於查找,如果在中間找到,則p就不可能到末尾指向空*/
if(p==NULL) printf("\n\t此編號對應的圖書不存在!\n");
else { printf("\n\t圖書編號\t圖書名\t庫存量\t現存量 \n");
printf(" %10s\t %10s\t %d\t %d\t\n",p->book_num,p->book_name,p->book_kc,p->book_xc);
}
getch();
}
void init_book() /*初始化圖書模塊*/
{ book ba[3];
FILE *fp;
int i;
printf("\n 系統即將進行初始化,圖書初始化模塊:\n");
printf("\n 請分別輸入三本書的書號,書名,數量(以空格隔開):\n ");
for(i=0;i<3;i++) /*輸入3本圖書進行初始化*/
scanf("%s%s%d",ba[i].book_num,ba[i].book_name,&ba[i].book_kc);
for(i=0;i<3;i++) {ba[i].book_xc=ba[i].book_kc;} /*開始時庫存=現存*/
if((fp=fopen("book.dat","wb"))==NULL)/*建立新文件book.dat准備寫入數據*/
{ printf("不能建立圖書文件,初始化失敗!請重新啟動系統!\n"); return; }
for(i=0;i<3;i++)/*將初始化的3本圖書寫入文件book.dat中*/
{ if(fwrite(&ba[i],sizeof(struct bk),1,fp)!=1)
{ printf("\寫數據錯誤!\n"); exit(0); }
}
fclose(fp);
}
void init() /*對圖形函數、圖書信息、讀者信息進行初始化(本程序中暫且沒有用圖形函數)*/
{ int drive=DETECT,mode=0;
initgraph(&drive,&mode,"");
init_book();
init_reader();
}
void Insert_New_Book(char book_num[],char book_name[],int number)
/*增加1本新書,讀入新書的名稱、編號和數量*/
{ struct bk *book_fp;
struct bk *p,*q,*t;
q=p=h_book;
while(p!=NULL&&strcmp(p->book_num,book_num)!=0) { q=p;p=p->next; }
if(strcmp(p->book_num,book_num)==0)
{ printf("\n\t\t此編號已經存在,請重新輸入!\n");
return;
}
t=(struct bk *)malloc(sizeof(struct bk));
strcpy(t->book_num,book_num);
strcpy(t->book_name,book_name);
t->book_kc=t->book_xc=number;
q->next=t;t->next=NULL;
if((book_fp=fopen("book.dat","ab"))==NULL)
{ printf("不能建立圖書文件,初始化失敗!請重新啟動系統!\n"); return; }
/*將新書信息添加到文件中*/
fwrite(t,sizeof(struct bk),1,book_fp);
fclose(book_fp);
}
void print_book(struct bk *h)
/*輸出圖書信息*/
{ struct bk *p;
p=h;
printf("\n\t圖書編號 \t圖書名 \t庫存量 \t現存量 \n");
while(p!=NULL)
{ printf(" %10s\t %10s %10d\t%10d\n",p->book_num,p->book_name,p->book_kc,p->book_xc);
p=p->next;
}
}
void print_reader(struct rd *h)
/*輸出讀者信息*/
{ struct rd *p;
p=h;
printf("\n\t讀者編號 \t讀者姓名 \t所借書號 \n");
while(p!=NULL)
{ printf(" %10s\t %10s %10s\n",p->reader_num,p->reader_name,p->reader_book_num);
p=p->next;
}
getch();
}
void Form_Borrow_Book()
/*借書菜單界面*/
{ char ch;
char book_num[11],reader_num[11];
printf("\n 圖書借閱功能模塊,請選擇相應的功能代碼:\n");
printf(" 0:返回到主菜單\n");
printf(" 1:圖書借閱\n");
do{
printf("\n\n 請選擇相應的功能代碼:");
scanf("%c",&ch);
fflush(stdin);
}while(ch!='0'&&ch!='1');
switch(ch)
{ case '0':M_Form();break;
case '1':
{ printf(" \n請輸入讀者編號與所借書編號:(以空格分隔)");
scanf("%s%s",reader_num,book_num);
fflush(stdin);
Borrow_Book(reader_num,book_num);/*調用借書函數,執行借書功能*/
Form_Borrow_Book();/*借書完成後,程序返回到借書菜單*/
}
default:printf("error\n");exit(0);
}
}
void Borrow_Book(char reader_num[],char book_num[])
/*輸入讀者編號,和需要借閱的書的編號,執行借書功能*/
{ struct bk *book_p;
struct rd *reader_p;
book_p=h_book;
while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0)
book_p=book_p->next;
if(book_p==NULL)
{ printf("\n\t此編號對應的圖書不存在!\n");
Form_Borrow_Book();
}
reader_p=h_reader;
while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0))
reader_p=reader_p->next;
if(reader_p==NULL)
{ printf("\n\t此編號對應的讀者不存在!\n");
Form_Borrow_Book();
}
else if(strcmp(reader_p->reader_book_num,"0")!=0)
{ printf("\n\t已達到最大借閱數,不能再借書!\n");
Form_Borrow_Book();
}
else {
book_p->book_xc=book_p->book_xc-1;/*借書完成後,修改現存量*/
strcpy(reader_p->reader_book_num,book_p->book_num);/*修改讀者的借閱信息*/
save();/*將修改後的信息保存到文件中*/
load_data(); /*讀入新文件中的數據*/}
Form_Borrow_Book();/*程序執行完畢後,返回到借書菜單界面*/
}
void Form_Return_Book()
/*還書菜單*/
{ char ch;
char book_num[11],reader_num[11];
printf("\n 歸還圖書功能模塊,請選擇相應的功能代碼:\n");
printf(" 0:返回到主菜單\n");
printf(" 1:歸還圖書\n");
do{
printf("\n\n 請選擇相應的功能代碼:");
scanf("%c",&ch);
fflush(stdin);
}while(ch!='0'&&ch!='1');
switch(ch)
{ case '0':M_Form();break;
case '1':
{ printf(" \n請輸入讀者編號與所還書編號:(以空格分隔)");
scanf("%s%s",reader_num,book_num);
fflush(stdin);
Return_Book(reader_num,book_num);/*調用還書函數*/
Form_Return_Book();
}
default:printf("error\n");exit(0);
}
}
void Return_Book(char reader_num[],char book_num[])
/*輸入讀者編號和所還書編號執行還書*/
{ struct bk *book_p;
struct rd *reader_p;
book_p=h_book;
while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0)
book_p=book_p->next;
if(book_p==NULL)
{ printf("\n\t此編號對應的圖書不存在!\n");
Form_Return_Book();
}
reader_p=h_reader;
while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0))
reader_p=reader_p->next;
if(reader_p==NULL)
{ printf("\n\t此編號對應的讀者不存在!\n");
Form_Return_Book();
}
else if(strcmp(reader_p->reader_book_num,book_num)!=0)
{ printf("\n\t讀者沒有借閱此書\n");
Form_Return_Book();
}
else {
book_p->book_xc=book_p->book_xc+1;/*還書後,修改圖書庫存量*/
strcpy(reader_p->reader_book_num,"0");/*還書後,修改讀者借閱信息*/
save();/*保存到文件*/
load_data(); /*讀入文件中的數據*/}
Form_Return_Book();
}
void init_reader()
/*系統第一次運行時,初始化3位讀者信息,從鍵盤讀入*/
{ FILE *fp;
reader ra[3];
int i;
printf("\n 系統即將進行讀者初始化:\n");
printf("\n 請分別輸入三位讀者的編號和姓名(以空格隔開):\n ");
for(i=0;i<3;i++)
scanf("%s%s",ra[i].reader_num,ra[i].reader_name);
for(i=0;i<3;i++)
strcpy(ra[i].reader_book_num,"0");
if((fp=fopen("reader.dat","wb"))==NULL)
{ printf("不能建立讀者文件,初始化失敗!請重新啟動系統!\n"); return; }
for(i=0;i<3;i++)/*將3位讀者信息寫入文件*/
{ if(fwrite(&ra[i],sizeof(struct rd),1,fp)!=1)
{ printf("\寫數據錯誤!\n"); exit(0); }
}
}
void Form_Insert_New_Book()
/*添加新書菜單*/
{ char ch;
struct bk t;
printf("\n 新書入庫功能模塊,請選擇相應的功能代碼:\n");
printf(" 0:返回到主菜單\n");
printf(" 1:新書入庫");
do{
printf("\n\n 請選擇相應的功能代碼:");
scanf("%c",&ch);
fflush(stdin);
}while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5');
switch(ch)
{ case '0':M_Form();break;
case '1':
{ printf(" \n請按順序輸入新書的編號、名稱、數量(以空格隔開):");
scanf("%s%s%d",t.book_num,t.book_name,&t.book_kc);
fflush(stdin);
Insert_New_Book(t.book_num,t.book_name,t.book_kc);
Form_Insert_New_Book();
}
default:printf("error\n");exit(0);
}
}
void load_data()
/*從文件book.dat和文件reader.dat中讀取數據到內存*/
/*將讀取的數據存放到2個鏈表中*/
{ struct bk *book_p1,*book_p2,*book_p3;
struct rd *reader_p1,*reader_p2,*reader_p3;
FILE *fp_book,*fp_reader;
fp_book=fopen("book.dat","rb");
book_p1=(struct bk *)malloc(sizeof(struct bk));
fread(book_p1,sizeof(struct bk),1,fp_book);
h_book=book_p3=book_p2=book_p1;
while(! feof(fp_book))
{ book_p1=(struct bk *)malloc(sizeof(struct bk));
fread(book_p1,sizeof(struct bk),1,fp_book);
book_p2->next=book_p1;book_p3=book_p2;book_p2=book_p1;
}
book_p3->next=NULL;
free(book_p1);
fclose(fp_book);
fp_reader=fopen("reader.dat","rb");
reader_p1=(struct rd *)malloc(sizeof(struct rd));
fread(reader_p1,sizeof(struct rd),1,fp_reader);
h_reader=reader_p3=reader_p2=reader_p1;
while(! feof(fp_reader))
{ reader_p1=(struct rd *)malloc(sizeof(struct rd));
fread(reader_p1,sizeof(struct rd),1,fp_reader);
reader_p2->next=reader_p1;reader_p3=reader_p2;reader_p2=reader_p1;
}
reader_p3->next=NULL;
free(reader_p1);
fclose(fp_reader);
}
void save()
/*將鏈表中的數據保存到內存中*/
{ FILE *book_fp,*reader_fp;
struct bk *book_p;
struct rd *reader_p;
book_p=h_book; reader_p=h_reader;
if((book_fp=fopen("book.dat","wb"))==NULL)
{ printf("不能建立圖書文件,初始化失敗!請重新啟動系統!\n"); return; }
while(book_p!=NULL)
{ if(fwrite(book_p,sizeof(struct bk),1,book_fp)!=1)
{ printf("\寫數據錯誤!\n"); exit(0); }
book_p=book_p->next;
}
fclose(book_fp);
if((reader_fp=fopen("reader.dat","wb"))==NULL)
{ printf("不能建立圖書文件,初始化失敗!請重新啟動系統!\n"); return; }
while(reader_p!=NULL)
{ if(fwrite(reader_p,sizeof(struct rd),1,reader_fp)!=1)
{ printf("\寫數據錯誤!\n"); exit(0); }
reader_p=reader_p->next;
}
fclose(reader_fp);
}
main()
{ FILE * fp;
struct bk temp;
clrscr();
h_book=NULL;h_reader=NULL;
if((fp=fopen("book.dat","r"))==NULL)
init();/*第1次運行系統時的初始化*/
fclose(fp);
load_data();/*從文件中讀入數據*/
M_Form();/*顯示主菜單*/
save();/*保存內存中的數據(即鏈表中的數據)到文件*/
getch();
『肆』 求JAVA課程設計俄羅斯方塊代碼,流程圖,能有詳細說明介紹的更好!感激不盡!
import java.awt.*;
import java.awt.event.*;
//俄羅斯方塊類
public class ERS_Block extends Frame{
public static boolean isPlay=false;
public static int level=1,score=0;
public static TextField scoreField,levelField;
public static MyTimer timer;
GameCanvas gameScr;
public static void main(String[] argus){
ERS_Block ers = new ERS_Block("俄羅斯方塊游戲 V1.0 Author:Vincent");
WindowListener win_listener = new WinListener();
ers.addWindowListener(win_listener);
}
//俄羅斯方塊類的構造方法
ERS_Block(String title){
super(title);
setSize(600,480);
setLayout(new GridLayout(1,2));
gameScr = new GameCanvas();
gameScr.addKeyListener(gameScr);
timer = new MyTimer(gameScr);
timer.setDaemon(true);
timer.start();
timer.suspend();
add(gameScr);
Panel rightScr = new Panel();
rightScr.setLayout(new GridLayout(2,1,0,30));
rightScr.setSize(120,500);
add(rightScr);
//右邊信息窗體的布局
MyPanel infoScr = new MyPanel();
infoScr.setLayout(new GridLayout(4,1,0,5));
infoScr.setSize(120,300);
rightScr.add(infoScr);
//定義標簽和初始值
Label scorep = new Label("分數:",Label.LEFT);
Label levelp = new Label("級數:",Label.LEFT);
scoreField = new TextField(8);
levelField = new TextField(8);
scoreField.setEditable(false);
levelField.setEditable(false);
infoScr.add(scorep);
infoScr.add(scoreField);
infoScr.add(levelp);
infoScr.add(levelField);
scorep.setSize(new Dimension(20,60));
scoreField.setSize(new Dimension(20,60));
levelp.setSize(new Dimension(20,60));
levelField.setSize(new Dimension(20,60));
scoreField.setText("0");
levelField.setText("1");
//右邊控制按鈕窗體的布局
MyPanel controlScr = new MyPanel();
controlScr.setLayout(new GridLayout(5,1,0,5));
rightScr.add(controlScr);
//定義按鈕play
Button play_b = new Button("開始游戲");
play_b.setSize(new Dimension(50,200));
play_b.addActionListener(new Command(Command.button_play,gameScr));
//定義按鈕Level UP
Button level_up_b = new Button("提高級數");
level_up_b.setSize(new Dimension(50,200));
level_up_b.addActionListener(new Command(Command.button_levelup,gameScr));
//定義按鈕Level Down
Button level_down_b =new Button("降低級數");
level_down_b.setSize(new Dimension(50,200));
level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr));
//定義按鈕Level Pause
Button pause_b =new Button("游戲暫停");
pause_b.setSize(new Dimension(50,200));
pause_b.addActionListener(new Command(Command.button_pause,gameScr));
//定義按鈕Quit
Button quit_b = new Button("退出遊戲");
quit_b.setSize(new Dimension(50,200));
quit_b.addActionListener(new Command(Command.button_quit,gameScr));
controlScr.add(play_b);
controlScr.add(level_up_b);
controlScr.add(level_down_b);
controlScr.add(pause_b);
controlScr.add(quit_b);
setVisible(true);
gameScr.requestFocus();
}
}
//重寫MyPanel類,使Panel的四周留空間
class MyPanel extends Panel{
public Insets getInsets(){
return new Insets(30,50,30,50);
}
}
//游戲畫布類
class GameCanvas extends Canvas implements KeyListener{
final int unitSize = 30; //小方塊邊長
int rowNum; //正方格的行數
int columnNum; //正方格的列數
int maxAllowRowNum; //允許有多少行未削
int blockInitRow; //新出現塊的起始行坐標
int blockInitCol; //新出現塊的起始列坐標
int [][] scrArr; //屏幕數組
Block b; //對方快的引用
//畫布類的構造方法
GameCanvas(){
rowNum = 15;
columnNum = 10;
maxAllowRowNum = rowNum - 2;
b = new Block(this);
blockInitRow = rowNum - 1;
blockInitCol = columnNum/2 - 2;
scrArr = new int [32][32];
}
//初始化屏幕,並將屏幕數組清零的方法
void initScr(){
for(int i=0;i<rowNum;i++)
for (int j=0; j<columnNum;j++)
{ scrArr[i][j]=0; }
b.reset();
repaint();
}
//重新刷新畫布方法
public void paint(Graphics g){
for(int i = 0; i < rowNum; i++)
for(int j = 0; j < columnNum; j++)
drawUnit(i,j,scrArr[i][j]);
}
//畫方塊的方法
public void drawUnit(int row,int col,int type){
scrArr[row][col] = type;
Graphics g = getGraphics();
switch(type){ //表示畫方快的方法
case 0: g.setColor(Color.black);break; //以背景為顏色畫
case 1: g.setColor(Color.blue);break; //畫正在下落的方塊
case 2: g.setColor(Color.magenta);break; //畫已經落下的方法
}
g.fill3DRect(col*unitSize,getSize().height-(row+1)*unitSize,unitSize,unitSize,true);
g.dispose();
}
public Block getBlock(){
return b; //返回block實例的引用
}
//返回屏幕數組中(row,col)位置的屬性值
public int getScrArrXY(int row,int col){
if (row < 0 || row >= rowNum || col < 0 || col >= columnNum)
return(-1);
else
return(scrArr[row][col]);
}
//返回新塊的初始行坐標方法
public int getInitRow(){
return(blockInitRow); //返回新塊的初始行坐標
}
//返回新塊的初始列坐標方法
public int getInitCol(){
return(blockInitCol); //返回新塊的初始列坐標
}
//滿行刪除方法
void deleteFullLine(){
int full_line_num = 0;
int k = 0;
for (int i=0;i<rowNum;i++){
boolean isfull = true;
L1:for(int j=0;j<columnNum;j++)
if(scrArr[i][j] == 0){
k++;
isfull = false;
break L1;
}
if(isfull) full_line_num++;
if(k!=0 && k-1!=i && !isfull)
for(int j = 0; j < columnNum; j++){
if (scrArr[i][j] == 0)
drawUnit(k-1,j,0);
else
drawUnit(k-1,j,2);
scrArr[k-1][j] = scrArr[i][j];
}
}
for(int i = k-1 ;i < rowNum; i++){
for(int j = 0; j < columnNum; j++){
drawUnit(i,j,0);
scrArr[i][j]=0;
}
}
ERS_Block.score += full_line_num;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
//判斷游戲是否結束方法
boolean isGameEnd(){
for (int col = 0 ; col <columnNum; col ++){
if(scrArr[maxAllowRowNum][col] !=0)
return true;
}
return false;
}
public void keyTyped(KeyEvent e){
}
public void keyReleased(KeyEvent e){
}
//處理鍵盤輸入的方法
public void keyPressed(KeyEvent e){
if(!ERS_Block.isPlay)
return;
switch(e.getKeyCode()){
case KeyEvent.VK_DOWN:b.fallDown();break;
case KeyEvent.VK_LEFT:b.leftMove();break;
case KeyEvent.VK_RIGHT:b.rightMove();break;
case KeyEvent.VK_SPACE:b.leftTurn();break;
}
}
}
//處理控制類
class Command implements ActionListener{
static final int button_play = 1; //給按鈕分配編號
static final int button_levelup = 2;
static final int button_leveldown = 3;
static final int button_quit = 4;
static final int button_pause = 5;
static boolean pause_resume = true;
int curButton; //當前按鈕
GameCanvas scr;
//控制按鈕類的構造方法
Command(int button,GameCanvas scr){
curButton = button;
this.scr=scr;
}
//按鈕執行方法
public void actionPerformed (ActionEvent e){
switch(curButton){
case button_play:if(!ERS_Block.isPlay){
scr.initScr();
ERS_Block.isPlay = true;
ERS_Block.score = 0;
ERS_Block.scoreField.setText("0");
ERS_Block.timer.resume();
}
scr.requestFocus();
break;
case button_levelup:if(ERS_Block.level < 10){
ERS_Block.level++;
ERS_Block.levelField.setText(""+ERS_Block.level);
ERS_Block.score = 0;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
scr.requestFocus();
break;
case button_leveldown:if(ERS_Block.level > 1){
ERS_Block.level--;
ERS_Block.levelField.setText(""+ERS_Block.level);
ERS_Block.score = 0;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
scr.requestFocus();
break;
case button_pause:if(pause_resume){
ERS_Block.timer.suspend();
pause_resume = false;
}else{
ERS_Block.timer.resume();
pause_resume = true;
}
scr.requestFocus();
break;
case button_quit:System.exit(0);
}
}
}
//方塊類
class Block {
static int[][] pattern = {
{0x0f00,0x4444,0x0f00,0x4444},//用十六進至表示,本行表示長條四種狀態
{0x04e0,0x0464,0x00e4,0x04c4},
{0x4620,0x6c00,0x4620,0x6c00},
{0x2640,0xc600,0x2640,0xc600},
{0x6220,0x1700,0x2230,0x0740},
{0x6440,0x0e20,0x44c0,0x8e00},
{0x0660,0x0660,0x0660,0x0660}
};
int blockType; //塊的模式號(0-6)
int turnState; //塊的翻轉狀態(0-3)
int blockState; //快的下落狀態
int row,col; //塊在畫布上的坐標
GameCanvas scr;
//塊類的構造方法
Block(GameCanvas scr){
this.scr = scr;
blockType = (int)(Math.random() * 1000)%7;
turnState = (int)(Math.random() * 1000)%4;
blockState = 1;
row = scr.getInitRow();
col = scr.getInitCol();
}
//重新初始化塊,並顯示新塊
public void reset(){
blockType = (int)(Math.random() * 1000)%7;
turnState = (int)(Math.random() * 1000)%4;
blockState = 1;
row = scr.getInitRow();
col = scr.getInitCol();
dispBlock(1);
}
//實現「塊」翻轉的方法
public void leftTurn(){
if(assertValid(blockType,(turnState + 1)%4,row,col)){
dispBlock(0);
turnState = (turnState + 1)%4;
dispBlock(1);
}
}
//實現「塊」的左移的方法
public void leftMove(){
if(assertValid(blockType,turnState,row,col-1)){
dispBlock(0);
col--;
dispBlock(1);
}
}
//實現塊的右移
public void rightMove(){
if(assertValid(blockType,turnState,row,col+1)){
dispBlock(0);
col++;
dispBlock(1);
}
}
//實現塊落下的操作的方法
public boolean fallDown(){
if(blockState == 2)
return(false);
if(assertValid(blockType,turnState,row-1,col)){
dispBlock(0);
row--;
dispBlock(1);
return(true);
}else{
blockState = 2;
dispBlock(2);
return(false);
}
}
//判斷是否正確的方法
boolean assertValid(int t,int s,int row,int col){
int k = 0x8000;
for(int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++){
if((int)(pattern[t][s]&k) != 0){
int temp = scr.getScrArrXY(row-i,col+j);
if (temp<0||temp==2)
return false;
}
k = k >> 1;
}
}
return true;
}
//同步顯示的方法
public synchronized void dispBlock(int s){
int k = 0x8000;
for (int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++){
if(((int)pattern[blockType][turnState]&k) != 0){
scr.drawUnit(row-i,col+j,s);
}
k=k>>1;
}
}
}
}
//定時線程
class MyTimer extends Thread{
GameCanvas scr;
public MyTimer(GameCanvas scr){
this.scr = scr;
}
public void run(){
while(true){
try{
sleep((10-ERS_Block.level + 1)*100);
}
catch(InterruptedException e){}
if(!scr.getBlock().fallDown()){
scr.deleteFullLine();
if(scr.isGameEnd()){
ERS_Block.isPlay = false;
suspend();
}else
scr.getBlock().reset();
}
}
}
}
class WinListener extends WindowAdapter{
public void windowClosing (WindowEvent l){
System.exit(0);
}
}
『伍』 數據結構(C語言)約瑟夫環課程設計,主要要有代碼的流程分析(流程圖等等),還有演算法描述。
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int password;
int num;
struct Node *next;
}Node,*Link;
void InitList(Link &L)
{
L=(Node *)malloc(sizeof(Node));
if(!L) exit(1);
L->password=0;
L->num=0;
L->next=L;
}
void Creater(int n,Link &L)
{
Link p,q;
q=L;
for(int i=1;i<=n;i++)
{
p=(Node *)malloc(sizeof(Node));
if(!p) exit(1);
printf("請輸入第 %d 個人的密碼 : ",i);
scanf("%d",&p->password);
p->num=i;
L->next=p;
L=p;
}
L->next=q->next;
free(q);
}
void main()
{
printf("*********************約瑟夫環********************* \n");
Link L,p,q;
int n,m;
int a=1;
int b=1;
while(b==1)
{
L=NULL;
InitList(L);
printf("請輸入總人數 N: \n");
scanf("%d",&n);
while(n<=1)
{
printf("輸入的總人數有誤,請重新輸入大於1的總人數:\n");
scanf("%d",&n);
}
printf("請輸入初始的上限值 M (正整數):\n ");
scanf("%d",&m);
while(m<0)
{
printf("輸入上限值有誤,請重新輸入:\n");
scanf("%d",&m);
}
Creater(n,L);
printf("最終出列的順序為 : \n");
p=L;
for(int i=1;i<=n;i++)
{
for(int j=1;j<m;j++)
{
p=p->next;
}
q=p->next;
m=q->password;
printf("%d ",q->num);
p->next=q->next;
free(q);
}
printf("\n");
printf("是否繼續重新輸入運算 (1.繼續 0.退出):\n ");
scanf("%d",&b);
printf("\n\n\n");
}
}
『陸』 C++課程設計的流程圖怎麼寫
判斷邏輯唄,就是來不斷的ifelse比如下圖:源
首先說下流程圖的各個部分的意思,其中橢圓形的START和END代表程序的起止部分,是不對應代碼的;方形和菱形的部分是程序的具體運行過程,方形代表順序操作,菱形代表判斷語句;
下面是該流程圖對應的代碼,各個部分對應的代碼都有注釋,該程序用於計算兩個輸入數字的最大公約數。
#include<iostream>
usingnamespacestd;
intmain(){
//START
intm,n,r;//定義輸入變數m,n和中間量r
boolflag;//定義判斷循環的判斷條件
//inputm,n
cin>>m>>n;//輸入變數m,n
//r=m%n
r=m%n;//計算r的值,是m除以n的余數
flag=true;//給循環判斷條件賦值
//判斷r是否為0
while(flag)//對應菱形中的判斷
{
flag=false;//控制循環
//當r不等於0的時候(true)
if(r!=0)
{
m=n;
n=r;
r=m%n;
flag=true;//控制循環
}
//當r等於0的時候(false)
else
{
//輸出n,即輸入數字的最大公約數
cout<<n<<endl;
}
}
//END
return0;
}
『柒』 操作系統課程設計(流程圖)
『捌』 學生選修課程設計系統流程圖
我認為 機械設計與製造一:機械製造及其自動化主幹學科:力學、機械工程。 主要課程:工程力學、機械設計基礎、電工與電子技術、微型計算機原理及應用、機械工程材料、製造技術基礎。 主要實踐性教學環節:包括軍訓,金工、電工、電子實習,認識實習,生產實習,社會實踐,課程設計,畢業設計(論文)等,一般應安排40周以上。 機械設計製造及其自動化專業 業務培養目標: 業務培養目標:本專業培養具備機械設計製造基礎知識與應用能力,能在工業生產第一線從事機械製造領域內的設計製造、科技開發、應用研究、運行管理和經營銷售等方面工作的高級工程技術人才。 業務培養要求:本專業學生主要學習機械設計與製造的基礎理論,學習微電子技術、計算機技術和信息處理技術的基本知識,受到現代機械工程師的基本訓練,具有進行機械產品設計、製造及設備控制、生產組織管理的基本能力。 畢業生應獲得以下幾方面的知識和能力: 1. 具有較扎實的自然科學基礎、較好的人文、藝術和社會科學基礎及正確運用本國語言、文字的表達能力; 2.較系統地掌握本專業領域寬廣的技術理論基礎知識,主要包括力學、機械學、電工與電子技術、機械工程材料、機械設計工程學、機械製造基礎、自動化基礎、市場經濟及企業管理等基礎知識; 3.具有本專業必需的制圖、計算、實驗、測試、文獻檢索和基本工藝操作等基本技能; 4.具有本專業領域內某個專業方向所必要的專業知識,了解其科學前沿及發展趨勢; 5.具有初步的科學研究、科技開發及組織管理能力; 6.具有較強的自學能力和創新意識。 機械設計與製造專業:一、培養目標 培養具有計算機輔助設計製造能力,能從事機械設計製造、設備的生產、維護調試和管理的高級技術應用性專門人才。 二、業務范圍 在機械製造領域,從事CAD/CAM設計、製造,設備管理工作。也可在機電部門從事高級職業技術工作。 三、知識能力結構 本專業學生應具有機械設計與製造,機械設備的操作、調試、維護和管理等基本能力。受到應用型專門技術人才的基本訓練。 四、主幹學科 機械工程、數控技術 五、核心課程 機械制圖、工程力學、機械設計基礎、電工電子技術、液壓與氣動、機械製造設備、機械製造技術、模具設計、計算機輔助設計與輔助工藝管理、數控加工技術、現代機械製造技術。 六、專業方向及特色 專業方向為機械設計與製造。以數控加工技術為主要特色。 七、教學進程計劃與學分(學時)要求 (一)學分(學時)要求,所需修滿的學分及課內總學時(含必修、限選和任選),詳見表1。 (二)必修課教學指導性進程計劃,見表2。 (三)限選課教學指導性進程計劃,見表3。 (四)任選課教學指導性進程計劃,見表4。 (五)實踐教學指導性進程計劃,見表5。 (六)等級考核與職業技能鑒定項目,見表6。 (七)指導性學期課程負荷見表7。 (八)學歷見表8。 八、課程配置流程與專業能力流程 課程配置流程圖,見圖1。專業能力流程圖,見圖2。 九、教學組織 1.必修課按教學計劃規定的教學進程開設。 2.限選課按表3進程計劃進行,學生應按限選大類中所含的課程在規定的學期內修滿學分。 3.任選課按教學計劃安排的學期開出,供學生選擇,第一學期不設選修課,從第二學期開始設置。每名學生必須在上一學期末提出選修的課程,若提出的某門課程的人數少於規定(選課人數應≥15人)的要求,則暫不開設。但應按表4在限定的時間內修滿規定的任選學分。 4.凡單獨開設的技能、實訓、實驗及課程設計等課程按表5進行,考核合格均計學分。 5.所開設的專題討論和課外活動,按表1在規定的時間內完成,經考核合格者,均可獲得學分。 6.學生必須參加規定的外語、計算機等國家等級必考項目考核(試)與職業技能鑒定任選項目的考核(試),按表6規定進行,考核(試)合格者,均可獲得規定的學分。 十、成績考核 1.每學期所開設課程(包括實踐教學環節)均應進行考試或考查,考試課程成績達到60分,考查課(按五級分制進行)達到3分以上,可取得該課程學分。 2.每學期期末考試科目不得超過4門,考試方法可採取開卷、口試、筆試、無紙化、大型作業、論文、等多種形式進行。技能實訓等課程
『玖』 數字電子課程設計流程圖是什麼
就是課設的一般流程圖
2008-12-18
01:58
還有
誰知道那兒有關於電飯煲課程設計的資料?要用數電設計
2008-12-19
『拾』 資料庫課程設計中業務流程圖,系統功能圖,還有數據流程圖有什麼區別
業務流程圖,主要是對業務的過程描述。在對業務流程進行描述時,應關注的是業務流程,做到與計算機和軟體實現無關;系統功能圖主要描述的是軟體或硬體系統要完成的功能,是業務流程在軟體系統或資料庫中的實現;數據流程圖,主要關注的是數據的傳遞。數據經過怎樣的加工,怎麼樣的傳遞。三個圖關注的領域不同。