《軟件工程導論》實驗報告(小組)_第1頁
《軟件工程導論》實驗報告(小組)_第2頁
《軟件工程導論》實驗報告(小組)_第3頁
《軟件工程導論》實驗報告(小組)_第4頁
《軟件工程導論》實驗報告(小組)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《軟件工程導論》實驗報生告學院:計算機科學與技術學院專業(yè)班級:指導教師:項目成員:項目課題:學校內部工資管理系統(tǒng)時間:2011年5月#7.5程序部分代碼然后根據(jù)這些程序流程圖進行實現(xiàn),得到了如下的主要代碼:7.5.1用戶注冊用戶注冊的代碼如下:voidwelcome1()(printf("\n=================================================\n");printf("II 請輸入序號 Il\n");printf("I I 1.用戶注冊。 I l\n");printf("I I 2.普通職工登陸。 I I\n");printf("I I 3.人事管理人員登錄。 I I\n");printf("I I 4.財務管理人員登錄。 I I\n");printf("I I 5.退出系統(tǒng) I I\n");printf("===================================================\n");}/*注冊界面*/voidwelcome2(){ printf("也=================================================\n");printf("II 請輸入序號 II\n");printf("II 1.普通職工注冊。 I I\n");printf("II 2.人事管理人員注冊。 I I\n");printf("II 3.財務管理人員登錄。 I I\n");printf("也=================================================\n");}voidwelcome3(){printf("\n\n\t\t注冊須知\n\n");printf("**************************************************\n");printf("* 1.printf("* 1.請?zhí)顚懩恼鎸嵸Y料!*\n");printf("**************************************************\n");voidzhuce(){Registered*reg=newRegistered;charchose;reg->welcome2();if(chose<='0'IIchose>='4'){while(chose<='0'||chose>='4'){printf("您的輸入有誤,請重新輸入:”);fflush(stdin);scanf("%c",&chose);fflush(stdin);}}elseif(chose=='1'){system("cls");reg->pzhuce();/*普通職工注冊*/}elseif(chose=='2'){system("cls");reg->rzhuce();/*人事管理人員注冊*/}else(chose=='3');{system("cls");reg->czhuce();/*財務管理人員注冊*/}}/*帳戶判斷*/intpsearch(char*user,char*pwd,char*real_pwd)/*判斷帳號是否相同,不相同返回1*/{FILE*file;charuser_buff[256],pwd_buff[256];file=fopen(cFile,"r");if(!file)return0;while(!feof(file)){if(fscanf(file,"%s%s\n",user_buff,pwd_buff)==EOF)return0;if(!strcmp(user_buff,user)){if(real_pwd)strcpy(real_pwd,pwd_buff);return1;}}fclose(file);return0;}intrsearch(char*user,char*pwd,char*real_pwd)/*判斷帳號是否相同,不相同返回1*/{FILE*file;charuser_buff[256],pwd_buff[256];file=fopen(rFile,"r");if(!file)return0;while(!feof(file)){if(fscanf(file,"%s%s\n",user_buff,pwd_buff)==EOF)return0;if(!strcmp(user_buff,user)){if(real_pwd)strcpy(real_pwd,pwd_buff);return1;}}fclose(file);return0;}intcsearch(char*user,char*pwd,char*real_pwd)/*判斷帳號是否相同,不相同返回1*/{FILE*file;charuser_buff[256],pwd_buff[256];file=fopen(wFile,"r");if(!file)return0;while(!feof(file)){if(fscanf(file,"%s%s\n",user_buff,pwd_buff)==EOF)return0;if(!strcmp(user_buff,user)){if(real_pwd)strcpy(real_pwd,pwd_buff);return1;}}fclose(file);return0;/*添加用戶*/intpadd(char*user,char*pwd,doublecoin_n){FILE*file;file=fopen(cFile,"a");if(!file)return0;fprintf(file,"%s%s\n",user,pwd,coin_n);fclose(file);return0;}intradd(char*user,char*pwd,doublecoin_n){FILE*file;file=fopen(rFile,"a");if(!file)return0;fprintf(file,"%s%s\n",user,pwd,coin_n);fclose(file);return0;}intcadd(char*user,char*pwd,doublecoin_n){FILE*file;file=fopen(wFile,"a");if(!file)return0;fprintf(file,"%s%s\n",user,pwd,coin_n);fclose(file);return0;}intpwenjian(char*user,char*pwd,doublecoin){if(psearch(user,pwd,NULL))return0;elsepadd(user,pwd,coin);return1;}intrwenjian(char*user,char*pwd,doublecoin){if(rsearch(user,pwd,NULL))return0;elseradd(user,pwd,coin);return1;}intcwenjian(char*user,char*pwd,doublecoin){if(csearch(user,pwd,NULL))return0;elsecadd(user,pwd,coin);return1;}voidpzhuce()/*注冊*/{structRegistered*p,*r;inti=0,k=0,judge1,judge2;charname[30];charpwd[30];//chcharch;intn;r=(structRegistered*)malloc(sizeof(structRegistered));p=(structRegistered*)malloc(sizeof(structRegistered));welcome2();printf("請輸入您的賬號:");fflush(stdin);gets(name);fflush(stdin);printf("請輸入您的密碼:");fflush(stdin);scanf("%s",&pwd);for(n=0;n<strlen(name);n++)/*判斷輸入信息是否正確*/{if(name[n]>='0'&&name[n]<='9'){continue;}elseif(name[n]>='a'&&name[n]<='z'){continue;}elseif(name[n]>='A'&&name[n]<='Z'){continue;}elseprintf("您輸入的賬號有誤!\n");printf("\n請選擇:按1返回主頁面.按任意鍵退出:");fflush(stdin);scanf("%c",&ch);fflush(stdin);if(ch=='1'){system("cls");}elseexit(0);}}strcpy(p->id,&name[0]);strcpy(p->psw,&pwd[0]);if806川12口8->14衛(wèi)-250,0))/*存入文件并輸出基本信息*/{system("cls");printf("注冊成功!”);printf("您的注冊信息如下,請牢記:也");printf("賬號:");puts(p->id);printf("密碼:");puts(p->psw);fflush(stdin);scanf("%c",&ch);fflush(stdin);if(ch=='1'){system("cls");}elseexit(0);}else/*如有相同帳號,注冊失敗*/{system("cls");printf("您輸入的帳號已經(jīng)存在!注冊失敗!\n");printf("請選擇:按1返回主頁面.按任意鍵退出:");fflush(stdin);scanf("%c",&ch);fflush(stdin);if(ch=='1'){system("cls");}elseexit(0);}}用戶登陸登錄模塊說明:程序:描述本程序是系統(tǒng)啟動時首先運行的程序,用戶通過本程序的認證進入系統(tǒng)。通過本程序,操作系統(tǒng)在內存為用戶分配一段內存,而且必須在此用戶退出之前常駐內存,以便對本系統(tǒng)的所有操作都是在此登陸用戶下進行。功能:本段程序功能非常簡單,提供新用戶注冊和響應登陸者,并根據(jù)用戶的權限打開不同的登陸界面。性能:該模塊若要注冊新用戶和響應登陸者,就必須對數(shù)據(jù)庫的用戶表進行查詢、核對和更改。經(jīng)過反復測試與優(yōu)化,我們將登陸時間限制在5秒以內,若超過5秒,就顯示登陸出錯信息。對新用戶注冊數(shù)據(jù)提交時間限制在5秒,若超過5秒,就提示注冊失敗。輸人項:本程序的輸入就兩大類,用戶名(工號)和密碼。以下為這兩類輸入項作以下限制。工號:必須是數(shù)字,字母組成。密碼:必須是數(shù)字、字母組成。輸出項:有四類輸出結果,登陸成功顯示財務管理用戶界面、登陸成功顯示人事管理用戶界面、登陸成功顯示普通職工界面、登陸不成功顯示錯誤信息。尚未解決的問題本模塊不能更好控制多次錯誤登錄。本系統(tǒng)的處理方式是退出本次登錄,該用戶只要再次運行程序即可繼續(xù)登錄。普通員工登錄設計說明:程序描述:本段程序主要為普通用戶設定的,該程序所獲得的內存保存在登錄一直到退出登錄為止。功能:本段程序主要是區(qū)分普通用戶和管理員用戶,普通用戶享有的權限很小,所享受的服務也相應的減少,只能查看自己的基本信息和自己的工資信息。其功能可用如下的功能模塊圖描述。性能:該模塊主要是查詢自己的基本信息和基本工資,由于數(shù)據(jù)處理量很小,所以要求每次執(zhí)行響應時間不得超過1.5秒。輸人項:按界面要求輸入要執(zhí)行的命令的編號。輸出項:顯示我的基本信息,如姓名,工號,性別,年齡等。顯示我的工作情況,如出勤工資、獎金、扣款等。算法:本段程序思想簡單,沒有特殊的算法,只是執(zhí)行對數(shù)據(jù)庫的查詢。接口:本模塊在查詢自己信息的時候,要與人事管理系統(tǒng)進行數(shù)據(jù)交換,那么就得有相應的接口來支持實現(xiàn)。存儲分配:本段程序只是執(zhí)行查詢功能,功能結束,內存所分配的資源也就被回收。登錄的代碼如下:voidpdenglu()/*登陸*/{FILE*fp;characcount[10+1],password[10+1],h;intm=1;charreal_account[100]; /*帳號緩存*/charreal_password[100]; /*密碼緩存*/intiFlag=0;printf("請輸入您的帳號:");fflush(stdin);gets(account);fflush(stdin);printf("請輸入您的密碼:");fflush(stdin);gets(password);fflush(stdin);while(m<3){fp=fopen(cFile,"r");if(!fp){printf("不能打開文件!按任意鍵退出!)scanf("%c",&h);fclose(fp);exit(0);}while(!feof(fp)){iFlag=0;fscanf(fp,"%s%s\n",real_account,real_password);if(strcmp(real_account,account)==0){iFlag=1;if(strcmp(real_password,password)==0){iFlag=2;break;}}}fclose(fp);if(iFlag==0){printf("您輸入的帳號不存在或密碼不正確!也請重新輸入:也");printf("請輸入您的帳號:");fflush(stdin);gets(account);fflush(stdin);printf("請輸入您的密碼:");fflush(stdin);gets(password);fflush(stdin);m=m+1;}else{break;}}if(iFlag==0){printf("您輸入帳號密碼不正確已經(jīng)3次,您被強制退出系統(tǒng)(按任意鍵退出)!");scanf("%c",&h);exit(0);}elseif(iFlag!=0){printf("登陸成功");scanf("%c",&h);}}voidrdenglu()/*登陸*/{FILE*fp;characcount[10+1],password[10+1],h;intm=1;charreal_account[100]; /*帳號緩存*/charreal_password[100]; /*密碼緩存*/intiFlag=0;printf("請輸入您的帳號:");fflush(stdin);gets(account);fflush(stdin);printf("請輸入您的密碼:");fflush(stdin);gets(password);fflush(stdin);while(m<3){fp=fopen(rFile,"r");if(!fp){printf("不能打開文件!按任意鍵退出!)scanf("%c",&h);fclose(fp);exit(0);}while(!feof(fp)){iFlag=0;fscanf(fp,"%s%s\n",real_account,real_password);if(strcmp(real_account,account)==0){iFlag=1;if(strcmp(real_password,password)==0){iFlag=2;break;}}}fclose(fp);if(iFlag==0){printf("您輸入的帳號不存在或密碼不正確!也請重新輸入:也");printf("請輸入您的帳號:");fflush(stdin);gets(account);fflush(stdin);printf("請輸入您的密碼:");fflush(stdin);gets(password);fflush(stdin);m=m+1;}else{break;}}if(iFlag==0){printf("您輸入帳號密碼不正確已經(jīng)3次,您被強制退出系統(tǒng)(按任意鍵退出)!");scanf("%c",&h);exit(0);}elseif(iFlag!=0){printf("登陸成功");scanf("%c",&h);}}人事部管理主要的代碼如下:#include<iostream>usingnamespacestd;classPersonnel{public:Personnel():t(-1),boo(true),m(0),d('F'){}/*構造函數(shù)初始化,t=-1表示沒有輸入出勤次數(shù),b=true表示職工出事狀態(tài)是在職的,m=0表示初始工資為0,d='F'表示沒有輸入等級。*/voidworktime();//出勤情況voidifworking(inta);//是否在職voidaward();/^U斷貢獻等級voidpand();~Personnel(){}private:intt;//出勤次數(shù)boolboo;//在職判斷標志intm;//基本工資intd;//記錄獎金額intk;//記錄扣款金額intbh;//職工編號intmoney;};voidPersonnel::worktime(){inttime;cout<<"inputtheperson'sworktimesinthemonth.\n";cin>>time;while(time>30||time<0){cout<<"Inputerror!\ninputagain:";cin>>time;}t=time;//根據(jù)出勤計算工資if(t>21)k=0;elseswitch(t){case20:k=100;break;case19:k=200;break;case18:k=400;break;default:k=800;break;}cout<<"扣款額"<<k<<endl;}voidPersonnel::ifworking(inta){if(a==0)boo=false;if(boo==false)cout<<"Thepersonretires.\n";elsecout<<"Thepersonkeepsworking.\n";)voidPersonnel::award(){charaward;//記錄獎勵等級cout<<"inputtheperson'slevel.\n";cout<<"Ais800.\tBis600.\tCis300.\t";cout<<"Dis200.\tEis100.\n";cin>>award;while(award<'A'llaward>'E'){cout<<"Inputerror!\ninputagain:";cin>>award;)if(award='A')d=800;elseif(award='B')d=600;elseif(award='C')d=300;elseif(award='D')d=200;elseif(award='E')d=100;cout<<"獎金額度:"<<d<<endl;)voidPersonnel::pand(){intg,d;do{〃職工編號的限制輸入cout<<"請輸入人員的編號:"<<endl;cin>>bh;g=bh/100;d=bh%100;}while(g<10llg>27ll(g>=10&&g<=19&&(d<1lld>20)));if(g==1211g==1511g==18)m=4000;elseif(g==1011g==19)m=3800;elseif(g==1111g==2411g==1611g==1711g==2011g==2111g==26)m=3500;elseif(g==2411g==2511g==27)m=3200;elsem=3000;cout<<"基本工資:"<<m<<endl;}〃基本工資的判斷voidEnter(){〃登錄cout<<"WelcometothePersonnel!\n";}intmain(){inta;//記錄是否離職intn;//記錄功能選項Enter();//功能表的列舉cout<<"menuis:\n";cout<<"0isexit.\n1isworktime.\n2isifworking.\n";cout<<"3isaward.\n4issalary.\n";cout<<"inputwhatdoyouwantto:";cin>>n;Personnelb;while(1){switch(n){case0:cout<<"ThankyouforthePersonnel\n";cout<<"Exiting \n";break;case1:b.worktime();break;case2:cout<<"ifthepersondoesnotwork,input0:";cin>>a;b.ifworking(a);break;case3:b.award();break;case4:b.pand();break;default:break;}if(a==0||n==0)break;cout<<"0isexit.\n1isworktime.\n2isifworking.\n";cout<<"3isaward.\n4issalary.\n";cin>>n;}system("pause");return0;財務部管理主要模塊的代碼如下:#include<iostream>usingnamespacestd;boolboo;inthuiz[1000][6];//用數(shù)組表示匯總表voidf1(){Personnel[i].money=Personnel[i].m+Personnel[i].d-Personnel[i].k;cout<<"該職工的工資為:"<<Personnel[i].money<<endl;}//工資計算voidf2(){huiz[i][0]=bh;huiz[i][1]=boo;huiz[i][2]=Personnel[i].m;huiz[i][3]=Personnel[i].d;huiz[i][4]=Personnel[i].k;huiz[i][2]=Personnel[i].money;}//生成匯總表voidf3(){intbh,g,d;do{〃職工編號的限制輸入cout<<"請輸入人員的編號:"<<endl;cin>>bh;g=bh/100;d=bh%100;}while(g<10||g>27||(g>=10&&g<=19&&(d<1||d>20)));boo=true;cout<<"人員變動成功!"<<endl;}//職工離退休管理voidcaiwubu(){inta,money,bh,g,d,c;boolboo;do{cout<<"請選擇要進行的操作"<<endl;cout<<"(1-職工工資計算,2-表格派送,3-離退休人員管理,0-退出):";cin>>a;}while(a!=1&&a!=2&&a!=3&&a!=0);//輸出提示信息,請用戶輸入命令選擇操作switch(a){case0:f1();break;case1:f1();break;〃職工工資計算case2:f2();break;//表格派送case3:f3();break;//離退休人員添加}}intmain(){caiwubu();system("pause");return0;}八、測試報告系統(tǒng)測試是工資管理系統(tǒng)的開發(fā)周期中的一個十分重要環(huán)節(jié)。盡管在系統(tǒng)開發(fā)周期的各個階段均采取了嚴格的技術審查,但依然難免會留下錯誤,如果沒有在投入運行前的系統(tǒng)測試階段被發(fā)現(xiàn)并糾正,問題遲早會在運行中暴露出來,到那時要糾正錯誤將會付出更大的代價。系統(tǒng)測試占用的時間、花費的人力和成本占軟件開發(fā)的很大比例。統(tǒng)計表明,開發(fā)較大規(guī)模的系統(tǒng),系統(tǒng)測試的工作量大約占整個軟件開發(fā)工作量的40%-50%。而對于一些特別重要的大系統(tǒng),測試的工作量和成本更大,甚至超過系統(tǒng)開發(fā)其他各階段的總和的若干倍。單元測試用戶注冊登陸測試1)主頁面測試輸入期望輸出實際輸出1注冊界面注冊界面2普通職工登錄界面普通職工登錄界面3人事管理用戶登錄界面人事管理用戶登錄界面4財務管理用戶登陸界面財務管理用戶登陸界面5退出系統(tǒng)退出系統(tǒng)2)注冊系統(tǒng)測試(普通用戶、人事管理人員、財務管理人員登錄測試一樣)輸入次數(shù)輸入期望輸出實際輸出賬號輸入密碼輸入1tyut1234注冊成功注冊成功2tyut1234賬號無效輸入的賬號已存在,注冊失敗

