商店存貨管理系統(tǒng)_第1頁
商店存貨管理系統(tǒng)_第2頁
商店存貨管理系統(tǒng)_第3頁
商店存貨管理系統(tǒng)_第4頁
商店存貨管理系統(tǒng)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

學(xué)學(xué) 號(hào)號(hào)201410137214 武武 漢漢 科科 技技 大大 學(xué)學(xué) 城城 市市 學(xué)學(xué) 院院 課課 程程 設(shè)設(shè) 計(jì)計(jì) 報(bào)報(bào) 告告 課程名稱課程名稱 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 題題 目目 商店存貨管理系統(tǒng)商店存貨管理系統(tǒng) 學(xué)學(xué) 部部 信息工程學(xué)部信息工程學(xué)部 專專 業(yè)業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī)科學(xué)與技術(shù) 班班 級(jí)級(jí) 計(jì)科二班計(jì)科二班 姓姓 名名 劉威劉威 指導(dǎo)教師指導(dǎo)教師 林曉麗林曉麗 2015年年6月月28日日 目 錄 1 1 課程設(shè)計(jì)目的 3 1 2 課程設(shè)計(jì)內(nèi)容和要求 3 1 2 2 要求 3 1 2 3 運(yùn)行環(huán)境 4 1 3 課程設(shè)計(jì)分析 4 1 4 算法描述 4 1 5 源代碼 7 1 6 運(yùn)行結(jié)果分析 17 小 結(jié) 24 參考文獻(xiàn) 24 課程設(shè)計(jì)評(píng)分表 25 1 1 課程設(shè)計(jì)目的 通過實(shí)習(xí) 了解并初步掌握設(shè)計(jì) 實(shí)現(xiàn)較大系統(tǒng)的完整過程 包括系統(tǒng)分 析 編碼設(shè)計(jì) 系統(tǒng)集成 以及調(diào)試分析 熟練掌握數(shù)據(jù)結(jié)構(gòu)的選擇 設(shè)計(jì) 實(shí)現(xiàn)以及操作方法 為進(jìn)一步的應(yīng)用開發(fā)打好基礎(chǔ) 通過實(shí)習(xí)鞏固并提高實(shí)習(xí)者的 C 語言知識(shí) 并初步了解 Visual C 的知識(shí) 提高其編程能力與專業(yè)水平 1 2 課程設(shè)計(jì)內(nèi)容和要求 1 2 1 課程設(shè)計(jì)內(nèi)容 建立一商店存貨管理系統(tǒng) 要求每次出貨時(shí)取進(jìn)貨時(shí)間最早且最接近保質(zhì) 期中止時(shí)間的貨物 分步實(shí)施 1 初步完成總體設(shè)計(jì) 搭好框架 確定人機(jī)對(duì)話的界面 確定函數(shù)個(gè)數(shù) 2 完成最低要求 建立一個(gè)文件 包括 5 個(gè)種類的貨物情況 能對(duì)商品信 息進(jìn)行擴(kuò)充 追加 修改和刪除以及簡(jiǎn)單的排序 3 進(jìn)一步要求 擴(kuò)充商品數(shù)量 以及完成系統(tǒng)查詢功能 有興趣的同學(xué)可 以自己擴(kuò)充系統(tǒng)功能 1 2 2 要求 1 界面友好 函數(shù)功能要?jiǎng)澐趾?2 總體設(shè)計(jì)應(yīng)畫一流程圖 3 程序要加必要的注釋 4 要提供程序測(cè)試方案 5 程序一定要經(jīng)得起測(cè)試 寧可功能少一些 也要能運(yùn)行起來 不能運(yùn)行 的程序是沒有價(jià)值的 1 2 3 運(yùn)行環(huán)境 該程序的運(yùn)行環(huán)境為 Windows xp 系統(tǒng) Microsoft Visual C 6 0 版本 1 3 課程設(shè)計(jì)分析 1 需要定義一個(gè)結(jié)構(gòu)體數(shù)組 其中 name 表示商品的名稱 time 表示商品 的進(jìn)貨時(shí)間 year 表示商品的生產(chǎn)日期 no 表示商品的保質(zhì)期 2 利用冒泡法 對(duì)商品進(jìn)行排序 3 選擇需要的功能 其中功能包括商品的最原始添加 商品的插入 刪除 查找 將數(shù)據(jù)寫入文件中 從文件中讀出數(shù)據(jù)等操作 4 選擇輸入 0 9 10 個(gè)數(shù)的其中一個(gè)數(shù) 進(jìn)行相應(yīng)的操作 5 進(jìn)行完所的操作之后 選擇保存功能 將數(shù)據(jù)保存到文件中 6 退出程序 1 4 算法描述 1 先定義一個(gè)商品的結(jié)構(gòu)體數(shù)組 typedef struct 定義結(jié)構(gòu)體數(shù)組 char name 20 商品名稱 int time 進(jìn)貨時(shí)間 int year 生產(chǎn)日期 int no 保質(zhì)期 goods 2 建立一個(gè)菜單函數(shù) 顯示 10 個(gè)功能 供用戶選擇 進(jìn)行人機(jī)對(duì)話 3 設(shè)置一個(gè)排序的函數(shù) int shuru shangp gs int n 利用冒泡法先對(duì)商品 按進(jìn)貨的時(shí)間排序 對(duì)進(jìn)貨時(shí)間一樣的貨物 再按離保質(zhì)期最近排序 4 設(shè)置一個(gè)輸入的函數(shù) int Input goods gs int n 這個(gè)函數(shù)是最初商品 輸入函數(shù) 當(dāng)選擇了這個(gè)功能后 如果是第一次運(yùn)行這個(gè)程序 保存 輸入 那將在 D 盤產(chǎn)生一個(gè)名為 商品 doc 的文件 如果已經(jīng)運(yùn)行 過了 并保存輸入 那輸入的商品信息將代替原有的信息 數(shù)據(jù)輸入 使用交互輸入 進(jìn)行人機(jī)對(duì)話 確定是否進(jìn)行下一個(gè)數(shù)據(jù)的添加 并 且調(diào)用了上面的排序函數(shù) 對(duì)輸入的數(shù)據(jù)進(jìn)行排序 5 設(shè)置一個(gè)顯示的函數(shù) void shuchu goods gs int n 顯示上面輸入的所 有數(shù)據(jù) 或者是從文件中讀取的數(shù)據(jù) 6 設(shè)置一個(gè)插入的函數(shù) int charu goods gs int n 每次插入一組數(shù)據(jù) 如果要再插入 則再選擇這個(gè)功能進(jìn)行操作 并且在插入的同時(shí) 已 經(jīng)排好序 把數(shù)據(jù)插入適合的位置 7 設(shè)置一個(gè)查找刪除的函數(shù) intchazhaoxianshi goods gs int n 輸入要 查找的商品名稱 如果不存在 則輸出失敗信息 如果存在 則用下 一個(gè)信息代替原有信息的位置 8 設(shè)置一個(gè)查找顯示的函數(shù) void chazhaoxianshi goods gs int n 輸入要 查找的商品名稱 如果不存在 則輸出失敗信息 如果存在 則顯示 信息 9 設(shè)置一個(gè)寫入文件的函數(shù) void xiewenjian goods gs int n 設(shè)置文件 指針 先判斷文件是否能打開并且能進(jìn)行寫操作 不能則輸出失敗信 息 能則循環(huán)寫入數(shù)據(jù) 寫完關(guān)閉文件 10 設(shè)置一個(gè)讀文件的函數(shù) int duwenjian goods gs int n 設(shè)置文件指針 判斷文件是否能打開而且能進(jìn)行讀操作 能則先讀出總的數(shù)據(jù)量 接 著循環(huán)讀出數(shù)據(jù) 最后關(guān)閉文件 11 進(jìn)入最后一步 main 函數(shù) 判斷選擇的操作 根據(jù)用戶選擇的操作 利用 switch 語句進(jìn)行相應(yīng)的函數(shù)調(diào)用 12 選擇保存功能 對(duì)數(shù)據(jù)進(jìn)行保存 然后選擇結(jié)束程序退出功能 退出程 序 paixu gs n 初始條件 數(shù)據(jù)已經(jīng)存在 操作結(jié)果 數(shù)據(jù)進(jìn)行排序 shuru gs n 初始條件 沒有任何數(shù)據(jù)存在 或者要替換原文件中的所有數(shù)據(jù) 操作結(jié)果 數(shù)據(jù)進(jìn)行輸入 shuchugs n 初始條件 數(shù)據(jù)已經(jīng)存在 操作結(jié)果 數(shù)據(jù)顯示 charu gs n 初始條件 數(shù)據(jù)已經(jīng)存在 操作結(jié)果 數(shù)據(jù)插入 chanchu gs n 初始條件 數(shù)據(jù)已經(jīng)存在 操作結(jié)果 數(shù)據(jù)刪除 chazhaoshanchu i gs n 初始條件 數(shù)據(jù)已經(jīng)存在 操作結(jié)果 數(shù)據(jù)統(tǒng)計(jì) xiewenjian gs n 初始條件 數(shù)據(jù)已經(jīng)存在 操作結(jié)果 寫入文件中 duwenjian gs n 初始條件 文件已經(jīng)存在 操作結(jié)果 從文件中讀出 1 4 流程圖 退出程序 寫入文件 排序數(shù)據(jù) 統(tǒng)計(jì)數(shù)據(jù) 添加數(shù)據(jù) 查找數(shù)據(jù) 刪除數(shù)據(jù) 顯示數(shù)據(jù) 新數(shù)據(jù) 重新選擇功能 讀文件 Main 函數(shù) 功能 8功能 1 功 能 2 功 能 3 功 能 4 功 能 5 功 能 6 功 能 9 功能 7 功能 0 1 5 源代碼 include 引用庫函數(shù) include include include typedef struct 定義結(jié)構(gòu)體數(shù)組 char name 20 商品名稱 int time 進(jìn)貨時(shí)間 int year 生產(chǎn)日期 int no 保質(zhì)期 goods goods gs 80 結(jié)構(gòu)體數(shù)組變量 int menu select 菜單函數(shù) char c do system cls 運(yùn)行前清屏 printf t t 商品系統(tǒng) n 菜單選擇 printf t t 1 輸入數(shù)據(jù) n printf t t 2 顯示數(shù)據(jù) n printf t t 3 插入數(shù)據(jù) n printf t t 4 刪除數(shù)據(jù) n printf t t 5 查找數(shù)據(jù) n printf t t 6 統(tǒng)計(jì)并顯示進(jìn)貨時(shí)間最早且最接近保質(zhì)期中止時(shí)間的貨物 n printf t t 7 寫入文件 n printf t t 8 讀文件 n printf t t 9 對(duì)讀入的文件進(jìn)行排序 n printf t t 0 退出 n printf t t n printf t t t 請(qǐng)選擇 0 9 c getchar 讀入選擇 while c 9 return c 0 返回選擇 void Sort by time goods gs int n 按進(jìn)貨時(shí)間排序 int i j a b c p q s m k d e f char t 10 for i 0 i n 1 i 冒泡法排序 for j 0 jgs j 1 time a b c a a b b c strcpy t gs j 1 name strcpy gs j 1 name gs j name strcpy gs j name t p q s p p q q s m k d m m k k d else if gs j time gs j 1 time p a b q e p b 10000 f a q 10000 if e f a b c a a b b c strcpy t gs j 1 name strcpy gs j 1 name gs j name strcpy gs j name t p q s p p q q s m k d m m k k d int Input goods gs int n 輸入若干條記錄 int i 0 char sign x 10 while sign n 交互輸入 scanf t t t s gs n i name printf t t t 進(jìn)貨時(shí)間 例 20070201 scanf t t t d printf t t t 生產(chǎn)日期 例 20070201 scanf t t t d printf t t t 保質(zhì)期 年 scanf t t t d gets x 清除多余的輸入 printf t t t 繼續(xù)輸入 Y N scanf t t t c 輸入判斷 i Sort by time gs n i 調(diào)用排序函數(shù) return n i void Display goods gs int n 顯示所有記錄 int i printf t t n 格式頭 printf t t 商品名稱 進(jìn)貨時(shí)間 生產(chǎn)日期 保質(zhì)期 年 n printf t t n for i 1 i1 格式 printf t t t system pause printf t t t n printf t t t system pause 按任何鍵繼續(xù) int Insert a record goods gs int n 插入一條記錄 char x 10 清除多余輸入所用 printf t t t 商品名稱 交互輸入 scanf t t t s gs n name printf t t t 進(jìn)貨時(shí)間 scanf t t t d printf t t t 生產(chǎn)日期 scanf t t t d printf t t t 保質(zhì)期 scanf t t t d gets x n Sort by time gs n 調(diào)用排序函數(shù) printf t t t 插入成功 n 返回成功信息 return n int Delete a record goods gs int n 按商品名字查找 刪除一條記錄 char s 20 int i 0 j printf t t t 商品名稱 scanf s s while strcmp gs i name s 0 查找判斷 if i n printf t t t 沒找到 n 返回失敗信息 return n for j i j n 1 j 刪除操作 strcpy gs j name gs j 1 name gs j time gs j 1 time gs j year gs j 1 year gs j no gs j 1 no printf t t t 刪除成功 n 返回成功信息 return n 1 void Query a record goods gs int n 查找并顯示一個(gè)記錄 char s 20 int i 0 printf t t t 輸入要查找的商品名稱 scanf t t t s s while strcmp gs i name s 0 查找判斷 if i n printf t t t 沒找到 n 輸入失敗信息 return printf t t t 進(jìn)貸時(shí)間 d n gs i time 輸出該商品信息 printf t t t 生產(chǎn)日期 d n gs i year printf t t t 保質(zhì)期 d n gs i no void WritetoText goods gs int n 將所有記錄寫入文件 int i 0 FILE fp 定義文件指針 if fp fopen d 商品 doc wb NULL 打開文件 printf t t tcann t open the file n system pause return fprintf fp d n n 循環(huán)寫入數(shù)據(jù) while i n fprintf fp 5s d d d n gs i name gs i time gs i year gs i no i fclose fp 關(guān)閉文件 printf t t tSuccessed n 返回成功信息 int AddfromText goods gs int n 從文件中讀入數(shù)據(jù) int i 0 num FILE fp 定義文件指針 if fp fopen d 商品 doc rb NULL 打開文件 printf t t tcann t open the file n 打開失敗信息 printf t t t system pause return n fscanf fp d 讀入總記錄量 while i num 循環(huán)讀入數(shù)據(jù) fscanf fp s d d d gs n i name i n num fclose fp 關(guān)閉文件 printf t t tSuccessed n printf t t t system pause return n void main 主函數(shù) int n 0 for switch menu select 選擇判斷 case 1 printf t t t 輸入最初商品 n 輸入若干條記錄 n Input gs n break case 2 printf t t t 顯示所有商品 n 顯示所有記錄 Display gs n break case 3 printf t t t 插入 n n Insert a record gs n 插入 printf t t t system pause break case 4 printf t t t 刪除 n n Delete a record gs n 按商品名稱查找 刪除 printf t t t system pause break case 5 printf t t t 查找并顯示 n Query a record gs n 查找并顯示 printf t t t system pause break case 6 printf t t t 統(tǒng)計(jì)并顯示進(jìn)貨時(shí)間最早且最接近保質(zhì)期中止時(shí)間的貨 物 n printf t t t 共有 d 件商品 n n 總共記錄數(shù) printf t t t 進(jìn)貨時(shí)間最早且最接近保質(zhì)期中止時(shí)間的貨物 n printf t t t 商品名稱 r s n gs 0 name printf t t t 進(jìn)貨時(shí)間 d n gs 0 time printf t t t 生產(chǎn)日期 d n gs 0 year printf t t t 保質(zhì)期 d n n gs 0 no printf t t t system pause break case 7 printf t t t 寫到文件中 n WritetoText gs n 循環(huán)寫入數(shù)據(jù) printf t t t system pause break case 8 printf t t t 文件中讀數(shù)據(jù) n n AddfromText gs n printf t t t 文件中讀數(shù)據(jù) break case 9 printf t t t n Sort by time gs n printf t t t 對(duì)讀入的文件進(jìn)行排序 break case 0 printf t t t 結(jié)束退出 n 結(jié)束程序 printf t t t system pause exit 0 1 6 運(yùn)行結(jié)果分析 1 初始界面 從 D 盤讀入已準(zhǔn)備好的文件數(shù)據(jù) 2 選擇功能 8 并選擇功能 2 顯示最初的數(shù)據(jù) 3 對(duì)讀出的文件進(jìn)行排序 選功能 9 再選功能 2 進(jìn)行顯示 4 選擇功能 3 進(jìn)行插入操作 選擇功能 2 進(jìn)行顯示 5 選擇功能 4 進(jìn)行刪除操作 第一種情況為找不到要?jiǎng)h除的商品數(shù)據(jù) 接下去這個(gè)是另一種情況 即找到要?jiǎng)h除的商品數(shù)據(jù)并按功能 2 顯示 6 選擇功能 5 第一種情況為找不到要查找的數(shù)據(jù) 第二種為存在情況 7 選擇功能 6 8 選擇功能 7 9 選擇功能 0 退出程序 目目 錄錄 題目一 一種排序一種排序 一 難度 3 1 1 題目要求 1 2 算法設(shè)計(jì)思路及步驟 1 3 算法描述 2 4 結(jié)果分析 3 小 結(jié) 3 參考文獻(xiàn) 4 題目一 一種排序一種排序 難度 3 1 題目要求題目要求 1 1 問題描述 描述 現(xiàn)在有很多長(zhǎng)方形 每一個(gè)長(zhǎng)方形都有一個(gè)編號(hào) 這個(gè)編號(hào)可以重復(fù) 還知道這個(gè)長(zhǎng)方形的寬和長(zhǎng) 編號(hào) 長(zhǎng) 寬都是整數(shù) 現(xiàn)在要求按照一 下方式排序 默認(rèn)排序規(guī)則都是從小到大 1 按照編號(hào)從小到大排序 2 對(duì)于編號(hào)相等的長(zhǎng)方形 按照長(zhǎng)方形的長(zhǎng)排序 3 如果編號(hào)和長(zhǎng)都相同 按照長(zhǎng)方形的寬排序 4 如果編號(hào) 長(zhǎng) 寬都相同 就只保留一個(gè)長(zhǎng)方形用于排序 刪除多余的 長(zhǎng)方形 最后排好序按照指定格式顯示所有的長(zhǎng)方形 輸入 第一行有一個(gè)整數(shù) 0 n 10000 表示接下來有 n 組測(cè)試數(shù)據(jù) 每一組第一行有一個(gè)整數(shù) 0 m 1000 表示有 m 個(gè)長(zhǎng)方形 接下來的 m 行 每一行有三個(gè)數(shù) 第一個(gè)數(shù)表示長(zhǎng)方形的編號(hào) 第二個(gè)和第三個(gè)數(shù)值大的表示長(zhǎng) 數(shù)值小的表示寬 相等 說明這是一個(gè)正方形 數(shù)據(jù)約定長(zhǎng)寬與編號(hào)都小于 10000 輸出 順序輸出每組數(shù)據(jù)的所有符合條件的長(zhǎng)方形的 編號(hào) 長(zhǎng) 寬 樣例輸入 1 8 1 1 1 1 1 1 1 1 2 1 2 1 1 2 2 2 1 1 2 1 2 2 2 1 樣例輸出 1 1 1 1 2 1 1 2 2 2 1 1 2 2 1 2 算法設(shè)計(jì)思路及步驟算法設(shè)計(jì)思路及步驟 2 1 設(shè)計(jì)思路 先做一個(gè)輸入函數(shù) 輸入 m 組數(shù)據(jù)進(jìn)行排序 優(yōu)先按照編號(hào)來排序 當(dāng)編 號(hào)相等時(shí)再優(yōu)先按照長(zhǎng)度排序 當(dāng)編號(hào) 長(zhǎng)度相等時(shí)再排序?qū)挾?當(dāng)三個(gè)數(shù)值 都相等時(shí) 只輸出一個(gè)出來 2 2 步驟 輸入數(shù)據(jù) m 要進(jìn)行的組數(shù) 采用 while 循環(huán)判斷組數(shù)執(zhí)行的條件 然后在使用 for 循環(huán)接受長(zhǎng)方體的編號(hào) 長(zhǎng)度 寬度 然后調(diào)用快速排序函數(shù) CMP 進(jìn)行排 序 用一個(gè) for 循環(huán)來刪除相同數(shù)據(jù)的輸出 最后把排序?qū)⒔Y(jié)果輸出數(shù)來后用 break 跳出循環(huán)程序結(jié)束 3 算法描述算法描述 4 結(jié)果分析結(jié)果分析 通過這程序感覺大大的簡(jiǎn)化了曾經(jīng)的函數(shù)用法 這快速排序做的也不錯(cuò) 整體 來說程序的可讀性 穩(wěn)定性都很好 感覺做的不錯(cuò) 源代碼源代碼 include include define MAX 1000 define jh a b t a a b b t int t typedef struct int no length width ac ac all MAX int cmp const void a const void b 快 速 排 序 法 ac ac a ac a ac ac b ac b if ac a no ac b no if ac a length ac b length return ac a width ac b width else return ac a length ac b length else return ac a no ac b no int main while 1 int m i printf 請(qǐng) 問 你 要癮輸 入 幾 個(gè) 長(zhǎng) 方 體 的 數(shù)簓據(jù) Y 阰 scanf d for i 0 i m i printf 請(qǐng) 以 此 輸 入 長(zhǎng) 方 體 的 編括 號(hào) 長(zhǎng) 度 長(zhǎng) 度 用 空 格 分 開 a 回 車 表括 示 一 組哩 數(shù)簓據(jù) Y 輸 入 結(jié) 束 n scanf d d d if all i length all i width jh all i length all i width qsort all

溫馨提示

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

評(píng)論

0/150

提交評(píng)論