軟件項目實訓報告.doc
遼寧工程技術大學大型軟件項目實訓報告教學單位 軟件學院 專 業(yè) 軟件工程 班 級 08 - 3 學生姓名 張興堂 學 號 0820010329 指導教師 陳 虹 一、實訓目的通過外出實訓提高自己的實戰(zhàn)能力,對軟件編程項目有更深刻的理解。根據(jù)企業(yè)對人才的具體需求,針對軟件學院應屆畢業(yè)生,開展以大型軟件工程項目為目的的實戰(zhàn)訓練,有效提升學生的項目實戰(zhàn)能力和適應市場的能力,最終實現(xiàn)學生比較理想的就業(yè)率和就業(yè)質量。二、實訓時間和地點1實訓時間:2011年11月1月2012年1月6日2實訓地點:北京達內三、實訓單位簡介達內IT培訓集團是中國高端IT培訓機構,致力于培養(yǎng)面向電信和金融領域的Java、C+、C#/.Net、測試、嵌入式、PHP等方面中高端軟件人才,由美國國際數(shù)據(jù)集團IDG、集富亞洲JAFCOASIA和高盛集團投資,是國內首家獲得國際風險投資的IT培訓機構。經過8年運營,達內IT培訓集團實現(xiàn)了95%的專業(yè)就業(yè)率,78%的口碑入學率,學員平均畢業(yè)薪資3800元/首月平均薪資。目前,達內IT培訓團已經發(fā)展成為集培訓、咨詢、開發(fā)、人才服務于一體的高新技術集團公司,公司下設達內高端IT培訓、達內軟件人才服務中心、達內軟件研發(fā)中心。達內IT培訓集團以中關村科技園區(qū)為依托,在中國軟件業(yè)發(fā)達城市北京、上海、廣州、深圳、大連、南京、武漢、杭州、西安、蘇州、成都、太原20大城市,建立了近40家培訓中心,占地2萬平米,年培訓1萬多名軟件人才。已累計為IBM、微軟、摩托羅拉、華為、中軟、用友、Yahoo、阿里巴巴、TOM、新浪、搜狐、百度、聯(lián)想、神州數(shù)碼、大唐電信、亞信等知名IT企業(yè)培養(yǎng)輸送了5萬多名中高級軟件人才,目前達內全國擁500多名員工,年產值近2億元,是中國最大的中高端軟件人才培訓機構。由于達內IT培訓集團優(yōu)秀的教學效果和行業(yè)領先的經營模式贏得了社會各界的廣泛贊譽和好評,近年來達內榮獲了各界權威機構的頒獎:達內成為業(yè)界唯一的一家2006、2007、2008、2009連續(xù)4年入選德勤評選的“中國高科技高成長50強公司”、“亞太地區(qū)高科技高成長500強公司”,中關村管理委員會指定的“軟件人才培養(yǎng)示范基地”、被計算機世界評選的“就業(yè)服務杰出貢獻獎”、被中國計算機報評選的“最具影響力培訓機構獎”、被搜狐評為“中國十大教育集團”、被騰訊評為“中國大學生心目中最具影響力的IT品牌”等等。 四、實訓內容1實訓期間完成的學習任務一Linux系統(tǒng)操作命令首先,我們學習了最基礎的系統(tǒng)操作指令。因為在學習過程中c和c+代碼的編程和修改在linux系統(tǒng)下,所以我們集中精力花費了3天時間學習指令操作。命令:文檔統(tǒng)計: wc日期: date cal關機 poweroff windows:shutdownReboot exit find grep find 目錄列表 匹配標準 -name size -type -atime 通配符操作目錄下有需要通配的內容的時候采使用通配符。* (1) 列舉(2) 范圍?!; | 將上一個命令的輸出作為下一個命令的輸入 cat /etc/passwd | grep -n roottee ls -l | tee a.txt ln 硬連接 軟連接 ln file02 file ln -s file02 sfile users:who:who am i:whoami: 系統(tǒng)進程信息 psps u:詳細方式顯示當前終端下的進程的信息ps -e:當前正在運行的所有進程sleep 10&kill PID jobs: 查看任務kill %n fg %n bg %n stop %n ctrl+c / z man 幫助手冊(1) 系統(tǒng)命令(2) 系統(tǒng)調用 open (3) 庫函數(shù) fopen(4) (5) (6) (7) (8) 管理員的命令 ifconfig service ifconfigip地址:netmask: 默認網關:域名解析 netstat ping ip export HOME: PWD: PATH: LANG: CC: CCC: PS1: PS2 export PS1="" /.bashrc source /.bashrc xxx.sh#!/bin/bash cal date ls vi命令模式: i a h j k l ctrl+b f shift+9 0 w e b $ 0 x 5x X 5X dd 5dd yw yy p r R u : undo #G 底行命令模式:set nuset cindent:按照C語言的風格進行自動縮進。set tabstop=4:設置tab按鍵的長度 行號+回車 字符串n N /n個空格 %s/string/replace/g w filename#1,#2 w filename q q! wqgedit kateC程序的開發(fā)執(zhí)行次序: 1 寫源文件,后綴名 .c 2 對代碼中的指令進行預處理,以#開頭的 3 代碼編譯,生成 xx.o/xx.obj 4 代碼的連接生成可執(zhí)行文件 a.out/xx.exe 5 加載文件,把文件從硬盤讀入內存 6 執(zhí)行 gcc 的選項: -c 只編譯不連接 -E 只作預處理 -S 匯編代碼 -std=c89/c99 -o 改變最后的可執(zhí)行文件的名字 二.linu下c程序開發(fā) 庫函數(shù) sqrt 開平方 #include <math.h>連接的時候需要連接 數(shù)學庫gcc xxx.c -lm 舉例: 打印1-30 之間不能被4整除的整數(shù)。 while循環(huán)while(表達式) 語句; int i = 1;while(i<11) printf("%d ",i+);舉例 : 猜數(shù)游戲。 隨機數(shù): #include <stdlib.h> rand() 偽隨機數(shù) srand() 設置隨機數(shù)種子 #include <time.h> time() 獲取系統(tǒng)的時間 time(0):返回一個時間 1970年1月1號0:0:0 到現(xiàn)在 所經過的秒數(shù) 隨機數(shù): srand(time(0); rand()產生一個隨機數(shù)。無限循環(huán):死循環(huán) while(1) for(;) do-while循環(huán): do 語句; while(表達式);緩沖區(qū):輸入: scanf(數(shù)據(jù)類型); scanf("%*n");* : 將讀取到的內容忽略掉n : 非n的字符scanf("%*c"); if(scanf()=0) 輸出緩沖區(qū):<1> n<2> 程序結束<3> 滿 4kb<4> 人工刷新 fflush(stdout);/stdin stderr一維數(shù)組: 數(shù)據(jù)類型相同的一組數(shù)據(jù)。(結構體) 數(shù)組的定義: 數(shù)據(jù)類型 數(shù)組名數(shù)組的長度; char int float 結構體 int a5; 下標: 數(shù)組的初始化: int a5 = 1,2,3,4; int a5 = 0;指定初始化: int a5 = 3 = 4; 二維數(shù)組: 數(shù)據(jù)類型 數(shù)組名行列 行下標 列下標 for() for() aij = 0; 一維: for() ai = 0; 二維數(shù)組初始化: int a23 = ,;函數(shù)的返回值:<1> 函數(shù)返回值的類型必須和return返回值的類型一致。<2> 如果函數(shù)沒有返回值 指定 void<3> C語言中 返回值類型可以省略 默認 int 參數(shù):形式參數(shù)<1> 多個形式參數(shù)之間使用逗號分割<2> 每個形式參數(shù)必須有類型的說明float x,y,z;float aver(float x,y)/錯誤<1> C語言中沒有bool類型 #include <stdbool.h> bool true false 本質就是一個整數(shù)<2> #include <math.h> double sqrt(double); gcc xxx.c -lm <3> 函數(shù)調用 函數(shù)名(實際參數(shù)); 形式參數(shù)和實際參數(shù): 參數(shù)名可以不一樣 函數(shù)聲明: C語言規(guī)定:函數(shù)在使用之前必須聲明。 聲明: 函數(shù)頭; bool prime(int); 可以不寫形式參數(shù)的名字。 隱式聲明: 如果函數(shù)在使用之前并沒有進行聲明,編譯器會自動創(chuàng)建 一個隱式聲明,返回值類型為 int 實際參數(shù)->形式參數(shù) 值傳遞: 拷貝一份數(shù)組賦值給形式參數(shù)。 float aver(float x,float y); t = aver(i,j); i->x j->y aver返回值->t注意: 實際參數(shù)和形式參數(shù)名字一樣,存儲空間不一樣。 高內聚 低耦合" 數(shù)組可以作為函數(shù)的參數(shù): 函數(shù)調用傳遞的是數(shù)組的名字 (數(shù)組第一個元素的地址) 數(shù)組的長度 = sizeof(數(shù)組名)/sizeof(元素) 不能實現(xiàn): 數(shù)組傳遞的是地址。 sizeof(地址) = 4 形式參數(shù)為數(shù)組的時候,我們應該設計兩個參數(shù):一個數(shù)組 另外一個 數(shù)字的長度 int function(int a,int length,.) const: 使用const修飾的變量,只讀變量。 如果形式參數(shù)傳遞的是地址,不希望在被調函數(shù)中修改地址上的 內容 可以使用const來修飾形參 void f(const int a,int length);return : main函數(shù)中使用 整個程序結束。遞歸: 如果一個函數(shù)調用了它本身,遞歸函數(shù)。指針的初級: 指針 就是內存的地址,指針變量就是存儲地址的變量。定義一個指針變量:數(shù)據(jù)類型 *變量名;指針變量所保存的地址->內存上的數(shù)據(jù)類型。* : 告訴編譯器后面的變量是一個指針變量 指針初始化: int *q = NULL;/NULL 0 0.0 空指針:不指向任何地方 指針的賦值: q = &i;運算符: * 取對應地址上的內容。const與指針: (1) const int *q : q指向的數(shù)據(jù)數(shù)值不能改變 q本身可以改變。 (2) int * const q : q本身不可以改變,q指向的數(shù)值是可以改變的。 數(shù)組名 (3) const int * const q字符串: string類型三種表現(xiàn)形式:(1)字面值常量“abcde”,不能作為變量,可以賦值給變量。程序段(代碼段)后面0結束數(shù)值相同的字面值常量在代碼段只有一份。(2)char arr20表示字符串類型的變量(數(shù)組)后面一定加上0printf("%s",arr);->arr是數(shù)組的名字一直打印直到遇到0(3)int a10;int* q=&a0; char str20;char *q=&str0; 指針方式存儲字符串常量的地址。考慮緩沖區(qū)的大小,可能會導致緩沖區(qū)溢出。<3>fgets(char *s,size_t size,FILE* stream);s:指向緩沖區(qū)的指針size:緩沖區(qū)的大小stream:文件指針->stdin注意:fgets會在整個字符串后面增加n操作字符串的庫函數(shù):#include <string.h>strcpy char* strcpy(char* dest,char* src); 作用:將src指向的字符串拷貝呆dest指向的緩沖區(qū)中。 返回值:dest數(shù)值(地址)。 使用:char str120;char str220;strcpy(str1,str2);strcpy(str1,"hello"); 注意:strcpy不考慮第一個參數(shù)指向緩沖區(qū)大小。char* strncpy(char* dest,const char* src,size_t size);strcat: char* strcat(char *dest,char* src); 作用:將src指向的字符串鏈接到dest指向的字符串結尾的地方注意:不會考慮dest指向的緩沖區(qū)的大小。char* strncat(char* dest,char* src,size_t size);strlen:->sizeof char name20 = "hello" sizeof(name)->20:數(shù)組所占用的內存 int strlen(char* s); strlen(name) = 5; 測量字符串的長度,不包含結尾的nstrcmp:對比兩個字符串 int strcmp(char* s1,char* s2) "abc" "acb" 返回值有三種可能: 1 0 相等 2 正數(shù) s1>s2 3 負數(shù) s1<s2 strncmp(.size_t n); 只比較前n個字符。注意: 1 不要在宏放置額外的等號 int a = 100; #define size = 200 int asize;/int a=200 2 不要在宏后面加分號 #define SIZE 200; int aSIZE;/int a200; 帶參數(shù)的宏 #define 標志符(x1,x2,x3) 替換列表 注意: 標志符和后面一定不能有空格 #define MAX(x,y) 帶參數(shù)的宏僅僅簡單的替換 和函數(shù)完全不一樣 不要在帶參數(shù)的宏里面使用自增或者自減 帶參數(shù)的宏應該使用()來保證表達式的運算順序 1 在每個參數(shù)的外面加上() 2 整個表達式的外面加上() 三種使用中間變量 SWAP(T,x,y) T temp = x;x=y;y=temp使用求和 SWAP(x,y) (x)=(x)+(y);(y)=(x)-(y);(x)=(x)-(y)使用異或 SWAP(x,y) (x)=(x)(y);(y)=(x)(y);(x)=(x)(y)C語言中已經存在的宏:_LINE_ 當前正在編譯的程序行號 %d_FILE_ 源程序文件的名字 %s _DATE_ 編譯程序的日期 %s_TIME_ 具體的時間 %s_STDC_ 判斷當前使用的編譯器是否符合C標準 不符合 0 符合 1 帶參數(shù)的宏 PRINT(i/j)->printf("i/j = %d",i/j);PRINT(x/y)->printf("x/y = %d",x/y); #define PRINT(n) printf(".",n) #運算符: 可以將宏中的參數(shù)轉換為字面值常量。限定: #運算符只能出現(xiàn)在帶參數(shù)的宏替換列表中 字符串: "abc""de" = "abcde"#define PRINT(n) printf(#n" = %dn",n) -> "i/j"" = %dn"->"i/j = %dn" #運算符 作用:將兩個標識符粘合在一起組成一個新的標識符 需求: int float int max_int()->整數(shù)float max_float()->浮點數(shù).#define MAX(type) type max_#type() .MAX(int)-> int max_int()MAX(float)-> float max_float() 需要很多標識符名字。#define MK_ID(n) i_#nMK_ID(1) -> i_1MK_ID(32) -> i_32條件編譯: 就是根據(jù)預處理的結果來包含或者排除某一段代碼。#if #endif 預處理器判斷#if后面的宏目前的數(shù)值 0->#if 和 #endif之間的代碼排除 非零 保留defined #if defined DEBUG -> DEBUG是不是已經定義為一個宏#ifdef = #if defined debug:調試 n多條調試語句(printf)release:發(fā)布 /#define DEBUG#ifdef DEBUG 調試語句#endif#ifndef->#if not defined #include "test.h" #include "test.h"makefile:由很多條規(guī)則組成的:目標文件: 依賴文件生成目標文件所執(zhí)行的指令選擇一條規(guī)則來執(zhí)行make 目標文件如果想要使用定義在其他文件中的全局變量請使用 extern 聲明extern int user_id; 自定義頭文件: 系統(tǒng)提供的頭文件: stdio.h stdlib.h stdbool.h string.h unistd.h math.htime.h stdarg.h等等 多文件程序中,共享全局變量 宏定義共享 函數(shù)聲明共享類型定義共享需要使用頭文件??梢允褂脳l件編譯防止重復引用。/*/#ifndef SYSTEM_H#define SYSTEM_H #include <stdio.h>#include <stdlib.h>#include "s1.h"#include "s2.h"#define PI 3.14#define MAX 2000extern int i;extern int j;/函數(shù)的生命int max_min(int,int);void show();/類型定義struct s;#endifstatic :靜態(tài)局部變量靜態(tài)全局變量 static int user_id = 15; 即使使用 extern int user_id;static修飾函數(shù) 這個函數(shù)只能在本文件中使用。結構體:數(shù) 組: 相同數(shù)據(jù)類型的數(shù)據(jù)的集合。結構體: 不同數(shù)據(jù)類型的數(shù)據(jù)的集合。結構體:定義或者使用一個結構體變量之前,先進行類型定義。結構體變量的定義:struct employee em;初始化:struct employee em = 101,"guo",M,20,5000;2 實訓期間完成的實踐項目我在達內老師的帶領下,學習了c和c+基礎之后,做了一個貪吃蛇的小游戲,雖然游戲比較簡略,但是基本功能已經實現(xiàn)。(1).功能介紹:產生一個固定大小沒有辯解的游戲區(qū)域,蛇從區(qū)域的中心開始,由玩家通過鍵盤控制蛇的運動方向,用蛇頭去吃隨機分布在游戲區(qū)域內的食物;蛇的運動限制在游戲區(qū)域內,游戲區(qū)域沒有辯解,所以蛇在區(qū)域內做循環(huán)運動:蛇的運動方向為直線運動,只走橫和豎的方向,不走斜線;蛇的運動速度由游戲的難度來控制,難度越高速度越快,游戲難度分為9個等級;蛇的身體長度從1開始每吃掉一份食物就增加一個長度;食物的出現(xiàn)按照隨機分布原則,蛇吃掉一份后隨機在游戲區(qū)域內放一份新的食物;游戲的結束條件為:在控制蛇的過程中蛇頭碰到蛇的身體的任何部位;設計者應該首先考慮實現(xiàn)一個可以游動的蛇。通過尋找規(guī)律,對實際對象進行抽象概括建立對象模型,首先從物理的角度來分析蛇得運動規(guī)律。它是蠕動的,像水一樣流動。他有個特性就是身體的每一個點都經過他頭部所在的點,他每一個時刻骨節(jié)所要運動的目的地是他前一個骨節(jié)所在的位置。所以我們事先必須了解并掌握一些基本的畫圖函數(shù),并學會調用和運行。(2).用流程圖示出程序的主要控制流程和處理流程 游戲載入內存并初始化界面判斷游戲是否開始單擊按鈕開始游戲沒有開始游戲,就返回初始界面貪吃蛇開始移動(初始方向向左)根據(jù)鍵盤消息判斷蛇頭的運動方向根據(jù)蛇頭的坐標和食物的坐標判斷蛇是否已經得到食物如果已經得到食物,則蛇的身體加長,積分器加一如果沒有得到食物,則蛇的身體不變,積分器不變根據(jù)蛇頭的坐標、蛇身體的坐標和墻壁的坐標判斷蛇是否已經撞墻或者自己咬到自己如果沒有撞墻并且沒有自己咬到自己則程序繼續(xù)進行如果已經撞墻或者自己咬到自己則程序終止貪吃蛇程序結束積分器開始計分下面是項目代碼:#include <stdio.h>#include <stdlib.h>#include <curses.h>#include <signal.h>#include <sys/time.h>#define NUM 60struct direct /用來表示方向的 int cx; int cy;typedef struct node /鏈表的結點 int cx; int cy; struct node *back; struct node *next;node;void initGame(); /初始化游戲int setTicker(int); /設置計時器void show(); /顯示整個畫面void showInformation(); /顯示游戲信息(前兩行)void showSnake(); /顯示蛇的身體void getOrder(); /從鍵盤中獲取命令void over(int i); /完成游戲結束后的提示信息void creatLink(); /(帶頭尾結點)雙向鏈表以及它的操作void insertNode(int x, int y); void deleteNode();void deleteLink();int ch; /輸入的命令int hour, minute, second; /時分秒int length, tTime, level; /(蛇的)長度,計時器,(游戲)等級struct direct dir, food; /蛇的前進方向,食物的位置node *head, *tail; /鏈表的頭尾結點int main() initscr(); initGame(); signal(SIGALRM, show); getOrder(); endwin(); return 0;void initGame()cbreak(); /把終端的CBREAK模式打開noecho(); /關閉回curs_set(0); /把光標置為不可見keypad(stdscr, true); /使用用戶終端的鍵盤上的小鍵盤srand(time(0); /設置隨機數(shù)種子 /初始化各項數(shù)據(jù)hour = minute = second = tTime = 0;length = 1;dir.cx = 1; dir.cy = 0;ch = A;food.cx = rand() % COLS;food.cy = rand() % (LINES-2) + 2;creatLink();setTicker(20);/設置計時器(這個函數(shù)是書本上的例子,有改動)int setTicker(int n_msecs)struct itimerval new_timeset;long n_sec, n_usecs;n_sec = n_msecs / 1000 ;n_usecs = ( n_msecs % 1000 ) * 1000L ;new_timeset.it_interval.tv_sec = n_sec; new_timeset.it_interval.tv_usec = n_usecs; n_msecs = 1;n_sec = n_msecs / 1000 ;n_usecs = ( n_msecs % 1000 ) * 1000L ;new_timeset.it_value.tv_sec = n_sec ; new_timeset.it_value.tv_usec = n_usecs ; return setitimer(ITIMER_REAL, &new_timeset, NULL);void showInformation() tTime+;if(tTime >= 1000000) /tTime = 0;if(1 != tTime % 50)return;move(0, 3); /顯示時間printw("time: %d:%d:%d %c", hour, minute, second)second+;if(second > NUM)second = 0;minute+;sf(minute > NUM)minute = 0;hour+;/顯示長度,等級move(1, 0);int i;for(i=0;i<COLS;i+)addstr("-");move(0, COLS/2-5);printw("length: %d", length);move(0, COLS-10);level = length / 3 + 1;printw("level: %d", level);/蛇的表示是用一個帶頭尾結點的雙向鏈表來表示的,/蛇的每一次前進,都是在鏈表的頭部增加一個節(jié)點,在尾部刪除一個節(jié)點/如果蛇吃了一個食物,那就不用刪除節(jié)點了void showSnake()if(1 != tTime % (30-level)return;/判斷蛇的長度有沒有改變bool lenChange = false;/顯示食物move(food.cy, food.cx);printw("");/如果蛇碰到墻,則游戲結束if(COLS-1=head->next->cx && 1=dir.cx)| (0=head->next->cx && -1=dir.cx)| (LINES-1=head->next->cy && 1=dir.cy)| (2=head->next->cy && -1=dir.cy)over(1); return;/如果蛇頭砬到自己的身體,則游戲結if(* = mvinch(head->next->cy+dir.cy, head->next->cx+dir.cx) )over(2);return;insertNode(head->next->cx+dir.cx, head->next->cy+dir.cy);/蛇吃了一個“食物”if(head->next->cx=food.cx && head->next->cy=food.cy)lenChange = true;length+;/恭喜你,通關if(length >= 50)over(3);return;/重新設置食物的位置food.cx = rand() % COLS; food.cy = rand() % (LINES-2) + 2; if(!lenChange) move(tail->back->cy, tail->back->cx); printw(" ");deleteNode(); move(head->next->cy, head->next->cx); printw("*");void show()signal(SIGALRM, show); /設置中斷信號showInformation();showSnake();refresh(); /刷新真實屏幕void getOrder() /建立一個死循環(huán),來讀取來自鍵盤的命令 while(1) ch = getch(); if(KEY_LEFT = ch) dir.cx = -1; dir.cy = 0; else if(KEY_UP = ch) dir.cx = 0; dir.cy = -1; else if(KEY_RIGHT = ch) dir.cx = 1; dir.cy = 0;else if(KEY_DOWN = ch)dir.cx = 0;dir.cy = 1;setTicker(20);void over(int i) /顯示結束原因 move(0, 0); int j; for(j=0;j<COLS;j+) addstr(" "); move(0, 2); if(1 = i) addstr("Crash the wall. Game over"); else if(2 = i) addstr("Crash itself. Game over"); else if(3 = i) addstr("Mission Complete"); setTicker(0); /關閉計時器 deleteLink(); /釋放鏈表的空間/創(chuàng)建一個雙向鏈表void creatLink() node *temp = (node *)malloc( sizeof(node) ); head = (node *)malloc( sizeof(node) ); tail = (node *)malloc( sizeof(node) ); temp->cx = 5; temp->cy = 10; head->back = tail->next = NULL; head->next = temp; temp->next = tail; tail->back = temp; temp->back = head;/在鏈表的頭部(非頭結點)插入一個結點void insertNode(int x, int y)node *temp = (node *)malloc( sizeof(node) );temp->cx = x;temp->cy = y;temp->next = head->next;head->next = temp;temp->back = head;temp->next->back = temp;/刪除鏈表的(非尾結點的)最后一個結點void deleteNode()node *temp = tail->back;node *bTemp = temp->back;bTemp->next = tail;tail->back = bTemp;temp->next = temp->back = NULL;free(temp);temp = NULL;/刪除整個鏈表void deleteLink()while(head->next != tail)deleteNode();head->next = tail->back = NULL;free(head);free(tail);下面是程序流程圖:五、實訓收獲與體會 通過這次課程設計的實訓,增加了我學習軟件技術的興趣,雖然還不明確軟件技術包含的具體內容,但從C+語言這門課程開始,已發(fā)現(xiàn)程序設計的樂趣,在學習C+語言的過程中也學到了許多計算機應用基礎知識,對計算機的機體也有了一個大體的了解。 在實際操作過程中犯的一些錯誤還會有意外的收獲,感覺實訓很有意思。在具體操作中對這學期所學的C+語言的理論知識得到鞏固,達到實訓的基本目的,也發(fā)現(xiàn)自己的不足之出,在以后的上機中應更加注意,同時體會到C+語言具有的語句簡潔,使用靈活,執(zhí)行效率高等特點。發(fā)現(xiàn)上機實訓的重要作用,特別是對數(shù)組和循環(huán)有了深刻的理解。 通過實際操作,學會 C+語言程序編程的基本步驟、基本方法,開發(fā)了自己的邏輯思維能力,培養(yǎng)了分析問題、解決問題的能力。深刻體會到“沒有做不到的,只有想不到的”,“團結就是力量”,“實踐是檢驗真理的標準”,“不恥下問”的寓意。 在此希望以后應多進行這樣的實訓,加長設間,培養(yǎng)學生獨立思考問題的能力,提高實際操作水平。 六、致謝通過本次項目實訓我要感謝學校領導給我們提供了這次機會,讓我們自己有出去體會生活,自己做項目的深刻體會。這次實訓讓我明白我自己之前的學習還是差很多,只有不斷的努力,才能學好。還要感謝達內公司對我的指導,我自己的努力固然重要,但是達內的優(yōu)秀教師給我做的培訓,講的理論都讓我受益匪淺,讓我對軟件有了一個新的概念新的理解。指導教師意見指導教師簽字: 年 月 日 成績備注