课程设计流程图
『壹』 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
『拾』 数据库课程设计中业务流程图,系统功能图,还有数据流程图有什么区别
业务流程图,主要是对业务的过程描述。在对业务流程进行描述时,应关注的是业务流程,做到与计算机和软件实现无关;系统功能图主要描述的是软件或硬件系统要完成的功能,是业务流程在软件系统或数据库中的实现;数据流程图,主要关注的是数据的传递。数据经过怎样的加工,怎么样的传递。三个图关注的领域不同。