久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

貪吃蛇課程設(shè)計(jì)總結(jié)報(bào)告書(shū)

時(shí)間:2019-05-13 18:06:33下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《貪吃蛇課程設(shè)計(jì)總結(jié)報(bào)告書(shū)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《貪吃蛇課程設(shè)計(jì)總結(jié)報(bào)告書(shū)》。

第一篇:貪吃蛇課程設(shè)計(jì)總結(jié)報(bào)告書(shū)

貪吃蛇課程設(shè)計(jì)總結(jié)報(bào)告書(shū)

110200第7組

組員:李軼萌 劉浩 趙鵬

一.需求分析

(1)功能與數(shù)據(jù)需求:題目要求的功能(基本功能)與 擴(kuò)展功能 基本功能:貪吃蛇的蛇的移動(dòng)(上下左右)

隨機(jī)出現(xiàn)食物

蛇吃過(guò)后變長(zhǎng) 記分功能

撞到自己或邊界就失敗等基礎(chǔ)的功能

擴(kuò)展功能:難易度的選擇 背景音樂(lè) 空格暫停功能

容錯(cuò)功能(是否重新開(kāi)始/結(jié)束游戲)

(2)開(kāi)發(fā)環(huán)境

Vc6.0

二.概要設(shè)計(jì)(1)主要數(shù)據(jù)結(jié)構(gòu)(2)程序總體結(jié)構(gòu)(3)各模塊函數(shù)說(shuō)明 三 詳細(xì)設(shè)計(jì)(1)主函數(shù)部分(2)游戲部分

(3)判斷分?jǐn)?shù),是否繼續(xù)部分 四.測(cè)試

五.應(yīng)用程序功能的詳細(xì)說(shuō)明 規(guī)則:貪吃蛇在不首尾相碰且不碰邊界的情況下,盡可能多的吃掉隨機(jī)出現(xiàn)的食物,多吃多得分而益智的小游戲。

操作:上w下s左a右d 暫停 空格 退出或重新游戲肯定y 否定 n 六.總結(jié)提高(1)課程設(shè)計(jì)總結(jié)

(2)開(kāi)發(fā)中遇到的問(wèn)題和解決方法

開(kāi)發(fā)之初,大家對(duì)這個(gè)程序都不是很了解,所以剛開(kāi)始只追求把文件做出來(lái),可以運(yùn)行就可以了。但是后來(lái)發(fā)現(xiàn)自己做出來(lái)的東西連自己都提不起興趣,單純只有基本功能功能,沒(méi)有記分功能,也沒(méi)有暫停等等,畫(huà)片也很糟糕,大小比例也有些失調(diào),被老師戲稱(chēng)為“貪吃螞蟻”。后來(lái)經(jīng)過(guò)調(diào)試和自主創(chuàng)新,我們發(fā)現(xiàn)我們其實(shí)還是可以加入一些人性化的東西的。

(3)對(duì)自己完成課設(shè)完成情況的評(píng)價(jià) 附錄:程序源代碼

第二篇:貪吃蛇java課程設(shè)計(jì)

import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Snake extends JFrame {

private JPanel contentPane;//窗體內(nèi)容網(wǎng)格

private JButton btnStart = new JButton(“開(kāi)始”);//游戲開(kāi)始按鈕

private JButton btnPause = new JButton(“暫停”);//游戲暫停按鈕

private JButton btnExit = new JButton(“退出”);//游戲退出按

private JPanel pnlTop = new JPanel();//頂部按鈕和分?jǐn)?shù)面板

private JPanel pnlLeft = new JPanel();//左側(cè)面板

private JPanel playPanel = new JPanel();//游戲區(qū)面板

private BorderLayout borderLayout1 = new BorderLayout();//容器布局管理器

private BorderLayout borderLayout2 = new BorderLayout();

private GridLayout rbtnLayout = new GridLayout(10, 1, 1, 1);

private static final int UP = 1,LEFT = 2,DOWN = 3,RIGHT = 4;//蛇運(yùn)動(dòng)方向

private static final int ROWS = 30;//游戲區(qū)行數(shù)

private static final int COLS = 50;//游戲區(qū)列數(shù)

private boolean isPause = false;//游戲暫停標(biāo)志

private boolean isEnd;//游戲結(jié)束標(biāo)志

private SnakeBody snake;//貪食蛇

private int score = 0;//當(dāng)前得分

SnakeThread thread = new SnakeThread();//游戲主線程

private GridLayout grid1 = new GridLayout(ROWS,COLS,0,0);//游戲區(qū)布局

private JButton[][] blocks;//游戲區(qū)的所有方塊

JPanel jPanel2 = new JPanel();

JLabel jLabel1 = new JLabel(“得分:”);

JLabel lblScroe = new JLabel(“0”);

ButtonGroup buttonGroup1 = new ButtonGroup();

JRadioButton rbtnLow = new JRadioButton(“初級(jí)”, true);

JRadioButton rbtnMid = new JRadioButton(“中級(jí)”);

JRadioButton rbtnHigh = new JRadioButton(“高級(jí)”);

public Snake(){

super(“貪食蛇游戲”);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

contentPane =(JPanel)this.getContentPane();

contentPane.setLayout(borderLayout2);

this.setResizable(false);

this.setSize(new Dimension(512, 414));

keyAction keyAct = new keyAction();

this.addKeyListener(keyAct);

btnStart.addKeyListener(keyAct);

btnPause.addKeyListener(keyAct);

btnExit.addKeyListener(keyAct);

rbtnLow.addKeyListener(keyAct);

rbtnMid.addKeyListener(keyAct);

rbtnHigh.addKeyListener(keyAct);

btnAction btnAct = new btnAction();

btnStart.addActionListener(btnAct);

btnPause.addActionListener(btnAct);

btnExit.addActionListener(btnAct);

rbtnLow.addActionListener(btnAct);

rbtnMid.addActionListener(btnAct);

rbtnHigh.addActionListener(btnAct);

pnlLeft.setLayout(borderLayout1);

playPanel.setLayout(grid1);

playPanel.setBackground(Color.white);

playPanel.setBorder(BorderFactory.createEtchedBorder());

jPanel2.setLayout(rbtnLayout);

buttonGroup1.add(rbtnLow);

buttonGroup1.add(rbtnMid);

buttonGroup1.add(rbtnHigh);

rbtnLow.setSelected(true);

pnlLeft.add(playPanel);

pnlLeft.add(jPanel2, BorderLayout.WEST);

jPanel2.add(“f1”, rbtnLow);

jPanel2.add(“f2”, rbtnMid);

jPanel2.add(“f3”, rbtnHigh);

pnlTop.add(btnStart);

pnlTop.add(btnPause);

pnlTop.add(btnExit);

pnlTop.add(jLabel1);

pnlTop.add(lblScroe);

contentPane.add(pnlTop, BorderLayout.NORTH);

contentPane.add(pnlLeft, BorderLayout.CENTER);

//創(chuàng)建并初始化游戲區(qū)方塊

blocks = new JButton[ROWS][COLS];

for(int i = 0;i < ROWS;i++){

for(int j = 0;j < COLS;j++){

blocks[i][j] = new JButton();

blocks[i][j].setBackground(Color.lightGray);

blocks[i][j].setVisible(false);

playPanel.add(blocks[i][j]);

}

}

}

public static void main(String[] args){

Snake app = new Snake();

app.validate();

app.setVisible(true);

}

public void start(){

snake = new SnakeBody();//創(chuàng)建蛇身

if(rbtnLow.isSelected())

snake.setSpeed(300);

if(rbtnMid.isSelected())

snake.setSpeed(200);

if(rbtnHigh.isSelected())

snake.setSpeed(100);

score = 0;

isPause = false;

isEnd = false;//

btnPause.setText(“暫停”);

//初始化游戲區(qū)

for(int i = 0;i < ROWS;i++){

for(int j = 0;j < COLS;j++){

blocks[i][j].setBackground(Color.lightGray);

blocks[i][j].setVisible(false);

}

}

//在游戲區(qū)內(nèi)隨機(jī)放置豆

int x =(int)(Math.random()* ROWS);

int y =(int)(Math.random()* COLS);

while(blocks[x][y].isVisible()){

x =(int)(Math.random()* ROWS);

y =(int)(Math.random()* COLS);

}

blocks[x][y].setBackground(Color.yellow);

blocks[x][y].setVisible(true);

try {

thread.start();

}

catch(IllegalThreadStateException illegalThreadStateException){}

}

class SnakeBody {

public int row[];

public int col[];

public int len = 3, direction = RIGHT, lastdirection = RIGHT;

public long speed = 300;

public SnakeBody(){

len = 3;

direction = RIGHT;

lastdirection = RIGHT;

row = new int[ROWS];

col = new int[COLS];

for(int i = 0;i <= len;i++){

row[i] = 1;

col[i] = len1];

col[i] = col[i-1];

}

//根據(jù)蛇身運(yùn)動(dòng)方向,決定蛇頭位置

switch(direction){

case UP: {

if(lastdirection == DOWN)

row[0] += 1;

else {

row[0]-= 1;

lastdirection = UP;

}

break;

}

case LEFT: {

if(lastdirection == RIGHT)

col[0] += 1;

else {

col[0]-= 1;

lastdirection = LEFT;

}

break;

}

case DOWN: {

if(lastdirection == UP)

row[0]-= 1;

else {

row[0] += 1;

lastdirection = DOWN;

}

break;

}

case RIGHT: {

if(lastdirection == LEFT)

col[0]-= 1;

else {

col[0] += 1;

lastdirection = RIGHT;

}

break;

}

}

//當(dāng)蛇頭碰到墻時(shí),蛇頭碰到蛇身時(shí),游戲結(jié)束

if(row[0] >= ROWS || row[0] < 0 || col[0] >= COLS || col[0] < 0 ||

blocks[row[0]][col[0]].getBackground().equals(Color.green)){

isEnd = true;

JOptionPane.showMessageDialog(null, “游戲結(jié)束!”);

}

//吃豆

if(blocks[row[0]][col[0]].getBackground().equals(Color.yellow)){

score += 100;

lblScroe.setText(Integer.toString(score));

if(score % 2000 == 0 && speed > 100){

JOptionPane.showMessageDialog(null, “恭喜你過(guò)關(guān)了,準(zhǔn)備進(jìn)入下一關(guān)”);

speed-= 100;

if(speed == 200)

rbtnMid.setSelected(true);

if(speed == 100)

rbtnHigh.setSelected(true);

}

}

//吃豆后,蛇身加長(zhǎng),并隨機(jī)顯示下一個(gè)豆

if(blocks[row[0]][col[0]].getBackground().equals(Color.yellow)){

len++;

int x, y;

x =(int)(Math.random()* ROWS);

y =(int)(Math.random()* COLS);

while(blocks[x][y].isVisible()){

x =(int)(Math.random()* ROWS);

y =(int)(Math.random()* COLS);

}

blocks[x][y].setBackground(Color.yellow);

blocks[x][y].setVisible(true);

}

blocks[row[0]][col[0]].setBackground(Color.green);

blocks[row[0]][col[0]].setVisible(true);//顯示蛇頭

}

}

