物件導向程式設計實驗報告一

2021-03-27 01:15:09 字數 2586 閱讀 4629

課程實驗報告

課程名稱:物件導向程式設計

實驗名稱:面向過程的整型棧程式設計

院系 :電腦科學與技術

專業班級 : cs1201

學號 : u201214819

姓名 : 魏茹珺

指導教師 : 馬光志

2015 年 1 月 5 日

1、需求分析

1. 題目要求

整型棧是一種先進後出的儲存結構,對其進行的操作通常棧括判斷棧是否為空、向棧頂新增乙個整型元素、出棧等。整型棧型別及其操作函式採用非物件導向的純c語言定義,請將完成上述操作的所有函式採用純c語言程式設計, 然後寫乙個main函式對棧的所有操作函式進行測試。

struct stack;

void initstack(stack *const p, int m); //初始化p指向的棧:最多m個元素

void initstack(stack *const p, const stack&s); //用棧s初始化p指向的棧

int howmany (const stack *const p); //返回p指向的棧的實際元素個數pos

stack *const push(stack *const p, int e); //將e入棧,並返回p

stack *const pop(stack *const p, int &e); //出棧到e,並返回p

stack *const assign(stack*const p, const stack&s); //賦s給p指的棧,並返回p

void print(const stack*const p列印p指向的棧

void destroystack(stack*const p銷毀p指向的棧

2. 需求分析

本實驗需要實現棧的功能的操作,如元素的進棧,連續進棧,出棧和連續出棧,所以需要設計兩個棧,在完成初始化後直接在程式裡給定棧內元素。

2、系統設計

1. 概要設計

首先需要完成實現個功能的函式,然後在主函式裡給定乙個棧,通過呼叫各個功能函式來判斷功能的實現與否。

2. 詳細設計

初始化棧需要為棧內的元素動態分配乙個空間,然後將結構體內的當前元素初始化為0;

實現入棧則需要將入棧元素e放入棧內,將當前元素pos加一;

實現出棧操作則需將棧頂的元素賦給乙個變數然後將當前元素pos減一;

實現棧的賦給即需要將s1棧內的元素依次賦給s2棧的,當前元素也需一致;

3、軟體開發

在codeblocks下,用c++編譯

4、軟體測試

所得截圖如下:

第一行:將1壓入s1棧;

第二行:將2壓入s1棧;

第三行:將3,4連續壓入棧;

第四行:實現上述操作後s1棧內的元素個數;

第五行:將s1棧的乙個元素出棧後s1棧的值;

第六行:將s1棧賦給s2棧後,s2棧的值;

第七行:將s2棧連續出棧兩個元素後,s2棧的值;

5、特點與不足

1. 技術特點

成功完成實驗要求,沒有錯誤。

2. 不足和改進的建議

不足之處在於不能按需求輸入,如果需要改變棧值則只能通過修改程式才能實現

6、過程和體會

1. 遇到的主要問題和解決方法

想的太多了,總是把程式想的很複雜,還想通過寫介面實現對應模組功能,後來仔細看了報告書,將介面刪除,只留下功能實現的部分。

2. 課程設計的體會

通過這次的實驗,我體會到了,不能一味地光寫程式而是要看清實驗要求,不要將問題複雜化,自己給自己找麻煩。看清題意,完成就好。

7、原始碼和說明

1. 檔案清單及其功能說明

執行檔案: shiyan1.exe

原始碼: shiyan1.cpp

2. 使用者使用說明書

程式要在支援c++程式設計的開發軟體中執行

3. 源**

#include

#include

#include

struct stack;

void initstack( stack *const p, int m)//初始化p指向的棧:最多m個元素

void initstack(stack *const p, const stack&s)//用棧s初始化p指向的棧

}int howmany (const stack *const p) //返回p指向的棧的實際元素個數pos

stack *const push(stack *const p, int e) //將e入棧,並返回p

return p;

}stack *const pop(stack *const p, int &e) //出棧到e,並返回p

stack *const assign(stack *const p, const stack&s) //賦s給p指的棧,並返回p

p->pos=s.pos;

return p;

}void print(const stack*const p列印p指向的棧

printf("\n");

}void destroystack(stack*const p銷毀p指向的棧

int main()

物件導向程式設計實驗報告

綜合實驗報告 專業名稱 物聯網工程 班級 2012級2班 姓名 你哥哥 學號 201202051928 資訊科學與工程學院 二零一三年七月 第一題 2 1.1題目概述 2 1.2設計思路 2 1.3設計說明與除錯分析 2 1.4編碼實現 3 1.5程式執行結果 4 1.6設計心得 4 第二題 5 2...

物件導向程式設計實驗報告

安康學院經濟與管理系 課程單項實驗 上機 實訓 報告 課程名稱物件導向程式設計 班級專業 11級資訊管理與資訊系統1班 學生姓名 學號指導教師 填寫時間 年月日 課程單項實驗 上機 實訓 報告填寫要求 1.課程單項實驗是指該課程實驗由每乙個單獨設定的實驗專案組成,每個實驗專案應寫乙份實驗報告,課程實...

《物件導向程式設計》實驗1實驗報告

南京工程學院實驗報告 注 將實驗成果檔案 包含實驗報告電子檔案 程式源 檔案等 用winrar打包,以 班級 學號 實驗x rar檔案形式交付指導老師。一 實驗目的 熟悉visual studio 開發環境。掌握變數的定義 運算子的使用,以及列舉型別的定義與使用 掌握分支語句和迴圈語句的使用 熟悉除...