第一篇:上機(jī)實(shí)習(xí)報(bào)告格式
文獻(xiàn)檢索實(shí)習(xí)報(bào)告(參考格式)
課程名稱:文獻(xiàn)檢索日期:
學(xué)院:班號:姓名:學(xué)號:
實(shí)驗(yàn)名稱:電子圖書等資源檢索。
實(shí)驗(yàn)?zāi)康模赫莆請D書資源如何檢索和利用,熟悉人名錄或機(jī)構(gòu)名錄的檢索。實(shí)驗(yàn)內(nèi)容:
1、用CALIS檢索你們自己任課教師的編著發(fā)表情況。
2、用超星檢索自己所在專業(yè)的某一方面的圖書出版情況,并采集某一本書的一段文字,一個(gè)圖。(以超星為例)
(1).登陸四川理工學(xué)院圖書館主頁。
(2).找到電子資源,點(diǎn)擊進(jìn)入圖書館電子資源界面。
(3).找到熱門資源中的“超星數(shù)字圖書館”,并點(diǎn)擊“本地”,進(jìn)
入超星數(shù)字圖書館。
(4).找到“瀏覽器”,點(diǎn)擊并下載超星星瀏覽器。
(5).下載好“超星星瀏覽器”后就可以瀏覽圖書了。
(6).例如查
3、利用物競化學(xué)品數(shù)據(jù)庫檢索某一具體化學(xué)物質(zhì)的相關(guān)數(shù)據(jù)。
4、用萬方數(shù)據(jù)庫檢索我國某一位院士/科學(xué)家/某學(xué)科領(lǐng)域著名學(xué)者的名錄。
實(shí)習(xí)報(bào)告要求:用自己姓名作為文件名稱,將作業(yè)發(fā)送給各班指定的同學(xué)。
第二篇:linux上機(jī)實(shí)習(xí)報(bào)告
目 錄
Linux 第一次上機(jī)(運(yùn)行環(huán)境RedHat)................................................................................1 調(diào)試運(yùn)行CD唱片應(yīng)用程序.......................................................................................1 運(yùn)行過程............................................................................................................1 心得體會............................................................................................................3 編寫shell腳本,求1到100的和..............................................................................3 運(yùn)行過程............................................................................................................3 源代碼...............................................................................................................4 編寫shell腳本,從鍵盤輸入兩個(gè)數(shù),求這兩個(gè)數(shù)的和.................................................4 運(yùn)行過程............................................................................................................4 源代碼...............................................................................................................5 等待特定用戶登錄,每30秒確認(rèn)一次.......................................................................5 運(yùn)行過程............................................................................................................5 源代碼...............................................................................................................6 找出系統(tǒng)中當(dāng)前消耗磁盤容量最大的前10個(gè)用戶,并向他們發(fā)送警告郵件...............6 運(yùn)行過程............................................................................................................6 源代碼...............................................................................................................8 查找輸入文件的路徑.................................................................................................8 運(yùn)行過程............................................................................................................8 源代碼...............................................................................................................9 Linux 第二次上機(jī)(運(yùn)行環(huán)境RedHat)................................................................................9 定制自己的ls命令。提供至少三種帶參數(shù)的執(zhí)行方式................................................9 運(yùn)行過程............................................................................................................9 源代碼..............................................................................................................11 調(diào)試編譯串行口通信程序p6.5.c...............................................................................16 運(yùn)行過程..........................................................................................................16 Linux 第三次上機(jī)(運(yùn)行環(huán)境RedHat,CentOS)...............................................................16 創(chuàng)建一個(gè)系統(tǒng)監(jiān)聽守護(hù)進(jìn)程,一旦接收到其他進(jìn)程發(fā)來的信號,馬上給出報(bào)告........16 運(yùn)行過程..........................................................................................................16 源代碼.............................................................................................................18 分別利用本地socket套接字和INTENET套接字實(shí)現(xiàn)進(jìn)程間文件傳輸......................20 本地socket套接字運(yùn)行過程.............................................................................20 本地socket套接字服務(wù)器server1.c源代碼........................................................22 本地socket套接字客戶端client1.c源代碼.........................................................23 INTENET套接字運(yùn)行過程...............................................................................25 INTENET套接字服務(wù)器server2.c源代碼..........................................................28 INTENET套接字客戶端client2.c源代碼...........................................................29 感謝與收獲....................................................................................................................30
Linux 第一次上機(jī)(運(yùn)行環(huán)境RedHat)調(diào)試運(yùn)行CD唱片應(yīng)用程序 運(yùn)行過程
圖表 1第一步,使用./CD 命令運(yùn)行CD腳本
圖表 2進(jìn)入選項(xiàng)界面
圖表 3增加CD
圖表 4查找CD
圖表 5查詢數(shù)目
圖表 6退出
心得體會
通過運(yùn)行書上的CD唱片應(yīng)用程序,進(jìn)一步地了解到shell編程的方法,以及編寫程序的思路。
編寫shell腳本,求1到100的和 運(yùn)行過程
圖表 7使用./sum1to100運(yùn)行
源代碼
圖表 8使用cat sum1to100查看源代碼
編寫shell腳本,從鍵盤輸入兩個(gè)數(shù),求這兩個(gè)數(shù)的和
運(yùn)行過程
圖表 9使用./sumAandB 運(yùn)行
源代碼
圖表 10使用cat sumAandB查看源代碼
等待特定用戶登錄,每30秒確認(rèn)一次 運(yùn)行過程
已知特定用戶是zzx,我首先讓root用戶登錄并運(yùn)行程序,可以發(fā)現(xiàn)每隔30s提醒一次
圖表 11使用./checkuser運(yùn)行
當(dāng)我切換到zzx用戶,并再次運(yùn)行程序,可得如下結(jié)果
源代碼
圖表 12使用cat checkuser查看代碼
找出系統(tǒng)中當(dāng)前消耗磁盤容量最大的前10個(gè)用戶,并向他們發(fā)送警告郵件 運(yùn)行過程
由于權(quán)限等問題,我們使用root用戶運(yùn)行程序
圖表 13使用./mymail運(yùn)行
運(yùn)行完畢后,我們就可以查看郵件了
圖表 14 root用戶收到的郵件
圖表 15 zzx用戶收到的郵件
圖表 16 t1用戶收到的郵件
源代碼
圖表 17 使用cat命令查看
查找輸入文件的路徑 運(yùn)行過程
由于權(quán)限的問題,我們使用root用戶運(yùn)行程序
圖表 18 使用./route運(yùn)行,并按照要求輸入文件名
源代碼
圖表 19 使用cat route查看源代碼
Linux 第二次上機(jī)(運(yùn)行環(huán)境RedHat)定制自己的ls命令。提供至少三種帶參數(shù)的執(zhí)行方式 運(yùn)行過程
圖表 20 使用./ls 運(yùn)行不帶參數(shù)ls
圖表 21使用./ls-l 運(yùn)行帶參數(shù)-l 的ls
圖表 22 使用./ls-a運(yùn)行帶參數(shù)-a的ls
圖表 23使用./ls-al 運(yùn)行帶參數(shù)-al的ls 源代碼
#include #include int do_ls(char *dir,char *filename,int lflag){ int n;struct stat buf;char out[100];struct passwd *pw; struct group *gr;struct tm *t;if(lflag == 0){ } { } return 0; printf(“%st”,filename);if(lstat(dir,&buf)<0)fprintf(stderr,“stat error:%sn”,strerror(errno));return-1;switch(buf.st_mode & S_IFMT){ case S_IFREG: printf(“-”);break;case S_IFDIR: printf(“d”);break;case S_IFCHR: printf(“c”);break;case S_IFBLK: printf(“b”);break;case S_IFIFO: printf(“p”);break;case S_IFLNK: printf(“l(fā)”);break; case S_IFSOCK: printf(“s”);} for(n=8;n>=0;n--){ if(buf.st_mode&(1< break; } } else { } { case 2: printf(“r”);break;case 1: printf(“w”);break;case 0: printf(“x”);break;default: break;} printf(“-”);printf(“ %d”,buf.st_nlink); pw = getpwuid(buf.st_uid);printf(“ %s”,pw->pw_name);gr = getgrgid(buf.st_gid);printf(“ %s”,gr->gr_name);printf(“ %ld”,buf.st_size);t = localtime(&buf.st_atime);printf(“ %d-%d-%d %d:%d” ,t->tm_year+1900 ,t->tm_mon+1 ,t->tm_mday ,t->tm_hour ,t->tm_min); printf(“ %s ”,filename); if(S_ISLNK(buf.st_mode)){ printf(“-> ”);if(readlink(filename,out,100)==-1){ } //printf(“readlink errorn”); } printf(“%s”,out);} printf(“n”);return 0;int ls_prepare(char *w,int aflag,int lflag){ struct stat buf;char name[100];DIR *dir; struct dirent *pdr;if(lstat(w,&buf)<0){ fprintf(stderr,“stat error:%sn”,strerror(errno));return-1;} if(S_ISDIR(buf.st_mode)){ dir = opendir(w);{ } closedir(dir); while((pdr = readdir(dir))!=NULL)if(aflag==0){ if(pdr->d_name[0]=='.') continue;memset(name,0,100); strcpy(name,w); strcat(name,“/”); strcat(name,pdr->d_name);do_ls(name,pdr->d_name,lflag);}else { } memset(name,0,100);strcpy(name,w);strcat(name,“/”);strcat(name,pdr->d_name);do_ls(name,pdr->d_name,lflag);}else { do_ls(w,w,lflag); } { } } return 0;int main(int argc,char **argv)int aflag =0;int lflag =0;char c;int i;while((c = getopt(argc,argv,“al”))!=-1){ } switch(c){ case 'a': aflag =1;break;case 'l': lflag =1;break;default: break;} if(argc == optind){ ls_prepare(“./”,aflag,lflag);} else { } for(i=optind;i 調(diào)試編譯串行口通信程序p6.5.c 運(yùn)行過程 由于權(quán)限問題,我們在root用戶下運(yùn)行程序 圖表 24 使用./mytrunk不帶參數(shù)運(yùn)行 圖表 25使用./mytrunk /dev/ttyS0 0帶參數(shù)運(yùn)行 Linux 第三次上機(jī)(運(yùn)行環(huán)境RedHat,CentOS)創(chuàng)建一個(gè)系統(tǒng)監(jiān)聽守護(hù)進(jìn)程,一旦接收到其他進(jìn)程發(fā)來的信號,馬上給出報(bào)告 運(yùn)行過程 圖表 26首先運(yùn)行守護(hù)進(jìn)程之后查看 當(dāng)前進(jìn)程 圖表 27可以發(fā)現(xiàn)守護(hù)進(jìn)程-jincheng在后臺運(yùn)行,且 PPID=1,PID=4085 圖表 28可以發(fā)現(xiàn)守護(hù)進(jìn)程向test.txt發(fā)送了start 圖表 29向守護(hù)進(jìn)程發(fā)送終止信號,終止守護(hù)進(jìn)程 圖表 30可以發(fā)現(xiàn)后臺運(yùn)行的守護(hù)進(jìn)程沒了 圖表 31可以發(fā)現(xiàn)守護(hù)進(jìn)程又向test.txt發(fā)送了end 圖表 32具體查看test.txt 圖表 33具體查看test.txt的內(nèi)容 源代碼 #include if(sig==SIGTERM){ write(fd1,“endn”,5);exit(0);} } int daemon(int nochdir, int noclose){ pid_t pid; pid = fork(); /* In case of fork is error.*/ if(pid < 0) { perror(“fork”); return-1; } /* In case of this is parent process.*/ if(pid!= 0) exit(0); /* Become session leader and get pid.*/ pid = setsid(); if(pid <-1) { perror(“setsid”); return-1; } /* Change directory to root.*/ if(!nochdir) chdir(“/”); /* File descriptor close.*/ if(!noclose) { int fd; fd = open(“/dev/null”, O_RDWR, 0); if(fd!=-1) { dup2(fd, STDIN_FILENO); } dup2(fd, STDOUT_FILENO); dup2(fd, STDERR_FILENO); if(fd > 2) close(fd); } umask(0027); return 0; } int main(void){ fd1=open(“test.txt”,O_RDWR | O_TRUNC); } write(fd1,“startn”,7);daemon(0,0);signal(SIGTERM,sigintHandler);sleep(1000);return 0; 分別利用本地socket套接字和INTENET套接字實(shí)現(xiàn)進(jìn)程間文件傳輸 本地socket套接字運(yùn)行過程 圖表 34使用./server1運(yùn)行服務(wù)器,顯示服務(wù)器等待狀態(tài) 圖表 35當(dāng)在另外一個(gè)終端運(yùn)行客戶端程序時(shí),服務(wù)器顯示客戶連接,并要求輸入傳輸文件名稱 圖表 36當(dāng)服務(wù)器輸入文件名稱server1.c后客戶端顯示接收信息,不過接收到的文件重定向到 test.txt中 圖表 37 server1.c的內(nèi)容 圖表 38 客戶端接收到顯示在test.txt的內(nèi)容,和server1.c的內(nèi)容比較,完全一致 本地socket套接字服務(wù)器server1.c源代碼 #include int filefd,n;//////////////// char file[100],buf[1024];//////////////// int server_sockfd,client_sockfd; int server_len,client_len; struct sockaddr_un server_address; struct sockaddr_un client_address; unlink(“server_socket”); server_sockfd =socket(AF_UNIX,SOCK_STREAM,0); server_address.sun_family =AF_UNIX; strcpy(server_address.sun_path,“server_socket”); server_len =sizeof(server_address); bind(server_sockfd,(struct sockaddr *)&server_address,server_len); listen(server_sockfd,5); while(1) { printf(“server waitingn”); client_len =sizeof(client_address); client_sockfd=accept(server_sockfd,(struct *)&client_address,&client_len); if(client_sockfd!=-1) { printf(“you have a client ,please put the filename to transport!n”); scanf(“%s”,file); if((filefd=open(file,O_RDWR))<0) { perror(“can't find the file”); exit(1); } printf(“filefd= %dn”,filefd); printf(“the file is transported ,please wait...n”); lseek(filefd,0L,0);//每次接受客戶機(jī)連接,應(yīng)將用于讀的源文件指針移到文件頭 write(client_sockfd,file,sizeof(file));//傳送文件名 if((n=read(filefd,buf,sizeof(buf)))>0) { } write(client_sockfd,buf,n); sockaddr printf(“you have transport %d bytes and it is end!n”,n); close(client_sockfd); } close(filefd); } } 本地socket套接字客戶端client1.c源代碼 #include #include int filefd,n,oldfilefd;///////////////// char file[100],buf[1024]; int sockfd; int len; struct sockaddr_un address; int result; sockfd =socket(AF_UNIX, SOCK_STREAM,0); address.sun_family =AF_UNIX; strcpy(address.sun_path,“server_socket”); len=sizeof(address); result=connect(sockfd,(struct sockaddr *)&address,len); if(result ==-1) { perror(“oops:client1”); exit(1); } if(result!=-1) { oldfilefd=open(“test.txt”,O_RDWR); filefd=dup(oldfilefd); read(sockfd,file,sizeof(file)); printf(“the filename you receive is:%sn”,file); if((n=read(sockfd,buf,sizeof(buf)))>0) { write(filefd,buf,n); } printf(“you have received a file which is %d bytes,but the file's context cover the test.txt,so please check into test.txt!n”,n); close(sockfd); } close(filefd); exit(0);} INTENET套接字運(yùn)行過程 圖表 39使用./server2運(yùn)行服務(wù)器,顯示服務(wù)器等待狀態(tài) 圖表 40當(dāng)在另外一個(gè)終端運(yùn)行客戶端程序時(shí),服務(wù)器顯示客戶連接,并要求輸入傳輸文件名稱 圖表 41當(dāng)服務(wù)器輸入文件名稱server2.c后客戶端顯示接收信息,不過接收到的文件重定向到 test.txt中 圖表 42 server2.c的內(nèi)容 圖表 43客戶端接收到顯示在test.txt的內(nèi)容,和server2.c的內(nèi)容比較,完全一致 INTENET套接字服務(wù)器server2.c源代碼 #include int main(){ int filefd,n;//////////////// char file[100],buf[4096];/////////////////// int server_sockfd,client_sockfd; int server_len,client_len;struct sockaddr_in server_address;struct sockaddr_in client_address;server_sockfd =socket(AF_INET,SOCK_STREAM,0);server_address.sin_family=AF_INET;server_address.sin_addr.s_addr=inet_addr(“127.0.0.1”);server_address.sin_port =9734;server_len=sizeof(server_address);bind(server_sockfd,(struct sockaddr *)&server_address,server_len);listen(server_sockfd,5);while(1) { printf(“server waitingn”); client_len =sizeof(client_address); client_sockfd=accept(server_sockfd,(struct *)&client_address,&client_len); if(client_sockfd!=-1) { printf(“you have a client ,please put the filename to transport!n”);scanf(“%s”,file); if((filefd=open(file,O_RDWR))<0){ sockaddr perror(“can't find the file”); exit(1); } printf(“filefd= %dn”,filefd); printf(“the file is transported ,please wait...n”); lseek(filefd,0L,0);//每次接受客戶機(jī)連接,應(yīng)將用于讀的源>文件指針移到文件頭 write(client_sockfd,file,sizeof(file));//傳送文件名 if((n=read(filefd,buf,sizeof(buf)))>0) { write(client_sockfd,buf,n); } printf(“you have transport %d bytes and it is end!n”,n); close(client_sockfd); } close(filefd); } } INTENET套接字客戶端client2.c源代碼 #include int main(){ int filefd,n,oldfilefd;//////////////////// char file[100],buf[4096];int sockfd;int len;struct sockaddr_in address;int result;sockfd =socket(AF_INET,SOCK_STREAM,0);address.sin_family =AF_INET;address.sin_addr.s_addr =inet_addr(“127.0.0.1”);address.sin_port =9734;len =sizeof(address); result=connect(sockfd,(struct sockaddr *)&address,len); if(result ==-1) { perror(“oops:client2”); exit(1); } if(result!=-1){ oldfilefd=open(“test.txt”,O_RDWR); filefd=dup(oldfilefd); read(sockfd,file,sizeof(file)); printf(“the filename you receive is:%sn”,file); if((n=read(sockfd,buf,sizeof(buf)))>0) { write(filefd,buf,n); } printf(“you have received a file which is %d bytes,but the file's context cover the test.txt,so please check into test.txt!n”,n); close(sockfd);} close(filefd); exit(0);} 感謝與收獲 通過這幾次上機(jī)實(shí)習(xí),使我更加扎實(shí)的掌握了有關(guān)Linux C編程方面的知識,在設(shè)計(jì)過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過編程,使我們掌握的知識不再是紙上談兵。 過而能改,善莫大焉。在課程設(shè)計(jì)過程中,我們不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢測調(diào)試環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多問題,最后在老師的指導(dǎo)下,終于游逆而解。在今后社會的發(fā)展和學(xué)習(xí)實(shí)踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上披荊斬棘,而不是知難而退,那樣永遠(yuǎn)不可能收獲成功,收獲喜悅,也永遠(yuǎn)不可能得到社會及他人對你的認(rèn)可! 實(shí)踐課誠然是一門專業(yè)課,給我很多專業(yè)知識以及專業(yè)技能上的提升,同時(shí)又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時(shí),設(shè)計(jì)讓我感觸很深。使我對抽象的理論有了具體的認(rèn)識。 我認(rèn)為,在這學(xué)期的課程設(shè)計(jì)中,不僅培養(yǎng)了獨(dú)立思考、動手操作的能力,在各種 其它能力上也都有了提高。更重要的是,在課程設(shè)計(jì)上,我們學(xué)會了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對于我們的將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國提倡的艱苦奮斗一樣,我們都可以在實(shí)驗(yàn)結(jié)束之后變的更加成熟,會面對需要面對的事情。 回顧起此課程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。 題目: 大地測量學(xué)上機(jī)實(shí)習(xí) 學(xué) 號: 姓 名: 班 級: 專 業(yè): 測繪工程 課程名稱: 大地測量學(xué)基礎(chǔ) 課程老師: 大地測量學(xué)上機(jī)實(shí)習(xí)報(bào)告 一、實(shí)習(xí)目的: 了解大地測量學(xué)的定義以及作用,讓同學(xué)們充分了解大地測量學(xué)在現(xiàn)代社會的重要地位及其廣泛的應(yīng)用,讓同學(xué)們體驗(yàn)大地測量的一些解題計(jì)算方法與運(yùn)用。也讓同學(xué)們對于復(fù)雜的測繪計(jì)算如何用計(jì)算機(jī)通過編程來解決,同時(shí)對于坐標(biāo)轉(zhuǎn)化和高斯投影的處理方法進(jìn)行一定的了解。 二、實(shí)習(xí)任務(wù): 1、2、空間坐標(biāo)轉(zhuǎn)換編程; 高斯投影正算編程; 3、高斯投影反算編程; 三、實(shí)習(xí)時(shí)間與地點(diǎn): 地點(diǎn):核工樓410教室; 時(shí)間:每周四上午一二節(jié)課,共三周; 四、實(shí)習(xí)儀器: 電腦,C++編程軟件; 5、實(shí)習(xí)步驟: 5.1實(shí)驗(yàn)方法步驟 1、先了解書本上關(guān)于大地主題解算的步驟; 2、根據(jù)公式用VC編寫程序 3、對編寫的程序代碼進(jìn)行調(diào)試運(yùn)行 5.1.1大地坐標(biāo)空間直角坐標(biāo)系轉(zhuǎn)換 X?(N?H)cosBcosL?1)空間大地坐標(biāo)系向空間直角坐標(biāo)系的轉(zhuǎn)換公式為:Y?(N?H)cosBsinL??Z?[N(1?e2)?H]sinB??式中,N?a,a為橢球的長半軸,N為橢球的卯酉圈曲率半徑a=6378.137km W W?1?e2sin2B,e2?a2?b2a2,e為橢球的第一偏心率,b=6356.7523141km。 2)程序代碼 #include a=a/180*PI;return a;} void deg(double d,int *d1,int *d2,double *d3){d=d/PI;*d1=(int)d;*d2=(int)((d-*d1)*60);*d3=((d-*d1)*60-*d2)*60;} void X1(double a1,double e){double l,b,h,x,y,z,a,b1,c,n,w;printf(“please input L:n”);scanf(“%lf%lf%lf”,&a,&b1,&c);l=rad(a,b1,c); b為橢球的短半軸 printf(“please input B:n”);scanf(“%lf%lf%lf”,&a,&b1,&c);b=rad(a,b1,c);printf(“please input H:n”);scanf(“%lf”,&h);w=sqrt((1-e*e*sin(b)*sin(b)));n=a1/w;x=(n+h)*cos(b)*cos(l);y=(n+h)*cos(b)*sin(l);z=(n*(1-e*e)+h)*sin(b);printf(“X=%fnY=%fnZ=%fn”,x,y,z);} void X2(double a1,double e){double l,b,h,x,y,z,n,w,m,g,m1,g1,l3,b3;int l1,l2,b1,b2;printf(“please input X:n”);scanf(“%lf”,&x);printf(“please input Y:n”);scanf(“%lf”,&y);printf(“please input Z:n”);scanf(“%lf”,&z);l=atan2(y,x);do{m=(z+a1*e*e*g/sqrt(1+g*g-e*e*g*g))/sqrt(x*x+y*y);m1=atan(m);g1=atan(g);m1=m1/PI*180*3600;g1=g1/PI*180*3600;g=m;} while(sqrt((m1-g1)*(m1-g1))>0.0001);b=atan(m);w=sqrt(1-e*e*sin(b)*sin(b));n=a1/w;h=sqrt(x*x+y*y)/cos(b)-n;deg(l,&l1,&l2,&l3);deg(b,&b1,&b2,&b3);printf(“L=%d°%d'%2.6f''nB=%d°%d'%2.6f''nH=%5.6fmn”,l1,l2,l3,b1,b2,b3,h);} void f(int a){double a1,e,e2;int b,c;printf(“please input L,B,H→X,Y,Z:請輸入1 或 X,Y,Z→L,B,H:請輸入2n”);scanf(“%d”,&b);printf(“請選擇參考橢球面:n克拉索夫斯基橢球(請輸入1)n或 IUGG 1975橢球(請輸入2)n或 CGCS 2000橢球(請輸入3)n或WGS-84橢球體(請輸入4)”);scanf(“%d”,&c);if(c==1){a1=6378245.0000,e2=0.00669342162297;} else if(c==2){a1=6378140.0000,e2=0.00669438499959;} else if(c==3){a1=6378137.0000,e2=0.00669438002290;} else if(c==4){a1=6378137.0000,e2=0.00669437999013;};e=sqrt(e2);if(b==1)X1(a1,e);else if(b==2)X2(a1,e);} main(){int a=1;do {f(a);printf(“A,B,0n”);scanf(“%d”,&a);} while(a);} 調(diào)試運(yùn)行: 5.1.2高斯投影正算 1)由第二條件知 : 位于中央子午線上的點(diǎn),投影后的縱坐標(biāo) x 應(yīng)等于投影前從赤道量至該點(diǎn)的子午線弧長 X,即(8-33)式第一式中,當(dāng) 有: 顧及(對于中央子午線) 時(shí) 得: 依次求得 并代入(8-33)式,得到高斯投影正算公式 2)程序代碼: #include x=X+(N/(2*p*p))*sin(B)*cos(B)*l*l+(N/(24*p*p*p*p))*sin(B)*cos(B)*cos(B)*cos(B)*(5-t*t+9*n)*l*l*l*l;y=(N/p)*cos(B)*l+(N/(6*p*p*p))*cos(B)*cos(B)*cos(B)*(1-t*t+n)*l*l*l+(N/(120*p*p*p*p*p))*cos(B)*cos(B)*cos(B)*cos(B)*cos(B)*(5-18*t*t+t*t*t*t)*l*l*l*l*l;printf(“x=%lfny=%lfn”,x,y);return 0;} 運(yùn)行調(diào)試結(jié)果: 5.1.3高斯投影反算 公式 B?Bf??tftf2MfNf5fy2?tf24MfN3f?5?3t2f224??2?9?tyfff?720MfNNfy61?90t2t4y6f?45f??l?yy322?1?2t??ffcosBf6N3cosBff???y5?120N5fcosBf2)程序代碼: #include ?5?28t2f2?24t4?2?2f?6f?8ftf#define PI 3.14***932 #define P 206264.806247096355 void main(){ long double RadianToAngle(long double alfa);long double Bf(long double a,long double b,long double x);void GSFS(long double a,long double b,long double Bf,long double y,long double *B,long double *l);long double a,b,x,y,L0;long double FSB,FSL;long double *pointer_B,*pointer_L;long double DH;pointer_B=&FSB;pointer_L=&FSL;a=6378140.0000000000;b=6356755.2881575287;printf(“請輸入x坐標(biāo)和y坐標(biāo):(輸入時(shí)x坐標(biāo)和y坐標(biāo)之間用逗號隔開)n”);scanf(“%lf,%lf”,&x,&y);FSB=Bf(a,b,x);DH=floor(y/1000000);y=y-DH*1000000-500000;GSFS(a,b,FSB,y,pointer_B,pointer_L);FSB=RadianToAngle(FSB);FSL=RadianToAngle(FSL);L0=DH*6-3;printf(“nt===========================計(jì)算結(jié)果===========================n”);printf(“nttB=%-20.10lfttL=%-20.10lfn”,FSB,DH*6-3+FSL);printf(“nt===============n”);} long double RadianToAngle(long double alfa){ long double alfa1,alfa2;alfa=alfa*180./PI;alfa1=floor(alfa)+floor((alfa-floor(alfa))*60.)/100.;alfa2=(alfa*60.-floor(alfa*60.))*0.006;alfa1+=alfa2;return(alfa1);} long double Bf(long double a,long double b,long double x){ long double e,m0,m2,m4,m6,m8;long double a0,a2,a4,a6,a8;long double B,FB,Bn1,Bn;int n=0;e=(sqrt(a*a-b*b))/a;m0=a*(1-e*e);m2=3.0/2.0*e*e*m0;m4=5.0/4.0*e*e*m2;m6=7.0/6.0*e*e*m4;m8=9.0/8.0*e*e*m6;a0=m0+m2/2.0+3.0/8.0*m4+5.0/16.0*m6+35.0/128.0*m8;a2=m2/2.0+m4/2.0+15.0/32.0*m6+7.0/16.0*m8;a4=m4/8.0+3.0/16.0*m6+7.0/32.0*m8;a6=m6/32.0+m8/16.0;a8=m8/128.0;B=x/a0;FB=a2/2.0*sin(2*B)-a4/4.0*sin(4*B)+a6/6.0*sin(6*B)-a8/8.0*sin(8*B);do { Bn=B;B=(x+FB)/a0;FB=a2/2.0*sin(2*B)-a4/4.0*sin(4*B)+a6/6.0*sin(6*B)-a8/8.0*sin(8*B);Bn1=B;} while(fabs((Bn1-Bn)*P)>=0.000000000001);return(B);} void GSFS(long double a,long double b,long double Bf,long double y,long double *B,long double *l){ long double e,e1,V,t,u2;long double n0,n2,n4,n6,n8,sin2B,sin4B,sin6B,sin8B,N;e=(sqrt(a*a-b*b))/a;e1=(sqrt(a*a-b*b))/b;V=sqrt(1+e1*e1*cos(Bf)*cos(Bf));t=tan(Bf);u2=e1*e1*cos(Bf)*cos(Bf);n0=a;n2=1.0/2.0*e*e*n0;n4=3.0/4.0*e*e*n2;n6=5.0/6.0*e*e*n4;n8=7.0/8.0*e*e*n6;sin2B=pow(sin(Bf),2);sin4B=pow(sin(Bf),4);sin6B=pow(sin(Bf),6);sin8B=pow(sin(Bf),8);N=n0+n2*sin2B+n4*sin4B+n6*sin6B+n8*sin8B; *B=Bf-1.0/2.0*V*V*t*((y/N)*(y/N)-1.0/12.0*(5+3*t*t+u2-9*u2*t*t)*pow((y/N),4)+1.0/360.0*(61+90*t*t+45*pow(t,4))*pow((y/N),6));*l=1.0/cos(Bf)*((y/N)-1.0/6.0*(1+2*t*t+u2)*pow((y/N),3)+1.0/120.0*(5+28*t*t+24*pow(t,4)+6*u2+8*u2*t*t)*pow(y/N,5));} 3)運(yùn)行結(jié)果: 7、實(shí)習(xí)總結(jié): 通過這次大地坐標(biāo)轉(zhuǎn)換及高斯投影正反算程序代碼編寫設(shè)計(jì)的上機(jī)操作學(xué)習(xí),我更加了解了如何運(yùn)用計(jì)算機(jī)編程去處理復(fù)雜的測繪計(jì)算,并且也知道了對于編程時(shí)遇到的一般問題該如何解決,對于坐標(biāo)轉(zhuǎn)換和高斯正反算的一些理念也有一定的了解。本次實(shí)習(xí),利用計(jì)算機(jī)編程來實(shí)現(xiàn)測量數(shù)據(jù)的處理,讓我對坐標(biāo)系之間的轉(zhuǎn)化,高斯投影正反算的原理以及計(jì)算過程有了更深刻的理解和記憶,感覺受益匪淺。不過在本次實(shí)習(xí)期間,也出現(xiàn)了一些小問題。在編寫程序的時(shí)候,略顯生疏,花費(fèi)了較多的時(shí)間,以后有待提高;對于計(jì)算公式中的有的字母,忘記其所代表的具體意義,不過最終通過復(fù)習(xí),搞明白每一個(gè)字母的含義。 實(shí)習(xí)就是一個(gè)理論與實(shí)踐相結(jié)合的過程,希望自己能在這一方面有更大的進(jìn)步! 計(jì)算機(jī)上機(jī)實(shí)習(xí)報(bào)告 姓名:張陸浩 班級:高材11001 學(xué)號:201001978 老師:張老師 熊老師 時(shí)間:2011年12月24日 一.實(shí)驗(yàn)?zāi)康? 1.熟悉VB 6.0的開發(fā)環(huán)境,掌握基本的編程方法,熟悉用VB語言完成一個(gè)應(yīng)用程序的設(shè)計(jì)過程,掌握有關(guān)編輯和調(diào)試程序的方法和技巧;2.主要掌握VB語言中的標(biāo)準(zhǔn)模塊的建立﹑數(shù)據(jù)文件的讀出與寫入、數(shù)組與選擇結(jié)構(gòu)的運(yùn)用,圖形操作等內(nèi)容 3.了解開發(fā)簡單應(yīng)用程序的全過程,包括:分析﹑設(shè)計(jì)﹑編程﹑調(diào)試和編寫報(bào)告.二.實(shí)習(xí)要求: (一)。用記事本新建一個(gè)文本文件,將本班M名學(xué)生N門考試課的成績輸入到這個(gè)文件中,建議按如下形式存放(注:20=M<=50,5<=N<=8,下文以M=4,N=3為例): 學(xué)號 姓名 英語 數(shù)學(xué) 物理 化學(xué) VB 1 張陸浩 2 林丹 3 李宗偉 4 李永波 (二)。將N門考試課以及其分?jǐn)?shù)輸入到另一個(gè)數(shù)據(jù)文件(文件類型同上題)中,建議以下列形式存放: 編號 課程名稱 課程學(xué)分 1 英語 5.0 2 數(shù)學(xué) 4.5 3 物理 5.0 4 化學(xué) 4.5 5 VB 4.5 (三)。請編寫一個(gè)簡單的學(xué)生成績管理程序,以完成以下功能: 1.根據(jù)以上兩文件內(nèi)容分別計(jì)算每個(gè)學(xué)生N門課程的加權(quán)平均分(保留兩位小數(shù),四舍五入),按平均分排列名次,平均分相同則名 次并列。用VB創(chuàng)建一個(gè)數(shù)據(jù)文件,存放班級的成績表。 2.分別統(tǒng)計(jì)全班每門課的平均分,并計(jì)算各分?jǐn)?shù)段(90分以上;80~89;70~79;60~69;60分以下)的學(xué)生數(shù)。.3.打印每名學(xué)生成績條(并將結(jié)果存放到用VB創(chuàng)建的一個(gè)新的數(shù)據(jù)文件中)。 4.顯示所有存在不及格課程的學(xué)生的名單(含學(xué)號,不及格課程名稱,課程的學(xué)分及成績)。 5.屏幕顯示優(yōu)等生名單及打印每門課程成績分布圖。優(yōu)等生條件(只要滿足三個(gè)中任一個(gè)就可以): a)平均分>=90分 b)名次在本班位于前四名 c)平均分>=85分,并且至少有一門課的成績>=95分 三、實(shí)習(xí)步驟 1、用記事本新建一個(gè)學(xué)生成績文本文件(其中包括學(xué)生學(xué)號,成績,姓名,課程及成績)。 2、用記事本新建一個(gè)課程學(xué)分文本文件。 3、編輯菜單編輯器:編輯四個(gè)可拉式菜單,包括學(xué)生成績、成績處理、成績編輯、畫圖。 4、編輯代碼:分別編輯打印學(xué)生成績和學(xué)分代碼,編輯加權(quán)平均分、各科平均分、分?jǐn)?shù)段、成績條、排名、優(yōu)等生、差等生的代碼,還有畫各科目成績?nèi)藬?shù)圖的代碼。 5、調(diào)試程序代碼并保存。 6、打印代碼。 三.相關(guān)數(shù)據(jù)列表: (一)。源文件 (1)成績 學(xué)號 姓名 英語 數(shù)學(xué) 物理 化學(xué) VB 1 張陸浩 97 98 97 97 98 2 林丹 92 87 79 91 84 3 李宗偉 75 96 83 75 73 4 李永波 89 93 83 86 82 5 王儀涵 92 79 89 86 80 6 汪鑫 93 65 86 68 84 7 付海峰 94 91 89 92 80 8 湛龍 86 83 88 80 92 9 蓋德 68 79 54 72 71 10 陶菲克 69 76 59 81 75 11 佐佐木 85 83 68 57 71 12 李娜 94 63 62 65 53 13 陳金 86 79 89 94 83 14 蘭洋 91 93 92 89 75 15 小志 95 89 93 86 87 16 棃一名 92 86 83 67 59 17 吳凱飛 67 75 57 82 62 18 江方 93 80 73 76 84 19 胡艷 74 68 58 63 71 20 張繼原 68 95 68 84 93(2).學(xué)分 編號 課程名稱 課程學(xué)分 1 英語 5.0 2 數(shù)學(xué) 4.5 3 物理 5.0 4 化學(xué) 4.5 5 VB 4.5 四.運(yùn)行效果: (一).學(xué)生管理 (1)打開課程成績及學(xué)分 (2)打開計(jì)算的加權(quán)平均分﹑排名及各科平均分 (三).編輯 (1)打開計(jì)算的各科人數(shù)分布 (2)打開按學(xué)號查找每個(gè)學(xué)生的成績 a)輸入要查找學(xué)生的學(xué)號 b)得到該生的成績條 (3)打開查找到的優(yōu)等生信息 (4)打開不及格學(xué)生的分布 (四).成績分布圖 五.實(shí)習(xí)小結(jié) 通過兩個(gè)星期的上機(jī)實(shí)習(xí),我體會頗深,不僅表現(xiàn)在VB語言程序設(shè)計(jì)中,而且表現(xiàn)在與人交流和獨(dú)立自主完成任務(wù)的決心中。 本次上機(jī)在VB程序設(shè)計(jì)中我學(xué)會了很多以前不會或根本一點(diǎn)都不懂的東西。比如,在程序設(shè)計(jì)過程中,剛開始我弄不清楚怎樣把編輯的文件讀到VB中,但是通過詢問老師和同學(xué)討論,終于弄清了思路,即先將文件打開,再將數(shù)據(jù)分別放入若干個(gè)數(shù)組中,最后再將它讀出來。除此之外,我還明白了變量的作用域?qū)幊痰闹匾院妥舆^程,函數(shù)過程數(shù)據(jù)處理的幫助。而對以前學(xué)的,像選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)等也進(jìn)行了鞏固和運(yùn)用。在數(shù)據(jù)處理和打印的時(shí)候進(jìn)行了大量運(yùn)用。為了使程序更人性化化,我還運(yùn)用了msgbox,inputbox等方法,使我對所學(xué)的知識進(jìn)行了綜合的運(yùn)用。 我相信通過這次實(shí)習(xí),我對VB和計(jì)算機(jī)語言都有了更深刻的認(rèn)識。雖然在實(shí)習(xí)的過程中,我發(fā)現(xiàn)了自己在編寫程序中的不足,像思維不夠嚴(yán)密等,但我相信,只要認(rèn)真、努力就一定會有收獲 六.程序代碼 (一).創(chuàng)建標(biāo)準(zhǔn)模塊 Type student “定義變量:student” number As String * 9 name As String * 3 score(1 To 5)As Single average As Single rank As Integer End Type Type class “定義變量:class” num As String * 9 nam As String * 3 scor As Single End Type Public stu()As student, cla()As class, sumscor As Integer, subj()As class Public q(5)As Integer, t(5)As Integer, x(5)As Integer, y(5)As Integer, h(5)As Integer “定義刪除空格函數(shù)” Public Function deletespace(str As String)As String Dim i% i = InStr(str, “ ”)Do While i <> o str = Replace(str, “ ”, “ ”)i = InStr(str, “ ”)Loop deletespace = str End Function Public Sub addave(stu()As student, cou()As course)“定義計(jì)算加 For i = 1 To UBound(stu)權(quán)平均分 Dim jqpj!, x!, y!的子過 程 x = 0 y = 0 For j = 1 To 5 x = x + cou(j).score y = y + stu(i).score(j)* cou(j).score Next j stu(i).jqpj = y / x Next i End Sub Public Sub mc(stu()As student)“定義計(jì)算排名的子過程” For i = 1 To UBound(stu)stu(i).rank = 0 For j = 1 To UBound(stu)If stu(i).jqpj <= stu(j).jqpj Then stu(i).rank = stu(i).rank + 1 End If Next j Next i End Sub(二).讀取考試成績和課程學(xué)分(1).打開文件 Private Sub studentscore_Click()CommonDialog1.Filter = “文本文件|*.txt” CommonDialog1.ShowOpen Open CommonDialog1.FileName For Input As #1 Line Input #1, str1 Print str1 Do While Not EOF(1)Line Input #1, str str = deletespace(Trim(str))a = Split(str, “ ”)n = n + 1 ReDim Preserve stu(n)stu(n).number = a(0)stu(n).name = a(1)For i = 1 To 5 stu(n).score(i)= a(i + 1)Next i Loop For i = 1 To n Print stu(i).number;Spc(1);stu(i).name;Spc(3);For j = 1 To 5 Print stu(i).score(j);Spc(3);Next j Print Next i Close #1 End Sub Private Sub classrank_Click()CommonDialog2.Filter = “文本文件|*.txt” CommonDialog2.ShowOpen Open CommonDialog2.FileName For Input As #2 Line Input #2, str2 Print str2 sumscor = 0 Do While Not EOF(2)Line Input #2, str3 str3 = deletespace(Trim(str3))b = Split(str3, “ ”)m = m + 1 ReDim Preserve cla(m)cla(m).num = b(0)cla(m).nam = b(1)cla(m).scor = b(2)sumscor = sumscor + Val(cla(m).scor)Loop For k = 1 To m Print cla(k).num;Spc(2);cla(k).nam;Spc(3);cla(k).scor;Spc(3)Next k End Sub(2).分?jǐn)?shù)處理 Private Sub ran_Click()“加權(quán)平均分及名次” Form1.Cls For n = 1 To 20 sum = 0 For i = 1 To 5 sum = sum + stu(n).score(i)* cla(i).scor Next i stu(n).average = Format(sum / sumscor, “##.##”)Next n For n = 1 To 20 stu(n).rank = 1 For j = 1 To 20 If stu(n).average < stu(j).average Then stu(n).rank = stu(n).rank + 1 End If Next j Next n Print “學(xué)號”;Spc(6);“姓名”;Spc(4);“英 語”;Spc(2);“數(shù) 學(xué)”;Spc(2);“ 物 理”;Spc(3);“化 學(xué)”;Spc(2);“V B”;Spc(2);“加權(quán)平均分”;Spc(2);“名次” For n = 1 To 20 Print stu(n).number;Spc(1);stu(n).name;Spc(3);For i = 1 To 5 Print stu(n).score(i);Spc(3);Next i Print stu(n).average;Spc(3);stu(n).rank Next n End Sub Private Sub eaverage_Click()“ 課程平均分” Print Spc(7);“英 語”;Spc(1);“數(shù) 學(xué)”;Spc(1);“ 物 理”;Spc(1);“化 學(xué)”;Spc(1);“V B” Print “平均分”;For i = 1 To 5 sum = 0 For n = 1 To 20 sum = sum + stu(n).score(i)Next n j = Format(sum / 20, “00.00”)Print Spc(2);j;Next i End Sub(3).編輯 Private Sub scor_Click()“計(jì)算打印個(gè)分?jǐn)?shù)段人數(shù)” Form1.Cls Print “范圍”;“英 語”;Spc(3);“數(shù) 學(xué)”;Spc(3);“ 物 理”;Spc(3);“化 學(xué)”;Spc(3);“V B” For i = 1 To 5 For n = 1 To 20 Select Case stu(n).score(i)Case 90 To 100 q(i)= q(i)+ 1 Case 80 To 89 x(i)= x(i)+ 1 Case 70 To 79 t(i)= t(i)+ 1 Case 60 To 69 h(i)= h(i)+ 1 Case Else y(i)= y(i)+ 1 End Select Next n Next i Print “>90”;For i = 1 To 5 Print Spc(4);q(i);Next i Print Print “80_89”;For i = 1 To 5 Print Spc(4);x(i);Next i Print Print “70_79”;For i = 1 To 5 Print Spc(4);t(i);Next i Print Print “60_69”;For i = 1 To 5 Print Spc(4);h(i);Next i Print Print “<60”;For i = 1 To 5 Print Spc(4);y(i);Next i End Sub Private Sub stuscolist_Click()“打印成績條” Form1.Cls n = InputBox(“請輸入學(xué)號”)Print “學(xué)號”;Spc(5);“姓名”;Spc(3);“英 語”;Spc(3);“數(shù) 學(xué)”;Spc(3);“ 物 理”;Spc(3);“化 學(xué)”;Spc(3);“V B” Print stu(n).number;Spc(1);stu(n).name;Spc(3);For i = 1 To 5 Print stu(n).score(i);Spc(3);Next i End Sub Private Sub excellent_Click()“打印優(yōu)等生” Form1.Cls Dim t As Integer Print “姓名”;Spc(4);“學(xué)號”;Spc(8);“英 語”;Spc(4);“數(shù) 學(xué)”;Spc(3);“ 物 理”;Spc(3);“化 學(xué)”;Spc(4);“V B”;Spc(6);“平均分”;Spc(4);“名次” For i = 1 To 20 t = 0 For j = 1 To 5 If stu(i).score(j)>= 95 Then t = t + 1 End If Next j If stu(i).average >= 85 And t >= 2 Or stu(i).average >= 90 Or stu(i).rank <= 3 Then Print stu(i).name;Spc(2);stu(i).number;Spc(3);For j = 1 To 5 Print stu(i).score(j);Spc(5);Next j Print stu(i).average;Spc(5);stu(i).rank End If Next i End Sub Private Sub ugstulist_Click()“打印不及格學(xué)生” Form1.Cls For n = 1 To 20 For i = 1 To 5 If stu(n).score(i)< 60 Then Print stu(n).number;stu(n).name;stu(n).score(i);cla(i).nam;cla(i).scor End If Next i Next n End Sub(5).成績分布圖 Private Sub Command1_Click()“新建窗體form2” For i = 0 To 4 Picture1(i).Scale(0, 14)-(100, 0)Picture1(i).Line(10, 2)-(92, 2), vbRed Picture1(i).Print “分?jǐn)?shù)段” Picture1(i).Line(10, 2)-(10, 14), vbRed Picture1(i).Print “人數(shù)” For j = 2 To 10 Step 2 Picture1(i).CurrentY = j + 2 Picture1(i).CurrentX = 4 Picture1(i).Print j Next j Picture1(i).CurrentX = 10 Picture1(i).CurrentY = 2 Picture1(i).Line(10, 2)-(26, 2 + q(1 + i)), vbGreen, BF Picture1(i).CurrentX = 26 Picture1(i).CurrentY = 2 Picture1(i).Line(26, 2)-(42, 2 + x(i + 1)), vbRed, BF Picture1(i).CurrentX = 42 Picture1(i).CurrentY = 2 Picture1(i).Line(42, 2)-(58, 2 + t(i + 1)), vbGreen, BF Picture1(i).CurrentX = 58 Picture1(i).CurrentY = 2 Picture1(i).Line(58, 2)-(74, 2 + h(i + 1)), vbRed, BF Picture1(i).CurrentX = 74 Picture1(i).CurrentY = 2 Picture1(i).Line(74, 2)-(90, 2 + y(i + 1)), vbGreen, BF Picture1(i).Line(10, 2)-(26, 2), vbGreen Picture1(i).Line(26, 2)-(42, 2), vbRed Picture1(i).Line(42, 2)-(58, 2), vbGreen Picture1(i).Line(58, 2)-(74, 2), vbRed Picture1(i).Line(74, 2)-(90, 2), vbGreen Picture1(i).CurrentX = 10 Picture1(i).CurrentY = 2 Picture1(i).Print “ >=90 80-89 70-79 60-69 <=60” Next i End Sub 課程實(shí)習(xí)報(bào)告 實(shí)習(xí)課程:《ArcGIS專業(yè)技能訓(xùn)練實(shí)習(xí)報(bào)告》 姓 名: 學(xué) 號: 專 業(yè): 班 級: 2012年 6月 20日 ArcGIS專業(yè)技能訓(xùn)練實(shí)習(xí)報(bào)告 實(shí)習(xí)目的: 通過學(xué)習(xí)Arcgis這款Gis應(yīng)用軟件熟練我們的實(shí)際應(yīng)用能力,深入理解GIS軟件應(yīng)用的核心部分,通過熟練Arcgis能掌握類似相關(guān)軟件操作,加強(qiáng)動手能力。 實(shí)習(xí)步驟: 1.對Arcgis軟件整體掌握,并與之前各類軟件操作對比和學(xué)習(xí)。 2.具體對軟件操作掌握空間數(shù)據(jù)的采集與組織、數(shù)據(jù)的處理與變、數(shù)據(jù)的可視化表達(dá)。 3.Arcgis的空間分析能力的掌握:矢量數(shù)據(jù)的空間分析、柵格數(shù)據(jù)的空間分析、三維分析、地統(tǒng)計(jì)分析、水文分析等。4.掌握Arcgis的空間分析建模。 實(shí)習(xí)內(nèi)容: 根據(jù)練習(xí)內(nèi)容,選擇了練習(xí)第3、4、5、7、12章的內(nèi)容,其余在課下自己練習(xí)完成,這些章內(nèi)容分別為:空間數(shù)據(jù)的采集與組織、數(shù)據(jù)的處理與變換、數(shù)據(jù)的可視化表達(dá)、矢量數(shù)據(jù)空間分析、空間分析建模 Geodatabase是一種采用標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫技術(shù)來表現(xiàn)地理信息的數(shù)據(jù)模型。Geodatabase支持在標(biāo)準(zhǔn)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)表中存儲和管理地理信息。一. 基于Geodatabase的數(shù)據(jù)庫設(shè)計(jì) Geodatabase支持面向?qū)ο蟮氖噶繑?shù)據(jù)模型,它將地理數(shù)據(jù)組織成一個(gè)數(shù)據(jù)對象的結(jié)構(gòu)體系。在Geodatabase模型中,實(shí)體被表示為屬性,行為,關(guān)系的對象。Geodatabase還允許用戶定義對象之間的關(guān)系,以及保持對象之間參照完整性的規(guī)則。Geodatabase也定義了簡單的對象,地理要素,幾何網(wǎng)絡(luò),注記要素等多種對象類型。二. Geodatabase中的信息類型 1.表(table):是記錄的集合,每個(gè)記錄(行)中包括許多列(字段); 2.對象類(object classes):對象表示一個(gè)沒有空間幾何的實(shí)體,沒有位置相關(guān)信息,但是可以通過關(guān)系類與要素聯(lián)系起來,一個(gè)對象類作為一個(gè)表存儲在Geodatabase中,一個(gè)對象是表中的一行。3.要素類(feature classes):表示有空間幾何的實(shí)體,有位置相關(guān)信息。要素類是具有相同的屬性和相同的幾何表示類型的要素集合。1)簡單要素類:沒有拓?fù)潢P(guān)聯(lián),包括點(diǎn),線,多邊形,注記等多種類型,以要素的方式管理,存放在要素集內(nèi)外均可。 2)復(fù)雜要素類則是有拓?fù)潢P(guān)聯(lián)的若干個(gè)要素類的組合,必須存放在同一個(gè)要素?cái)?shù)據(jù)集中,例如拓?fù)湟?、幾何網(wǎng)絡(luò)等類型。 4.子類(subtype):在要素類內(nèi)部可以劃分若干個(gè)次一級的組,每個(gè)組是一個(gè)子類。每個(gè)子類有其自己的完整性規(guī)則和GIS行為。5.要素?cái)?shù)據(jù)集(feature database):要素?cái)?shù)據(jù)集是一個(gè)具有相同空間參照的要素類的集合。 6.關(guān)系(relationships):是一種表(或要素類)與表(或要素類)之間的聯(lián)系機(jī)制。關(guān)系類建立在對象(或要素)類之間,由一個(gè)對象(或要素)類指向另一個(gè)對象(或要素)類。 7.柵格數(shù)據(jù)集(raster data sets):影像作為柵格表來管理。 8.拓?fù)潢P(guān)系(topology):拓?fù)潢P(guān)系將參與拓?fù)涞母鱾€(gè)要素類集成在一個(gè)拓?fù)鋱D中作為一個(gè)拓?fù)鋯卧獊砉芾恚?guī)定同一個(gè)要素類中的各個(gè)要素如何與其他要素共享幾何或不同要素類之間如何共享幾何。9.元數(shù)據(jù):對數(shù)據(jù)庫中各個(gè)數(shù)據(jù)元素的描述。 10.幾何網(wǎng)絡(luò)(geometric network):若干個(gè)要素類作為一個(gè)整體參與到幾何網(wǎng)絡(luò)的構(gòu)造,Geodatabase通過拓?fù)潢P(guān)聯(lián)保證參與到幾何網(wǎng)絡(luò)中的各個(gè)要素類的空間幾何的連通性。幾何網(wǎng)絡(luò)將導(dǎo)致保證網(wǎng)絡(luò)連通性的行為。 三. Geodatabase的優(yōu)勢: 1.所有圖形數(shù)據(jù)和屬性數(shù)據(jù)統(tǒng)一存儲在商業(yè)DBMS中。 2.便于使用DBMS支持的多用戶并發(fā)訪問、事務(wù)管理、失敗事務(wù)恢復(fù)、用戶權(quán)限策略等機(jī)制,有利于空間信息共享、數(shù)據(jù)安全,提高了數(shù)據(jù)庫性能。 3.支持智能化的要素、規(guī)則和關(guān)系。4.完善的用戶支持。 四.Geodatabase數(shù)據(jù)庫設(shè)計(jì)的內(nèi)容 1.基本內(nèi)容是規(guī)定 構(gòu)成數(shù)據(jù)庫的要素類、柵格數(shù)據(jù)集、其他表,以及表之間的各種關(guān)系。 2.其中,要素(或?qū)ο螅╊愔g的關(guān)系通過要素?cái)?shù)據(jù)集、關(guān)系類、拓?fù)鋪砉芾怼?/p> 3.一個(gè)要素?cái)?shù)據(jù)集中的各個(gè)要素類具有相同的空間參照;拓?fù)漕?、幾何網(wǎng)絡(luò)中的要素類受拓?fù)渫暾约s束。五 Geodatabase數(shù)據(jù)庫設(shè)計(jì)的步驟 1.用戶視圖建模 2.定義實(shí)體和關(guān)系 3.明確實(shí)體的表示 4.匹配到Geodatabase模型 5.組織地理數(shù)據(jù)集 六.將地理實(shí)體表示為Geodatabase數(shù)據(jù)類型 要在識別地理實(shí)體并決定其幾何表示類型之后,決定數(shù)據(jù)如何在Geodatabase中表示。具體包括兩方面處理: 1.決定各種地理實(shí)體的表示類型及其拓?fù)潢P(guān)系; 2.決定各實(shí)體的屬性字段。 決定實(shí)體的表示類型的依據(jù)是其幾何表示類型:點(diǎn)實(shí)體用點(diǎn)要素、簡單節(jié)點(diǎn)、復(fù)合節(jié)點(diǎn)表示,線實(shí)體用線要素、簡單邊、復(fù)合邊表示,面實(shí)體用多邊形要素表示,表面實(shí)體用TIN或柵格數(shù)據(jù)集表示,空間位置無關(guān)的實(shí)體用對象(表)表示。 ? 其中點(diǎn)、線、面實(shí)體的離散分布有兩種: 1.獨(dú)立分布的實(shí)體,與其他要素?zé)o關(guān),可以表示為簡單的點(diǎn)、線、面要素; 2.與其他要素的分布相關(guān),這種點(diǎn)、線實(shí)體可以表示為節(jié)點(diǎn)、邊要素,面實(shí)體表示為有拓?fù)潢P(guān)系的多邊形要素。 ? 考慮要素之間的拓?fù)潢P(guān)系,定義復(fù)合要素類:平面拓?fù)浜蛶缀尉W(wǎng)絡(luò)。?平面拓?fù)鋸?qiáng)制保證要素不能相互交叉而沒有交點(diǎn)。如土地或區(qū)劃系統(tǒng),采用平面拓?fù)涔芾硪亻g的公共邊。 ? 幾何網(wǎng)絡(luò)強(qiáng)制保持網(wǎng)絡(luò)要素之間的連通性,是網(wǎng)絡(luò)編輯易于操作。如對于線狀系統(tǒng),交通網(wǎng)絡(luò),多采用幾何網(wǎng)絡(luò)表示。? 確定對象的屬性類型 1.主要依據(jù)要素(或?qū)ο螅┑膶n}性質(zhì)而定。 2.每個(gè)實(shí)體可能有多種屬性,依據(jù)相關(guān)原則確定每種屬性(字段)的數(shù)據(jù)類型,使用默認(rèn)值、域等工具保證數(shù)據(jù)的完整性。六. 將數(shù)據(jù)組織到Geodatabase地理數(shù)據(jù)集 1.工作包括: (1).劃分要素類和子類(2).規(guī)定要素類的拓?fù)潢P(guān)系(3.)構(gòu)建地理數(shù)據(jù)集(4.)組織地理數(shù)據(jù)庫 (1)劃分要素類和子類 下列情況下必須建立單列的要素類: 1)當(dāng)各組相關(guān)要素的屬性字段組合根本不同時(shí) 2)當(dāng)各組相關(guān)要素需要有特有的定制行為時(shí) 3)當(dāng)需要對各組要素賦予不同存取權(quán)限時(shí) 4)當(dāng)有些要素要采用版本管理存取而另一些要素不需要版本管理時(shí)(2)規(guī)定要素類的拓?fù)潢P(guān)系 1)將相關(guān)要素分組為幾何網(wǎng)絡(luò)好或平面拓?fù)?/p> 2)如果要素類是獨(dú)立點(diǎn)、線、面要素,那么它不參與幾何網(wǎng)絡(luò)或者平面拓?fù)?/p> 3)如果要素類是簡單邊、簡單節(jié)點(diǎn)、復(fù)合邊、復(fù)合節(jié)點(diǎn),那么它參與幾何網(wǎng)絡(luò)的構(gòu)成 4)如果要素類是拓?fù)潢P(guān)聯(lián)的多邊形要素類,其內(nèi)部各個(gè)要素必須滿足特定的拓?fù)潢P(guān)系(3)構(gòu)建地理數(shù)據(jù)集 1)要素?cái)?shù)據(jù)集是一個(gè)容器,使用它可以將相似的要素類組合在一起。2)將具有相同空間參照的要素類組織到同一個(gè)要素?cái)?shù)據(jù)集中是有利的,因?yàn)椴煌財(cái)?shù)據(jù)集在運(yùn)算過程中可能會出現(xiàn)細(xì)微的差別而引起數(shù)據(jù)不一致。3)同時(shí)參加到平面拓?fù)浠驇缀尉W(wǎng)絡(luò)中的各個(gè)要素類必須被組織到同一個(gè)要素?cái)?shù)據(jù)集中。 (4)最后將要素?cái)?shù)據(jù)集和要素類組合起來。 1)確定了各要素及其拓?fù)渎?lián)系之后,最后需要將它們組合到地理數(shù)據(jù)庫中。2)如果企業(yè)用戶包括多個(gè)部門,不同部門使用不同的數(shù)據(jù)集。地理數(shù)據(jù)庫可以安裝企業(yè)組織結(jié)構(gòu)部署。 4)如果使用personal Geodatabases,由于數(shù)據(jù)庫容量的限制,必須對數(shù)據(jù)庫按專題或空間進(jìn)行分割。七. Geodatabase的建庫步驟 1.在F盤中建立自己的文件夾070141; 2.在自己的文件夾中建立個(gè)人數(shù)據(jù)庫database;截圖說明 3.在personal database中建立點(diǎn)要素a,線要素aa,面要素aaa。八. Geodatabase的拓?fù)浣?/p> 若干個(gè)要素類作為一個(gè)整體參與到幾何網(wǎng)絡(luò)的構(gòu)造,Geodatabase通過拓?fù)潢P(guān)聯(lián)保證參與到幾何網(wǎng)絡(luò)中的各個(gè)要素類的空間幾何的連通性。幾何網(wǎng)絡(luò)將導(dǎo)致保證網(wǎng)絡(luò)連通性的行為。 1.右鍵單擊數(shù)據(jù)庫database,點(diǎn)擊new再點(diǎn)擊Feature Dataset 截圖說明: 出現(xiàn)對話框New Feature Dataset 在name中填寫名字topology;2.點(diǎn)擊“下一步”出現(xiàn)如下對話框,點(diǎn)擊對話框中的Import,又出現(xiàn)對話框在Ext文件夾中點(diǎn)擊Blocks.shp,點(diǎn)擊Add即可添加數(shù)據(jù); 截圖說明; 再點(diǎn)擊繼續(xù)點(diǎn)擊下一步,下一步,F(xiàn)inish,即可建立topology; 3.右鍵單擊topology,點(diǎn)擊Import,再點(diǎn)擊Feature Class(mulitiple) 截圖說明: 出現(xiàn)如下對話框,在對話框中點(diǎn)擊第一個(gè)圖標(biāo)瀏覽,在出現(xiàn)的對話框中加入Ex1中的兩個(gè)數(shù)據(jù)Blocks.shp和Parcels.shp,點(diǎn)擊Add; 點(diǎn)擊ok,則topology中增加了Blocks.shp和Parcels.shp兩個(gè)數(shù)據(jù)項(xiàng); 4.右鍵單擊topology中的Blocks,點(diǎn)擊Properties 截圖說明: 出現(xiàn)如下對話框, 在對話框中的子類SubtypeField一欄下拉選擇Res,在Subtype中設(shè)置Code和Description為0,nonres;1,res; 點(diǎn)擊確定; 截圖說明: 4.同理設(shè)置Parcels的Properties; 5.右鍵單擊topology,點(diǎn)擊new,再點(diǎn)擊Topology: 6.在出現(xiàn)的如下對話框中點(diǎn)擊下一步 7在.出現(xiàn)的如下對話框中點(diǎn)擊下一步 8.在出現(xiàn)的New Topology如下對話框中點(diǎn)擊Select All 截圖說明: 9.在出現(xiàn)的New Topology如下對話框中,在Enter the number of ranks中填1; 10.點(diǎn)擊下一步,在出現(xiàn)的New Topology對話框中,點(diǎn)擊Add Rule,再Add Rule中的三欄中選擇Parcels,Must Not Overlap With,Blocks,點(diǎn)擊ok; 截圖說明: 點(diǎn)擊下一步,再點(diǎn)擊Finish.再出現(xiàn)的對話框是否拓?fù)洳樵?,點(diǎn)擊否。則在Topology中建立了topology-Topology。 11.打開ArcMap,將topology-Topology拖到ArcMap的Layers中,則在Layers中添加了topology-Topology,Blocks和Parcels; 截圖說明: 12.點(diǎn)擊工具欄中的View,點(diǎn)擊Toolbars,再點(diǎn)擊Topology,將出現(xiàn)進(jìn)行拓?fù)洳僮鞯腡opology工具欄;在Editor下拉菜單中點(diǎn)擊Starting Editor,將工具激活; 截圖說明: 13.點(diǎn)擊Topology工具欄的Topology Editor Tool圖標(biāo),雙擊弧線段,在結(jié)點(diǎn)處進(jìn)行操作即可 拓?fù)浣Y(jié)果圖:第三篇:大地測量上機(jī)實(shí)習(xí)報(bào)告
第四篇:計(jì)算機(jī)上機(jī)實(shí)習(xí)報(bào)告
第五篇:arcgis上機(jī)實(shí)習(xí)報(bào)告