class SnakeThread extends Thread {

public void run(){

while(true){

try {

Thread.sleep(snake.speed);//控制移動(dòng)速度

if(!isEnd &&!isPause){

snake.move();//移動(dòng)蛇身

}

if(isEnd){ //游戲結(jié)束

btnStart.setEnabled(true);

}

}

catch(Exception ex){}

}

}

}

class keyAction extends KeyAdapter {

public void keyPressed(KeyEvent e){

if(!isEnd &&!isPause){

//根據(jù)用戶(hù)按鍵,設(shè)置蛇運(yùn)動(dòng)方向

if(e.getKeyCode()== KeyEvent.VK_UP){

snake.direction = UP;

}

if(e.getKeyCode()== KeyEvent.VK_DOWN){

snake.direction = DOWN;

}

if(e.getKeyCode()== KeyEvent.VK_LEFT){

snake.direction = LEFT;

}

if(e.getKeyCode()== KeyEvent.VK_RIGHT){

snake.direction = RIGHT;

}

}

}

}

//按鈕監(jiān)聽(tīng)響應(yīng)處理類(lèi)

private class btnAction implements ActionListener {

public void actionPerformed(ActionEvent ae){

Object source = ae.getSource();

if(source.equals(btnStart)){

btnStart.setEnabled(false);

start();

}

if(source.equals(btnPause)){

if(isPause == true){

btnPause.setText(“暫停”);

}

if(isPause == false){

btnPause.setText(“繼續(xù)”);

}

isPause =!isPause;

}

if(source.equals(btnExit)){

System.exit(0);

}

if(source.equals(rbtnLow)){

snake.setSpeed(300);

}

if(source.equals(rbtnMid)){

snake.setSpeed(200);

}

if(source.equals(rbtnHigh)){

snake.setSpeed(100);

}

}

} }

第三篇:c語(yǔ)言程序貪吃蛇課程設(shè)計(jì)報(bào)告

高級(jí)語(yǔ)言程序設(shè)計(jì) 課程設(shè)計(jì)報(bào)告

Experiment Designing reporter 課程名稱(chēng):高級(jí)語(yǔ)言程序設(shè)計(jì)

英文名稱(chēng)

: C Program Experiment Designing 專(zhuān)業(yè):自動(dòng)化 111 學(xué)號(hào): XXX 姓名: XXX 指導(dǎo)教師: XXX

日期:

2012 年 6月 17日至 2011 年6 月 20 日 山東工商學(xué)院信電學(xué)院 一:課程設(shè)計(jì)內(nèi)容 程序功能介紹

貪吃蛇游戲是一個(gè)經(jīng)典小游戲,深受眾多玩家喜愛(ài),其規(guī)則是:一條蛇在封閉圍墻里,圍墻里隨機(jī)出現(xiàn)一個(gè)食物,通過(guò)按鍵盤(pán)四個(gè)光標(biāo)鍵控制蛇向上下左右四個(gè)方向移動(dòng),蛇頭撞倒食物,則食物被吃掉,蛇身體長(zhǎng)一節(jié),同時(shí)記10分,接著又出現(xiàn)食物,等待蛇來(lái)吃,如果蛇在移動(dòng)中撞到墻或身體交叉蛇頭撞倒自己身體游戲結(jié)束。此游戲不僅能鍛煉人的思維敏捷性,而且還可以提高玩家的邏輯判斷能力。設(shè)計(jì)思路

我們小組稱(chēng)設(shè)計(jì)本次課題——貪吃蛇的思路為“貪快速上手貪吃蛇三步曲”: 第一步:

尋找到一個(gè)真正可以運(yùn)行的已用C編好的貪吃蛇。因?yàn)槲覀儺吘箯奈纯吹竭^(guò)用C編游戲的程序,讓我們兩手一抹黑的開(kāi)始編寫(xiě)是有一定的困難的,如果我們自己找一個(gè)已經(jīng)設(shè)計(jì)好的程序,以此為跳板實(shí)現(xiàn)我們想要達(dá)到的效果,那么肯定是高效的。所以我們組統(tǒng)一決定,去尋找一個(gè)可以運(yùn)行的C編譯的貪吃蛇。第二步:

運(yùn)行游戲并了解游戲程序。

我們認(rèn)為,只有你運(yùn)行并了解一個(gè)游戲,才能知道游戲里需要什么樣的改進(jìn)和創(chuàng)新,如果你自己本身就沒(méi)玩過(guò)這個(gè)游戲,那么你就是再有技術(shù),你也永遠(yuǎn)改進(jìn)和改編不了一個(gè)游戲,因?yàn)槟愀静恢滥阍诟墒裁础?/p>

同樣重要的是了解游戲程序。因?yàn)橹挥锌炊顺绦颍拍軐?shí)現(xiàn)對(duì)他的改編,才能游刃有余。第三步:

尋找模塊并分類(lèi),而后進(jìn)行改編。

尋找到你想要改變的游戲內(nèi)容的控制模塊,比如,我想要增加一堵墻,那么就應(yīng)該找到 void DrawK(void){

setcolor(11);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);for(i=200;i<=500;i+=10)

rectangle(i,200,i+10,209);} 然后要找到:改變蛇初始長(zhǎng)度、顏色、初始位置的模塊,改變蘋(píng)果出現(xiàn)位置的模塊,讓蛇見(jiàn)墻死的模塊,讓蛇吃蘋(píng)果加長(zhǎng)的模塊???.并且進(jìn)行分類(lèi),這樣下次再想實(shí)現(xiàn)某個(gè)目標(biāo)時(shí),可以一目了然的進(jìn)行改編。對(duì)于找到的模塊如何進(jìn)行改編呢?怎么才能知道某個(gè)數(shù)值或函數(shù)代表什么呢? 我們有兩個(gè)方法:

1.)看名字,比如snakecolor(),很明顯他的意思是蛇的顏色。2.)控制變量猜想,比如設(shè)置墻的時(shí)候for(i=200;i<=500;i+=10);

rectangle(i,300,i+10,309);中的200,500,300,209 代表什么呢?我們可以猜想:它很像是坐標(biāo)上的(x,y)的格式,是不是呢?可可以先讓其他數(shù)值不變,只讓309改變,改變后發(fā)現(xiàn)上面的墻變粗了,由此可見(jiàn)這個(gè)數(shù)字控制的是一堵墻的最下面一行的坐標(biāo)。

關(guān)于該程序的相關(guān)分析思路答題模板:

1.貪吃蛇程序流程圖如下:

二.貪吃蛇程序的改編:

