第一篇:上機(jī)實(shí)習(xí)實(shí)踐報(bào)告大全
時(shí)代在進(jìn)步,社會(huì)在發(fā)展,而隨之而來的競(jìng)爭(zhēng)也非常嚴(yán)峻的擺在了我們的面前,現(xiàn)代社會(huì)所需要的已經(jīng)不再是單純的知識(shí)型人才。時(shí)代賦予人才新的定義:不僅能夠駕馭新科技,具有創(chuàng)新意識(shí),更要有將科技應(yīng)用于實(shí)踐的能力。專業(yè)組織的這次實(shí)踐,讓那個(gè)我獲益匪淺。我們都知道,天下沒有免費(fèi)的午餐,守株能待兔最終會(huì)遭到失敗——只有全心投入,才能有真切的感受。同時(shí),我也想通過親身體驗(yàn)實(shí)踐讓自己更進(jìn)一步了解自己所學(xué)的專業(yè)知識(shí),在實(shí)踐中增長(zhǎng)見識(shí),鍛煉自己的才干,培養(yǎng)自己的韌性,更為重要的是檢驗(yàn)一下自己所學(xué)的東西能否被社會(huì)所用,自己的能力能否被社會(huì)所承認(rèn)。想通過實(shí)踐,找出自己的不足和差距所在,為將來的努力制定一個(gè)方向。
上機(jī)實(shí)踐使同學(xué)們找到了理論與實(shí)踐的最佳結(jié)合點(diǎn)。尤其是我們學(xué)生,只重視理論學(xué)習(xí),忽視實(shí)踐環(huán)節(jié),往往在實(shí)際工作崗位上發(fā)揮的不很理想。通過實(shí)踐所學(xué)的專業(yè)理論知識(shí)得到鞏固和提高。就是緊密結(jié)合自身專業(yè)特色,在實(shí)踐中檢驗(yàn)自己的知識(shí)和水平。通過實(shí)踐,原來理論上模糊和印象不深的得到了鞏固,原先理論上欠缺的在實(shí)踐環(huán)節(jié)中得到補(bǔ)償,加深了對(duì)基本原理的理解和消化。
在此期間,我經(jīng)歷了一次次的失敗和成功,更加鍛煉了我的心理素質(zhì)。剛開始做程序,總覺得無從下手,但后來慢慢深入才發(fā)現(xiàn),這也是件有趣的事情。自己做的程序要符合使用者的要求,而且對(duì)自己的程序設(shè)計(jì)要想到周到,怎樣做到更加人性化是我努力的方向,因此,我對(duì)自己的程序進(jìn)行了全面的測(cè)試。這個(gè)過程,讓我知道了自己的長(zhǎng)處和短處,同時(shí)鍛煉了我的思維,沒有失敗哪來成功,在我的不斷努力下,我終于完成了自己的作品,經(jīng)歷了這些,我終于發(fā)現(xiàn)只有不斷努力、不放棄才能走向成功。
以上是我的社會(huì)實(shí)踐個(gè)人總結(jié)。在勞累忙碌的十幾天里,我也體會(huì)到了實(shí)踐的快樂,同時(shí)也感到了所學(xué)知識(shí)的不足,在以后的日子里必須繼續(xù)更加努力學(xué)習(xí),學(xué)好專業(yè)知識(shí),全面發(fā)展自己,在實(shí)踐中長(zhǎng)知識(shí)求發(fā)展。在以后的日子里,不可避免的,我還將面對(duì)更多的問題,將承擔(dān)更大的責(zé)任,并在其中更加成熟和真正走入社會(huì)。而這次社會(huì)實(shí)踐,就算是我走向社會(huì)的第一步吧。
第二篇:MATLAB上機(jī)實(shí)踐報(bào)告
clear all;
load('Hsoa2ib2.mat')
Hsoa2ib2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsoa2ib1.mat')
Hsoa2ib1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsoa1ib2.mat')
Hsoa1ib2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsoa1ib1.mat')
Hsoa1ib1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hscb2cb2.mat')
Hscb2cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hscb2cb1.mat')
Hscb2cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hscb1cb2.mat')
Hscb1cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hscb1cb1.mat')
Hscb1cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca2cb2.mat')
Hsca2cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca2cb1.mat')
Hsca2cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca2ca2.mat')
Hsca2ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca2ca1.mat')
Hsca2ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca1cb2.mat')
Hsca1cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca1cb1.mat')
Hsca1cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca1ca2.mat')
Hsca1ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hsca1ca1.mat')
Hsca1ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hoa2ca2.mat')
Hoa2ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hoa2ca1.mat')
Hoa2ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hoa1ca2.mat')
Hoa1ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hoa1ca1.mat')
Hoa1ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb2ib2.mat')
Hcb2ib2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb2ib1.mat')
Hcb2ib1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb2cb2.mat')
Hcb2cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb2cb1.mat')
Hcb2cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb1ib2.mat')
Hcb1ib2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb1ib1.mat')
Hcb1ib1=(a4+1i*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb1cb2.mat')
Hcb1cb2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hcb1cb1.mat')
Hcb1cb1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hca2ca2.mat')
Hca2ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hca2ca1.mat')
Hca2ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hca1ca2.mat')
Hca1ca2=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;load('Hca1ca1.mat')
Hca1ca1=(a4+j*a5);f=a0;clear a0a1a2a3a4a5a6a7a8;
for k=2:401;w=2*pi*f
[Hcaca]=[Hca1ca1(k),Hca1ca2(k);Hca2ca1(k),Hca2ca2(k)]/(-w(k)^2);[Hcbcb]=[Hcb1cb1(k),Hcb1cb2(k);Hcb2cb1(k),Hcb2cb2(k)]/(-w(k)^2);[Hcbib]=[Hcb1ib1(k),Hcb1ib2(k);Hcb2ib1(k),Hcb2ib2(k)]/(-w(k)^2);[Hoaca]=[Hoa1ca1(k),Hoa1ca2(k);Hoa2ca1(k),Hoa2ca2(k)]/(-w(k)^2);
[Hscaca]=[Hsca1ca1(k),Hsca1ca2(k);Hsca2ca1(k),Hsca2ca2(k)]/(-w(k)^2);
[Hscacb]=[Hsca1cb1(k),Hsca1cb2(k);Hsca2cb1(k),Hsca2cb2(k)]/(-w(k)^2);
[Hscbcb]=[Hscb1cb1(k),Hscb1cb2(k);Hscb2cb1(k),Hscb2cb2(k)]/(-w(k)^2);
[Hsoaib]=[Hsoa1ib1(k),Hsoa1ib2(k);Hsoa2ib1(k),Hsoa2ib2(k)]/(-w(k)^2);KsD=inv(Hscaca*transpose(inv(Hscacb))*Hscbcb-Hscacb);Ks11D(k)=KsD(1,1);Ks22D(k)=KsD(2,2);
KsP=inv(Hcbib*inv(Hsoaib)*Hoaca-Hcaca-Hcbcb);Ks11P(k)=KsP(1,1);Ks22P(k)=KsP(2,2);
Ks11(k)=197800+j*w(k)*1344.2;Ks22(k)=189300+j*w(k)*1625.4;end
subplot(2,1,1);
semilogy(f,abs(Ks11D),'--r',f,abs(Ks11P),'-y',f,abs(Ks11),':b');subplot(2,1,2);
semilogy(f,abs(Ks22D),'--r',f,abs(Ks22P),'-y',f,abs(Ks22),':b');grid on,xlabel('頻率'),ylabel('動(dòng)剛度'),title('半對(duì)數(shù)頻譜圖'),legend('直接法','間接法','測(cè)量法');
第三篇: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 心得體會(huì)............................................................................................................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ā)來的信號(hào),馬上給出報(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退出
心得體會(huì)
通過運(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)限問題,我們?cè)趓oot用戶下運(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ā)來的信號(hào),馬上給出報(bào)告 運(yùn)行過程 圖表 26首先運(yùn)行守護(hù)進(jìn)程之后查看 當(dāng)前進(jìn)程 圖表 27可以發(fā)現(xiàn)守護(hù)進(jìn)程-jincheng在后臺(tái)運(yùn)行,且 PPID=1,PID=4085 圖表 28可以發(fā)現(xiàn)守護(hù)進(jìn)程向test.txt發(fā)送了start 圖表 29向守護(hù)進(jìn)程發(fā)送終止信號(hào),終止守護(hù)進(jìn)程 圖表 30可以發(fā)現(xiàn)后臺(tái)運(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í),在設(shè)計(jì)過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過編程,使我們掌握的知識(shí)不再是紙上談兵。 過而能改,善莫大焉。在課程設(shè)計(jì)過程中,我們不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢測(cè)調(diào)試環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多問題,最后在老師的指導(dǎo)下,終于游逆而解。在今后社會(huì)的發(fā)展和學(xué)習(xí)實(shí)踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上披荊斬棘,而不是知難而退,那樣永遠(yuǎn)不可能收獲成功,收獲喜悅,也永遠(yuǎn)不可能得到社會(huì)及他人對(duì)你的認(rèn)可! 實(shí)踐課誠(chéng)然是一門專業(yè)課,給我很多專業(yè)知識(shí)以及專業(yè)技能上的提升,同時(shí)又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時(shí),設(shè)計(jì)讓我感觸很深。使我對(duì)抽象的理論有了具體的認(rèn)識(shí)。 我認(rèn)為,在這學(xué)期的課程設(shè)計(jì)中,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種 其它能力上也都有了提高。更重要的是,在課程設(shè)計(jì)上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對(duì)于我們的將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國(guó)提倡的艱苦奮斗一樣,我們都可以在實(shí)驗(yàn)結(jié)束之后變的更加成熟,會(huì)面對(duì)需要面對(duì)的事情。 回顧起此課程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。 題目: 大地測(cè)量學(xué)上機(jī)實(shí)習(xí) 學(xué) 號(hào): 姓 名: 班 級(jí): 專 業(yè): 測(cè)繪工程 課程名稱: 大地測(cè)量學(xué)基礎(chǔ) 課程老師: 大地測(cè)量學(xué)上機(jī)實(shí)習(xí)報(bào)告 一、實(shí)習(xí)目的: 了解大地測(cè)量學(xué)的定義以及作用,讓同學(xué)們充分了解大地測(cè)量學(xué)在現(xiàn)代社會(huì)的重要地位及其廣泛的應(yīng)用,讓同學(xué)們體驗(yàn)大地測(cè)量的一些解題計(jì)算方法與運(yùn)用。也讓同學(xué)們對(duì)于復(fù)雜的測(cè)繪計(jì)算如何用計(jì)算機(jī)通過編程來解決,同時(shí)對(duì)于坐標(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、對(duì)編寫的程序代碼進(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為橢球的長(zhǎng)半軸,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:請(qǐng)輸入1 或 X,Y,Z→L,B,H:請(qǐng)輸入2n”);scanf(“%d”,&b);printf(“請(qǐng)選擇參考橢球面:n克拉索夫斯基橢球(請(qǐng)輸入1)n或 IUGG 1975橢球(請(qǐng)輸入2)n或 CGCS 2000橢球(請(qǐng)輸入3)n或WGS-84橢球體(請(qǐng)輸入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)的子午線弧長(zhǎng) X,即(8-33)式第一式中,當(dāng) 有: 顧及(對(duì)于中央子午線) 時(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(“請(qǐng)輸入x坐標(biāo)和y坐標(biāo):(輸入時(shí)x坐標(biāo)和y坐標(biāo)之間用逗號(hà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ù)雜的測(cè)繪計(jì)算,并且也知道了對(duì)于編程時(shí)遇到的一般問題該如何解決,對(duì)于坐標(biāo)轉(zhuǎn)換和高斯正反算的一些理念也有一定的了解。本次實(shí)習(xí),利用計(jì)算機(jī)編程來實(shí)現(xiàn)測(cè)量數(shù)據(jù)的處理,讓我對(duì)坐標(biāo)系之間的轉(zhuǎn)化,高斯投影正反算的原理以及計(jì)算過程有了更深刻的理解和記憶,感覺受益匪淺。不過在本次實(shí)習(xí)期間,也出現(xiàn)了一些小問題。在編寫程序的時(shí)候,略顯生疏,花費(fèi)了較多的時(shí)間,以后有待提高;對(duì)于計(jì)算公式中的有的字母,忘記其所代表的具體意義,不過最終通過復(fù)習(xí),搞明白每一個(gè)字母的含義。 實(shí)習(xí)就是一個(gè)理論與實(shí)踐相結(jié)合的過程,希望自己能在這一方面有更大的進(jìn)步! 計(jì)算機(jī)上機(jī)實(shí)習(xí)報(bào)告 姓名:張陸浩 班級(jí):高材11001 學(xué)號(hào):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ā)簡(jiǎn)單應(yīng)用程序的全過程,包括:分析﹑設(shè)計(jì)﹑編程﹑調(diào)試和編寫報(bào)告.二.實(shí)習(xí)要求: (一)。用記事本新建一個(gè)文本文件,將本班M名學(xué)生N門考試課的成績(jī)輸入到這個(gè)文件中,建議按如下形式存放(注:20=M<=50,5<=N<=8,下文以M=4,N=3為例): 學(xué)號(hào) 姓名 英語 數(shù)學(xué) 物理 化學(xué) VB 1 張陸浩 2 林丹 3 李宗偉 4 李永波 (二)。將N門考試課以及其分?jǐn)?shù)輸入到另一個(gè)數(shù)據(jù)文件(文件類型同上題)中,建議以下列形式存放: 編號(hào) 課程名稱 課程學(xué)分 1 英語 5.0 2 數(shù)學(xué) 4.5 3 物理 5.0 4 化學(xué) 4.5 5 VB 4.5 (三)。請(qǐng)編寫一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理程序,以完成以下功能: 1.根據(jù)以上兩文件內(nèi)容分別計(jì)算每個(gè)學(xué)生N門課程的加權(quán)平均分(保留兩位小數(shù),四舍五入),按平均分排列名次,平均分相同則名 次并列。用VB創(chuàng)建一個(gè)數(shù)據(jù)文件,存放班級(jí)的成績(jī)表。 2.分別統(tǒng)計(jì)全班每門課的平均分,并計(jì)算各分?jǐn)?shù)段(90分以上;80~89;70~79;60~69;60分以下)的學(xué)生數(shù)。.3.打印每名學(xué)生成績(jī)條(并將結(jié)果存放到用VB創(chuàng)建的一個(gè)新的數(shù)據(jù)文件中)。 4.顯示所有存在不及格課程的學(xué)生的名單(含學(xué)號(hào),不及格課程名稱,課程的學(xué)分及成績(jī))。 5.屏幕顯示優(yōu)等生名單及打印每門課程成績(jī)分布圖。優(yōu)等生條件(只要滿足三個(gè)中任一個(gè)就可以): a)平均分>=90分 b)名次在本班位于前四名 c)平均分>=85分,并且至少有一門課的成績(jī)>=95分 三、實(shí)習(xí)步驟 1、用記事本新建一個(gè)學(xué)生成績(jī)文本文件(其中包括學(xué)生學(xué)號(hào),成績(jī),姓名,課程及成績(jī))。 2、用記事本新建一個(gè)課程學(xué)分文本文件。 3、編輯菜單編輯器:編輯四個(gè)可拉式菜單,包括學(xué)生成績(jī)、成績(jī)處理、成績(jī)編輯、畫圖。 4、編輯代碼:分別編輯打印學(xué)生成績(jī)和學(xué)分代碼,編輯加權(quán)平均分、各科平均分、分?jǐn)?shù)段、成績(jī)條、排名、優(yōu)等生、差等生的代碼,還有畫各科目成績(jī)?nèi)藬?shù)圖的代碼。 5、調(diào)試程序代碼并保存。 6、打印代碼。 三.相關(guān)數(shù)據(jù)列表: (一)。源文件 (1)成績(jī) 學(xué)號(hào) 姓名 英語 數(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é)分 編號(hào) 課程名稱 課程學(xué)分 1 英語 5.0 2 數(shù)學(xué) 4.5 3 物理 5.0 4 化學(xué) 4.5 5 VB 4.5 四.運(yùn)行效果: (一).學(xué)生管理 (1)打開課程成績(jī)及學(xué)分 (2)打開計(jì)算的加權(quán)平均分﹑排名及各科平均分 (三).編輯 (1)打開計(jì)算的各科人數(shù)分布 (2)打開按學(xué)號(hào)查找每個(gè)學(xué)生的成績(jī) a)輸入要查找學(xué)生的學(xué)號(hào) b)得到該生的成績(jī)條 (3)打開查找到的優(yōu)等生信息 (4)打開不及格學(xué)生的分布 (四).成績(jī)分布圖 五.實(shí)習(xí)小結(jié) 通過兩個(gè)星期的上機(jī)實(shí)習(xí),我體會(huì)頗深,不僅表現(xiàn)在VB語言程序設(shè)計(jì)中,而且表現(xiàn)在與人交流和獨(dú)立自主完成任務(wù)的決心中。 本次上機(jī)在VB程序設(shè)計(jì)中我學(xué)會(huì)了很多以前不會(huì)或根本一點(diǎn)都不懂的東西。比如,在程序設(shè)計(jì)過程中,剛開始我弄不清楚怎樣把編輯的文件讀到VB中,但是通過詢問老師和同學(xué)討論,終于弄清了思路,即先將文件打開,再將數(shù)據(jù)分別放入若干個(gè)數(shù)組中,最后再將它讀出來。除此之外,我還明白了變量的作用域?qū)幊痰闹匾院妥舆^程,函數(shù)過程數(shù)據(jù)處理的幫助。而對(duì)以前學(xué)的,像選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)等也進(jìn)行了鞏固和運(yùn)用。在數(shù)據(jù)處理和打印的時(shí)候進(jìn)行了大量運(yùn)用。為了使程序更人性化化,我還運(yùn)用了msgbox,inputbox等方法,使我對(duì)所學(xué)的知識(shí)進(jìn)行了綜合的運(yùn)用。 我相信通過這次實(shí)習(xí),我對(duì)VB和計(jì)算機(jī)語言都有了更深刻的認(rèn)識(shí)。雖然在實(shí)習(xí)的過程中,我發(fā)現(xiàn)了自己在編寫程序中的不足,像思維不夠嚴(yán)密等,但我相信,只要認(rèn)真、努力就一定會(huì)有收獲 六.程序代碼 (一).創(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(二).讀取考試成績(jī)和課程學(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é)號(hào)”;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()“打印成績(jī)條” Form1.Cls n = InputBox(“請(qǐng)輸入學(xué)號(hào)”)Print “學(xué)號(hào)”;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é)號(hào)”;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).成績(jī)分布圖 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第四篇:大地測(cè)量上機(jī)實(shí)習(xí)報(bào)告
第五篇:計(jì)算機(jī)上機(jī)實(shí)習(xí)報(bào)告