dssm源碼
Ⅰ 什麼是信息系統成功模型(D&M ISM模型)
DeLone和 McLean兩位學者在1992年首次提出信息系統成功模型,是信息系統成功性研究中最著名的模型,它為衡量信息系統的性能提供了很好的理論框架。 2003年,DeLone和 McLean在不斷的分析和研究後,根據相關研究成果與實際應用情況對模型沒禪運進行了改進,他們認襲梁為信息系統角色的變化使得服務質量成為一個單獨變數會是必然,因而把服務質量加入了到該模型中。改進後的D&M ISM 認為信息系統的質量主要包括三個方面:系統質量、信息質量和服務質量枯梁。信息質量與網站上內容的准確性、相關性、易理解性和個性化等方面有關。服務質量即服務商提供的總體支持或後台服務,可通過及時性、可靠性等方面來進行衡量。使用意願或使用是對用戶從訪問網站到網站內,導航到信息搜尋和事情執行的所有活動的使用意願或行為結果的綜合測量。用戶滿意度是衡量用戶對信息系統評價的重要因素,也是對信息系統使用後的整體態度。在改進後的模型中將「個人影響」和「組織影響」統一成一個新的因素,即凈收益。凈收益對用戶滿意度、使用意願或使用有反饋的作用,信息系統的影響可能是正面或反面,在凈收益上就顯示為正值或負值。
Ⅱ 匯編數據段地址問題 看我的源代碼,從反匯編的代碼中可以看到段地址DS應該為075A 但是D命令查看的結果不是
DOS的EXE文件載入時,對CS的初始化處理是將它指向入口語句對應的那個代碼段段地址,而DS,ES,SS是相同的,它們都指向載入這個程序時的程序段前綴(PSP)的段地址,而不是你程序中定義的數據、堆棧等各個段的段地址。用戶必須自己編寫代碼,在程序運行時將相應的段地址傳送到DS等。
從你的程序可以看到,你程序里用DATA SEGMENT 定義的這個DATA段,載入後的段地址是071A。但DS並不是在程序載入時就直接指向它。你的程序開始運行以後,要用兩條指令,將076A傳送到DS。
只有在這兩條指令執行過以後,DS才會變成076A。
你剛載入了程序、尚未運行時查看,DS還沒有改成076A。這時的075A實際是PSP的段地址。
Ⅲ C++做一個小游戲,有源代碼的最好,謝謝
#include <iostream>
#include<fstream>
#include <ctime>
#include <cmath>
#include <stdlib.h>
#include<stdio.h> //時間 //文件
#include <string>
#define random(x)(rand()%x)
using namespace std;
void thunder(int Dif,int Row,int Column,char *USer)
{
int r,c,alls[22][22],backstage[22][22]={0};
srand((int)time(0));
for(r=1;r<=Row;r++) // 生成alls(0~1)1是雷
{
for(c=1;c<=Column;c++)
{
if(random(6)<1) {alls[r][c]=1;} else{alls[r][c]=0;};
}
};
for(r=0;r<=Row+1;r++) //生成 backstage(正確答案)
{
for(int c=0;c<=Column+1;c++)
{
if(alls[r][c]==1)
{
(int)backstage[r][c]='*'; //將1變為 * 代表雷
}
else
{
for(int i=r-1;i<=r+1;i++) //將0變為數字 (代表周圍雷數)
for(int j=c-1;j<=c+1;j++)
{
if(alls[i][j]!=alls[r][c]&&alls[i][j]==1){backstage[r][c]++;};
}
}; //else 結束
}; // for 結束
}; // for 結束
cout<<"======================*********================================"<<endl;
char surface[22][22]; //生成surface(用戶界面)
for(r=0;r<22;r++) //全部為零
for(c=0;c<22;c++)
{
surface[r][c]='0';
}
for(r=1;r<=Row;r++) //中間化 # 形成0包圍#的形式 (通過數 #-->(*||數字) 的個數 贏的時候停止循環)
for(c=1;c<=Column;c++)
{
surface[r][c]='#';
}
for(r=1;r<=Row;r++) //輸出 surface 界面 便於檢查
{
for(c=1;c<=Column;c++) {cout<<" "<<surface[r][c];};
cout<<endl;
};
cout<<"請按格式輸入"<<endl
<<"前兩個數字為坐標,最後一個數字「1」表示此位置為雷,「0」則表示不是。"<<endl
<<"如:1 3 1 表示一行三列是雷;2 4 0 表示二行四列不是雷"<<endl
<<"提示:當數字周圍雷都被掃出時,可再次按要求輸入此位置,可得到周圍數字。"<<endl;
long i=10000000L; //計算時間開始
clock_t start,finish;
double ration;
start=clock();
while(i--); //計算時間開始
int num=Row*Column; //計算#號個數
while(num!=0) //控制 是否點完所有位置
{
int x,y,judge;
cin>>x>>y>>judge;
if(alls[x][y]!=judge)
{
cout<<"you lose!!!"<<endl;
cout<<"The answer is:"<<endl;
for(r=1;r<=Row;r++) //輸了 輸出backstage 顯示正確答案
{
for(int c=1;c<=Column;c++)
{
cout<<" "<<(char)(backstage[r][c]==42?backstage[r][c]:backstage[r][c]+'0'); //輸出backstage
}
cout<<endl;
}
break;
}
else
{
if(alls[x][y]==1) {if(surface[x][y]=='#'){num--;}surface[x][y]='@'; } // 雷 判斷正確 顯示「@」;數「#」
else
{
if(backstage[x][y]!=0) // 數字 判斷正確 顯示數字
{
if(surface[x][y]=='#'){num--; surface[x][y]=backstage[x][y]+'0'; } // 數「#」
else
{
int lei_num=0;
for(int i=x-1;i<=x+1;i++) //數 數字周圍 雷的個數
for(int j=y-1;j<=y+1;j++)
{
if(surface[i][j]=='@')
lei_num++;
}
if(backstage[x][y]==lei_num) // 看數字周圍雷是否全部掃出 提示 顯示數字周圍
{
for(int i=x-1;i<=x+1;i++)
for(int j=y-1;j<=y+1;j++)
if(surface[i][j]=='#') //數「#」
{
surface[i][j]=backstage[i][j]+'0';
num--;
}
}
}
}
else // 數字為零時 顯示零周圍的零
{
if(surface[x][y]=='#'){num--;}; //數「#」
surface[x][y]=backstage[x][y]+'0';
for(int i=x-1;i<=x+1;i++) // 顯示零周圍的數字
for(int j=y-1;j<=y+1;j++)
if(surface[i][j]=='#') // 避免 死循環
{
surface[i][j]=backstage[i][j]+'0';
num--; //數「#」
}
for(int k=0;k<20;k++) //最多20層零 (點出最邊上的零)
{
for (int R=1;R<=Row;R++) //檢查所有零
for(int C=1;C<=Column;C++) //再次顯示零周圍的數字
{
if(surface[R][C]=='0')
{
for(int i=R-1;i<=R+1;i++)
for(int j=C-1;j<=C+1;j++)
{
if(surface[i][j]=='#') // 避免 死循環 數「#」
{
surface[i][j]=backstage[i][j]+'0';
num--;
}
}
}
} //匹配for 內
} //匹配 for 外
}//匹配else
}//匹配else
}//匹配els
cout<<endl;
cout<<"======================*********================================"<<endl;
for(r=1;r<=Row;r++) //輸出界面(已修改)
{
for(c=1;c<=Column;c++) {cout<<" "<<surface[r][c];};
cout<<endl;
};
} //匹配while
finish=clock(); //計算時間結束
ration=(double)(finish-start)/CLOCKS_PER_SEC; //時間變數
if(num==0) //所有
{
cout<<" You win! Congratulations!! "<<endl;
cout<<" Your time is: "<<ration<<endl;
if(Dif==1) //讀取 簡單掃雷 的存儲文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("掃雷 簡單.txt");
for(i=0;i<5;i++) //文件中信息導入到數組里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer; //本輪玩家信息
times[5]=ration;
double t1=0;
string t2;
for(int j=0;j<5;j++) //冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("掃雷 簡單.txt");
for(i=0;i<5;i++) //將前五名玩家信息存儲到文件中
{
cout<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
outf<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
}
outf.close();
}
if(Dif==2) //讀取 一般掃雷 的存儲文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("掃雷 一般.txt");
for(i=0;i<5;i++) //文件中信息導入到數組里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer; //本輪玩家信息
times[5]=ration;
double t1=0;
string t2;
for(int j=0;j<5;j++) //冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("掃雷 一般.txt");
for(i=0;i<5;i++) //將前五名玩家信息存儲到文件中 並輸出
{
cout<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
outf<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
}
outf.close();
}
if(Dif==3) //讀取 困難掃雷 的存儲文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("掃雷 困難.txt");
for(i=0;i<5;i++) //文件中信息導入到數組里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer; //本輪玩家信息
times[5]=ration;
double t1=0;
string t2;
for(int j=0;j<5;j++) //冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("掃雷 困難.txt");
for(i=0;i<5;i++) //將前五名玩家信息存儲到文件中
{
cout<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
outf<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
}
outf.close();
}
}
}
void scale(int dif,char *User) //選擇難度
{
int row,column;
if(dif==1) {row=3;column=3;}
if(dif==2) {row=7;column=7;}
if(dif==3) {row=10;column=10;}
cout<<"The scale is: "<<row<<"*"<<column<<endl;
thunder(dif,row,column,User);
};
int main()
{
int Continue=1;
int difficulty;
char user[10];
cout<<" Welcom to the game! "<<endl
<<" 請輸入用戶名! "<<endl;
cin>>user;
while(Continue==1)
{
cout<<"=======================*******************======================="<<endl
<<" 請選擇難度! "<<endl
<<" 簡單——1 "<<endl
<<" 一般——2 "<<endl
<<" 困難——3 "<<endl;
cin>>difficulty;
scale(difficulty,user);
cout<<"繼續游戲——1 結束游戲——0"<<endl;
cin>>Continue;
}
return 0;
}
掃雷小游戲,自己編的代碼