經(jīng)過(guò)小組成員的認(rèn)真研究我們對(duì)其進(jìn)行了如下改編 第一步加墻 void DrawK(void){ /*setbkcolor(MAGENTA);*/

setcolor(5);//

可以改變顏色

setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/ 橫向上的墻:

for(i=100;i<=600;i+=10)// 本行代表行坐標(biāo)上:100代表墻的初始位置,i<=600代表墻的結(jié)尾。

{

rectangle(i,60,i+10,69);//本行代表縱坐標(biāo)上:60代表墻的最上面一行的位置,69代表墻最下面一行的位置。69-60=9,9代表墻塊的厚度 } 縱向上的墻:

for(i=100;i<=400;i+=10)//本行代表縱坐標(biāo)上:100代表墻的初始位置,i<=400代表墻的結(jié)尾

{

rectangle(100,i,109,i+10);//本行代表縱坐標(biāo)上:100代表墻的最左邊面一行的位置,69代表墻最右面一行的位置。69-60=9,9代表墻塊的寬度

} 我們認(rèn)為本模塊最重要的是for語(yǔ)句控制的坐標(biāo)代表的意思。只要明白了坐標(biāo)的意思,就可以實(shí)現(xiàn)對(duì)游戲的改編。

第二步就是進(jìn)行對(duì)新加入的墻蛇是否撞上死亡

讓蛇撞墻死

if(snake.x[0]>190&&snake.x[0]< 510&&snake.y[0]>=200&&

snake.y[0]<=215)

/*其中,對(duì)x,y范圍的控制,實(shí)際是對(duì)蛇撞擊的死亡區(qū)域的限制。*/

{

GameOver();/*本次游戲結(jié)束*/

snake.life=1;/*蛇死*/

} 相應(yīng)的新添加的墻。

for(i=200;i<=500;i+=10)/*畫(huà)圍墻*/

{

rectangle(i,200,i+10,209);/*指定位置*/ 第三步食物的定點(diǎn)出現(xiàn)

if(food.yes==1)/*需要出現(xiàn)新食物*/ 這里說(shuō)明一下:rand()產(chǎn)生0-65535的數(shù),在limits.h里有定義%400后產(chǎn)生一個(gè)0-399的數(shù)+60 則為 60 –459,即:%400+60意思是在60~399之間隨機(jī)產(chǎn)生一個(gè)數(shù)。

{

food.x=rand()%400+60;

food.y=rand()%350+60;

while(food.x%10!=0)/*食物隨機(jī)出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/

food.x++;

while(food.y%10!=0)

food.y++;

food.yes=0;/*畫(huà)面上有食物了*/

} 如果將food.x=(常數(shù)a)那么食物就會(huì)出現(xiàn)在x=a行的隨機(jī)列,對(duì)于food.y=(常數(shù)b)那么食物就出現(xiàn)在y=b列的隨機(jī)行。

第四步對(duì)食物墻壁的顏色以及對(duì)蛇的運(yùn)動(dòng)速個(gè)性化調(diào)節(jié)

setcolor(4);// 對(duì)顏色的調(diào)整 int gamespeed=50000;/*游戲速度自己調(diào)整*/

通過(guò)改變變量的值,就可以個(gè)性化選擇自己喜歡的顏色,這將是一場(chǎng)別開(kāi)生面的游戲界面。* 紅色代表解析淺藍(lán)代表提示 三.課程設(shè)計(jì)總結(jié) 有言曰:“實(shí)踐出真知”,在這幾天的課程設(shè)計(jì)實(shí)踐中,我們組三人真正的體會(huì)到了這句話(huà)的真諦。

在經(jīng)歷了一學(xué)期的C語(yǔ)言學(xué)習(xí)后,我們從以往的“紙上談兵”直接過(guò)渡到“實(shí)際作戰(zhàn)”。我們實(shí)現(xiàn)了讓靜態(tài)的程序變成動(dòng)態(tài)的游戲效果,雖然我們只是改編了一下別人做好的程序,但我們同樣由此獲益匪淺,感觸頗深,當(dāng)然也發(fā)現(xiàn)了許多自己的不足。

首先,在我們剛剛進(jìn)行第一步“尋找程序”的時(shí)候,就被擱淺了,因?yàn)槲覀儼l(fā)現(xiàn),在網(wǎng)上能找到一個(gè)真正符合我們使用標(biāo)準(zhǔn)的程序很難,就是找到了幾個(gè)也沒(méi)有能運(yùn)行它們的程序。我們花費(fèi)了前兩天的時(shí)間來(lái)尋找能夠使用的程序和軟件,但最后還是一無(wú)所獲,正當(dāng)我們一籌莫展的時(shí)候,我們的導(dǎo)師——楊老師給我們帶來(lái)了曙光,使得我們?cè)诤诎抵姓业搅讼M墓饷鳎瑮罾蠋熃o我們傳來(lái)了一個(gè)上屆師哥做好的程序,并且把它的運(yùn)行軟件也給了我們,這對(duì)我們來(lái)說(shuō)無(wú)疑是雪中送炭,得到這個(gè)程序后,我們?nèi)齻€(gè)人看到了C語(yǔ)言運(yùn)行一個(gè)游戲的流程和方法,我們腦中也大概有了一個(gè)思路。我們?nèi)齻€(gè)人以此程序?yàn)樘澹苯娱_(kāi)始對(duì)程序模塊進(jìn)行挑選,因?yàn)槲覀円呀?jīng)浪費(fèi)了兩天,所以我們決定進(jìn)行分工作業(yè),分別去尋找:筑墻模塊,加蘋(píng)果模塊,撞墻死模塊。最后我們用了一下午時(shí)間完成了三大步中的前兩大步和第三步的第一部分,剩下的就是最重要而充滿(mǎn)挑戰(zhàn)的改編了,從以上的操作中,讓我們明白了找對(duì)一個(gè)平臺(tái)的重要性,這個(gè)平臺(tái)就是老師給我們的程序,就是我們的前進(jìn)方向。沒(méi)有了方向了的征程,一開(kāi)始就是個(gè)錯(cuò)誤。在我們尋找程序模塊的時(shí)候,我們對(duì)于程序中的很多東西都是模模糊糊的概念,比如struck是什么,比如for語(yǔ)句的使用,以及for語(yǔ)句的循環(huán)體是什么,當(dāng)然我們也發(fā)現(xiàn)了定義字符在長(zhǎng)的程序中的方便與重要性。還有就是我們發(fā)現(xiàn)程序在編寫(xiě)時(shí)的規(guī)范性很重要,比如同級(jí)別花括號(hào)的位置的對(duì)應(yīng),對(duì)應(yīng)好了,模塊就好找,對(duì)應(yīng)不好就很亂。還有定義函數(shù)及變量的時(shí)候,函數(shù)名字和變量名最好是見(jiàn)名知意,比如我們所看的程序中,gamespeed,snakecolour,food.....在最后的攻堅(jiān)階段,為了實(shí)現(xiàn)對(duì)程序的改編,我們使用控制變量猜想法是正確的選擇,比如設(shè)置墻的時(shí)候for(i=200;i<=500;i+=10);

rectangle(i,300,i+10,309);中的200,500,300,209 代表什么呢?我們猜想:它很像是坐標(biāo)上的(x,y)的格式,是不是呢?我們先讓其他數(shù)值不變,只讓309改變,改變后發(fā)現(xiàn)上面的墻變粗了,由此我們知道這個(gè)數(shù)字控制的是一堵墻的最下面一行的坐標(biāo)。我們用這個(gè)方法知道了其他很多數(shù)值的用途。我們用這種方法先是知道了如何設(shè)置一堵墻,在我們欣喜設(shè)置一堵墻以后才發(fā)現(xiàn):蛇撞了墻后不死。在我們進(jìn)行了全局來(lái)看以后才知道,原來(lái)設(shè)計(jì)一堵墻,都要再設(shè)計(jì)一個(gè)if語(yǔ)句來(lái)使得蛇在這個(gè)范圍內(nèi)會(huì)死亡。并且我們發(fā)現(xiàn)在設(shè)計(jì)這個(gè)if語(yǔ)句的時(shí)候,不僅要計(jì)算好墻的坐標(biāo),而且還要用好邏輯語(yǔ)言(&&,||!)同時(shí)語(yǔ)句的運(yùn)算順序也很重要。剛一開(kāi)始我們忽略的&&和關(guān)系運(yùn)算符級(jí)別的高低,使得我們?cè)O(shè)計(jì)的墻,總是撞不死蛇,為此我們很是惱火,著急的組員還在這里發(fā)生了點(diǎn)小摩擦,由此可見(jiàn)C語(yǔ)言的嚴(yán)謹(jǐn)性!

最后我們又通過(guò)在網(wǎng)上查找信息,知道了隨機(jī)數(shù)發(fā)生器randomize()的用法:rand()=x%+d 意思是說(shuō)在d~(x-1)之間隨機(jī)產(chǎn)生一個(gè)數(shù)字。我們很自然的聯(lián)想到,如果把food.x等于常數(shù)a;把food.y等于一個(gè);x%+d的隨機(jī)數(shù),那不就能固定只在某一行出現(xiàn)蘋(píng)果了嗎?所以我們覺(jué)得,充分利用手邊的資源也是很重要的,畢竟C語(yǔ)言很高深,課本上的東西總是有限的,要想知道更多的東西還需多練習(xí),多查閱資料。總之:革命尚未成功,通知還需努力啊!四個(gè)人感受: 湯X:

就我個(gè)人而言,這次課程設(shè)計(jì),我覺(jué)得我最大的收獲就是:我明白了,我們其實(shí)真的沒(méi)那么厲害,我們真的還有很多東西不會(huì),我們真的連課本上的基本東西都沒(méi)掌握,課本上的東西,真的也只是C語(yǔ)言這個(gè)大海中的一滴水而已。而在我本人還沒(méi)有掌握好課本的知識(shí)點(diǎn)的情況下,做起這個(gè)程序自然很費(fèi)事,一個(gè)簡(jiǎn)單的課本P293講到的struct結(jié)構(gòu)體,我一開(kāi)始竟然忘記它是什么意思,不知道它是什么,就更不用談怎么用它了。還有邏輯語(yǔ)言的使用。我想,現(xiàn)在肯定有很多同學(xué)還不知道邏輯運(yùn)算的優(yōu)先次序吧?這個(gè)問(wèn)題我本人在使用邏輯語(yǔ)言的時(shí)候也不太會(huì),還查看了書(shū)。像這些小的知識(shí)點(diǎn),我個(gè)人認(rèn)為如果掌握不好的話(huà),是不可能讓整個(gè)大程序運(yùn)行起來(lái)的。還有比如我在遇到程序顯示“else多余”的警告時(shí)候不不知所措,問(wèn)了老師才知道是if()后面加了“;”而且if沒(méi)有用“{}”來(lái)固定范圍,這個(gè)錯(cuò)誤原因是分號(hào)使得if語(yǔ)句結(jié)束了,孤立的else當(dāng)然是多余的了。一個(gè)小小的分號(hào)使得程序無(wú)法運(yùn)行,由此可見(jiàn)在今后的編程中,一定要注意謹(jǐn)慎,仔細(xì)。同時(shí)要注意記住平時(shí)編程的時(shí)候,出現(xiàn)的錯(cuò)誤指示是什么意思。比如這次的“else多余”就是因?yàn)閕f后多了分號(hào)。還有在編程時(shí)候,書(shū)寫(xiě)一定要規(guī)范,特別是if語(yǔ)句的花括號(hào)的位置要對(duì)應(yīng)起來(lái),因?yàn)槲恢脹Q定范圍。注意定義變量和函數(shù)要使用規(guī)范的英文單詞,這樣才能見(jiàn)名知意,為以后修改找變量節(jié)省時(shí)間。對(duì)于這次課題中,“設(shè)計(jì)一個(gè)墻,就要對(duì)應(yīng)一個(gè)函數(shù)舍得蛇撞墻死”,讓我明白,C語(yǔ)言程序中各部分的聯(lián)系性,牽一發(fā)而動(dòng)全身,所以在編程時(shí)一定要注意全局的把握。我們最后還要說(shuō)說(shuō)在編程中,好好利用網(wǎng)絡(luò)資源,因?yàn)檎n本里的東西總是有限的,而C語(yǔ)言又那么高深,像隨機(jī)數(shù)發(fā)生器,還有顏色的定都是我第一次接觸,這些東西的用處可是頗大,以后一定好好學(xué)習(xí)。多看,多練,多總結(jié)。最后還要感謝指導(dǎo)老師,楊老師對(duì)我學(xué)習(xí)的幫助和指導(dǎo)。徐XXX: 剛開(kāi)始拿到題目時(shí)候什么也不會(huì)一片茫然,從網(wǎng)上找了一個(gè)程序一看,太嚇人了,這么長(zhǎng)怎么看啊,而且還是錯(cuò)誤的。沒(méi)辦法只能硬著頭皮去改了,但是在改的過(guò)程中才發(fā)現(xiàn)其實(shí)c語(yǔ)言沒(méi)有想象的那么難而且還很有意思,只是自己平時(shí)沒(méi)有好好學(xué)所以在改的時(shí)候非常吃力,有很多簡(jiǎn)單的知識(shí)都不知道,沒(méi)有記住。沒(méi)辦法只能借助與課本了。但是幾天下來(lái)發(fā)現(xiàn)自己已經(jīng)不再像以前那樣是個(gè)菜鳥(niǎo)了,雖然很多知識(shí)還沒(méi)掌握。同時(shí)在編改程序的時(shí)候切記不能煩躁要靜心慢慢來(lái),好幾次自己都因心燥出現(xiàn)了很多不該出現(xiàn)的錯(cuò)誤浪費(fèi)了很多時(shí)間。

