《軟件項目實訓報告.doc》由會員分享,可在線閱讀,更多相關《軟件項目實訓報告.doc(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
遼寧工程技術大學
大型軟件項目實訓報告
教學單位 軟件學院
專 業(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.實訓地點:北京達內(nèi)
三、實訓單位簡介
達內(nèi)IT培訓集團是中國高端IT培訓機構,致力于培養(yǎng)面向電信和金融領域的Java、C++、C#/.Net、測試、嵌入式、PHP等方面中高端軟件人才,由美國國際數(shù)據(jù)集團IDG、集富亞洲JAFCOASIA和高盛集團投資,是國內(nèi)首家獲得國際風險投資的IT培訓機構。經(jīng)過8年運營,達內(nèi)IT培訓集團實現(xiàn)了95%的專業(yè)就業(yè)率,78%的口碑入學率,學員平均畢業(yè)薪資3800元/首月平均薪資。目前,達內(nèi)IT培訓團已經(jīng)發(fā)展成為集培訓、咨詢、開發(fā)、人才服務于一體的高新技術集團公司,公司下設達內(nèi)高端IT培訓、達內(nèi)軟件人才服務中心、達內(nèi)軟件研發(fā)中心?! ∵_內(nèi)IT培訓集團以中關村科技園區(qū)為依托,在中國軟件業(yè)發(fā)達城市——北京、上海、廣州、深圳、大連、南京、武漢、杭州、西安、蘇州、成都、太原20大城市,建立了近40家培訓中心,占地2萬平米,年培訓1萬多名軟件人才。已累計為IBM、微軟、摩托羅拉、華為、中軟、用友、Yahoo、阿里巴巴、TOM、新浪、搜狐、百度、聯(lián)想、神州數(shù)碼、大唐電信、亞信等知名IT企業(yè)培養(yǎng)輸送了5萬多名中高級軟件人才,目前達內(nèi)全國擁500多名員工,年產(chǎn)值近2億元,是中國最大的中高端軟件人才培訓機構。 由于達內(nèi)IT培訓集團優(yōu)秀的教學效果和行業(yè)領先的經(jīng)營模式贏得了社會各界的廣泛贊譽和好評,近年來達內(nèi)榮獲了各界權威機構的頒獎:達內(nèi)成為業(yè)界唯一的一家2006、2007、2008、2009連續(xù)4年入選德勤評選的“中國高科技高成長50強公司”、“亞太地區(qū)高科技高成長500強公司”,中關村管理委員會指定的“軟件人才培養(yǎng)示范基地”、被《計算機世界》評選的“就業(yè)服務杰出貢獻獎”、被《中國計算機報》評選的“最具影響力培訓機構獎”、被搜狐評為“中國十大教育集團”、被騰訊評為“中國大學生心目中最具影響力的IT品牌”等等。
四、實訓內(nèi)容
1.實訓期間完成的學習任務
一.Linux系統(tǒng)操作命令
首先,我們學習了最基礎的系統(tǒng)操作指令。因為在學習過程中c和c++代碼的編程和修改在linux系統(tǒng)下,所以我們集中精力花費了3天時間學習指令操作。
命令:
文檔統(tǒng)計: wc日期: date cal關機 poweroff windows:shutdown
Reboot exit find grep find [目錄列表] 匹配標準 -name size -type -atime
通配符
操作目錄下有需要通配的內(nèi)容的時候采使用通配符。
*
[]
(1) 列舉
(2) 范圍
?
!
{}; | 將上一個命令的輸出作為下一個命令的輸入 cat /etc/passwd | grep -n root
tee
ls -l | tee a.txt
ln 硬連接 軟連接
ln file02 file ln -s file02 sfile
users:
who:
who am i:
whoami:
系統(tǒng)進程信息 ps
ps 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)調(diào)用 open
(3) 庫函數(shù) fopen
(4) (5) (6) (7) (8) 管理員的命令 ifconfig service
ifconfig
ip地址:netmask: 默認網(wǎng)關:
域名解析 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 nu
set cindent:按照C語言的風格進行自動縮進。
set tabstop=4:設置tab按鍵的長度
行號+回車
字符串n N
/n個空格 %s/string/replace/g
w filename
#1,#2 w filename
q q! wq
gedit kate
C程序的開發(fā)執(zhí)行次序:
1 寫源文件,后綴名 .c
2 對代碼中的指令進行預處理,以#開頭的
3 代碼編譯,生成 xx.o/xx.obj
4 代碼的連接生成可執(zhí)行文件 a.out/xx.exe
5 加載文件,把文件從硬盤讀入內(nèi)存
6 執(zhí)行
gcc 的選項:
-c 只編譯不連接
-E 只作預處理
-S 匯編代碼
-std=c89/c99
-o 改變最后的可執(zhí)行文件的名字
二.linu下c程序開發(fā)
庫函數(shù) sqrt 開平方 #include
連接的時候需要連接 數(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
rand() 偽隨機數(shù)
srand() 設置隨機數(shù)種子
#include
time() 獲取系統(tǒng)的時間
time(0):返回一個時間
1970年1月1號0:0:0 到現(xiàn)在 所經(jīng)過的秒數(shù)
隨機數(shù):
srand(time(0));
rand()產(chǎn)生一個隨機數(shù)。無限循環(huán):死循環(huán)
while(1)
for(;;)
do-while循環(huán):
do
{
語句;
}while(表達式);
緩沖區(qū):
輸入:
scanf(數(shù)據(jù)類型);
scanf("%*[^\n]");
* : 將讀取到的內(nèi)容忽略掉
[^\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 a[5];
下標:
數(shù)組的初始化:
int a[5] = {1,2,3,4};
int a[5] = {0};
指定初始化:
int a[5] = {[3] = 4};
二維數(shù)組:
數(shù)據(jù)類型 數(shù)組名[行][列]
行下標 列下標
for()
{
for()
a[i][j] = 0;
}
一維:
for()
{
a[i] = 0;
}
二維數(shù)組初始化:
int a[2][3] = {{},{}};
函數(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
bool true false
本質就是一個整數(shù)
<2> #include
double sqrt(double);
gcc xxx.c -lm
<3> 函數(shù)調(diào)用
函數(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ù)名字一樣,存儲空間不一樣。
高內(nèi)聚 低耦合"
數(shù)組可以作為函數(shù)的參數(shù):
函數(shù)調(diào)用傳遞的是數(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ù)傳遞的是地址,不希望在被調(diào)函數(shù)中修改地址上的
內(nèi)容 可以使用const來修飾形參
void f(const int a[],int length);
return :
main函數(shù)中使用
整個程序結束。
遞歸: 如果一個函數(shù)調(diào)用了它本身,遞歸函數(shù)。
指針的初級:
指針 就是內(nèi)存的地址,指針變量就是存儲地址的變量。
定義一個指針變量:
數(shù)據(jù)類型 *變量名;
指針變量所保存的地址--->內(nèi)存上的數(shù)據(jù)類型。
* : 告訴編譯器后面的變量是一個指針變量
指針初始化:
int *q = NULL;//NULL 0 0.0
空指針:不指向任何地方
指針的賦值:
q = &i;
運算符:
* 取對應地址上的內(nè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 arr[20]表示字符串類型的變量(數(shù)組)
后面一定加上\0
printf("%s",arr);--->arr是數(shù)組的名字
一直打印直到遇到\0
(3)int a[10];int* q=&a[0];
char str[20];char *q=&str[0];
指針方式存儲字符串常量的地址。
考慮緩沖區(qū)的大小,可能會導致緩沖區(qū)溢出。
<3>fgets(char *s,size_t size,FILE* stream);
s:指向緩沖區(qū)的指針
size:緩沖區(qū)的大小
stream:文件指針--->stdin
注意:fgets會在整個字符串后面增加\n
操作字符串的庫函數(shù):
#include
strcpy
char* strcpy(char* dest,char* src);
作用:將src指向的字符串拷貝呆dest指向的緩沖區(qū)中。
返回值:dest數(shù)值(地址)。
使用:
char str1[20];
char str2[20];
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 name[20] = "hello";
sizeof(name)---->20:數(shù)組所占用的內(nèi)存
int strlen(char* s);
strlen(name) = 5;
測量字符串的長度,不包含結尾的\n
strcmp:對比兩個字符串
int strcmp(char* s1,char* s2)
"abc"
"acb"
返回值有三種可能:
1 0 相等
2 正數(shù) s1>s2
3 負數(shù) s1printf("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" = %d\n",n)
--> "i/j"" = %d\n"--->"i/j = %d\n"
##運算符
作用:將兩個標識符粘合在一起組成一個新的標識符
需求: 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_##n
MK_ID(1) ---> i_1
MK_ID(32) ---> i_32
條件編譯:
就是根據(jù)預處理的結果來包含或者排除某一段代碼。
#if #endif
預處理器判斷#if后面的宏目前的數(shù)值
0--->#if 和 #endif之間的代碼排除
非零 保留
defined
#if defined DEBUG ---> DEBUG是不是已經(jīng)定義為一個宏
#ifdef = #if defined
debug:調(diào)試
n多條調(diào)試語句(printf)
release:發(fā)布
//#define DEBUG
#ifdef DEBUG
調(diào)試語句
#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.h
time.h stdarg.h等等
多文件程序中,共享全局變量 宏定義共享 函數(shù)聲明共享
類型定義共享需要使用頭文件。
可以使用條件編譯防止重復引用。
/************/
#ifndef SYSTEM_H
#define SYSTEM_H
#include
#include
#include "s1.h"
#include "s2.h"
#define PI 3.14
#define MAX 2000
extern int i;
extern int j;
//函數(shù)的生命
int max_min(int,int);
void show();
//類型定義
struct s
{};
#endif
static :
靜態(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. 實訓期間完成的實踐項目
我在達內(nèi)老師的帶領下,學習了c和c++基礎之后,做了一個貪吃蛇的小游戲,雖然游戲比較簡略,但是基本功能已經(jīng)實現(xiàn)。
(1).功能介紹:
產(chǎn)生一個固定大小沒有辯解的游戲區(qū)域,蛇從區(qū)域的中心開始,由玩家通過鍵盤控制蛇的運動方向,用蛇頭去吃隨機分布在游戲區(qū)域內(nèi)的食物;
蛇的運動限制在游戲區(qū)域內(nèi),游戲區(qū)域沒有辯解,所以蛇在區(qū)域內(nèi)做循環(huán)運動:
蛇的運動方向為直線運動,只走橫和豎的方向,不走斜線;
蛇的運動速度由游戲的難度來控制,難度越高速度越快,游戲難度分為9個等級;
蛇的身體長度從1開始每吃掉一份食物就增加一個長度;食物的出現(xiàn)按照隨機分布原則,蛇吃掉一份后隨機在游戲區(qū)域內(nèi)放一份新的食物;
游戲的結束條件為:在控制蛇的過程中蛇頭碰到蛇的身體的任何部位;
設計者應該首先考慮實現(xiàn)一個可以游動的蛇。通過尋找規(guī)律,對實際對象進行抽象概括建立對象模型,首先從物理的角度來分析蛇得運動規(guī)律。它是蠕動的,像水一樣流動。他有個特性就是身體的每一個點都經(jīng)過他頭部所在的點,他每一個時刻骨節(jié)所要運動的目的地是他前一個骨節(jié)所在的位置。所以我們事先必須了解并掌握一些基本的畫圖函數(shù),并學會調(diào)用和運行。
(2).用流程圖示出程序的主要控制流程和處理流程
游戲載入內(nèi)存并初始化界面
判斷游戲是否開始
單擊按鈕
開始游戲
沒有開始游戲,就返回初始界面
貪吃蛇開始移動(初始方向向左)
根據(jù)鍵盤消息判斷蛇頭的運動方向
根據(jù)蛇頭的坐標和食物的坐標判斷蛇是否已經(jīng)得到食物
如果已經(jīng)得到食物,則蛇的身體加長,積分器加一
如果沒有得到食物,則蛇的身體不變,積分器不變
根據(jù)蛇頭的坐標、蛇身體的坐標和墻壁的坐標判斷蛇是否已經(jīng)撞墻或者自己咬到自己
如果沒有撞墻并且沒有自己咬到自己則程序繼續(xù)進行
如果已經(jīng)撞墻或者自己咬到自己則程序終止
貪吃蛇程序結束
積分器開始計分
下面是項目代碼:
#include
#include
#include
#include
#include
#define NUM 60
struct 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;inext->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;jcx = 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);
}
下面是程序流程圖:
五、實訓收獲與體會
通過這次課程設計的實訓,增加了我學習軟件技術的興趣,雖然還不明確軟件技術包含的具體內(nèi)容,但從C++語言這門課程開始,已發(fā)現(xiàn)程序設計的樂趣,在學習C++語言的過程中也學到了許多計算機應用基礎知識,對計算機的機體也有了一個大體的了解。
在實際操作過程中犯的一些錯誤還會有意外的收獲,感覺實訓很有意思。在具體操作中對這學期所學的C++語言的理論知識得到鞏固,達到實訓的基本目的,也發(fā)現(xiàn)自己的不足之出,在以后的上機中應更加注意,同時體會到C++語言具有的語句簡潔,使用靈活,執(zhí)行效率高等特點。發(fā)現(xiàn)上機實訓的重要作用,特別是對數(shù)組和循環(huán)有了深刻的理解。
通過實際操作,學會 C++語言程序編程的基本步驟、基本方法,開發(fā)了自己的邏輯思維能力,培養(yǎng)了分析問題、解決問題的能力。深刻體會到“沒有做不到的,只有想不到的”,“團結就是力量”,“實踐是檢驗真理的標準”,“不恥下問”……的寓意。
在此希望以后應多進行這樣的實訓,加長設間,培養(yǎng)學生獨立思考問題的能力,提高實際操作水平。
六、致謝
通過本次項目實訓我要感謝學校領導給我們提供了這次機會,讓我們自己有出去體會生活,自己做項目的深刻體會。這次實訓讓我明白我自己之前的學習還是差很多,只有不斷的努力,才能學好。還要感謝達內(nèi)公司對我的指導,我自己的努力固然重要,但是達內(nèi)的優(yōu)秀教師給我做的培訓,講的理論都讓我受益匪淺,讓我對軟件有了一個新的概念新的理解。
指
導
教
師
意
見
指導教師簽字:
年 月 日
成績
備注
鏈接地址:http://m.kudomayuko.com/p-8901403.html