



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC語言程序設(shè)計課程設(shè)計報告課設(shè)題目:汽車零部件采購管理專業(yè):電子信息工程(汽車電子)班級:T1323-15姓名:徐倩成績:完成日期 :2014年 19周指導教師 :吳年志目錄C語言程序設(shè)計 -0課程設(shè)計報告 - -01.課程設(shè)計目的 -12.需求分析 -22.1要求 - -22.2任務(wù)描述 -32.3運行環(huán)境 -42.4開發(fā)工具 -43.總體設(shè)計 -43.1系統(tǒng)流設(shè)計 -43.2系統(tǒng)模塊設(shè)計 -54.詳細設(shè)計 -64.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 -64.2模塊接口設(shè)計 - -71)所有函數(shù)聲明 - -72)全局變量 - -9
2、3)主要模塊的實現(xiàn) - -94.3主要功能模塊的流程圖 -105.運行結(jié)果 -135.1歡迎界面 - -135.2主菜單頁面 -135.3信息查詢頁面 - -145.4統(tǒng)計菜單頁面 - -145.5顯示信息頁面 - -155.6退出頁面 - -156.程序調(diào)試與測試 - -166.1主菜單選擇測試 - -166.2采購信息未從文件讀入 -176.3采購信息輸入調(diào)試 -187.問題與不足 - -208.建議-219.編程體會 -2110. 程序源代碼 - -211. 課程設(shè)計目的1) 通過課程設(shè)計, 加深對結(jié)構(gòu)化程序設(shè)計思想的理解,能對系統(tǒng)功能進行分析,并設(shè)計合理的模塊化結(jié)構(gòu)。2) 通過課程設(shè)計
3、, 進一步掌握 C 語言中重要的數(shù)據(jù)結(jié)構(gòu)。 掌握并熟練運用指針、鏈表、結(jié)構(gòu)體、文件等數(shù)據(jù)結(jié)構(gòu)。3) 通過課程設(shè)計, 提高程序開發(fā)能力, 能運用合理的控制流編寫清晰高效的程序。4) 通過課程設(shè)計, 培養(yǎng) C 語言知識運用和自學能力, 真正的把課堂上獲得的知識運用起來, 培養(yǎng)自己對程序編寫的興趣,并能獨立設(shè)計和實現(xiàn)一個小型系統(tǒng)。5) 通過課程設(shè)計,加強了自己的程序分析能力。2. 需求分析2.1要求1) 遵循軟件開發(fā)過程的基本規(guī); 能靈活應(yīng)用, 初步具備運用 C 程序解決實際問題的能力。2) 運用結(jié)構(gòu)化程序設(shè)計方法, 按照課程設(shè)計題目要求, 完成包括需求分析、數(shù)據(jù)結(jié)構(gòu)設(shè)計、概要設(shè)計、詳細設(shè)計、編寫代
4、碼、調(diào)試和測試 C 程序等過程。3) 學會利用數(shù)組、結(jié)構(gòu)體、鏈表進行相關(guān)信息表示。4) 功能模塊劃分清晰, 系統(tǒng)結(jié)構(gòu)圖符合功能操作要求, 且有詳盡的功能描述5) 各主要功能模塊有詳盡的流程圖及描述, 用函數(shù)的形式實現(xiàn),且調(diào)用入口、功能、出口等關(guān)系正確。6) 所設(shè)計的 C 程序較好的可讀性和可靠性;程序書寫風格規(guī),注釋清晰。7) 界面友好(良好的人機互交) ,凡需要輸入信息時,都有較詳盡的提示信息,并對輸入信息有較完善的值域分析。8) 程序經(jīng)上機調(diào)試通過,不應(yīng)出現(xiàn)語法型、 功能型錯誤,并獲得滿意的結(jié)果。9)學會通過各功能性測試用例測試程序的能力, 盡可能避免原則性錯誤的出現(xiàn)。10) 掌握編寫、調(diào)
5、試和測試 C 語言程序的基本技巧,充分理解結(jié)構(gòu)化程序設(shè)計的基本方法。11) C 語言課程設(shè)計報告的容反應(yīng)實際設(shè)計過程, 且符合格式要求,無抄襲現(xiàn)象。2.2 任務(wù)描述已知在汽車生產(chǎn)時,需要向零部件生產(chǎn)廠商采購零部件,設(shè)計一個汽車零部件采購管理程序,以方便采購管理部門對采購零部件的管理。該單位每次采購都有一個采購編號,每次采購一種零部件。該程序應(yīng)該具有如下功能1)添加并保存采購信息: 輸入采購編號, 零部件名稱,采購員名字,采購日期,采購價格,采購數(shù)量,供貨單位,需要判斷采購價格和數(shù)量是否大于零,采購編號是否已存在,采購日期是否合法(形如*-*-*,例如 2013-09-08 )。2)根據(jù)采購編號
6、查詢零部件采購信息3)根據(jù)零部件名稱查詢其采購信息4)根據(jù)采購編號修改已有采購信息:需要判斷修改后的采購編號的唯一性,采購日期的合法性(形如*-*-*,例如 2013-09-08 )。5)根據(jù)采購編號刪除此條采購信息6)統(tǒng)計功能2.3 運行環(huán)境VC+6.0 編譯環(huán)境2.4 開發(fā)工具C 語言3. 總體設(shè)計3.1 系統(tǒng)流設(shè)計程序整體功能結(jié)構(gòu)如圖一所示:開始顯示課程以及學生信息顯示主菜單,輸入選擇讀添取加文并件保中存的采采購購信信息息由采購編號查找零部件采購信息修改并保存采購信息由刪零除部并件保名存稱余查下找采其購采信購息信息統(tǒng)計采購信息顯示所有采購信息根據(jù)零部件名稱統(tǒng)計其總根據(jù)采購員名字統(tǒng)計數(shù)量其
7、采購次數(shù)3.2 系統(tǒng)模塊設(shè)計1) 封面模塊函數(shù) void huanying()和函數(shù) void byebye()構(gòu)成封面模塊,構(gòu)造和諧人機環(huán)境。2) 菜單模塊函數(shù) voidmenu() 和函數(shù) void choise()構(gòu)成選擇菜單,二級菜單void tongji()構(gòu)成統(tǒng)計功能菜單。3) 查詢模塊函數(shù) void numshow() 和函數(shù)void nameshow()分別實現(xiàn)根據(jù)采購編號和零部件名稱查詢采購信息的功能,其中會有其他函數(shù)輔助。4) 信息處理模塊函數(shù)void change()實現(xiàn)信息修改功能,函數(shù)void disapperr()實現(xiàn)信息刪除功能,void input()實現(xiàn)信息添
8、加功能,voidsave()實現(xiàn)信息保存功能,voidlistCG()實現(xiàn)信息顯示功能,其中會有其他函數(shù)輔助。5)統(tǒng)計模塊函數(shù)int number()實現(xiàn)根據(jù)零部件名稱統(tǒng)計其總數(shù)量功能, inttimes( )實現(xiàn)根據(jù)采購員名字顯示其采購次數(shù)的功能,其中會有其他函數(shù)輔助。6)日期審查模塊函數(shù) void checkdate()使用標志位方法實現(xiàn)對時間的審查。4. 詳細設(shè)計4.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計根據(jù)系統(tǒng)要求,采購信息包括:數(shù)據(jù)項系統(tǒng)表數(shù)據(jù)項名稱示數(shù)據(jù)類型數(shù)據(jù)長度備注采購編號P1->buynum字符串10零部件名稱P1->itemname字符串10采購日期P1->day字符串30采購
9、員名字P1->buyername字符串10采購數(shù)量P1->count整型4采購價格P1->price單精度8供貨單位P1->source字符串10為了能實現(xiàn)系統(tǒng)的優(yōu)越性和c 語言的精華采用鏈表的建立采購信息記錄表,示意圖如下:采購信息 1采購信息 2采購信息 34.2模塊接口設(shè)計1)所有函數(shù)聲明viod huanying(); /*封面函數(shù),顯示課程題目,學生信息 */void menu();/*主菜單函數(shù),顯示各項功能*/void choise();/*根據(jù)主菜單選擇并執(zhí)行功能*/voidreadinto();/*讀 取 文 件 的 采 購 信 息*/void inp
10、ut();/*從鍵盤添加采購信息并保存到文件中 */void listCG();/*顯 示 所 有 采 購 信 息*/void numshow();/*根據(jù)采購編號查詢對應(yīng)采購信息并顯示 */void nameshow();/*根據(jù)零部件名稱查詢其采購信息并顯示 */void change();/*根據(jù)采購編號修改并顯示采購信息 */void disapper(); /*根據(jù)采購編號刪除并顯示余下采購信息 */void tongji();/*統(tǒng)計功能菜單,顯示兩項統(tǒng)計功能 */int number();/*根據(jù)零部件名稱統(tǒng)計其購買總數(shù)量*/int times();/*根據(jù)采購員名字統(tǒng)計其采購次
11、數(shù)*/int checktime(int year,int month,int day );/*審查日期輸入是否符合要求*/voidbyebye();/*告別界面*/void save();/*保存采購信息 */2)全局變量1,用于存儲采購信息的結(jié)構(gòu)體struct buy;2, 判斷文件是否正確讀入的標志位變量int flag;3, 用 于 存 儲 采 購 信 息 的 結(jié) 構(gòu) 體 指 針 : struct buy *head=NULL,*p,*p1,*p2,*p3.3)主要模塊的實現(xiàn)系統(tǒng)以 intmain() 為入口,首先調(diào)用voidhuanying()顯示課程名稱和學生信息,調(diào)用 void
12、menu() 和 void choise()實現(xiàn)功能顯示和功能選擇。接著,按照用戶的要求, 調(diào)用 voidnumshow()或 void nameshow()實現(xiàn)查詢功能,或調(diào)用voidchange(),void disapper()實現(xiàn)修改和刪除功能.不管是刪除還是修改還是添加都要調(diào)用void save()實現(xiàn)信息保存 功 能 。 添 加 和 修 改 時 還 要 調(diào) 用intchecktime(intyear,int month,int day)函數(shù)對時間審查。當不需要再執(zhí)行各項功能時,調(diào)用void byebye()退出管理器。4.3 主要功能模塊的流程圖1) 封面模塊(以歡迎界面為例,退出
13、界面與此類似)顯示題目和學生信息進入系統(tǒng)2) 菜單模塊顯示主菜單接受用戶輸入選項否是否合法?是是是否為 0?否否是否為 7?是是否是否合法 ?退出管理系統(tǒng)執(zhí)行用戶所選功能3)查詢模塊( 以根據(jù)采購編號查詢采購信息為例)輸入所查詢采購編號編號是否存在顯示編號對應(yīng)采購信息返回主菜單頁面4)信息處理模塊(以添加采購信息為例 )主菜單輸入采購編號是是否已存在否輸入采購時間否是否合格?是輸入其他信息顯示添加信息5) 統(tǒng)計模塊( 以根據(jù)零部件名稱統(tǒng)計采購總數(shù)量為例)輸入零部件名稱,s=0否是是否存在 ?返回主菜單s 加上其數(shù)量6) 日期審查模塊輸入采購時間,并將其表示成y,m,d調(diào)用 void check
14、time()函數(shù)是否是否合格返回1返回05. 運行結(jié)果5.1歡迎界面5.2主菜單5.3信息查詢頁面5.4統(tǒng)計菜單頁面5.5顯示信息頁面5.6退出頁面6. 程序調(diào)試與測試測試數(shù)據(jù):采購編號001001001002001003001004零部件名活塞輪胎后視鏡方向盤稱采購日期2013-09-22013-04-22013-09-082013-09-0737采購員名堯徐倩衛(wèi)添翼林琳字采購數(shù)量90679089采購價格90.00000078.00000078.00000067.000000供貨單位汽院黃岡6.1主菜單選擇測試若用戶輸入錯誤選項,則如圖顯示:6.2 采購信息未從文件讀入6.3 采購信息的輸入
15、測試1)若添加的采購編號已存在,則如圖顯示:2)若添加的采購信息日期格式輸入錯誤,則如圖顯示3)若查詢的采購編號輸入錯誤,則如圖顯示4)若查詢的零部件名稱輸入錯誤,則如圖顯示5)若輸入價格為負數(shù)時,如圖顯示6)若輸入的數(shù)量為負值時,如圖顯示7. 問題與不足1、需求分析中存在的問題每次只能從鍵盤中添加一條采購信息,當遇到需要添加多條信息時,比較麻煩。統(tǒng)計功能太少,如果要求幾個零部件的總價,無法實現(xiàn)。2、程序中存在的缺陷每次運行其他功能前都要先從文件中讀入,比較耗時。有些功能輸入錯誤時無法重新輸入,而是直接跳到主菜單。緩存較多。8. 建議題目應(yīng)更加貼近生活,這樣可以讓同學們看到c 語言的有用之處,
16、激發(fā)同學們的學習熱情。課程設(shè)計的題目涉及圍應(yīng)該更廣。程序設(shè)計的功能應(yīng)相對更加復雜一點,這樣有利培養(yǎng)同學們的分析問題,解決問題的能力,同時也能提高同學們對代碼的掌握能力。再者,就是驗收時應(yīng)該要學生畫出鏈表結(jié)構(gòu)圖,幫助他們更加深刻的掌握知識。9. 編程體會經(jīng)歷了編 c 語言課程設(shè)計后,我對這一學期 c 語言所學容有了更加深刻的了解和掌握, 特別是一直不懂的鏈表和指針, 現(xiàn)在發(fā)現(xiàn)自己都能運用了,很開心自己的進步。所以,雖然寫程序的過程中,遇到各種問題,調(diào)試的時候也是遇到各種令人頭大的問題, 但能借助課程設(shè)計提高自己對指針和鏈表的熟練度, 提高自己對 c 語言編程的熟練度,也希望學??梢远嚅_設(shè)一些這樣
17、的課程, 既是讓我們對自己所學知識的一個綜合理解與使用, 也可以提高我們的動手實踐能力、 對知識的運用能力,更是一個讓我們學會獨立思考的好機會。10. 程序源代碼#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<process.h>#include<string.h>#include<conio.h>#define LEN sizeof(struct buy)/申請結(jié)構(gòu)體空間#define N 100/*申明程序中運用的函數(shù) */void huany
18、ing();/封面函數(shù)void readinto();/讀取文件void input();/添加采購信息void listCG();/顯示采購信息void numshow();/根據(jù)采購編號顯示采購信息void nameshow();/根據(jù)零部件名稱顯示采購信息void change();/修改采購信息void disapper();/刪除采購信息void menu();/顯示主菜單void choise();/選擇所需功能void tongji();/統(tǒng)計功能菜單int number();/根據(jù)零部件名稱統(tǒng)計采購的零部件總數(shù)量int times();/根據(jù)采購員名字統(tǒng)計采購的零部件總數(shù)量in
19、t checkdate(int year,int month,int day); /檢測時間void byebye();/告別界面void save();/保存文件/*定義全局變量 */struct buy/定義結(jié)構(gòu)體char buynum10;char itemname10;char day30;char buyername10;int count;float price;char source10;struct buy *next;int flag=0;/*flag為文件是否以正確讀入的標志位*/struct buy *head=NULL,*p,*p1,*p2,*p3; /*定義結(jié)構(gòu)體指針
20、*/*主函數(shù) */int main()huanying();getch();while(1)menu();/*顯示主菜單*/choise();/*顯示選擇功能*/return 0;/* */封面函數(shù)void huanying()printf("nnntt* *n");printf("tt*n");printf("tt*c語 言 課 程 設(shè) 計*n");printf("tt*n");printf("tt*學生:徐倩*n");printf("tt*指導老師:吳年志*n");pri
21、ntf("tt*班 級 :T1323-15*n");printf("tt*printf("tt*學號:聯(lián)系方式:(69180)*n");*n");printf("tt*n");printf("tt*課程題目:汽車零部件采購管理程序*n");printf("tt*n");printf("tt*n");fflush(stdin);printf("請按回車鍵繼續(xù)······");/*
22、 */告別界面void byebye()printf("nnntt* *n");printf("tt*n");printf("tt*printf("tt*printf("tt*printf("tt*printf("tt*printf("tt*n");*n");*n");*n");*n");*n");printf("tt*printf("tt*printf("tt*n");*n");*n&
23、quot;);printf("tt*歡迎下次使用······*n");printf("tt*n");/* */主菜單函數(shù)void menu()system("cls");printf("nnntt*歡迎使用汽車零部件管理系統(tǒng)*n");printf("tt |tttt|n");printf("tt |tt1,讀取采購信息 ttt|n");printf("tt |tttt|n");printf(&qu
24、ot;tt |tt2,從鍵盤添加并保存采購信息t|n");printf("tt |tttt|n");printf("tt |tt3,根據(jù)采購編號查找零件信息t|n");printf("tt |tttt|n");printf("tt |tt4,根據(jù)零部件名稱查找采購信息t|n");printf("tt |tttt|n");printf("tt |tt5,修改并保存采購信息 tt|n");printf("tt |tttt|n");printf(&qu
25、ot;tt |tt6,刪除并保存余下采購信息t|n");printf("tt |tttt|n");printf("tt |tt7,統(tǒng)計采購信息 ttt|n");printf("tt |tttt|n");printf("tt |tt8,顯示采購信息 ttt|n");printf("tt |tttt|n");printf("tt |tt0,退出管理系統(tǒng) ttt|n");printf("tt*n");/*讀入文件函數(shù)*/void readinto()F
26、ILE *fp;/*int n=0;if(fp=fopen("lingjian.txt","r")=NULL) /*文件指針 */打開文件時無此文件*/printf("文件打開錯誤:n");exit(0);p1=(struct buy *)malloc(LEN);head=p1;p1->next =NULL;while(!feof(fp)/*讀取文件的信息*/fscanf(fp,"%s%s%s%s%d%f%s",p1->buynum,p1->itemname,p1->day,p1->b
27、uyername,&p1->count,&p1->price,p1->source);p2=(struct buy *)malloc(LEN);/*p2指向新申請的節(jié)點 */p1->next =p2;p3=p1;p1=p2;p1->next =NULL;free(p2);p3->next=NULL;fclose(fp);/*關(guān)閉文件 */flag=1;printf("文件讀取成功! n");listCG();/* 選擇所需功能函數(shù) */void choise()int n;printf("-請從鍵盤輸入您的選擇(
28、0-8 的整數(shù)):");scanf("%d",&n);while(n<0|n>8)printf("輸入不合法,請再輸入一次:");scanf("%d",&n);switch(n)case 1:system("cls");/*清屏 */readinto();break;case 2:system("cls");input();break;case 3:system("cls");numshow();break;case 4:system(&
29、quot;cls");nameshow();break;case 5:system("cls");change();break;case 6:system("cls");disapper();break;case 7:system("cls");tongji();break;case 8:system("cls");listCG();break;case 0:system("cls");byebye();exit(0);/* 從鍵盤添加并保存采購信息函數(shù) */void input()i
30、nt n=0,i=0,k;char ch;long y,m,d;if(flag=0)printf("未建立,采購信息數(shù)據(jù)庫為空n");printf("按任意鍵返回 ");getch();return;printf(" 請輸入將要添加的采購編號(形如 001002,以回車鍵結(jié)束) n"); fflush(stdin);scanf("%s",p2->buynum);p1=head;while(p1!=NULL)if(strcmp(p2->buynum,p1->buynum)=0)/*找到數(shù)據(jù)庫信息中與
31、輸入相同的采購編號*/printf("printf("printf("printf("printf("printf("printf("printf("printf("你輸入的采購編號已存在! !");對應(yīng)零部件信息如下:");采購編號 :%sn",p1->buynum);零部件名稱 :%sn",p1->itemname);采購日期 :%sn",p1->day);采購員名字 :%sn",p1->buyername);采購數(shù)量
32、 :%dn",p1->count);采購價格 :%fn",p1->price);供貨單位 :%sn",p1->source);n=1;/*標志位 */printf("請按任意鍵返回!n");getch();system("cls");break;p1=p1->next;if(n!=1)system("cls");p1=head;while(p1->next!=NULL)p1=p1->next;printf("請輸入 ");p2=(struct buy
33、 *)malloc(LEN);/開辟一個新單元fflush(stdin);for(i=0;i<7;i+)if(i=0)fflush(stdin);printf("采購編號(數(shù)字字符串型) :");scanf("%s", p2->buynum);if(i=1)fflush(stdin);printf("零部件名稱(文字或英文字符串型) :");scanf("%s", p2->itemname);if(i=2)doprintf("采購日期 ( 形如 *-*-*,以回車鍵結(jié)束) :"
34、);fflush(stdin);scanf("%s",p2->day);if(p2->day4='-'&&p2->day7='-'&&strlen(p2->day)=10)y=(p2->day0-48)*1000+(p2->day1-48)*100+(p2->day2-48)*10+(p2 ->day3-48);m=(p2->day5-48)*10+(p2->day6-48);d=(p2->day8-48)*10+(p2->day9-48);k=checkdate(y,m,d);/*根據(jù)函數(shù)返回值判斷是否要重新輸入 */if(k=1)break;while(1);if(i=3)fflush(stdin);printf("采購員名字 ( 文字或英文字符串型,以回車鍵結(jié)束 ) :");scanf("%s",p2->buyername
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校教學成果表格
- 農(nóng)學作物種植技術(shù)測試題及答案解析
- 高效辦公數(shù)字化解決方案實踐指南
- 財務(wù)人員擔保協(xié)議書
- 水資源智能監(jiān)控與管理合同
- 金融科技反欺詐技術(shù)合作協(xié)議
- 基于人工智能的智能種植管理系統(tǒng)優(yōu)化實踐
- 月子中心月嫂服務(wù)合同
- 建筑裝修行業(yè)施工安全責任書
- 西方童話格林童話讀后感和兒童成長影響
- 管理學原理(南大馬工程)
- 高考必知的自然科學類基礎(chǔ)知識考試題庫(400題)
- 設(shè)計思維電子課件
- 建筑施工企業(yè)安全生產(chǎn)風險分級管控體系-實施指南
- 配位鍵和配位化合物課件
- 國際貨物運輸與保險課后習題參考答案
- 房地產(chǎn)銷售培訓PPT培訓課件
- 職業(yè)暴露(銳器傷)應(yīng)急預案演練腳本
- 建筑設(shè)計電梯計算
- 軌道交通云平臺業(yè)務(wù)關(guān)鍵技術(shù)發(fā)展趨勢
- 打造金融級智能中臺的數(shù)據(jù)底座
評論
0/150
提交評論