對(duì)鍵盤(pán)的熟悉在編程時(shí)也是很重要的,自己在寫(xiě)的時(shí)候往往就是跟一指禪差不多眼睛盯著鍵盤(pán)打,打錯(cuò)了也不知道最后導(dǎo)致整個(gè)程序都是錯(cuò)誤的,就因?yàn)橐粋€(gè)打錯(cuò)了一個(gè)字母。

總的來(lái)說(shuō)這次課程設(shè)計(jì)收獲很多,也知道了自己的不足,在以后的學(xué)習(xí)中要多實(shí)踐,實(shí)踐很能提高自己的能力。劉XX:

4天的C語(yǔ)言課程設(shè)計(jì)上機(jī)學(xué)習(xí)讓我感受頗多,每天都發(fā)現(xiàn)新的問(wèn)題,又不得不絞盡腦汁解決問(wèn)題,心情就像正弦函數(shù),隨著問(wèn)題的出現(xiàn)和解決一起一伏。剛開(kāi)始接觸貪吃蛇的C語(yǔ)言成尋時(shí),看著C-free上面出現(xiàn)的有十幾個(gè)錯(cuò)誤的程序,一片茫然不知所措。只能繼續(xù)在網(wǎng)上搜索錯(cuò)誤較少的程序,并結(jié)合書(shū)上的基礎(chǔ)知識(shí)查看錯(cuò)誤所在,最終發(fā)現(xiàn)是不能在C-free中運(yùn)行,只能在mytc5.6上運(yùn)行。

作為小組中唯一的女生,明顯感覺(jué)有壓力,打字速度不如另外兩個(gè)男生,對(duì)游戲和程序的敏感也不如他們強(qiáng),有種小小的挫敗感。旁邊小組的同學(xué)也給我很大的壓力。他們自己編寫(xiě)程序,我很佩服他們,越是這樣想。心里越著急,越不能解決問(wèn)題,每當(dāng)感覺(jué)有壓力的時(shí)候,就提醒自己心靜,認(rèn)真的看程序。在學(xué)習(xí)過(guò)程中,深深的發(fā)現(xiàn)了自己的不足之處,對(duì)于C語(yǔ)言,只學(xué)了一點(diǎn)點(diǎn)皮毛東西,想要學(xué)好C語(yǔ)言,編好程序,還要付出很多的努力,還要用更多的時(shí)間來(lái)學(xué)習(xí)C語(yǔ)言這門(mén)深?yuàn)W的學(xué)科。現(xiàn)在只能借用別人已經(jīng)寫(xiě)好的程序,在別人的基礎(chǔ)上,一點(diǎn)點(diǎn)進(jìn)步和學(xué)習(xí),比如程序中筑墻,需要仿照已有的程序,結(jié)合邏輯運(yùn)算,關(guān)系運(yùn)算和數(shù)學(xué)知識(shí)才能讓蛇撞墻死。蘋(píng)果位置的出現(xiàn)也同樣需要進(jìn)一步的搜索,通過(guò)更改食物的橫縱坐標(biāo)以及出現(xiàn)的概率來(lái)確定食物的位置。編寫(xiě)程序時(shí),也發(fā)現(xiàn)書(shū)上的東西對(duì)于程序的某些部分來(lái)說(shuō),沒(méi)有什么作用,顯得太淺顯,想要實(shí)現(xiàn)老師給出的一些要求,還需要實(shí)踐,通過(guò)上機(jī)學(xué)習(xí),自己摸索才能成功。一次次修改,一次次失敗,就像貪吃蛇想方設(shè)法吃蘋(píng)果會(huì)Game over,我們只有認(rèn)真學(xué)好基礎(chǔ)理論,并結(jié)合實(shí)踐經(jīng)驗(yàn)才會(huì)取得進(jìn)步。

在這次學(xué)習(xí)過(guò)程中,我很感謝我的組員,雖然有時(shí)我們的意見(jiàn)出現(xiàn)分歧,但是通過(guò)大家的共同努力,我們收獲了很多,一起討論,一起研究怎樣解決問(wèn)題,對(duì)老師提出的要求個(gè)個(gè)擊破,我們擰成一股繩共同應(yīng)對(duì)問(wèn)題,讓我感受了團(tuán)隊(duì)的力量希望在以后的學(xué)習(xí)過(guò)程中,我們依然能夠互相幫助,共同進(jìn)步。

五 課程設(shè)計(jì)修改后的程序.加墻

for(i=200;i<=500;i+=10)/*畫(huà)圍墻*/

{

rectangle(i,200,i+10,209);/*指定位置1*/

} for(i=120;i<=200;i+=10)/*畫(huà)圍墻*/

{

rectangle(100,i,109,i+10);/*指定位置2*/

} 2.指定位置加蘋(píng)果

if(food.yes==1)/*需要出現(xiàn)新食物*/

{

food.x=rand()60;

food.y=rand()%200+60;

while(food.x%10!=0)

food.x++;

while(food.y%10!=0)

food.y++;

food.yes=0;3.指定地方撞墻死

if(snake.x[0]>190&&snake.x[0]< 510&&snake.y[0]>=200&&

snake.y[0]<=215)

{

GameOver();/*本次游戲結(jié)束*/

snake.life=1;/*蛇死*/

} if(snake.x[0]>90&&snake.x[0]<110&&snake.y[0]>=110&&snake.y[0]<=215)

{

GameOver();/*本次游戲結(jié)束*/

snake.life=1;/*蛇死*/

}

}

第四篇:貪吃蛇C語(yǔ)言課程設(shè)計(jì)報(bào)告

貪吃蛇游戲程序設(shè)計(jì)報(bào)告

貪吃蛇游戲設(shè)計(jì)

姓名: 張力

學(xué)號(hào): 1002032

3完成日期: 月 日1

貪吃蛇游戲程序設(shè)計(jì)報(bào)告

一、設(shè)計(jì)目的

貪吃蛇游戲程序功能的實(shí)現(xiàn)主要是建立在二維數(shù)組和圖形界面的應(yīng)用上,通過(guò)編寫(xiě)游戲程序能夠熟悉掌握相關(guān)數(shù)組和圖形函數(shù)的運(yùn)用,提高編程水平,增加編程的興趣

二、總體設(shè)計(jì)

主函數(shù)

圖形驅(qū)動(dòng)Init 畫(huà)界面DrawK 游戲具體過(guò)程GamePlay 圖形結(jié)束Close

游戲結(jié)束GameOver 輸出成績(jī)PrScore

三、詳細(xì)設(shè)計(jì)(項(xiàng)目成員及分工、模塊功能說(shuō)明(如函數(shù)功能、入口及出口參數(shù)說(shuō)明,函數(shù)調(diào)用關(guān)系描述等)

①主函數(shù)main():

定義使用的常數(shù),全局變量及函數(shù)原型說(shuō)明,并調(diào)用Init()函數(shù)初始化圖形系統(tǒng);然后調(diào)用DrawK()函數(shù)畫(huà)界面,調(diào)用GamePlay()函數(shù)實(shí)現(xiàn)游戲的具體過(guò)程,游戲結(jié)束后調(diào)用Close()函數(shù)關(guān)閉圖形系統(tǒng)結(jié)束程序。

②畫(huà)界面函數(shù)DrawK():

主界面是一個(gè)密封的圍墻,用兩個(gè)循環(huán)語(yǔ)句分別在水平方向和垂直方向輸出連續(xù)的寬度和高度均為10個(gè)單位的矩形小方塊,設(shè)置成淡青色,背景顏色為黑色。

③游戲具體過(guò)程函數(shù)GamePlay():

算法過(guò)程:

a.設(shè)置初始值。為防止食物出現(xiàn)在一個(gè)位置上,要設(shè)置隨機(jī)數(shù)發(fā)生器,真正產(chǎn)生隨機(jī)數(shù)。初始時(shí),蛇只有蛇頭,設(shè)定一個(gè)開(kāi)始方向;

b.循環(huán)執(zhí)行,直到按Esc鍵退出; c.沒(méi)有按鍵的情況下,循環(huán)執(zhí)行。

如果沒(méi)有食物,隨機(jī)出現(xiàn)食物;食物的隨機(jī)出現(xiàn)要確保它的位置在10的倍數(shù)位置上,因?yàn)樯叩淖鴺?biāo)都是以10為模的;如果有食物,則顯示食物,蛇

貪吃蛇游戲程序設(shè)計(jì)報(bào)告

移動(dòng)身體,根據(jù)蛇的方向改變坐標(biāo)值,并判斷蛇是否撞到了墻或自己吃到了自己,如果出現(xiàn)這兩種情況之一,則蛇死;調(diào)用游戲結(jié)束函數(shù)GamePlay(),結(jié)束本次游戲;

判斷蛇吃到食物的方法是蛇頭的坐標(biāo)和食物的坐標(biāo)都相等;如果蛇吃到了食物,蛇身體長(zhǎng)一節(jié),數(shù)組元素增加一個(gè),身體節(jié)數(shù)、分?jǐn)?shù)都進(jìn)行相應(yīng)的改變。

在新位置畫(huà)出蛇。采用的方法是每次移動(dòng)的時(shí)候從最后一節(jié)開(kāi)始到倒數(shù)第二節(jié),將前一節(jié)的坐標(biāo)賦值給后一節(jié)的坐標(biāo),移動(dòng)后只要把最后一節(jié)用背景色去除即可。