00冊錄0注登冊口區(qū)貝序工理理入00冊錄0注登冊口區(qū)貝序工理理入.^HaJM輸通.M1白人財■■■123圖8-1注冊界面圖8-2注冊成功界面c-D:X^fFJLS-KTrXDebugXruanjiangongcheng.ei端Xh居遙卷益朝萄&一晡松和二孩工返回主負面.故任率覆退,出二圖8-3重復注冊失敗界面3)登錄系統(tǒng)測試(普通用戶、人事管理人員、財務管理人員登錄測試一樣)輸入次數(shù)輸入期望輸出實際輸出賬號輸入密碼輸入1tyut1234登錄成功登錄成功2tyut12賬號或密碼錯誤輸入的賬號或密碼錯誤,重新輸入3wer23賬號不存在賬號不存在,任意鍵退出

,請強入您的帳號"yu七請輸入您的密伺電234登底成功圖8-4登陸成功界面設計過程中感覺這里最麻煩的就是界面設計,最初是無法進行重新繪圖,改用gotoxy之后就可以進行重繪了,如下:圖8-5用戶注冊登錄界面錯誤:無法存取文件,最終發(fā)現(xiàn)是函數(shù)使用錯誤:應該用fp=fopen("a.tx","w"),而不是使用只讀模式"r”,否則會產(chǎn)生很多錯誤。人事部測試單元測試主要分為人工靜態(tài)檢查和動態(tài)(自動)執(zhí)行跟蹤檢查,由于時間的原因,我們只進行了人工靜態(tài)檢查。我通過一些基本路徑來進行測試:直接選擇退出程序的選項:.進入人事部后輸入0,則程序會輸出歡迎使用,退出。這是運行結果:圖8-6人事部界面.選擇先輸入出勤次數(shù)不輸入獎勵等級(超過30或小于0會報錯,然后重新輸入),選擇后直接進行統(tǒng)計工資(因為沒有輸入初始工資,所以這里還要進行初始工資的輸入),之后程序會輸出沒有進行等級的輸入,不能進行工資統(tǒng)計。運行結果:圖8-7人事部出勤測試界面.選擇先輸入等級不輸入出勤(小于A或大于E會報錯,重新輸入)選擇后直接進行工資的統(tǒng)計(因為沒有輸入初始工資,所以這里要進行初始工資的輸入),之后程序會輸出沒有輸入出勤次數(shù),不能進行統(tǒng)計。運行結果:圖8-8人事部修改后出勤測試.輸入初始工資,但不進行其他的輸入。這里程序只會輸出基本工資,提示沒有輸入出勤和獎勵等級。運行結果:圖8-9人事部基本工資判斷測試.進行離職的輸入。不輸入0,為還繼續(xù)工作,輸入0,為退休。運行結果:圖8-10離職的測試.進行所有的輸入,查看最后的工資是否計算正確。運行結果:圖8-11人事部完整功能測試經(jīng)過這幾個途徑的測試,保證了程序的正確性,清晰性,規(guī)范性,高效性。8.1.3財務部測試A系統(tǒng)管理員模塊測試根據(jù)系統(tǒng)管理員模塊進行測試。比如口令設置中驗證無效的用戶是否能更改登錄口令;當用戶名或密碼出錯時,都會提示其相應的錯誤,且用戶名或密碼三次出錯就自動退出系統(tǒng)。當?shù)卿洺晒?,可以添加用戶,并且用戶可更改自己的密碼,這些都被保存在數(shù)據(jù)庫表中,均達到測試目標。B工資錄入模塊測試基本工資設置時可根據(jù)不同的職稱,設置其相應的基本工資;在其他項目設置時,可選擇多個項目進行設置,;在設置工資計算公式時,可以根據(jù)本企業(yè)的規(guī)章制度設置其相應的參數(shù),一旦設置成功時,就被保存到相應的數(shù)據(jù)庫表中,而如果一旦不小心設置錯了,可以重新錄入,而不會變動原有的數(shù)據(jù)內容,均達到測試目標。C工資查詢模塊測試輸入某個員工姓名或是職工編號,即可查詢本職工本月工資詳細情況,而且根據(jù)本系統(tǒng)的模塊設計,普通用戶查詢時可以根據(jù)姓名職工號直接查詢內容,而管理員則可以登陸主界面上,進行查詢的同時可以修改相應內容,從而給系統(tǒng)安全帶來保障,均達到測試目標。具體的測試內容如下:a.工程環(huán)境檢查;b.程序編寫檢查;c.初始畫面內容檢查;d.畫面控件功能檢查;e.輸入數(shù)據(jù)檢查;f.輸出數(shù)據(jù)檢查;g.報表打印檢查;h.其它需要檢查的內容(如:某性能要求)8.2黑盒測試輸入某個員工姓名或是職工編號,即可查詢本職工本月工資詳細情況,而且根據(jù)本系統(tǒng)的模塊設計,普通用戶查詢時可以根據(jù)姓名職工號直接查詢內容,而管理員則可以登陸主界面上,進行查詢的同時可以修改相應內容,從而給系統(tǒng)安全帶來保障,均達到測試目標。黑盒測試的最主要的特點就是在不知曉程序細節(jié)的情況下進行輸入輸出測試,其實也就是測試用例。測試用例表測試用例(主要)輸入預期輸出實際輸出用戶注

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論