《軟件工程》實驗報告
姓
名: : 江文杰
學
號 :1390743 33
班
級: :網 網 133
指導老師: : 周兵
一.
實驗目得 1.能按照軟件工程得思想,采用面向過程得方法開發出一個小型軟件系統。
2.在軟件系統開發過程中,能綜合利用一門編程語言與軟件工程等多門課程得知識。
3.培養良好得軟件開發習慣,了解軟件企業文化。
4.掌握結構化數據流分析技術。
5.掌握結構化程序設計得基本概念與技術,并且養成良好得編碼風格。
6.掌握單元測試得一般步驟及技術。
7.掌握集成測試得一般步驟與技術。
二.
實驗內容 1 . 軟件需求分析
① 、功能需求分析
·輸入一個年份(13000),然后顯示 12 個月得月歷
·能解決閏年與平年問題
·能輸出顯示結果 ②、運行需求分析
·
操作系統: Windows9x,
Windows2000, Windows XP 及更高版本 ③、數據流圖
軟件結構圖:
2 . 軟件設計與編碼 #include <stdio、h> #include <ctype、h> #include <stdlib、h> #include <math、h> #define firstdayof1 1
/* 定義第一年得第一天, 星期日=7 */ #define gap "
"
/* set gap between numbers of dates */ #define dent "
"
/* set right margin、 */ struct info {
int month;
int firstdayofmonth;
int daysofmonth;
int leap;
}monthinfo; int checkinput(void); checkinput main output inputyear isleap
setinit setinfo printhead printmonth 檢查輸入 確定年份 算 計算 1 月 月 1 日 示 顯示 1 月 示 顯示 2 月 示 顯示 12 月 顯示表頭 顯示其她月份 錯誤 非法 年份 年份 年份 年份 就是否閏開始信息 開始信息 任 意鍵
int inputyear(void); int isleap(int y); void output(struct info); void printhead(struct info ); void printmonth(struct info); struct info setinit(int); struct info setmonthinfo(struct info ); /* 這個作用就是判斷年, 如果就是閏年,
return 1, 否則
return 0
*/ int isleap(int y) {
return ((y%4==0 && y%100!=0)
|| y%400==0); } /* This module is to accept inputyear and check if it is correct、 if it is
correct it return int year, otherwise ask user reenter
*/ int checkinput(void) {
int y;
do{
y=inputyear;
if(y<1 || y >3000)
{
printf("\n 輸入錯誤!。\n\n");
y=0;
}
}while(y<1);
return y;
} /* This function is to accept the input year, if it is the integer, it returns
it, otherwise it return 1
*/ int inputyear(void) {
char s[80];
int i, y;
y=1;
printf("請輸入年份(13000):");
for(i=0;i<80;++i)
{
s[i]=getchar;
if(s[i]==27)
exit(0);
if(s[i]==10)
break;
}
for(i=0;i<80;++i)
{
if(s[i]==10) break;
else if(!isdigit(s[i]))
return y;
}
y=atoi(s);
return y; } /*This module is to accept monthinfo, and print the whole year calender、
*/ void output(struct info monthinfo) {
char ch;
do{
printhead(monthinfo);
printmonth(monthinfo);
printf("按任意鍵顯視下一月, 按 Esc 鍵退出、 \n");
ch=getchar;
if(ch==27)
exit(0);
monthinfo=setmonthinfo(monthinfo);
}while(monthinfo、month<13); } /* This module is to accept monthinfo, amd print monthly head like"一
月"
*/ void printhead(struct info monthinfo) {
char *ss;
printf("%s",dent);
switch(monthinfo、month)
{
case 1:
ss="一
月";
break;
case 2:
ss="二
月";
break;
case 3:
ss="三
月";
break;
case 4:
ss="四
月";
break;
case 5:
ss="五
月";
break;
case 6:
ss="六
月";
break;
case 7:
ss="七
月";
break;
case 8:
ss="八
月";
break;
case 9:
ss="九
月";
break;
case 10:
ss="十
月";
break;
case 11:
ss="十一
月";
break;
case 12:
ss="十二
月";
}
printf("
%s%s%s%s\n\n",gap,gap,gap,ss); } /* This module is to accept monthinfo, and print the numbered dates of the
month 、
*/ void printmonth(struct info monthinfo) {
int i,j,k;
printf("%s",dent);
printf(" 一 %s 二 %s 三 %s 四 %s 五 %s 六 %s 日\n\n",gap,gap,gap,gap,gap,gap);
printf("%s",dent);
for(i=1;i<monthinfo、firstdayofmonth;i=i+1)
{
printf("%s
",gap);
}
k=monthinfo、firstdayofmonth;
for(j=1;j<=monthinfo、daysofmonth;j=j+1)
{
if(k>7)
{
k=k7;
printf("\n\n%s",dent);
};
k=k+1;
printf("%2d%s",j,gap);
}
printf("\n\n"); } /* This module is to accept the monthinfo, and set the monthinfo of next month、
*/
struct info setmonthinfo(struct info monthinfo) {
int m;
monthinfo、firstdayofmonth= (monthinfo、firstdayofmonth+ \
monthinfo、daysofmonth1)%7+1;
monthinfo、month=monthinfo、month+1;
monthinfo、daysofmonth=30;
m=monthinfo、month;
if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m ==12)
monthinfo、daysofmonth=31;
if(m==2)
{
if(monthinfo、leap)
monthinfo、daysofmonth = 29;
else
monthinfo、daysofmonth = 28;
}
return monthinfo; } /* This module is to initialize the monthinfo、 */
struct info setinit(int year) {
int i,days,total;
struct info monthinfo;
monthinfo、month=1;
monthinfo、firstdayofmonth=firstdayof1;
for(i=1;i<year;i=i+1)
{
if(isleap(i))
days=366;
else
days=365 ;
monthinfo 、 firstdayofmonth=(monthinfo 、firstdayofmonth+days1)%7+1;
}
monthinfo、daysofmonth=31;
monthinfo、leap=isleap(year);
return monthinfo; } void main{ printf("
\t\t************************************
\n");
printf("
\t\t 歡 迎 使 用 萬 年 歷 演 示 程 序
\n");
printf("
\t\t************************************
\n");
int year ;
struct info monthinfo;
year = checkinput;
monthinfo = setinit(year);
output(monthinfo); } 3 . 單元測試
白盒測試
② ②. 黑盒測試 2015 年
三月四月
五月六月
2016 年:
三.
總結與體會 用 本次用 C 語言編寫得萬年歷系統主要實現了年歷、月歷、日歷得顯示。我根本就不喜歡敲代碼了, 瞧見代碼就頭疼。所以感覺厭惡這門專業 業, 對學習也不感興趣了。而且, 還有一件更頭疼得事就是在寫一個簡單得程序時竟然老就是出錯, 難一點得,復 復懂 雜一點得程序竟然無從下手。但就是去瞧程序得參考答案時都瞧得懂, 又感覺很容易。學了軟件工程以后, 我就感覺我以前得學習方法就是錯誤得。以前我只注重于代碼 碼, 而不注重理論知識以及編程得思路, 程序得架構。以至于在些程序時沒有寫程序得思路, 不能形成程序得架構。只想到瞧腦袋里就是否有與此類似得代碼。越想程序越亂 亂, 最后腦袋里一片空白。不知道程序從哪個方面下手了。軟件工程這門課程就是做軟件開發得人必學得課程, 通過學這門課程,程 程 序員就會注重軟件開發得理論知識,以 以及做項目開發得思路。學了這門課程后您寫程序就不會去盲目得去套用代碼, 而就是
理清此程序得架構以及思路。程序該從什么時候開始, 什么時候結束。在中間需要添加什么樣得功能, 以完善該軟件。
在設計初期, 首先溫習了課本內容, 再次熟悉了一下 C 語言程序, 然后廣泛得查找有關萬年歷得資料, 并結合查找到得資料, 整理出設計得主要思路, 畫出流程圖, 最終寫出了源程序, 并編譯成功, 在實驗中, 碰到了不少問題, 其中包括如何獲取系統時間,如 如何計算任意時間得時間差, 這些困難, 都通過查閱資料與問同學得到了解決。當然 然,由 由于時間與能力得原因, 做得還不就是很完美。
在這學期得課程序設計中, 收獲知識得同時, 還收獲了閱歷, 收獲了成熟, 通過查找大量資料, 請教老師, 以及不懈得努力, 不僅培養了獨立思考、 動手制作得能力, 在各種其它能力上也都有了提高。更重要得就是, 在課程序設計里, 我們學會了很多學習得方法 法, 知道了理論與實踐得巨大差別。而這就是以后最實用得, 真得就是受益匪淺。要面 對社會得挑戰, 只有不斷得學習、實踐, 再學習、再實踐。同時在與老師與同學得交流過程中, 互動學習, 將知識融會貫通。通過自己得努力, 做出了一個萬年歷, 對以后得學習 就是一個莫大得鼓舞, 激起了我得學習興趣與開發創新思維。
在調試過程中主要得問題就就是結果得顯示問題, 顯示易錯位。以及函數之間調用問題。對于這些問題, 主要就是翻閱書籍與在網絡上尋找解決方案, 以及自己親自用找到得方法去測試, 最終成功得解決了問題。
通過這次課程設計,對 使我對 C 語言了解不再停留在書面得了解, 而就是有了更深得理解, 培養了自己得分析能力與設計能力, 受益匪淺。
推薦訪問: 軟件工程 安徽 工業大學在偉大祖國73華誕之際,我參加了單位組織的“光影鑄魂”主題黨日活動,集中觀看了抗美援朝題材影片《長津湖》,再一次重溫這段悲壯歷史,再一次深刻感悟偉大抗美援朝精神。1950年10月,新中國剛剛成立一年,
根據省局黨組《關于舉辦習近平談治國理政(第四卷)讀書班的通知》要求,我中心通過專題學習、專題研討以及交流分享等形式,系統的對《習近平談治國理政》(第四卷)進行了深入的學習與交流,下面我就來談一談我個人
《習近平談治國理政》(第四卷)是在百年變局和世紀疫情相互疊加的大背景下,對以習近平同志為核心的黨中央治國理政重大戰略部署、重大理論創造、重大思想引領的系統呈現。它生動記錄了新一代黨中央領導集體統籌兩個
《真抓實干做好新發展階段“三農工作”》是《習近平談治國理政》第四卷中的文章,這是習近平總書記在2020年12月28日中央農村工作會議上的集體學習時的講話。文章指出,我常講,領導干部要胸懷黨和國家工作大
在《習近平談治國理政》第四卷中,習近平總書記強調,江山就是人民,人民就是江山,打江山、守江山,守的是人民的心。從嘉興南湖中駛出的小小紅船,到世界上最大的執政黨,在中國共產黨的字典里,“人民”一詞從來都
黨的十八大以來,習近平總書記以馬克思主義戰略家的博大胸襟和深謀遠慮,在治國理政和推動全球治理中牢固樹立戰略意識,在不同場合多次圍繞戰略策略的重要性,戰略和策略的關系,提高戰略思維、堅定戰略自信、強化戰
《習近平談治國理政》第四卷集中展示了以習近平同志為核心的黨中央在百年變局和世紀疫情相互疊加背景下,如何更好地堅持和發展中國特色社會主義而進行的生動實踐與理論探索;對于新時代堅持和發展什么樣的中國特色社
在黨組織的關懷下,我有幸參加了區委組織部組織的入黨積極分子培訓班。為期一周的學習,學習形式多樣,課程內容豐富,各位專家的講解細致精彩,對于我加深對黨的創新理論的認識、對黨的歷史的深入了解、對中共黨員的
《習近平談治國理政》第四卷《共建網上美好精神家園》一文中指出:網絡玩命是新形勢下社會文明的重要內容,是建設網絡強國的重要領域。截至2021年12月,我國網民規模達10 32億,較2020年12月增長4
剛剛召開的中國共產黨第十九屆中央委員會第七次全體會議上討論并通過了黨的十九屆中央委員會向中國共產黨第二十次全國代表大會的報告、黨的十九屆中央紀律檢查委員會向中國共產黨第二十次全國代表大會的工作報告和《