D.如果有按鍵,則識(shí)別按鍵值。如果按鍵為Esc鍵則結(jié)束游戲,程序運(yùn)行結(jié)束;如果所按鍵為方向鍵,則根據(jù)該鍵改變蛇方向的變量direction的值,相反方向鍵無(wú)效。

④游戲結(jié)束函數(shù)GameOver():

游戲結(jié)束,清除屏幕,調(diào)用輸出分?jǐn)?shù)函數(shù)PrScore(),并顯示游戲結(jié)束。

⑤輸出分?jǐn)?shù)函數(shù)PrScore():

在指定位置利用sprintf()將整數(shù)轉(zhuǎn)換為字符串,用outtextxy()輸出,、bar()函數(shù)的應(yīng)用是為了覆蓋原來(lái)的值。

⑥圖形結(jié)束函數(shù)Close():

在顯示游戲結(jié)束信息的畫(huà)面時(shí),按任意鍵關(guān)閉圖形系統(tǒng),程序結(jié)束。

四、調(diào)試與測(cè)試:調(diào)試方法,測(cè)試結(jié)果的分析與討論,測(cè)試過(guò)程中遇到的主要問(wèn)題和采取的解決措施等;

將源文件在TC3.0環(huán)境下調(diào)試運(yùn)行,前期發(fā)現(xiàn)錯(cuò)誤為游戲界面靜止。

五、源程序清單及執(zhí)行結(jié)果:

#include #include #include #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000

貪吃蛇游戲程序設(shè)計(jì)報(bào)告

#define UP 0x4800 #define Esc 0x011b #define N 200 /*定義全局變量*/ int i,key;int score=0;/*得分*/ int gamespeed=50000;/*游戲速度可以自己調(diào)整*/ struct Food { int x;/*定義食物的橫坐標(biāo)*/ int y;/*定義食物的縱坐標(biāo)*/ int yes;/*判斷是否要出現(xiàn)食物的變量*/ }food;/*食物的結(jié)構(gòu)體*/ struct snake { int x[N];int y[N];int node;/*蛇的節(jié)數(shù)*/ int direction;/*蛇的移動(dòng)方向*/ int life;/*蛇的生命,0活著,1死亡*/ }snake;

void Init(void);/*圖形驅(qū)動(dòng)*/ void Close(void);/*圖形結(jié)束*/ void DrawK(void);/*開(kāi)始畫(huà)面*/ void GameOver(void);/*結(jié)束游戲*/ void GamePlay(void);/*玩游戲的具體過(guò)程*/ void PrScore(void);/*輸出成績(jī)*/

/*圖形驅(qū)動(dòng)*/ void Init(void){ int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,“D:TC30LIB”);}

/*開(kāi)始畫(huà)面,左上角坐標(biāo)為(50,40),右下角坐標(biāo)為(610,460)的圍墻*/ void DrawK(void){ setbkcolor(LIGHTGREEN);setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/ for(i=50;i<=600;i+=10)/*畫(huà)圍墻*/ {

貪吃蛇游戲程序設(shè)計(jì)報(bào)告

rectangle(i,40,i+10,49);/*上邊*/

rectangle(i,451,i+10,460);/*下邊*/ } for(i=40;i<=450;i+=10){

rectangle(50,i,59,i+10);/*左邊*/

rectangle(601,i,610,i+10);/*右邊*/ } }

/*玩游戲的具體過(guò)程*/ void GamePlay(void){ randomize();/*隨機(jī)數(shù)發(fā)生器*/ food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/ snake.life=0;/*蛇還活著^ ^*/ snake.direction=1;/*方向向右*/ snake.x[0]=100;snake.y[0]=100;/*蛇頭*/ snake.x[1]=110;snake.y[1]=100;snake.node=2;/*蛇的節(jié)數(shù)為2*/ PrScore();/*輸出得分*/ while(1)/*可以重復(fù)玩游戲,按Esc鍵結(jié)束*/ {

While(!kbhit())/*在沒(méi)有按鍵的情況下,蛇自己移動(dòng)身體*/

{

if(food.yes==1)/*需要出現(xiàn)新食物*/

{

food.x=rand()%400+60;

food.y=rand()%350+60;

while(food.x%10!=0)/*食物隨機(jī)出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/

food.x++;

while(food.y%10!=0)

food.y++;

food.yes=0;/*畫(huà)面上有食物了*/

}

if(food.yes==0)/*畫(huà)面上有食物了就要把它顯示出來(lái)*/

{

setcolor(GREEN);

rectangle(food.x,food.y,food.x+10,food.y-10);

}

for(i=snake.node-1;i>0;i--)/*蛇一個(gè)節(jié)一個(gè)節(jié)地往前移*/

{

snake.x[i]=snake.x[i-1];

貪吃蛇游戲程序設(shè)計(jì)報(bào)告

snake.y[i]=snake.y[i-1];

}

/*1,2,3,4表示右左上下四個(gè)方向,通過(guò)判斷這個(gè)來(lái)移動(dòng)蛇頭*/

switch(snake.direction)

{

case 1:snake.x[0]+=10;break;

case 2:snake.x[0]-=10;break;

case 3:snake.y[0]-=10;break;

case 4:snake.y[0]+=10;break;

}

/*從蛇的第四節(jié)開(kāi)始判斷蛇有沒(méi)有自己把自己吃掉*/

for(i=3;i

{

if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

{

GameOver();/*顯示游戲結(jié)束*/

snake.life=1;/*蛇死了T T!*/

break;

}

}

If(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)/*判斷蛇是否撞到墻*/

{

GameOver();/*游戲結(jié)束*/

snake.life=1;/*蛇死了T T!*/

}

if(snake.life==1)/*如果蛇死了就跳出內(nèi)循環(huán),重新開(kāi)始*/

break;

if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃掉食物啦!*/

{

setcolor(0);/*把畫(huà)面上的食物顏色覆蓋掉*/

rectangle(food.x,food.y,food.x+10,food.y-10);

snake.x[snake.node]=-20;

snake.y[snake.node]=-20;

/*新的一節(jié)先放在看不見(jiàn)的位置,下次循環(huán)就取前一節(jié)的位置*/

snake.node++;/*蛇的身體長(zhǎng)一節(jié)*/

food.yes=1;/*畫(huà)面上需要出現(xiàn)新的食物*/

score+=10;/*加十分!*/

PrScore();/*輸出新得分*/

}

setcolor(4);/*畫(huà)出蛇*/

for(i=0;i

貪吃蛇游戲程序設(shè)計(jì)報(bào)告

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);

delay(gamespeed);

setcolor(0);/*用黑色去除蛇的最后一節(jié)*/

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);}/*endwhile(!kbhit)*/ if(snake.life==1)/*如果蛇死了就跳出循環(huán)*/

break;key=bioskey(0);/*接收按鍵*/ if(key==Esc)/*按Esc鍵退出*/

break;else if(key==UP&&snake.direction!=4)/*判斷是否往相反方向移動(dòng)*/

snake.direction=3;else if(key==RIGHT&&snake.direction!=2)

snake.direction=1;else if(key==LEFT&&snake.direction!=1)

snake.direction=2;else if(key==DOWN&&snake.direction!=3)

snake.direction=4;}/*endwhile(1)*/

/*游戲結(jié)束*/ void GameOver(void){ cleardevice();/*清除屏幕*/ PrScore();/*輸出得分*/ setcolor(RED);settextstyle(0, 0,4);outtextxy(200,200,“GAME OVER”);/*顯示游戲結(jié)束*/ getch();}

void PrScore(void)/*輸出成績(jī)*/ { char str[10];setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);settextstyle(0,0,2);sprintf(str,“score:%d”,score);outtextxy(55,20,str);}

貪吃蛇游戲程序設(shè)計(jì)報(bào)告

void Close(void)/*圖形結(jié)束*/ { getch();closegraph();}

void main(void)/*主函數(shù)*/ { Init();DrawK();GamePlay();Close();} 8

第五篇:C#課程設(shè)計(jì)報(bào)告書(shū)

:課程設(shè)計(jì)報(bào)告書(shū)

面向?qū)ο蠓椒▽W(xué)

課 程 設(shè) 計(jì) 報(bào) 告

設(shè)計(jì)題目:學(xué)生信息管理系統(tǒng)課程

班 級(jí):13軟件工程1班 學(xué) 號(hào):20130*** 姓 名:何** 指導(dǎo)教師:莊**老師 設(shè)計(jì)時(shí)間:2014年12月 附件

4摘 要

本文描述的是基于Windows環(huán)境的學(xué)生信息管理系統(tǒng),主要功能模塊包括:學(xué)生信息的增刪改查,學(xué)生課程的增刪改查, 學(xué)生成績(jī)的增刪改查,用戶(hù)的增刪改查。所用體系構(gòu)架Client/Server結(jié)構(gòu)。主要工具M(jìn)icrosoft Visual Studio 2010 設(shè)計(jì)窗體, MYSQL建立數(shù)據(jù)庫(kù),實(shí)現(xiàn)學(xué)生信息管理的各個(gè)功能。運(yùn)用語(yǔ)言C#與sql語(yǔ)法編程。

本篇報(bào)告介紹一個(gè)學(xué)生信息管理系統(tǒng)的從分析到設(shè)計(jì)最后到開(kāi)發(fā)的全過(guò)程為,給出了學(xué)生信息管理系統(tǒng)的設(shè)計(jì)和技術(shù)實(shí)現(xiàn)的過(guò)程,特別在細(xì)節(jié)上分析功能和函數(shù)的實(shí)現(xiàn)思想。

關(guān)鍵詞:面向?qū)ο螅瑢W(xué)生信息管理系統(tǒng),Win7,MYSQL,VS2012,C/S This article describes the Windows environment based student information management system , the main function modules include: Additions and deletions to change search student information , additions and deletions to change search student curriculum , student achievement CRUD user CRUD.The system architecture Client / Server structure.The main tool for Microsoft Visual Studio 2012 design form , MYSQL database was established to achieve the various functions of the student information management.Sql syntax and use of C # programming language.This report describes a student information management system from analysis to design and finally to the whole process of development , the process gives the student information management system design and technology , in particular, to achieve ideological analysis functions and functions in detail.Keywords: object oriented, student information management system,Win7,MYSQL, VS2012, C/S

