




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、高級語言程序設(shè)計(1)課程設(shè)計專業(yè) 數(shù)學與應(yīng)用數(shù)學 班級 1001 學號 201001030104姓名 張瑤 完成日期 指導教師:王小燕1.程序設(shè)計說明書【設(shè)計題目】大學生超市商品信息管理系統(tǒng)【問題描述】 大學生超市有N種商品,每種商品的信息用該軟件通過鍵盤敲入并以文本文件方式存放在磁盤,內(nèi)容為五列:商品編號、商品名稱、商品產(chǎn)地、商品數(shù)量、商品單價。編寫一個程序,管理超市物品信息情況?!拒浖δ堋?. 通過此軟件可以直接錄入每種商品的信息并將其自動保存到磁盤上;2. 可以對已錄入每種商品的信息進行修改,并且修改完成后會將更改后的信息情況自動保存到原磁盤文件中;3. 可以進行商品信息查詢以及瀏覽
2、?!舅惴ㄋ枷搿?構(gòu)造一個結(jié)構(gòu)體類型,其成員包括五項:3個字符型數(shù)組,分別存放商品編號、商品名稱、商品產(chǎn)地;1個整型變量,存放商品數(shù)量;1個浮點型變量,存放商品單價。錄入各商品信息時,通過循環(huán)語句將商品信息輸入到結(jié)構(gòu)體中并寫入文本文件中,并存入磁盤。修改各物品信息時,先將文件讀出到結(jié)構(gòu)體中,通過字符的比較查找所修改的商品所在處,如果沒有找到則輸出警告語句,找到后則通過輸入輸出函數(shù)進行修改,并將修改過后的各個商品信息寫入文本文件中,并存入磁盤。 商品信息瀏覽時,先將文件讀出到結(jié)構(gòu)體中,如果文件不存在則輸出警告語句,否則通過循環(huán)語句和輸出函數(shù)將結(jié)果顯示在屏幕上。商品信息查詢時,先將文件讀出到結(jié)構(gòu)體中
3、,如果文件不存在則輸出警告語句,否則通過輸入函數(shù)直接輸入商品貨號,通過條件語句找出該商品貨號信息并將輸出結(jié)果顯示在屏幕上?!灸K劃分及調(diào)用關(guān)系】 main函數(shù)main 函數(shù)readfile函數(shù)Save函數(shù)Quit函數(shù)Scan函數(shù)Lookup函數(shù)Correct函數(shù)Input函數(shù) readfile 函數(shù) save 函數(shù) quit 函數(shù) lookup 函數(shù) scan 函數(shù) correct 函數(shù) input 函數(shù)main 函數(shù)分別調(diào)用: input(); /新購物品錄入 correct(); /物品信息修改 lookup(); /物品信息查詢 scan(); /物品信息瀏覽 quit(); /程序退出
4、input 函數(shù)調(diào)用: save(); /數(shù)據(jù)存儲correct 函數(shù)調(diào)用: save(); /數(shù)據(jù)存儲scan 函數(shù)調(diào)用: readfile(); /讀文件【模塊流程圖】 main函數(shù)輸入 choice1=>choice 2=>choice 3=>choice 4=>choice 5=>choice else商品信息 商品信息 商品信息 商品信息 程序錄入 修改 查詢 瀏覽 退出 input函數(shù)創(chuàng)建商品信息文件 文件創(chuàng)建成功 文件創(chuàng)建失敗輸入:商品編號(id) 商品名稱(name) 商品產(chǎn)地(produce) 商品數(shù)量(num)商品單價(price) 直到輸入完
5、N個商品的信息 通過循環(huán),將所輸入內(nèi)容寫入文件中,保存在磁盤里correct函數(shù)讀取文件讀入文件成功 讀入文件失敗 輸入要修改的物品編號id 在文件中找到 在文件中未找到輸入更改后的: 商品名稱(name)商品產(chǎn)地(produce)商品數(shù)量(num)商品單價(price)通過save函數(shù)將更改后的內(nèi)容寫入文件關(guān)閉文件lookup函數(shù) 讀取文件 讀取文件成功 讀取文件失敗輸入要查詢的商品編號id 在文件中找到 在文件中未找到 輸出查詢到的: 商品編號(id) 商品名稱(name)商品產(chǎn)地(produce) 商品數(shù)量(num)商品單價(price) 關(guān)閉文件 scan函數(shù)讀取文件讀取文件成功 讀取
6、文件失敗調(diào)用readfile函數(shù),讀取文件中的商品信息 通過循環(huán)語句,將各個商品的信息情況進行輸出 關(guān)閉文件 quit函數(shù) 輸入ch Y=>ch N=>ch else=>ch 退出 返回 程序 主菜單【程序使用方法】(1)執(zhí)行程序,按照界面提示進行選擇。輸入 “1”,進入商品添加。(2)按照程序提示,分別輸入商品編號、商品名稱、商品產(chǎn)地、商品數(shù)量、商品價格。(注:這里默認為有3個物品,可以通過宏定義進行修改。)(3)輸入成功后,自動返回主界面。輸入“4”,進入商品信息瀏覽,程序自動將各商品信息情況輸出到屏幕上。(4)瀏覽成功后,自動返回主界面。輸入“2”,進入商品信息修改,按
7、照提示進行輸入。(5)輸入成功后,自動返回主界面。輸入“3”,進入商品物品信息查詢,按照提示進行輸入,程序?qū)⒁樵兊纳唐沸畔⑶闆r輸出到屏幕上。(6)查詢成功后,自動返回主界面。輸入“5”,進入程序退出,輸入“Y”退出程序,輸入“N”返回主界面。2.程序上機調(diào)試報告【語法錯誤及其排除】(1) 調(diào)用fscanf()函數(shù)時,忘記前面的文件指針;(2) If(strcmp(s1,s2),少了括號;(3)調(diào)用scanf()函數(shù)時,字符型變量應(yīng)直接用數(shù)組名?!舅惴ㄥe誤及其排除】(1)在結(jié)束一次循環(huán)時使用了break語句,終止了循環(huán)導致錯誤,應(yīng)該使用continue語句;(2)商品信息查詢時,輸入商品編號i
8、d然后通過循環(huán)比較字符串是否相等,最后當m=N-1時,找不到對應(yīng)的id,而不是m=N。3.程序測試結(jié)果【測試數(shù)據(jù)】 001 山椒鳳爪 重慶 120 1.2 002 脈動飲料 北京 52 3.5 003 阿爾卑斯 上海 260 10.5【輸出結(jié)果】【收獲及體會】 通過這次的課程設(shè)計,一方面:在不斷的修改,編譯過程使我對c語言的一些語法規(guī)則更加深刻的理解與認識,在這過程中也鍛煉了自己的邏輯思維,更是提高了自己做事的嚴謹性;另一方面:這次也是理論應(yīng)用于實踐的一次踐行,真正做到學有所用,對于word文檔的制作也是次練習。也相信經(jīng)過這次的課程設(shè)計,自己在以后的學習生活中對待問題會更加的嚴謹,也會更加注重
9、理論應(yīng)用實際。4. 源程序代碼#include "stdio.h" /預編譯命令#include "stdlib.h" /預編譯命令#include "string.h" /預編譯命令#define N 3struct information /定義商品信息的結(jié)構(gòu)體 char id20; /商品編號 char name20; /商品名稱 char produce20; /商品產(chǎn)地 int num; /商品數(shù)量 float price; /商品價格 goodsN;/*/void save() /創(chuàng)建商品信息的文件 int i; FILE
10、 *fp; if(fp=fopen("E:商品信息.txt","w")=NULL) printf("無法建立文件!請檢查是否E盤不存在!n"); exit(0); /如果建立失敗,輸出警告信息,并自動關(guān)閉程序 for(i=0;i<N;i+)fprintf(fp,"%-10st%-10st%-10st%-6dtt%-6fn",goodsi.id,,duce,goodsi.num,goodsi.price);/寫入文件fclose(fp); /關(guān)閉文件,防止數(shù)據(jù)丟失 /*
11、/void input() /商品信息錄入 void main();/對主函數(shù)進行聲明 int i; FILE *fp; if(fp=fopen("E:商品信息.txt","w")=NULL) printf("無法建立文件!請檢查是否E盤不存在!n"); exit(0); /*如果建立文件成功,則提示輸入商品信息*/ printf("=* 商品信息錄入 *=n"); printf("請輸入:ntt商品編號 商品名稱 商品產(chǎn)地 商品數(shù)量 商品價格n"); for(i=0;i<N;i+) sc
12、anf("%s%s%s%d%f",goodsi.id,,duce,&goodsi.num,&goodsi.price); /輸入值到結(jié)構(gòu)體中 save(); printf("n文件保存成功!系統(tǒng)返回主菜單.nn"); main();/返回主函數(shù) /*/void correct() /商品信息修改 void main(); /對主函數(shù)進行聲明 int i,k; char id20; /定義要修改的物品信息 char name20; char produce20; int num; float pri
13、ce; FILE *fp=fopen("E:商品信息.txt","r"); if(fp=fopen("E:商品信息.txt","r")=NULL) printf("無法打開文件!請檢查文件是否存在!nn"); exit(0); for(i=0;i<N;i+) fscanf(fp,"%s%s%s%d%f",goodsi.id,,duce,&goodsi.num,&goodsi.price);printf("
14、;=* 商品信息修改 *=n");printf("請輸入所修改的商品編號:");scanf("%s",id);for(i=0;i<N;i+) k=i; /*使用strcmp函數(shù)將輸入的編號與已錄入的編號比較*/ if(strcmp(goodsi.id,id)=0) printf("請輸入更改后的信息:ntt商品名稱 商品產(chǎn)地 商品數(shù)量 商品價格n"); scanf("%s%s%d%f",name,produce,&num,&price); strcpy(,nam
15、e); /用修改后的信息覆蓋錯誤信息 strcpy(duce,produce); goodsi.num=num; goodsi.price=price; save(); /調(diào)用save函數(shù) printf("n修改成功!系統(tǒng)自動返回主菜單.nn"); break; /如果修改成功則中斷循環(huán),并輸出警告信息 else if(k=N-1)printf("信息不存在或輸入有誤!系統(tǒng)返回主菜單.nn"); else continue;/如果在一次循環(huán)中沒找到信息,則中斷此次循環(huán) fclose(fp); /關(guān)閉文件,防止數(shù)據(jù)丟失 main();
16、/返回主函數(shù)/*/int M; /定義全局變量void readfile() /讀文件 struct information product; /定義結(jié)構(gòu)體變量FILE *fp; M=0;if(fp=fopen("E:商品信息.txt","r")=NULL) printf("無法打開文件!請檢查文件是否存在!nn"); exit(0); while(!feof(fp) /當未到文件末尾時進行循環(huán) fscanf(fp,"%s%s%s%d%f",product.id,,du
17、ce,&product.num,&product.price); M+; /*/void lookup() /商品信息查詢 void main(); int i,m; char id20; FILE *fp=fopen("E:商品信息.txt","r"); if(fp=fopen("E:商品信息.txt","r")=NULL) printf("無法打開文件!請檢查文件是否存在!nn"); exit(0); /如果打開失敗,輸出警告信息,并自動關(guān)閉程序 for(i=0;i<N
18、;i+) fscanf(fp,"%s%s%s%d%f",goodsi.id,,duce,&goodsi.num,&goodsi.price); printf("=* 商品信息查詢 *=n"); printf("請輸入所查詢的商品編號:"); scanf("%s",id); for(i=0;i<N;i+) m=i;if(strcmp(goodsi.id,id)=0)/使用strcmp函數(shù)進行字符串的比較 printf("nn商品編號t商品名稱t
19、商品產(chǎn)地t商品數(shù)量t商品價格n"); printf("%-10st%-10st%-10st%-6dtt%-6fn",goodsi.id,,duce,goodsi.num,goodsi.price); printf("n查詢成功!系統(tǒng)自動返回主菜單.nn"); break; else if(m=N-1) printf("信息不存在或輸入有誤!系統(tǒng)返回主菜單.nn"); else continue; fclose(fp); /關(guān)閉文件,防止數(shù)據(jù)丟失 main(); /返回主函數(shù) /*/v
20、oid scan() /商品信息瀏覽 void main(); int i; FILE *fp=fopen("E:商品信息.txt","r"); if(fp=fopen("E:商品信息.txt","r")=NULL) printf("無法打開文件!請檢查文件是否存在!nn"); exit(0); else readfile(); printf("=* 商品信息瀏覽 *=n"); printf("nn商品編碼t商品名稱t商品產(chǎn)地t商品數(shù)量t商品價格n");
21、for(i=0;i<M-1;i+)/讀出文件內(nèi)容,并輸出內(nèi)容到屏幕上 fscanf(fp,"%s%s%s%d%f",goodsi.id,,duce,&goodsi.num,&goodsi.price); printf("%-10st%-10st%-10st%-6dtt%-6fn",goodsi.id,,duce,goodsi.num,goodsi.price); fclose(fp); /關(guān)閉文件,防止數(shù)據(jù)丟失 main(); /返回主函數(shù) /*/void quit() /退出程序 void main(); char ch; printf("tt您確定要退出系統(tǒng)嗎?n"); printf("ttY->退出程序 N->返回主菜單"); Cycle: /語句標號 ch=getchar(); if(ch='Y'|ch='y') printf("系統(tǒng)退出,歡迎再次使用!nn"); /退出程序 return; else if(ch='N'|ch=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房產(chǎn)委托購房協(xié)議書
- 戀愛合同續(xù)約協(xié)議書
- 承租合同解除協(xié)議書
- 廣告承接合同協(xié)議書
- 房產(chǎn)遺產(chǎn)贈送協(xié)議書
- 拆房賠償調(diào)解協(xié)議書
- 智能火災報警系統(tǒng)開發(fā)合同
- 放棄解除合同協(xié)議書
- 房屋對換合同協(xié)議書
- 承包勞動合同協(xié)議書
- 國旗下講話-5月19日助殘日國旗下講話稿:同享一片藍天
- 童話故事三年級下冊350字作文
- 表1網(wǎng)格化治理工作村(居)民基本信息統(tǒng)計表
- 涂裝工藝流程、PFMEA2018
- 車站信號自動控制教案-四線制道岔控制啟動電路
- 委托書掛靠樣本
- 國際民事訴訟與國際商事仲裁
- 土地整治項目工程質(zhì)量評定標準
- 【3套打包】上海市上寶中學小升初第一次模擬考試數(shù)學試題
- 內(nèi)蒙古烏海化工股份有限公司“1·18”爆炸事故案例分析
評論
0/150
提交評論