目錄

摘 要..............................................................................................................................................2 緒 論..............................................................................................................................................4 1.1 設(shè)計(jì)目的...........................................................................................................................4 1.2 開(kāi)發(fā)工具選擇...................................................................................................................4 1.3 開(kāi)發(fā)環(huán)境...........................................................................................................................4 1.4 本報(bào)告的主要內(nèi)容...........................................................................................................4 需求分析...........................................................................................................................................5 2.1系統(tǒng)需求簡(jiǎn)介....................................................................................................................5 2.1.1系統(tǒng)目標(biāo)................................................................................................................5 2.1.2功能需求分析........................................................................................................5 2.1.3性能需求分析........................................................................................................5 總體設(shè)計(jì)...........................................................................................................................................6 3.1設(shè)計(jì)概述............................................................................................................................6 3.2系統(tǒng)總體結(jié)構(gòu)及功能模塊劃分........................................................................................6 3.2.1學(xué)生信息管理模塊................................................................................................6 3.2.2學(xué)生課程管理模塊................................................................................................7 3.2.3學(xué)生成績(jī)管理模塊................................................................................................7 3.2.4系統(tǒng)用戶(hù)管理模塊................................................................................................8 3.3系統(tǒng)數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)................................................................................................8 3.3.1系統(tǒng)E-R圖............................................................................................................8 3.3.2系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì)................................................................................................9 3.4安全保密設(shè)計(jì)..................................................................................................................10 3.4.1用戶(hù)登錄安全性..................................................................................................10 詳細(xì)設(shè)計(jì).........................................................................................................................................11 4.1概述..................................................................................................................................11 4.2系統(tǒng)程序流程圖..............................................................................................................11 4.3系統(tǒng)主要功能模塊簡(jiǎn)介..................................................................................................12 4.3.1系統(tǒng)登錄..............................................................................................................12 4.3.2學(xué)生信息管理模塊..............................................................................................12 4.3.3學(xué)生課程管理模塊..............................................................................................14 4.3.4學(xué)生成績(jī)管理模塊..............................................................................................16 4.3.5系統(tǒng)用戶(hù)管理模塊..............................................................................................18 4.3.6版權(quán)關(guān)于..............................................................................................................20 主要功能模塊代碼.........................................................................................................................21 5.1 登錄界面代碼設(shè)計(jì)..........................................................................................................21 5.2 主頁(yè)面代碼......................................................................................................................26 5.3 系統(tǒng)用戶(hù)管理模塊代碼設(shè)計(jì)..........................................................................................38 5.4 課程信息管理模塊代碼設(shè)計(jì)..........................................................................................45 5.5成績(jī)信息管理模塊代碼設(shè)計(jì)...........................................................................................52 總結(jié)................................................................................................................................................61 參考文獻(xiàn).........................................................................................................................................61 課程設(shè)計(jì)心得.................................................................................................................................62 3

緒 論

1.1 設(shè)計(jì)目的

本課程設(shè)計(jì)的目的是使學(xué)生能熟練掌握簡(jiǎn)單的簡(jiǎn)單Windows窗體應(yīng)用程序的設(shè)計(jì)和ADO.net的應(yīng)用,希望通過(guò)本次課程設(shè)計(jì)鍛煉學(xué)生使用C#語(yǔ)言解決實(shí)際問(wèn)題的能力。

1.2 開(kāi)發(fā)工具選擇

本系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)采用MYSQL 數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)系統(tǒng)在安全性、準(zhǔn)確性和運(yùn)行速度方面有絕對(duì)的優(yōu)勢(shì),并且處理數(shù)據(jù)量大,效率高;前臺(tái)采用Microsoft 公司的Visual Studio 2012作為主要開(kāi)發(fā)工具,可與MYSQL 數(shù)據(jù)庫(kù)無(wú)縫鏈接。

1.3 開(kāi)發(fā)環(huán)境

開(kāi)發(fā)系統(tǒng):Win7

系統(tǒng)開(kāi)發(fā)平臺(tái):Microsoft Visual Studio 2012 系統(tǒng)開(kāi)發(fā)語(yǔ)言:C# 數(shù)據(jù)庫(kù)管理軟件:MYSQL 1.4 本報(bào)告的主要內(nèi)容

本報(bào)告詳細(xì)的介紹了學(xué)生信息管理系統(tǒng)的開(kāi)發(fā)過(guò)程,主要涉及到的工作如下:系統(tǒng)的需求分析、系統(tǒng)的總體設(shè)計(jì)、系統(tǒng)的概念設(shè)計(jì)、系統(tǒng)各模塊的詳細(xì)設(shè)計(jì)、系統(tǒng)運(yùn)行與測(cè)試。

需求分析

2.1系統(tǒng)需求簡(jiǎn)介

2.1.1系統(tǒng)目標(biāo)

(1)根據(jù)查詢(xún)條件實(shí)現(xiàn)學(xué)生信息的查詢(xún)

(2)學(xué)生選課信息查詢(xún)、成績(jī)信息和用戶(hù)信息的查詢(xún)

(3)學(xué)生信息、課程信息、成績(jī)信息、用戶(hù)信息的增加、刪除、修改(4)對(duì)基本信息完成增加、刪除、修改時(shí),需注意表與表之間的關(guān)聯(lián) 2.1.2功能需求分析

本系統(tǒng)的功能需求分析如下:

(1)學(xué)生信息查詢(xún):可以根據(jù)學(xué)號(hào)進(jìn)行查詢(xún).(2)學(xué)生信息管理:主要是用于學(xué)生信息添加、刪除、修改;(3)學(xué)生成績(jī)查詢(xún):可以根據(jù)學(xué)號(hào)進(jìn)行查詢(xún).(4)學(xué)生成績(jī)管理:主要是用于學(xué)生成績(jī)添加、刪除、修改;(5)課程信息查詢(xún):可根據(jù)菜單進(jìn)行查詢(xún).(6)課程信息管理:主要是用于課程信息添加、刪除、修改;(7)用戶(hù)信息查詢(xún):可根據(jù)菜單進(jìn)行查詢(xún).(8)用戶(hù)信息管理:主要是用于用戶(hù)信息添加、刪除、修改; 2.1.3性能需求分析

(1)登錄、用戶(hù)界面需求:簡(jiǎn)潔、易懂、易用、友好的用戶(hù)界面。(2)安全保密性需求:只有憑借用戶(hù)名和密碼登陸系統(tǒng),只有管理員才能進(jìn)行信息的管理,非管理員只能查看信息。

總體設(shè)計(jì)

3.1設(shè)計(jì)概述

根據(jù)需求把整個(gè)系統(tǒng)分化成不同的模塊,每個(gè)模塊完成一個(gè)特定的子功能。把這些模塊結(jié)合起來(lái)組成一個(gè)整體。逐一實(shí)現(xiàn)各個(gè)功能;

3.2系統(tǒng)總體結(jié)構(gòu)及功能模塊劃分

經(jīng)過(guò)對(duì)系統(tǒng)的需求分析,學(xué)生信息管理系統(tǒng)主要?jiǎng)澐譃槿齻€(gè)部分:學(xué)生信息查詢(xún),學(xué)生信息管理,學(xué)生成績(jī)錄入三個(gè)功能模塊。如圖3.2.0 系統(tǒng)的總體結(jié)構(gòu)。

學(xué)生信息管理系統(tǒng)學(xué)生信息管理

學(xué)生課程管理學(xué)生成績(jī)管理系統(tǒng)用戶(hù)管理 圖3.2.0 系統(tǒng)的總體結(jié)構(gòu)

3.2.1學(xué)生信息管理模塊

學(xué)生信息管理:主要是用于學(xué)生信息添加、刪除、修改,如圖3.2.1學(xué)生信息管理模塊結(jié)構(gòu)。

學(xué)生信息管理模塊添加學(xué)生信息刪除學(xué)生信息修改學(xué)生信息

圖3.2.1 3.2.2學(xué)生課程管理模塊

學(xué)生課程管理:主要是用于學(xué)生課程添加、刪除、修改,如圖3.2.2學(xué)生課程管理模塊結(jié)構(gòu)。

學(xué)生課程管理模塊添加課程信息

刪除課程信息修改課程信息

圖3.2.2

3.2.3學(xué)生成績(jī)管理模塊

學(xué)生成績(jī)管理:主要是用于學(xué)生成績(jī)添加、刪除、修改,如圖3.2.3學(xué)生成績(jī)管理模塊結(jié)構(gòu)。

學(xué)生成績(jī)管理模塊添加學(xué)生成績(jī)

刪除學(xué)生成績(jī)修改學(xué)生成績(jī)

圖3.2.3 3.2.4系統(tǒng)用戶(hù)管理模塊

系統(tǒng)用戶(hù)管理:主要是用于系統(tǒng)用戶(hù)添加、刪除、修改,如圖3.2.4系統(tǒng)用戶(hù)管理模塊結(jié)構(gòu)。

系統(tǒng)用戶(hù)管理模塊添加用戶(hù) 刪除用戶(hù)修改用戶(hù) 圖3.2.4 3.3系統(tǒng)數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)

根據(jù)對(duì)數(shù)據(jù)項(xiàng)與數(shù)據(jù)結(jié)構(gòu)的分析,設(shè)計(jì)出能夠滿(mǎn)足系統(tǒng)需求的各種實(shí)體,及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ)。3.3.1系統(tǒng)E-R圖

系統(tǒng)E-R圖可以將各個(gè)實(shí)體之間的關(guān)系顯示出來(lái),將各個(gè)實(shí)體間的屬性依賴(lài)表示明白。如圖3.3.1系統(tǒng)E-R圖結(jié)構(gòu)。

姓名性別年齡院系考核籍貫用戶(hù)表用戶(hù)名成績(jī)表學(xué)號(hào)學(xué)號(hào)課程ID課程名類(lèi)型學(xué)分學(xué)生表選課課程表理論學(xué)時(shí)實(shí)驗(yàn)學(xué)時(shí)用戶(hù)密碼用戶(hù)類(lèi)型成績(jī)課程名稱(chēng) 圖3.3.1系統(tǒng)E-R圖結(jié)構(gòu) 3.3.2系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì)

綜合以上分析,要實(shí)現(xiàn)上面的所有功能模塊,主要設(shè)計(jì)表如下:

表3.3.2.1 用戶(hù)表(user)

表3.3.2.2成績(jī)表(grade)

表3.3.2.3課程表(course)

表3.3.2.4學(xué)生表(stu)

3.3.3數(shù)據(jù)庫(kù)的連接配置

①先在項(xiàng)目中引用MySQLDriverCS.dll ②類(lèi)添加 using MySQLDriverCS;③MySQLConnection conn = new MySQLConnection(new MySQLConnectionString(“數(shù)據(jù)庫(kù)名”, “Server帳號(hào)”, “密碼”).AsString);3.4安全保密設(shè)計(jì)

3.4.1用戶(hù)登錄安全性

系統(tǒng)設(shè)計(jì)了登錄界面,每個(gè)合法用戶(hù)有用戶(hù)名及一個(gè)密碼,只有當(dāng)用戶(hù)輸入正確的用戶(hù)名及密碼組合后才能夠?qū)W(xué)生信息進(jìn)行操作。

詳細(xì)設(shè)計(jì)

4.1概述

詳細(xì)設(shè)計(jì)階段的根本目標(biāo)是確定應(yīng)該怎樣具體的實(shí)現(xiàn)所要求的系統(tǒng),也就是說(shuō),經(jīng)過(guò)這個(gè)階段的設(shè)計(jì)工作,應(yīng)該得出目標(biāo)系統(tǒng)的精確描述,從而在編碼階段可以把這個(gè)描述直接翻譯成用某種程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的程序。

4.2系統(tǒng)程序流程圖

程序流程圖又稱(chēng)為程序框圖,它是歷史悠久使用最廣泛的描述軟件設(shè)計(jì)的方法。它可將整個(gè)程序的總體流程清楚明白的顯示出來(lái)。如圖4.2.1系統(tǒng)總流程圖結(jié)構(gòu)。

圖4.2.1系統(tǒng)總體流程圖

4.3系統(tǒng)主要功能模塊簡(jiǎn)介

4.3.1系統(tǒng)登錄

用戶(hù)憑借用戶(hù)名及密碼登錄,成功登錄后可對(duì)學(xué)生信息進(jìn)行操作。用戶(hù)界面如圖4.3.1 用戶(hù)登錄界面所示。

圖4.3.1 用戶(hù)登錄界面

4.3.2學(xué)生信息管理模塊

學(xué)生信息管理:通過(guò)程序主界面的添加學(xué)生信息按鈕可添加學(xué)生信息(如圖

4.3.2添加信息窗口)。學(xué)生信息進(jìn)行詳細(xì)信息管理(如圖4.3.3 信息管理)包括刪除信息(如圖 4.3.4刪除信息提示)和修改信息(如圖4.3.5 修改信息窗口)。

圖4.3.2添加信息窗口

圖4.3.3 信息管理

圖4.3.4刪除信息提示

圖4.3.5 修改信息窗口

4.3.3學(xué)生課程管理模塊

學(xué)生課程管理:通過(guò)程序主界面的菜單-->系統(tǒng)-->課程管理 可添加課程信 14

息(如圖 4.3.5信息管理)和 詳細(xì)的課程管理(如圖4.3.6 添加信息窗口)和(如圖4.3.7 刪除信息提示)和(如圖4.3.8 修改信息窗口)。

圖 4.3.5信息管理

4.3.6 添加信息窗口

圖4.3.7 刪除信息提示

圖4.3.8 修改信息窗口

4.3.4學(xué)生成績(jī)管理模塊

學(xué)生信息管理:選擇一行學(xué)生信息通過(guò)程序主界面的查看-->學(xué)生成績(jī)按鈕,查看該學(xué)生的成績(jī)信息(如圖 4.3.7查看信息窗口)。查看后還可以添加該學(xué)生的成績(jī)(如圖 4.3.8添加信息窗口)、刪除該學(xué)生的成績(jī)(如圖 4.3.9刪除提示窗口)和修改該學(xué)生的成績(jī)(如圖 4.3.10修改信息窗口)

圖4.3.7成績(jī)管理

4.3.8添加信息窗口

圖 4.3.9刪除提示窗口 17

圖 4.3.10修改信息窗口

4.3.5系統(tǒng)用戶(hù)管理模塊

系統(tǒng)用戶(hù)管理:通過(guò)程序主界面的菜單-->系統(tǒng)-->用戶(hù)管理,查看該系統(tǒng)用戶(hù)的信息(如圖 4.3.11查看信息窗口)。查看后還可以添加該系統(tǒng)的用戶(hù)(如圖 4.3.12添加信息窗口)、刪除該系統(tǒng)的用戶(hù)(如圖 4.3.13刪除提示窗口)和修改該系統(tǒng)的用戶(hù)(如圖 4.3.14修改信息窗口)

4.3.11查看信息窗口

圖 4.3.12添加信息窗口

圖 4.3.13刪除提示窗口

圖 4.3.14修改信息窗口

4.3.6版權(quán)關(guān)于

版權(quán)關(guān)于:圖4.3.15版權(quán)關(guān)于

圖4.3.15版權(quán)關(guān)于

主要功能模塊代碼

5.1 登錄界面代碼設(shè)計(jì)

namespace SIMS_1 { public partial class Log : Form { String check = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890”;string check_4 = “";

Random r = new Random();

public Log(){ InitializeComponent();

for(int i = 0;i < 4;i++){ int n=r.Next(0,61);check_4 += ”“ + check[n];} l_check.Text = check_4;

}

private static String id, password, type;public static int Flag = 1;

String flag = ”“;

MySQLConnection con = new MySQLConnection(new MySQLConnectionString(”students“, ”root“, ”123456“).AsString);

private void bt_log_Click(object sender, EventArgs e){ try { id = txt_id.Text.Trim();password = txt_password.Text.Trim();if(this.rb_log_Manager.Checked){ type = ”管理員“;} if(this.rb_Log_Not_Manager.Checked){ type = ”非管理員“;}

// 如果輸入的帳號(hào)和密碼與系統(tǒng)的帳號(hào)密碼一致就進(jìn)入本系統(tǒng)

con.Open();MySQLCommand setformat = new MySQLCommand(”set names gb2312“, con);setformat.ExecuteNonQuery();setformat.Dispose();

string sql = ”select * from user where 用戶(hù)名='“ + id + ”' and 用戶(hù)密碼='“ + password + ”'and 用戶(hù)類(lèi)型='“ + type + ”'“;

MySQLDataAdapter adapter = new MySQLDataAdapter(sql, con);DataSet set = new DataSet();adapter.Fill(set,”user“);

this.dataView.DataSource = set.Tables[”user“];int rowcount = dataView.RowCount1;if(rowcount == 0){ MessageBox.Show(”您還未添加課程!“);} con.Close();

}

public static String name1 = ”“;public static String id1 = ”“;private void bt_grade_Click(object sender, EventArgs e){ try { id1 = dataView.SelectedRows[0].Cells[0].Value.ToString();name1 = dataView.SelectedRows[0].Cells[1].Value.ToString();

Grade g = new Grade();g.Show();g.Text = name1 + ”:的成績(jī)單“;

con.Open();

MySQLCommand setformat = new MySQLCommand(”set names gb2312“, con);setformat.ExecuteNonQuery();setformat.Dispose();string sql1 = ”select * from grade where 學(xué)號(hào)=“+id1;MySQLDataAdapter adapter = new MySQLDataAdapter(sql1, con);DataSet set = new DataSet();adapter.Fill(set, ”grade“);g.dataView1.DataSource = set.Tables[0];int rowcount = g.dataView1.RowCount1;if(rowcount == 1)

{ MessageBox.Show(”該學(xué)號(hào)的學(xué)生已存在!“);} else {

{ } {

{ } { flag_exception = 1;} { } { + sex + ”',“ + if(id.Equals(”“))MessageBox.Show(”請(qǐng)輸入學(xué)號(hào)!“);else try Int64 id1 = Convert.ToInt64(id);catch(FormatException)if(flag_exception == 1)MessageBox.Show(”請(qǐng)輸入正確的學(xué)生學(xué)號(hào)!“);else String sql1 = ”insert into stu values('“ + id + ”','“ + name + ”','“"'” + age + “','” + depart + “','” + nation + “')”;

MySQLCommand command = new MySQLCommand(sql1, Students.con);command.ExecuteNonQuery();Students.con.Close();

MessageBox.Show(“操作成功!”);this.Dispose();} } } }

private void bt_Add_cancel_Click(object sender, EventArgs e){ this.Dispose();} } }

5.3 系統(tǒng)用戶(hù)管理模塊代碼設(shè)計(jì)

namespace SIMS_1 { public partial class registered : Form { public registered(){ InitializeComponent();if(Log.Flag == 0){ 38

bt_registered_add.Hide();bt_registered_delete.Hide();bt_registered_change.Hide();} }

private void bt_registered_refresh_Click(object sender, EventArgs e){ Students.con.Open();MySQLCommand setformat = new MySQLCommand(“set names gb2312”, Students.con);setformat.ExecuteNonQuery();setformat.Dispose();string sql1 = “select * from user”;MySQLDataAdapter adapter = new MySQLDataAdapter(sql1, Students.con);DataSet set = new DataSet();adapter.Fill(set, “user”);this.dataView_user.DataSource = set.Tables[0];}

private void bt_registered_add_Click(object sender, EventArgs e){ registered_add registered_add = new registered_add();registered_add.Show();}

private void bt_registered_delete_Click(object sender, EventArgs e){ try { String id =

this.dataView_user.SelectedRows[0].Cells[0].Value.ToString();

if(MessageBox.Show(“是否要?jiǎng)h除用戶(hù)名為:” + id + “ 的用戶(hù)?”, “確認(rèn)”, MessageBoxButtons.YesNo, MessageBoxIcon.Question)== DialogResult.Yes){ Students.con.Open();MySQLCommand setformat = new MySQLCommand(“set names gb2312”, Students.con);setformat.ExecuteNonQuery();setformat.Dispose();String sql = “delete from user where 用戶(hù)名='” + id + “'”;MySQLCommand command = new MySQLCommand(sql, Students.con);command.ExecuteNonQuery();Students.con.Close();MessageBox.Show(“刪除成功!”, “提示!”, MessageBoxButtons.OK);} } catch(ArgumentOutOfRangeException){ MessageBox.Show(“您還沒(méi)有選擇一行要?jiǎng)h除的數(shù)據(jù)!”);} catch(NullReferenceException){ MessageBox.Show(“您選擇行的數(shù)據(jù)無(wú)效!”);} }

private void bt_registered_change_Click(object sender, EventArgs e){

try { String user_name = this.dataView_user.SelectedRows[0].Cells[0].Value.ToString();String password = this.dataView_user.SelectedRows[0].Cells[1].Value.ToString();String type = this.dataView_user.SelectedRows[0].Cells[2].Value.ToString();

Students.con.Open();MySQLCommand setformat = new MySQLCommand(“set names gb2312”, Students.con);setformat.ExecuteNonQuery();setformat.Dispose();String sql = “delete from user where 用戶(hù)名='” + user_name + “'”;MySQLCommand command = new MySQLCommand(sql, Students.con);command.ExecuteNonQuery();Students.con.Close();

registered_add r = new registered_add();r.Show();

r.txt_user_name.Text = user_name;r.txt_user_password.Text = password;if(type.Equals(“管理員”)){ r.rb_guanli.Checked = true;} else {

r.rb_nomal.Checked = true;}

r.Text = “修改”;r.bt_registered_add_cancle.Hide();} catch(ArgumentOutOfRangeException){ MessageBox.Show(“您還沒(méi)選擇一行要修改的數(shù)據(jù)!”);} catch(NullReferenceException){ MessageBox.Show(“您選擇行的數(shù)據(jù)無(wú)效!”);}

} } }

5.3.1添加系統(tǒng)用戶(hù)模塊代碼設(shè)計(jì)

namespace SIMS_1 { public partial class registered_add : Form { public registered_add(){ InitializeComponent();}

private void bt_registered_add_Ok_Click(object sender, EventArgs e){ int ExceptionFlag = 0;String user_name = txt_user_name.Text;String password = txt_user_password.Text;String type = rb_guanli.Checked ? “管理員” : “非管理員”;Int64 no=0;

Students.con.Open();MySQLCommand setformat = new MySQLCommand(“set names gb2312”, Students.con);setformat.ExecuteNonQuery();setformat.Dispose();

String sql = “select * from user where 用戶(hù)名='” + user_name + “'”;MySQLDataAdapter adapter = new MySQLDataAdapter(sql, Students.con);DataSet set = new DataSet();adapter.Fill(set);this.dataGridView1.DataSource = set.Tables[0];

int rowcount = dataGridView1.RowCount1;MessageBox.Show(“查找到” + rowcount + “個(gè)課程的信息!”);if(rowcount == 0){ MessageBox.Show(“您還未添加課程!”);} Students.con.Close();} } }

5.4.1添加課程信息模塊代碼設(shè)計(jì)

namespace SIMS_1 { public partial class Course_Add : Form

{ public Course_Add(){ InitializeComponent();}

private void bt_course_add_Ok_Click(object sender, EventArgs e){ int flag_exception = 0;String id = this.txt_course_id.Text;String name = this.txt_course_name.Text;String type = this.rbt_Obligatory.Checked ? “必修” : “選修”;decimal credit = this.num_Credit.Value;decimal theory= this.num_Theory.Value;decimal experiment = this.num_Experiment.Value;

Students.con.Open();MySQLCommand setformat = new MySQLCommand(“set names gb2312”, Students.con);setformat.ExecuteNonQuery();setformat.Dispose();String sql = “select * from course where 課程ID='” + id + “'”;MySQLDataAdapter adapter = new MySQLDataAdapter(sql, Students.con);DataSet set = new DataSet();adapter.Fill(set);this.dataView1.DataSource = set.Tables[0];int rowcount = dataView1.RowCount-1;if(rowcount == 1){ MessageBox.Show(“該課程ID已存在!”);}

下載貪吃蛇課程設(shè)計(jì)總結(jié)報(bào)告書(shū)word格式文檔
下載貪吃蛇課程設(shè)計(jì)總結(jié)報(bào)告書(shū).doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    OS課程設(shè)計(jì)報(bào)告書(shū)

    南通大學(xué)計(jì)算機(jī)學(xué)院課程設(shè)計(jì) 報(bào)告書(shū)設(shè)計(jì)題目專(zhuān)業(yè)班級(jí) 學(xué)生姓名 學(xué)號(hào) 指導(dǎo)教師 日期 目錄一級(jí)目錄1……………………………………………………………頁(yè)碼 一級(jí)目錄2…………......

    linux操作系統(tǒng)課程設(shè)計(jì)報(bào)告書(shū)

    題目1 進(jìn)程軟中斷通信 1.1 題目的主要研究?jī)?nèi)容及預(yù)期達(dá)到的目標(biāo) 實(shí)現(xiàn)進(jìn)程的軟中斷通信:父進(jìn)程發(fā)信號(hào)控制子程序的終止。 1.2 題目研究的工作基礎(chǔ)或?qū)嶒?yàn)條件 (1)硬件環(huán)境:Linux平......

    電力電子課程設(shè)計(jì)報(bào)告書(shū)

    課程設(shè)計(jì)說(shuō)明書(shū) 課程名稱(chēng): 電力電子技術(shù)課程設(shè)計(jì) 設(shè)計(jì)題目: 開(kāi)關(guān)恒流電源設(shè)計(jì) 專(zhuān)業(yè): 電氣工程及其自動(dòng)化班級(jí):電自1103班 學(xué)生姓名: 學(xué)生填寫(xiě) 學(xué)號(hào): (10位數(shù)) 指導(dǎo)教師: 學(xué)生......

    太原理工大學(xué)課程設(shè)計(jì)報(bào)告書(shū)

    太原理工大學(xué)課程設(shè)計(jì)報(bào)告書(shū) 一、需求分析 (一)建設(shè)工廠物資管理數(shù)據(jù)庫(kù)目的(包括服務(wù)對(duì)象、數(shù)據(jù)庫(kù)的目標(biāo)等) (二)開(kāi)展工廠物資管理數(shù)據(jù)庫(kù)的可行性分析 (三) 數(shù)據(jù)和處理分析(包括數(shù)據(jù)......

    PLC課程設(shè)計(jì)報(bào)告書(shū)(小編推薦)

    ※※※※※※※※※ ※2010級(jí)PLC ※ ※※課程設(shè)計(jì) ※ ※ ※※※※※ ※※※※ PLC課程設(shè)計(jì)報(bào)告書(shū) 課題名稱(chēng)工業(yè)機(jī)械手的PLC控制 姓 名 閆文博 學(xué) 號(hào) 20107577 院、系、部......

    《成本會(huì)計(jì)》課程設(shè)計(jì)報(bào)告書(shū)撰寫(xiě)規(guī)范

    武漢理工大學(xué)華夏學(xué)院《成本會(huì)計(jì)》課程設(shè)計(jì)報(bào)告書(shū) 《成本會(huì)計(jì)》課程設(shè)計(jì)報(bào)告書(shū)撰寫(xiě)規(guī)范一、主標(biāo)題:自定(五個(gè)班的題目不允許重復(fù),此為學(xué)校規(guī)定) 二、副標(biāo)題: ——《成本會(huì)計(jì)》課......

    課程設(shè)計(jì)報(bào)告書(shū)數(shù)控編程技術(shù)(學(xué)生參考).

    課程設(shè)計(jì)報(bào)告書(shū) 題目:數(shù)控加工工藝與編程設(shè)計(jì) 系部:機(jī)械學(xué)院 專(zhuān)業(yè):機(jī)械設(shè)計(jì)制造及其自動(dòng)化 班級(jí): 姓名: 學(xué)號(hào): 2015年1月4日 數(shù)控編程課程設(shè)計(jì)任務(wù)書(shū) 目錄 1. 緒論 (1 2. 設(shè)......

    ERP課程設(shè)計(jì)報(bào)告書(shū)正文標(biāo)準(zhǔn)格式

    課 程 設(shè) 計(jì) 報(bào) 告 書(shū) 專(zhuān) 用 紙 1、實(shí)習(xí)目的 通過(guò)本次實(shí)習(xí),使學(xué)生了解企業(yè)管理決策的基本思想及流程,并充分理解管理過(guò)程中團(tuán)隊(duì)精神的體現(xiàn)、哲學(xué)思維的運(yùn)用、個(gè)性能力的滲透、......

主站蜘蛛池模板: 国产a∨天天免费观看美女| 国产成人精品久久| 开心五月激情综合婷婷| 国产人成无码视频在线| 国产成人无码专区| 少妇挑战三个黑人惨叫4p国语| 日韩人妻无码精品-专区| 午夜三级a三级三点| 久久国产色欲av38| 伊人狠狠色丁香婷婷综合| 欧美熟妇乱子伦xx视频| 国精产品一区一区三区| 国产人妻人伦精品1国产| 午夜精品久久久内射近拍高清| 久久精品少妇高潮a片免费观| 精品国品一二三产品区别在线观看| 亚洲av高清在线一区二区三区| 成人精品综合免费视频| 国产精品久久久久久久9999| 日本欧美大码a在线观看| 无码专区丰满人妻斩六十路| 欧美一区二区三区红桃小说| 又粗又硬又大又爽免费视频播放| 国产激情久久久久影院小草| 欧美日韩亚洲国产欧美电影| 天天躁夜夜躁av天天爽| 亚洲色精品88色婷婷七月丁香| 99re6在线观看国产精品| 久久精品人人做人人爽电影蜜月| 日本强好片久久久久久aaa| 97超碰国产精品无码| 精品国产三级a∨在线| 精品四虎国产在免费观看| 亚洲国产精品综合久久网各| 国产精品久久精品三级| 日韩精品 中文字幕 视频在线| 久久久国产精品无码一区二区| 特级西西人体444www高清大胆| 亚洲国产成在人网站天堂| 67194成是人免费无码| 性荡视频播放在线视频|