第一篇:C語言課程設(shè)計 倉庫管理系統(tǒng)
C語言課程設(shè)計 倉庫管理系統(tǒng)
#include
struct cangku {
int num;
char name[20];
char introdution[50];
float square;
};typedef struct cangku Cangku;
int Input(Cangku t[]);void List(Cangku t[],int n);void SearchOnName(Cangku t[],int n);int DeleteRecord(Cangku t[],int n);int AlterRecord(Cangku t[],int n);int AddRecord(Cangku t[],int n);void SortOnName(Cangku t[],int n);void SortOnSquare(Cangku t[],int n);void SaveRecord(Cangku t[],int n);int LoadRecord(Cangku t[]);int LoadRecord1(Cangku t[]);void Save(Cangku t[],int n);void Load(Cangku t[],int n);void Load1(Cangku t[]);int Menu_select();
void main(){
Cangku ck[50];int i,l,length,w=1;int q[4]={5,2,1,0};
system(“cls”);printf(“請輸入第1個密碼:n”);for(i=0;i<4;i++)
{
scanf(“%d”,&l);
system(“cls”);
if(l==q[i])
printf(“正確,繼續(xù)輸入第%d個密碼:.n”,i+2);
else
{
w=0;
printf(“輸入錯誤!n”);
break;
} }
while(w)
{
switch(Menu_select())
{
case 1:
length=Input(ck);
SaveRecord(ck,length);
break;
case 2:
length=LoadRecord(ck);
SearchOnName(ck,length);
break;
case 3:
length=LoadRecord(ck);
length=DeleteRecord(ck,length);
SaveRecord(ck,length);
break;
case 4:
length=LoadRecord(ck);
length=AlterRecord(ck,length);
SaveRecord(ck,length);
break;
case 5:
length=LoadRecord(ck);
length=AddRecord(ck,length);
SaveRecord(ck,length);
break;
case 6:
length=LoadRecord(ck);
system(“cls”);
List(ck,length);
break;
case 7:
length=LoadRecord(ck);
system(“cls”);
SortOnName(ck,length);
SaveRecord(ck,length);
break;
case 8:
length=LoadRecord(ck);
system(“cls”);
SortOnSquare(ck,length);
SaveRecord(ck,length);
break;
case 9:
length=LoadRecord(ck);
system(“cls”);
Save(ck,length);
break;
case 0:
length=LoadRecord1(ck);
Load1(ck);
system(“cls”);
Load(ck,length);
break;
case 10: exit(0);
}
} }
int Menu_select(){ int c;
printf(“按任意鍵進(jìn)入倉庫管理菜單n”);
getchar();
system(“cls”);
system(“color F0”);printf(“
******************************倉庫管理*******************************n”);
printf(“
*
1.錄入倉庫初始記錄
*n”);
printf(“
*
2.按倉庫名稱查找記錄
*n”);
printf(“
*
3.刪除倉庫記錄
*n”);
printf(“
*
4.修改倉庫記錄
*n”);printf(“
*
5.增加倉庫信息
*n”);
printf(“
*
6.顯示全部記錄
*n”);
printf(“
*
7.按倉庫名稱排序
*n”);
printf(“
*
8.按倉庫面積排序
*n”);
printf(“
*
9.備份
*n”);printf(“
*
0.恢復(fù)
*n”);printf(“
*
10.退出
*n”);
printf(“
*********************************************************************n”);do {
printf(“n輸入您想要進(jìn)行的操作選項鍵(0-10):”);
if(scanf(“%d”,&c)!=1)
{
while(getchar()!='n')
continue;
} }
while(c<0||c>10);return c;}
int Input(Cangku t[]){ int i,n;
system(“cls”);
printf(“n請輸入要輸入的倉庫數(shù)目:n”);
scanf(“%d”,&n);
printf(“開始輸入倉庫信息:n”);
for(i=0;i { system(“cls”); printf(“n第%d個倉庫的編號:”,i+1); scanf(“%d”,&t[i].num); printf(“第%d個倉庫的名稱:”,i+1); scanf(“%s”,t[i].name); printf(“第%d個倉庫的面積:”,i+1); scanf(“%f”,&t[i].square); printf(“第%d個倉庫的說明:”,i+1); scanf(“%s”,t[i].introdution);} return(n);} void List(Cangku t[],int n){ int i; printf(“ *********************************************************************n”); printf(“ ** 編號 名稱 面積 說明n”); printf(“ -------n”);for(i=0;i printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution);} printf(“ *********************************************************************n”); printf(“n”);getchar();} void SearchOnName(Cangku t[],int n){ char s[20]; int i,flag=0; system(“cls”); printf(“請輸入要查找的倉庫名稱:n”); scanf(“%s”,s); for(i=0;i { if(strcmp(s,t[i].name)==0) { flag=1; system(“cls”); printf(“nn要查找的倉庫信息如下:n”); printf(“n”); printf(“ *********************************************************************n”); printf(“ ** 編號 名稱 面積 說明n”); printf(“ -------n”);{ printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution);} printf(“ *********************************************************************n”); printf(“n”); } } if(flag==0) printf(“要查找的倉庫不存在!n”);getchar();} int DeleteRecord(Cangku t[],int n){ char s[20]; char ch; int i,j,flag=0; system(“cls”); printf(“請輸入要刪除的倉庫名稱n”); scanf(“%s”,s); for(i=0;i if(strcmp(s,t[i].name)==0) { flag=1; system(“cls”); printf(“nn要刪除的倉庫信息如下:n”); printf(“n”); printf(“ *********************************************************************n”); printf(“ ** 編號 名稱 面積 說明n”); printf(“ -------n”);{ printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution);} printf(“ *********************************************************************n”); printf(“n”); printf(“確定刪除倉庫信息嗎?(Y/N)n”); ch=getchar(); ch=getchar(); if(ch=='Y'||ch=='y') { for(j=i;j t[j]=t[j+1]; n--; i--; printf(“刪除成功.n”); } } } if(flag==0) printf(“要刪除的倉庫不存在!n”); getchar(); return n;} int AlterRecord(Cangku t[],int n){ int i,flag=0; char s[20],ch; system(“cls”); printf(“請輸入要修改的倉庫名稱n”); scanf(“%s”,s); for(i=0;i { if(strcmp(s,t[i].name)==0) { flag=1; system(“cls”); printf(“nn要修改的倉庫信息如下:n”); printf(“n”); printf(“ *********************************************************************n”); printf(“ ** 編號 名稱 面積 說明n”); printf(“ -------n”); { printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution); } printf(“ *********************************************************************n”); printf(“n”); printf(“確定修改倉庫信息嗎?(Y/N)n”); ch=getchar(); ch=getchar(); if(ch=='y'||ch=='Y') { system(“cls”); printf(“請輸入修改后的信息:n”); printf(“請輸入倉庫新的名稱:”); scanf(“%s”,t[i].name); printf(“請輸入%s倉庫新的編號:”,t[i].name); scanf(“%d”,&t[i].num); printf(“請輸入%s倉庫新的面積:”,t[i].name); scanf(“%f”,&t[i].square); printf(“請輸入%s倉庫新的說明:”,t[i].name); scanf(“%s”,t[i].introdution); } } } if(flag==0) printf(“要修改的倉庫不存在!n”); getchar(); return n;} int AddRecord(Cangku t[],int n){ int i,m; system(“cls”); printf(“n請輸入再增加的記錄數(shù):n”); scanf(“%d”,&m); printf(“開始追加記錄n”); for(i=n;i { system(“cls”); printf(“n第%d個倉庫的編號:”,i+1); scanf(“%d”,&t[i].num); printf(“第%d個倉庫的名稱:”,i+1); scanf(“%s”,t[i].name); printf(“第%d個倉庫的面積:”,i+1); scanf(“%f”,&t[i].square); printf(“第%d個倉庫的說明:”,i+1); scanf(“%s”,t[i].introdution); } return(n+m);} void SortOnName(Cangku t[],int n){ int i,j; struct cangku temp; for(j=1;j for(i=0;i if((strcmp(t[i].name,t[i+1].name))>0) { temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } printf(“排序成功!!n”); printf(“排序后倉庫信息列表如下:n”); List(t,n);} void SortOnSquare(Cangku t[],int n){ int i,j; struct cangku temp; for(j=1;j for(i=0;i if(t[i].square { temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } printf(“排序成功!!n”); printf(“排序后倉庫信息列表如下:n”); List(t,n);} void SaveRecord(Cangku t[],int n){ int i; FILE *fp; if((fp=fopen(“record.txt”,“w”))==NULL) { printf(“不能打開文件!n”); exit(1);} for(i=0;i { fwrite(&t[i],sizeof(struct cangku),1,fp); } fclose(fp);} int LoadRecord(Cangku t[]){ int n=0; FILE *fp; if((fp=fopen(“record.txt”,“a+”))==NULL) { printf(“不能打開文件!n”); exit(1);} while(fread(&t[n],sizeof(struct cangku),1,fp))n++; fclose(fp); printf(“從文件中成功讀出記錄!!n”); return n;} int LoadRecord1(Cangku t[]){ int n=0; FILE *fp; if((fp=fopen(“bkrecord.txt”,“a+”))==NULL) { printf(“不能打開文件!n”); exit(1);} while(fread(&t[n],sizeof(struct cangku),1,fp))n++; fclose(fp); printf(“從文件中成功讀出記錄!!n”); return n;} void Save(Cangku t[],int n){ int i; FILE *fp; if((fp=fopen(“bkrecord.txt”,“w”))==NULL) { printf(“不能打開文件!n”); exit(1);} for(i=0;i { fwrite(&t[i],sizeof(struct cangku),1,fp); } fclose(fp); printf(“備份成功.n”); getchar();} void Load1(Cangku t[]){ int n=0; FILE *fp; if((fp=fopen(“bkrecord.txt”,“a+”))==NULL) { printf(“不能打開文件!n”); exit(1); } while (fread(&t[n],sizeof(struct cangku),1,fp))n++; fclose(fp); getchar();} void Load(Cangku t[],int n){ int i; FILE *fp; if((fp=fopen(“record.txt”,“w”))==NULL) { printf(“不能打開文件!n”); exit(1);} for(i=0;i { fwrite(&t[i],sizeof(struct cangku),1,fp); } fclose(fp); printf(“恢復(fù)成功.n”);}1 倉庫管理系統(tǒng)課程設(shè)計報告 一、概述 項目背景: 倉庫管理在企業(yè)的整個供應(yīng)鏈中起著至關(guān)重要的作用,如果不能保證正確的進(jìn)貨和庫存控制及發(fā)貨,將會導(dǎo)致管理費用的增加,服務(wù)質(zhì)量難以得到保證,從而影響企業(yè)的競爭力。傳統(tǒng)簡單、靜態(tài)的倉庫管理已無法保證企業(yè)各種資源的高效利用。如今的倉庫作業(yè)和庫存控制作業(yè)已十分復(fù)雜化多樣化,僅靠人工記憶和手工錄入,不但費時費力,而且容易出錯,給企業(yè)帶來巨大損失。使用倉庫管理系統(tǒng) , 對倉庫各環(huán)節(jié)實施全過程控制管理,并可對貨物進(jìn)行貨位、批次、保質(zhì)期、配送等實現(xiàn)系統(tǒng)列號管理,對整個收貨、發(fā)貨、補貨、集貨、送貨等各個環(huán)節(jié)的規(guī)范化作業(yè) , 還可以根據(jù)客戶的需求制作多種合理的統(tǒng)計報表。倉庫管理系統(tǒng)能幫助企業(yè)合理有效地利用倉庫空間,以快速、準(zhǔn)確、低成本的方式為客戶提供最好的服務(wù)。 系統(tǒng)特點: 本系統(tǒng)是采用面向?qū)ο蟮脑O(shè)計思想進(jìn)行編制,整個系統(tǒng)由若干個表單、報表及一個主菜單組成,由項目管理器統(tǒng)一管理全部程序的編寫和調(diào)試.用戶在操作中可以通過主菜單調(diào)用系統(tǒng)的各個功能.在表單設(shè)計方面盡量考慮方便用戶,簡化操作,絕大部分操作只需點擊鼠標(biāo)即可完成,力求突出系統(tǒng)的便利性、實用性.設(shè)計環(huán)境與工具: 在現(xiàn)有的DBMS(Visual FoxPro)支持下進(jìn)行。 二、需求分析 問題陳述: 需完成的功能: 產(chǎn)品入庫管理,可以填寫入庫單,確認(rèn)產(chǎn)品入庫; 產(chǎn)品出庫管理,可以填寫出庫單,確認(rèn)出庫; 借出管理,憑借條借出,然后能夠還庫; 初始庫存設(shè)置,設(shè)置庫存的初始值,庫存的上下警戒限; 可以進(jìn)行盤庫,反映每月、年的庫存情況; 可以查詢產(chǎn)品入庫情況、出庫情況、當(dāng)前庫存情況,可以按出庫單、入庫單,產(chǎn)品、時間進(jìn)行查詢; 三、系統(tǒng)結(jié)構(gòu)設(shè)計 (1)系統(tǒng)功能結(jié)構(gòu)設(shè)計(包括主要功能模塊及功能模塊的細(xì)化。) 本系統(tǒng)應(yīng)能夠方便的實現(xiàn)倉庫貨物存儲信息的錄入、修改、編輯和瀏覽等功能,高效地完成企業(yè)的各種產(chǎn)品信息的統(tǒng)計功能,打印出各種產(chǎn)品入庫出庫和盤庫查詢的信息表格,系統(tǒng)的各主要功能的要求如下: 信息錄入功能: 倉庫產(chǎn)品基本信息、產(chǎn)品入庫信息、產(chǎn)品出庫信息、產(chǎn)品清單資料等.瀏覽功能: 瀏覽倉庫產(chǎn)品基本信息,瀏覽產(chǎn)品入庫情況、出庫情況、當(dāng)前庫存情況.查詢功能: 產(chǎn)品標(biāo)號,或者按驗收時間查詢庫存設(shè)置等.報表打印功能: 打印倉庫產(chǎn)品貨單表,空白產(chǎn)品登記表和各種統(tǒng)計表.(2)數(shù)據(jù)庫設(shè)計 一個數(shù)據(jù)庫中包含許多表,表之間又有關(guān)聯(lián),所以設(shè)計數(shù)據(jù)庫的步驟為:第一步,確定所需要的表;第二步,確定每個表所需要的字段;第三,確定各個表之間的關(guān)聯(lián)關(guān)系;最后形成表的結(jié)構(gòu).定義表(包括表中的字段)、視圖、索引、主關(guān)鍵字、確定表間的聯(lián)系。 數(shù)據(jù)庫要求:在數(shù)據(jù)庫中至少應(yīng)該包含下列數(shù)據(jù)表: 出庫單表(chjy): 記錄產(chǎn)品出庫狀況。 入庫單表(cgdd):記錄產(chǎn)品入庫狀況。 產(chǎn)品供應(yīng)商表(gys):記錄產(chǎn)品提供者。 公司雇員表(gy):記錄來倉庫存取產(chǎn)品的人員名單。產(chǎn)品表(cp):記錄倉庫現(xiàn)存狀況。 庫存情況表;出庫臺帳; 入庫臺帳; 借條信息表(反映借出人,借出時間,借出產(chǎn)品,借出數(shù)量,還庫時間等)。 (3)系統(tǒng)流程結(jié)構(gòu)圖 數(shù)據(jù)流圖的基本目的是利用它作為交流信息的工具,利用它將對現(xiàn)有系統(tǒng)的認(rèn)識或?qū)δ繕?biāo)系統(tǒng)的設(shè)想用數(shù)據(jù)流圖描繪出來,供有關(guān)人員審查確認(rèn): 數(shù)據(jù)流圖的另一個主要用途是作為分析和設(shè)計的工具,幫助分析員實現(xiàn)總結(jié)現(xiàn)有系統(tǒng)的目標(biāo),對更詳細(xì)的設(shè)計步驟提供幫助.數(shù)據(jù)流圖是描繪系統(tǒng)的邏輯模型,以圖形的形式表示出來,以下是倉庫管理系統(tǒng)的數(shù)據(jù)流圖.四、系統(tǒng)詳細(xì)設(shè)計 (1)描述每一個功能所完成的任務(wù),指明實現(xiàn)該功能的表單、菜單、報表等。 系統(tǒng)的功能模塊設(shè)計 圖1-1 系統(tǒng)功能模塊 (2)說明主要功能的設(shè)計思想和方法(包括涉及到的數(shù)據(jù)源、關(guān)鍵的屬性和代碼等。) 設(shè)計思想分析: 將管理系統(tǒng)分為進(jìn)庫操作、出庫操作、損耗操作、查詢操作、報表操作、維護(hù)操作六部分。 1、入庫時根據(jù)商品的具體情況進(jìn)行處理,如果庫中已存在此商品,就在原來的數(shù)量基礎(chǔ)上加上進(jìn)貨數(shù)量,如果沒有則自動新增此產(chǎn)品,并提醒管理員在最新報價表中加上此商品的最新報價(為了出庫的正確性,某商品的最新報價的存在是其出庫的前提)。如果商品已以入庫,則自動在商品進(jìn)出表中加上相關(guān)記錄,以便于以后的核對。 2、為了達(dá)到出庫價格的正確性,出庫時系統(tǒng)自動將此商品的售價和最新報價里的價格進(jìn)行比較,如果不相等則出現(xiàn)提示信息。另外,程序還有其他服務(wù)功能,比如如果商品數(shù)量不足或沒有相關(guān)商品則出現(xiàn)提示信息。 3、商品的查詢專門提供給廣大客戶使用,客戶可以按商品編號和商品名稱、數(shù)量、單價、進(jìn)庫出庫信息、對庫中的具體商品進(jìn)行查詢,查詢有商品代號和商品名稱兩種方法,這樣,客戶可以輕松掌握倉庫的庫存情況,便于交易。 4、核對措施也是此系統(tǒng)中必備的,為了便于以后核對,出庫的記錄也將存儲起來。出庫單打印默認(rèn)為2份,其一用交給交易對方,另一份管理員自己保存。便于核對。同樣,本系統(tǒng)還會自動對入庫情況進(jìn)行記錄,這樣,用戶能輕松掌握倉庫的變化,可以隨時對庫存進(jìn)行分析核對。 5、保密性是作為一個企業(yè)或者機構(gòu)所十分重視的,給用戶一個安全的環(huán)境是優(yōu)秀的管理軟件所必須做到做好的,本軟件也做到了安全性,就是說登錄時要有正確的密碼,這樣一來,只有系統(tǒng)管理員才有權(quán)更改系統(tǒng)里面的數(shù)據(jù)了。 6、本系統(tǒng)還帶有自動清除測試記錄功能(課本是本系統(tǒng)的測試數(shù)據(jù)),如果用戶要正式使用倉庫,只要選擇操作菜單下的正式使用命令。這樣就不需要用記一條條去刪記錄了。 (3)界面設(shè)計要合理、簡明。 五、實施及測試 指出已實現(xiàn)的每個功能,附上運行、測試結(jié)果。 六、結(jié)束語 心得體會: 經(jīng)過了這次倉庫管理系統(tǒng)的課程設(shè)計我從中學(xué)到了很多,同時明白了做一個小型軟件的步驟和流程.如何讓自己設(shè)計的軟件運用到具體的實際工作中,這是一個關(guān)鍵的環(huán)節(jié).還有就是程序設(shè)計和運行測試中遇到的問題該如何解決,從解決問題中我也學(xué)到了許多平時課本上所沒有的知識.當(dāng)然,能夠完成這個倉庫管理系統(tǒng)我自己也感覺很有成就感.運用到的開發(fā)工具和軟件技術(shù): 此系統(tǒng)結(jié)合貨物倉庫管理的要求,對Visual FoxPro(VFP)數(shù)據(jù)庫管理系統(tǒng)、SQL語言的學(xué)習(xí)和應(yīng)用,主要完成貨物倉庫管理系統(tǒng)的需求分析,系統(tǒng)的數(shù)據(jù)庫設(shè)計和實現(xiàn),系統(tǒng)的表單設(shè)計,主控程序設(shè)計,并由此設(shè)計了數(shù)據(jù)庫結(jié)構(gòu)和應(yīng)用程序。系統(tǒng)運行結(jié)果證明,本人設(shè)計的貨物倉庫管理系統(tǒng)可以滿足倉庫管理者完成倉庫管理的日常工作,包括材料的入庫,出庫以及庫存材料信息的管理維護(hù)等 軟件還需要哪些改進(jìn): 在編寫源程序代碼的過程中對語言的運用還需要提高,應(yīng)使寫出來的程序更加簡潔,易讀懂,更加滿足實際工作的需要.要想使做出來的程序更好的利用還需根據(jù)實際需要在今后的運用中不斷的改進(jìn)和完善.七、參考資料 1.Visual FoxPro 程序設(shè)計及其應(yīng)用系統(tǒng)開發(fā) 李作緯 等 中國水利水電出版社 2.數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)技術(shù) 劉軍 等 機械工業(yè)出版社 3.其它資料若干 《軟件工程》課程設(shè)計報告 倉庫信息管理系統(tǒng) 專業(yè)班級: 學(xué)生學(xué)號: 學(xué)生姓名: 指導(dǎo)教師姓名: 2016年月 目錄 一、系統(tǒng)可行性研究.......................................2 二、系統(tǒng)的需求分析.......................................5 三、系統(tǒng)概要設(shè)計........................................14 四、系統(tǒng)的詳細(xì)設(shè)計......................................17 五、系統(tǒng)的實現(xiàn)和測試....................................20 六、實驗總結(jié)............................................26 倉庫信息管理系統(tǒng)一、系統(tǒng)可行性研究 1.1引言 1.1.1編寫目的 為了以最小的代價在最短的時間內(nèi)確定倉庫管理系統(tǒng)項目是否值得去開發(fā),其中的關(guān)鍵和技術(shù)難點是什么,問題能否得到解決,怎樣達(dá)到目的?我們編寫了可行性報告以對這些問題進(jìn)行分析。 除此之外,經(jīng)過對此項目進(jìn)行詳細(xì)調(diào)查研究,我們初步擬定了系統(tǒng)實現(xiàn)報告,對軟件開發(fā)中將要面臨的問題及其解決方案進(jìn)行初步設(shè)計及合理安排。明確開發(fā)風(fēng)險及其所帶來的經(jīng)濟(jì)效益。以便于中小規(guī)模工廠的倉庫管理人員閱讀及理解整個項目。1.1.2項目背景 開發(fā)的軟件系統(tǒng)的名稱:倉庫信息管理系統(tǒng) 項目提出者: 項目開發(fā)者: 項目使用者:倉庫管理人員 1.2可行性研究的前提 1.2.1要求 A.功能:極大提高倉庫工作人員的工作效率,大大減少以往入貨、出庫流程繁瑣,雜亂,周期長的弊端;基于倉庫管理的全面自動化,減少入庫管理、出庫管理及庫存管理中的漏洞,節(jié)約不少管理開支,增加企業(yè)收入;實現(xiàn)倉庫的管理操作自動化和信息的電子化,全面提高倉庫的管理水平。 B.性能:系統(tǒng)的存貨信息必須保持更新狀態(tài),客戶的產(chǎn)品出入庫信息必須無差錯,及時的 保存到倉庫管理系統(tǒng)的服務(wù)器上,對服務(wù)器上的數(shù)據(jù)必須定時的檢查并與倉庫中存放的貨物進(jìn)行核對。 C.本系統(tǒng)要求輸出的數(shù)據(jù)有:數(shù)據(jù)完整,詳實,及時。 在此方面,若此項目投入使用,將給企業(yè)帶來豐厚的經(jīng)濟(jì)效益社會效益。并且,此項目開發(fā)成本低,占用資源少,在經(jīng)濟(jì)方面可行。1.5操作可行性分析 本系統(tǒng)設(shè)計思路清晰,操作簡捷,具有良好的用戶界面,和較為完善的異常處理機制及信息處理機制,一般倉庫管理者稍加培訓(xùn)即可使用。在操作方面可行。 二、系統(tǒng)的需求分析 2.1功能描述 本軟件主要有以下幾方面的功能: (1)信息管理:可對商品進(jìn)行查詢,刪除,修改操作,完成對商品信息管理的功能; (2)庫存管理:對商品入庫,出庫的管理。2.2數(shù)據(jù)流圖 2.2.1數(shù)據(jù)流分析 數(shù)據(jù)流圖是組織中信息運動的抽象,是管理信息系統(tǒng)邏輯模型的主要形式。它可以綜合的反映出信息在系統(tǒng)中的流動、處理和存儲情況,具有良好的抽象性 商品入庫請求商品入庫管理入庫商品信息更新商品信息出庫商品信息商品出庫請求商品出庫管理庫存商品信息更新后的商品信息修改商品請求刪除商品請求商品信息管理商品信息庫存商品信息表商品清單查詢商品請求圖2-2 二層數(shù)據(jù)流圖 對每一個功能模塊的分解圖 (1)對第一個模塊“商品入庫管理”的細(xì)分圖 商品入庫管理子系統(tǒng)包含兩個功能模塊:“商品入庫”、“處理商品”; 一個文件存儲:“入庫商品信息表” 入庫請求1商品入庫商品編號1.11.21.31.4商品名稱商品數(shù)量商品價格輸入商品編輸入商品名輸入商品數(shù)輸入商品價號稱量格商品信息入庫商品信息表入庫商品信息 圖2-3 “商品入庫管理”分解圖 (2)對“商品出庫管理”的細(xì)分圖 商品出庫管理子系統(tǒng)包含兩個功能模塊:“商品出庫”、“處理商品”; 一個文件存儲:“出庫商品信息表” 入庫請求1商品入庫商品編號1.1輸入商品編號商品名稱商品價格1.21.31.4商品數(shù)量輸入商品名輸入商品數(shù)輸入商品價稱量格商品信息商品商品出庫信息出庫商品信息表入庫商品信息表出庫商品信息出庫請求2商品出庫商品名稱2.1輸入商品名稱商品數(shù)量2.2輸入出庫數(shù)量入庫商品信息6更新商品信息3刪除商品輸入商品編號3.1輸入商品編號輸入商品名稱3.2輸入商品名稱商更新后的商品品信息信息輸入編號4.1.1輸入商品編號輸入名稱4.1.2輸入商品名稱商品信息庫存商品信息刪除商品請求管理員查詢商品信息請求44.1請求分類查詢商品信按條件查詢息商品信息請求分類4.2查詢所有商品信息庫存商品信息表查詢所有商品信息請求庫存商品信息5.2輸入新的編號修改后的商品信息輸出信息修改商品信息請求修改編號商品名稱5修改商品信息5.1輸入商品名稱管理員修改數(shù)量修改后的商品信息5.3輸入新的數(shù)量 圖2-6 底層數(shù)據(jù)流圖 2.3 數(shù)據(jù)字典 數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它是進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析后所獲得的主要成果。該系統(tǒng)的數(shù)據(jù)字典如下: 2.3.1 數(shù)據(jù)流 數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它是進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析后所獲得的主要成果。該系統(tǒng)的數(shù)據(jù)字典如下: 1.數(shù)據(jù)源點和終點描述(1)名稱:商品 加工編號:1.4 輸入數(shù)據(jù)流:商品數(shù)量 輸出數(shù)據(jù)流:商品信息 加工邏輯:輸入商品價格,輸出商品信息(6)加工名:商品出庫 加工編號:2 輸入數(shù)據(jù)流:出庫請求 輸出數(shù)據(jù)流:商品名稱 加工邏輯:接收出庫請求(7)加工名:輸入商品名稱 加工編號:1.2 輸入數(shù)據(jù)流:商品名稱 輸出數(shù)據(jù)流:商品數(shù)量 加工邏輯:輸入商品名稱(8)加工名:輸入出庫數(shù)量 加工編號:2.2 輸入數(shù)據(jù)流:商品數(shù)量 輸出數(shù)據(jù)流:商品出庫信息 加工邏輯:輸入出庫數(shù)量(9)加工名:更新商品信息 加工編號:6 輸入數(shù)據(jù)流:出庫商品信息,入庫商品信息,庫存商品信息 輸出數(shù)據(jù)流:更新后的商品信息 加工邏輯:接收修改的商品信息進(jìn)行修改(10)加工名:刪除商品 加工編號:3 輸入數(shù)據(jù)流:刪除商品請求 輸出數(shù)據(jù)流:輸入商品編號 加工邏輯:接收刪除請求 0 加工邏輯:修改商品信息 3.文件存儲 (1)文件名稱:入庫商品信息表 簡述:存放入庫的商品信息 輸入數(shù)據(jù):商品信息 輸出數(shù)據(jù):入庫商品信息 文件組成:商品的編號、名稱、數(shù)量、價格(2)文件名稱:出庫商品信息表 簡述:存放出庫的商品信息 輸入數(shù)據(jù):商品的出庫信息 輸出數(shù)據(jù):出庫商品信息 文件組成:出庫商品數(shù)量(3)文件名稱:庫存商品信息表 簡述:存放所有商品信息 輸入數(shù)據(jù):更新后的商品信息,修改后的商品信息,刪除后的商品信息 輸出數(shù)據(jù):庫存商品信息 文件組成:商品的編號、名稱、數(shù)量、價格 4.數(shù)據(jù)流 (1)數(shù)據(jù)流名字:入庫請求 描述:對商品進(jìn)行入庫 組成:入庫命令 (2)數(shù)據(jù)流名字:入庫商品信息 描述:對入庫商品信息處理 組成:入庫商品信息=商品編號+名稱+數(shù)量+價格(3)數(shù)據(jù)流名字:商品編號 描述:輸入商品編號 組成:商品編號 三、系統(tǒng)概要設(shè)計 3.1總體結(jié)構(gòu)和模塊設(shè)計 3.1.1總體結(jié)構(gòu)設(shè)計 模塊是軟件結(jié)構(gòu)的基礎(chǔ),軟件結(jié)構(gòu)的好壞完全由模塊的屬性體現(xiàn)出來,把軟件模塊化的目的是為了降低軟件復(fù)雜性,使軟件設(shè)計,測試,調(diào)試,維護(hù)等工作變得簡易,但隨著模塊數(shù)目的增加,通過接口連接這些模塊的工作量也隨之增加。1.總體結(jié)構(gòu)框圖 倉庫信息管理系統(tǒng)庫存管理信息管理商品入庫商品出庫刪除商品修改商品查詢商品信息按條件查詢商品信息查詢所有商品信息 圖3-1系統(tǒng)總體結(jié)構(gòu)圖 2.模塊說明 信息管理系統(tǒng)刪除請求修改請求輸入名稱輸入商品名稱輸入標(biāo)號輸入新編號商品信息查詢請求刪除商品信息刪除商品信息接收信息查詢商品信息反饋信息請求分類請求分類修改商品信息輸入編號反饋輸入名稱反饋接收信息按條件查詢商查詢所有商品品信息接商收品信信息息輸入商品編號及名稱輸入商品編號輸入商品名稱反饋輸入數(shù)量反饋輸入新數(shù)量 圖3-3信息管理子系統(tǒng)結(jié)構(gòu)圖 (3)庫存管理子系統(tǒng)結(jié)構(gòu)圖如圖3-4所示 庫存管理系統(tǒng)入庫請求出庫請求入庫商品信息商品入庫出庫商品信息商品出庫輸入編號反饋輸入名稱輸入反數(shù)饋量反饋反饋輸入價格輸入商品價格輸入名稱反饋信息輸入商品名稱輸入數(shù)量反饋信息輸入商品編號輸入商品名稱輸入商品數(shù)量輸入商品數(shù)量 圖3-4 庫存管理子系統(tǒng)結(jié)構(gòu)圖 四、系統(tǒng)的詳細(xì)設(shè)計 4.1總體結(jié)構(gòu)和模塊設(shè)計 6儲在入庫商品信息表中。 商品出庫模塊模塊:輸入出庫商品的編號以及出庫的數(shù)量,把出庫后的商品信息保存在出庫商品信息表中。 刪除商品模塊:先輸入商品的編號及名稱,再刪除該商品在庫存商品信息表中的信息。 修改商品信息模塊:先輸入商品的編號及名稱,在庫存商品信息表中查詢到該商品信息,再修改其對應(yīng)信息。 查詢商品信息模塊:輸入編號查詢商品在庫存商品信息表中的信息或查詢庫存商品信息表中的所有商品的信息。4.1.2各個模塊設(shè)計 (1)根據(jù)數(shù)據(jù)畫出的結(jié)構(gòu)圖如圖3-2所示 倉庫信息管理系統(tǒng)商品信息商品信息請求處理庫存管理系統(tǒng)請求處理信息管理系統(tǒng) 圖4-2 倉庫信息管理系統(tǒng)結(jié)構(gòu)圖 (2)信息管理子系統(tǒng)結(jié)構(gòu)圖如圖3-3所示 8商品入庫操作 商品出庫操作 出庫后的商品信息 出庫數(shù)量多余商品數(shù)量時 0 當(dāng)刪除的商品不存在是 修改商品操作 修改商品界面 商品信息查詢界面 所有商品信息 六、實驗總結(jié) 包括實驗問題中遇到問題,解決過程的分析;實驗心得體會等,不得抄襲! 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 二、倉庫信息管理系統(tǒng)分析與設(shè)計 (一)《倉庫信息管理系統(tǒng)》的需求建模 1、需求分析 倉庫信息管理系統(tǒng)要能完成以下功能: 倉庫存放的貨物品種繁多,堆存方式以及處理方式也非常復(fù)雜,隨著業(yè)務(wù)量的增加,倉庫管理者需要處理的信息量會大幅上升,因此往往很難及時準(zhǔn)確的掌握整個倉庫的運作狀態(tài)。針對這一情況,為了減輕倉庫管理員和操作員的工作負(fù)擔(dān),此系統(tǒng)在滿足倉庫的基本管理功能基礎(chǔ)上發(fā)揮信息系統(tǒng)的智能化。 根據(jù)要求可將系統(tǒng)分為四個模塊(1)用戶登錄模塊 普通操作員和管理人員登錄此系統(tǒng),執(zhí)行倉庫管理的一些操作,但是普通操作員和管理人員所能執(zhí)行的功能不一樣。(2)倉庫管理模塊 管理員工作需要登陸系統(tǒng),才能夠進(jìn)行操作,系統(tǒng)中的各項數(shù)據(jù)都不允許外人隨便查看和更改,所以設(shè)置登陸模塊是必須的??梢詧?zhí)行倉庫進(jìn)貨,退貨,領(lǐng)料,退料;商品調(diào)撥,倉庫盤點等功能。(3)業(yè)務(wù)查詢模塊 在用戶登錄系統(tǒng)后,可以執(zhí)行庫存查詢,銷售查詢,倉庫歷史記錄查詢。 (4)系統(tǒng)設(shè)置模塊 顯示當(dāng)前倉庫系統(tǒng)中的信息,在系統(tǒng)中可以執(zhí)行供應(yīng)商設(shè)置,倉庫設(shè)置。 2、功能模塊分析(1)登錄模塊 ? 普通操作員:顯示當(dāng)天倉庫中的所有庫存的信息。? 管理員:修改倉庫中的庫存信息。 ? 用戶注銷:在用戶執(zhí)行完倉庫功能時,注銷。? 用戶退出。(2)管理模塊 ? 倉庫庫存的進(jìn)貨與退貨; ? 倉庫中的庫存需要領(lǐng)料和退料功能; ? 倉庫也可以完成不同地區(qū)的商品在此倉庫的商品調(diào)撥任務(wù); ? 用戶人員也可以在當(dāng)天之后對倉庫中的庫存進(jìn)行盤點。(3)查詢模塊 ? 顯示當(dāng)前倉庫商品信息,并執(zhí)行庫存查詢; ? 顯示倉庫信息,對商品的銷售量進(jìn)行查詢; ? 此系統(tǒng)還可以對倉庫歷史記錄進(jìn)行查詢。(4)設(shè)置模塊 ? 供應(yīng)商設(shè)置 ? 倉庫設(shè)置 3、工作內(nèi)容及要求 ? 進(jìn)一步細(xì)化需求分析的內(nèi)容,識別出系統(tǒng)的參與者,并完成用例圖; 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 將用例圖中的每個用例都寫成相應(yīng)的事件流文檔; 進(jìn)一步使用活動圖來描述每個用例,為后續(xù)的系統(tǒng)設(shè)計做好準(zhǔn)備; 按照系統(tǒng)的功能分析,從用例的描述中提取出系統(tǒng)的對象類和界面類,建立類圖; 分析類圖中的實體類和實體類之間的關(guān)系,畫出數(shù)據(jù)庫的邏輯模型圖(只包含實體類,且注明角色和階元)。 ? 對數(shù)據(jù)庫的邏輯模型進(jìn)行優(yōu)化,取消多對多的聯(lián)系,完成最終的邏輯模型設(shè)計; ? 使用交互作用圖或狀態(tài)機圖完成系統(tǒng)動態(tài)行為的建模。(建議使用順序圖按功能分別描述) 4、創(chuàng)建SRS文檔: ? 引言 ? 倉庫管理系統(tǒng)將24小時為用戶服務(wù)。? 用途 ? SRS文檔將作為SDLC設(shè)計和編碼階段的輸入。? 作用域 ? 管理員直接對系統(tǒng)進(jìn)行管理。? 功能性需求 ? 操作員需要取得管理員的認(rèn)可才可以登錄此系統(tǒng)。? 操作員可以查詢庫存的信息。 ? 系統(tǒng)管理員可以管理登錄系統(tǒng)以后對倉庫進(jìn)行管理 ? 因為不是每個人都可以隨便修改系統(tǒng)的,所以系統(tǒng)管理員可以登錄進(jìn)系統(tǒng)以后對用戶的權(quán)限信息進(jìn)行管理。 ? 界面需求 ? 界面應(yīng)該清晰易懂。? 運行環(huán)境 ? 此系統(tǒng)可以在網(wǎng)絡(luò)上進(jìn)行運行。? ? ? ? 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 用例圖如下: 分析:操作員在進(jìn)行驗證后登陸系統(tǒng),可以執(zhí)行商品的進(jìn)退貨的記錄信息的查詢與管理等操作。 用戶登錄**倉庫領(lǐng)料倉庫進(jìn)貨**退出系統(tǒng)****商品調(diào)撥**操作員****用戶注銷*倉庫退料*倉庫退貨c 圖1 操作員用例圖 分析:此用戶是管理員,可以對倉庫信息進(jìn)行維護(hù),倉庫商品進(jìn)行盤點,業(yè)務(wù)分析,歷史記錄查詢,供應(yīng)商信息維護(hù)和倉庫查詢操作。 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 倉庫信息維護(hù)用戶登錄****用戶注銷******管理員***退出系統(tǒng)倉庫盤點*倉庫查詢**供應(yīng)商信息維護(hù)*業(yè)務(wù)分析歷史記錄查詢* 圖2 管理員用例圖 分析:該用戶為供應(yīng)商,可以對執(zhí)行倉庫進(jìn)貨和退貨的查詢與管理操作。 倉庫進(jìn)貨***商品供應(yīng)商*倉庫退貨 圖3 供應(yīng)商用例圖 (二)《倉庫管理系統(tǒng)》的靜態(tài)建模 靜態(tài)建模用于描述軟件的靜態(tài)成分,又叫結(jié)構(gòu)建模。它包含類關(guān)系圖和對象關(guān)系圖。用于描述軟件系統(tǒng)的成分之間的關(guān)系和依賴性。1)類的分析與設(shè)計 ? 確定初始類圖 ? 提取類的屬性 ? 提取類的操作 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 ? 類之間的關(guān)系 去除不必要的類和不正確的類: 1.冗余類:若兩個類表述同一信息,保留最具有描述能力的類; 2.不相干的類:去掉與問題沒有多少關(guān)系和根本不相關(guān)的類; 3.模糊類:類必須是確定的,有些臨時類邊界定義不對,或范圍太廣,應(yīng)排除; 4.屬性:如果有些名詞是用來描述某個類的,那么它一定是這個類的屬性。5.操作:如果所描述的操作并不適用于對象并且被自身所操作,那么這一定不是類。這樣可以得到相關(guān)的三種類關(guān)系: ? 人員信息包類圖 ? 接口信息包類圖 ? 系統(tǒng)事務(wù)信息包類圖 2)確定類之間的關(guān)系 兩個類之間的相互依賴就是關(guān)聯(lián),關(guān)聯(lián)常用描述性動詞或動詞組來表示,其中有物理位置的表示、傳導(dǎo)的動作、通信、所有者關(guān)系及條件的滿足等等。通過以上方法可以確定類圖: ① 人員信息包類圖里包含:操作員類、管理員類、供應(yīng)商類、商品進(jìn)貨模塊類、商品退換模塊類、商品打印模塊類、庫存查詢模塊類、商品盤點模塊類、歷史信息查詢模塊類和商品調(diào)撥模塊類。 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 **操作員-姓名-id號-權(quán)限+倉庫進(jìn)貨()*+倉庫退貨()+倉庫領(lǐng)料()+倉庫退料()+商品調(diào)撥()*+用戶登錄()+用戶注銷()+退出系統(tǒng)()+盤點信息打印報表()+進(jìn)貨商品打印報表()*+退換商品打印報表()+商品庫存信息()**商品進(jìn)貨模塊+商品清單()+退貨清單()+查詢信息()庫存查詢模塊**商品打印模塊* 圖4 人員信息包類圖 供應(yīng)商-供應(yīng)商姓名-供應(yīng)商id號-聯(lián)系方法+進(jìn)貨()+退貨()*1管理員-姓名-id號-權(quán)限+供應(yīng)商信息維護(hù)()+倉庫信息維護(hù)()+盤點信息()+倉庫查詢()+業(yè)務(wù)分析()+用戶注銷()+退出系統(tǒng)()+歷史記錄查詢()+用戶登錄()+查詢結(jié)果()*歷史信息查詢模塊*+查詢條件()+進(jìn)貨記錄()+商品調(diào)撥記錄()+商品盤點信息()*********商品退換模塊*商品盤點模塊*+審核后盤點信息()+查詢信息()**商品調(diào)撥模塊+查詢信息()+查詢條件()*+盤點信息列表()8 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 ② 接口信息包類圖里包含:用戶登錄類、倉庫管理類、系統(tǒng)管理類和業(yè)務(wù)查詢類。 倉庫管理+倉庫進(jìn)貨()+倉庫退貨()+倉庫領(lǐng)料()+倉庫退料()+倉庫調(diào)撥()+倉庫盤點()用戶登錄+用戶登錄()+用戶注銷()+退出系統(tǒng)()系統(tǒng)設(shè)置-供應(yīng)商設(shè)置-倉庫信息維護(hù)業(yè)務(wù)查詢+庫存查詢()+業(yè)務(wù)分析()+歷史記錄查詢() 圖5 接口信息包類圖 ③系統(tǒng)事務(wù)信息包類圖包含:用戶登錄類、供應(yīng)商管理類、業(yè)務(wù)分析類、查詢歷史信息類、倉庫信息維護(hù)類、領(lǐng)料類、退料類、退換類、盤點類、調(diào)撥類和倉庫查詢類。 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 調(diào)撥供應(yīng)商管理-該操作id號-日期-管理員id號+增加供應(yīng)商()倉庫信息維護(hù)-該操作id號-日期退料用戶登錄-該操作id號-登錄日期-登錄人id-name+用戶登錄()+用戶注銷()+退出系統(tǒng)()退貨-交易id-日期-操作員-交易id-日期-退料人-操作員倉庫查詢-該操作id-日期領(lǐng)料-交易id-日期-領(lǐng)料員-操作員查詢歷史信息-該操作id-日期業(yè)務(wù)分析-操作id號-日期-管理員id+opname()盤點-交易id-日期-管理員id-倉庫id 圖6 系統(tǒng)事務(wù)信息包類圖 (三)《倉庫管理系統(tǒng)》的動態(tài)建模 在完成靜態(tài)建模后,需要對系統(tǒng)實現(xiàn)動態(tài)建模。需要創(chuàng)建 ? 活動關(guān)系圖:表示系統(tǒng)的靜態(tài)成分為了完成過程需要執(zhí)行的活動的順序; ? 交互關(guān)系圖:表示軟件系統(tǒng)靜態(tài)成分之間的交互,常用序列關(guān)系圖和通信關(guān)系圖。(1)活動關(guān)系圖 活動關(guān)系圖是用來對特定過程的控制流進(jìn)行建模。 分析:管理員在登錄系統(tǒng)后,查看銷售記錄和查看商品庫存情況,如果缺貨就通知操作員缺貨商品清單,操作員即可聯(lián)系供應(yīng)商按缺貨清單提供貨物,然后管理員更新數(shù)據(jù)庫結(jié)束,如果不缺貨直接結(jié)束。 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 通知操作員缺貨商品清單查看銷售記錄聯(lián)系供應(yīng)商按缺貨清單提供貨物查看商品庫存情況[ 缺貨] 接受貨物更新庫存數(shù)據(jù)庫[ 不缺貨 ] 圖7 倉庫系統(tǒng)的活動圖 (2)交互關(guān)系圖:通信關(guān)系圖、序列關(guān)系圖 ①通信關(guān)系圖以消息的形式表示對象之間的交互。通信圖集中在活動著的對象上,表現(xiàn)的是相互通信的對象之間的消息傳遞,不參照時間。通信圖通過在消息上加序號表示消息傳遞的次序。序列號放在消息之前作為消息的前綴。 注:通信關(guān)系圖不描繪對象的生命線。A.管理員盤點過程協(xié)助圖 分析:操作員把盤點信息發(fā)送給管理員,管理員審查后盤點信息,在倉庫商品盤點模塊中盤點信息列表,然后交由信息打印模塊打印盤點信息列表,給操作員。 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 操作員盤點信息管理員盤點信息打印列表審查后盤點信息商品信息打印模塊盤點信息列表商品盤點模塊 圖8 管理員盤點過程協(xié)作圖 B.商品管理協(xié)作圖 分析:操作員通知供應(yīng)商進(jìn)貨,供應(yīng)商打印出進(jìn)貨清單,操作員也可以對進(jìn)貨退貨進(jìn)行管理,供應(yīng)商打印出退貨清單。 商品進(jìn)貨進(jìn)貨商印品打報表進(jìn)貨清單操作員退貨商品供應(yīng)商表庫存查詢商品退換退貨清單庫存信息進(jìn)貨商品打印報 圖9 商品管理協(xié)作圖 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 C.倉庫歷史記錄查詢協(xié)作圖 分析:管理員應(yīng)該先登錄系統(tǒng)。當(dāng)管理員登錄系統(tǒng)以后,可以查詢歷史信息,看到商品進(jìn)貨、商品盤點、商品調(diào)撥的歷史記錄。 商品進(jìn)貨管理員查詢條件歷史信息查詢進(jìn)貨、退貨記錄查詢條件商品調(diào)撥商品盤點圖10 倉庫歷史記錄查詢協(xié)作圖 ②序列關(guān)系圖 序列關(guān)系圖以按時間排序的消息形式來表示對象之間的交互。序列關(guān)系圖和通信關(guān)系圖的區(qū)別在于通信關(guān)系圖情調(diào)對象的組織結(jié)構(gòu),而序列關(guān)系圖則按時間順序顯示對象之間交互的消息。在序列關(guān)系圖中,可以沿x軸方向排列對象。將啟動交互的對象放在最左邊。消息序列中后來的對象則放在交互啟動對象的右邊。在交互中,對象發(fā)送和接收的消息按時間升序沿y軸防止。 注:和通信關(guān)系圖不同,序列關(guān)系圖描述對象生命線。 A.倉庫盤點過程序列圖 分析:操作員將盤點信息發(fā)送給管理員,管理員審查盤點信息,然后盤點信息列表交給商品打印模塊打印后發(fā)給操作員執(zhí)行相關(guān)商品操作。 商品盤點信息 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 操作員管理員商品盤點模塊商品打印模塊盤點信息盤點信息列表()審核后盤點信息盤點信息打印報表() 圖11 倉庫盤點過程序列圖 B.商品管理序列圖 分析:操作通知商品供應(yīng)商進(jìn)貨、退貨,商品供應(yīng)商將商品清單和退貨商品清單發(fā)送給商品進(jìn)貨模塊,商品進(jìn)貨模塊將進(jìn)貨商品打印報表給操作員,商品退貨模塊將商品退換報表打印發(fā)給操作員,操作員也可以查詢庫存,庫存庫存模塊將庫存查詢信息發(fā)送給操作員。 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 操作員商品供應(yīng)商商品進(jìn)貨模塊商品退換模塊進(jìn)貨()商品清單()進(jìn)貨商品打印報表()退貨清單()退貨()退換商品打印報表()查詢條件()商品庫存信息 圖12 商品管理序列圖 C.倉庫歷史記錄序列圖 分析:管理員登錄系統(tǒng)查詢歷史信息模塊,歷史信息則查詢商品進(jìn)貨退貨模塊、商品調(diào)撥模塊、商品盤點模塊,之后各模塊將查詢得到的信息發(fā)送給歷史信息模塊,最后由歷史信息模塊統(tǒng)一將信息發(fā)給管理員。 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 管理員歷史信息查詢模塊商品進(jìn)貨退貨模塊商品調(diào)撥模塊商品盤點模塊查詢信息()查詢條件()進(jìn)貨記錄()查詢信息()商品調(diào)撥記錄()查詢信息()商品盤點信息()查詢結(jié)果() 圖13 倉庫歷史記錄序列圖 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 (四)《倉庫管理系統(tǒng)》的架構(gòu)建模 架構(gòu)建模使您能夠了解組件在組織網(wǎng)絡(luò)中的物理分布。您需要對軟件系統(tǒng)的架構(gòu)進(jìn)行建模以確定組件的設(shè)計是否符合軟件系統(tǒng)的需要。軟件架構(gòu)描述軟件按系統(tǒng)的所有組件以及這些組件之間的關(guān)系。要對系統(tǒng)軟件的架構(gòu)進(jìn)行建模,您需要創(chuàng)建以下關(guān)系圖: ? 包關(guān)系圖:描述根據(jù)特定條件分組在一起的軟件系統(tǒng)構(gòu)成。? 組件關(guān)系圖:描述軟件系統(tǒng)的可執(zhí)行構(gòu)成。 ? 部署關(guān)系圖:描述軟件系統(tǒng)組件的各種處理設(shè)備。 a)組件關(guān)系圖:組件可實現(xiàn)一組接口并構(gòu)成軟件系統(tǒng)的可執(zhí)行部分。 分析:該圖是系統(tǒng)的各個組件圖,由系統(tǒng)登錄、倉庫管理管理、信息查詢、系統(tǒng)設(shè)置。 倉庫管理信息查詢系統(tǒng)登錄系統(tǒng)設(shè)置 圖14 組件關(guān)系圖 b)部署關(guān)系圖:顯示需要在其中部署軟件組件的硬件。 分析:下圖表明系統(tǒng)采用數(shù)據(jù)庫系統(tǒng)作為后臺數(shù)據(jù)提供者,然后客戶登錄使用系統(tǒng),也可以對系統(tǒng)中的信息進(jìn)行打印操作。 無錫職業(yè)技術(shù)學(xué)院實踐環(huán)節(jié)材料撰寫用紙 數(shù)據(jù)服務(wù)器客戶機1客戶機n打印機 圖15 部署關(guān)系圖 1、課程設(shè)計的目的、任務(wù) 《匯編語言》課程設(shè)計對于鞏固匯編語言理論知識,加強學(xué)生的實際動手能力和提高學(xué)生綜合素質(zhì)十分必要。課程設(shè)計的目的主要是通過程序設(shè)計方法和技能的基本訓(xùn)練,鞏固在課堂上學(xué)到的有關(guān)程序設(shè)計的基本知識和基本方法,通過實際動手能力的培養(yǎng),進(jìn)一步熟悉匯編語言的結(jié)構(gòu)和使用方法,達(dá)到能獨立閱讀、編制和調(diào)試一定規(guī)模的匯編語言程序的水平。 2、軟件需求分析和設(shè)計 2.1學(xué)生成績管理系統(tǒng)是對學(xué)生成績的管理,其中包括以下幾個模塊:(1).插入一個數(shù)據(jù)(插入學(xué)生學(xué)號以及語數(shù)外三個成績)。(2)修改一個數(shù)據(jù)。(3)刪除學(xué)生成績數(shù)據(jù)。(4)查找學(xué)生成績。(5)查看學(xué)生成績的排名(6)查看學(xué)生成績分布(7)按esc鍵退出系統(tǒng) 2.2學(xué)生成績管理系統(tǒng)應(yīng)該包含以下信息:學(xué)號,語文成績,英語成績,數(shù)學(xué)成績。因此,系統(tǒng)應(yīng)該提供以下功能:(1)輸出顯示菜單。(2)輸入學(xué)生的成績(3)修改學(xué)生成績(4)刪除學(xué)生成績(5)查詢學(xué)生成績(6)顯示學(xué)生成績排名(7)顯示成績分布統(tǒng)計(8)按esc鍵退出系統(tǒng) 2.3依據(jù)程序的功能需求,該系統(tǒng)的功能結(jié)構(gòu)圖如下 系統(tǒng)功能結(jié)構(gòu)圖 2.4 程序流程圖: 主程序流程圖 查找學(xué)生成績 插入學(xué)生學(xué)號及成績 修改學(xué)生的成績 顯示各個學(xué)科各分?jǐn)?shù)段的人數(shù) 3、程序?qū)崿F(xiàn)說明 3.1學(xué)生管理系統(tǒng)中各子程序如下: (1).輸入全部學(xué)生學(xué)號以及語文,英語,數(shù)學(xué)三科的成績。子程序名:insert 子程序描述:該子程序為輸入字程序。系統(tǒng)在開始的時候是沒有數(shù)據(jù)的,通過該子程序可以初始化系統(tǒng),將學(xué)生的學(xué)號及成績輸入系統(tǒng)。 代碼: insert proc near;定義進(jìn)程子程序:插入學(xué)生,學(xué)號及 成績 call input;調(diào)用input add n,1 ret insert endp (2).修改輸入的成績。子程序名:modify 子程序描述:通過子程序修改學(xué)生的成績 代碼: modify proc near;定義進(jìn)程子程序:修改學(xué)生學(xué)號,成績 md1:output mess1;輸出mess1 shuru;調(diào)用宏shuru:二位數(shù)據(jù)輸入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si];先查找輸入的學(xué)生是否存在 je qq1_1;查到的話,就跳轉(zhuǎn)到qq1_1輸入修改的值,也就是重新輸入。;結(jié)果相等則跳轉(zhuǎn)到qq1_1 add si,1 cmp si,bx jbe md;小于等于則跳轉(zhuǎn)到md output mess;輸出mess jmp md1;不相等繼續(xù)輸入學(xué)號 qq1_1:;轉(zhuǎn)入修改的值重新輸入。mov di,si output mess2 output mess4 mov si,0 mov cx,3 qq3_1:shuruu;cmp dx,78h; jbe qq2_1;output ts3;jmp qq1_1;qq2_1:mov buf[si],dl output bg;add si,1 loop qq3_1 mov al,buf[0];mov chi[di],al mov al,buf[1] 分別輸入語文,英語,數(shù)學(xué)成績,并將其放 在緩沖區(qū)buf中 比較輸入的成績是否大于120,如果大于120的 話,那么重 新輸入成績 小于等于則轉(zhuǎn)移到qq2_1 輸出ts3 跳轉(zhuǎn)到qq1_1 輸出空格 將存入buf中的成績,分別賦值給存放對應(yīng)科 目的成績的數(shù)組 mov eng[di],al mov al,buf[2] mov mat[di],al ret modify endp (3).刪除學(xué)生的成績。子程序名:delete 子程序描述:通過子程序刪除學(xué)生的成績 代碼: de proc near;刪除某個學(xué)生的記錄 sc1:output mess1 shuru;調(diào)用宏shuru,接受輸入的學(xué)號 mov bl,n mov bh,0 mov al,dl mov si,0 sc: cmp al,xh[si];查詢輸入學(xué)號的學(xué)生信息是否存在,不存在的話,重新輸入學(xué)號 je sc2;相等則轉(zhuǎn)移到sc2 add si,1 cmp si,bx jbe sc;小于等于則轉(zhuǎn)移到sc output mess;輸出mess jmp sc1 sc2: sub bx,si cmp bx,0 je sc3;相等則轉(zhuǎn)移到sc3 mov cx,bx sc4:mov dl,chi[si+1] mov chi[si],dl mov dl,eng[si+1] mov eng[si],dl mov dl,mat[si+1] mov mat[si],dl mov dl,xh[si+1] mov xh[si],dl add si,1 loop sc4;loop循環(huán)指令,執(zhí)行操作(cx)<--(cx)-1.若 cx!=0,跳轉(zhuǎn)到標(biāo)號sc處循環(huán)執(zhí)行;cx=0,則推出 循環(huán),執(zhí)行l(wèi)oop的下一條指令 sub n,1 sc3: ret de endp (3).查詢學(xué)生的成績。子程序名:find 子程序描述:通過子程序查詢學(xué)生的成績 代碼: find proc near;定義進(jìn)程子程序:查找學(xué)生成績 call sum;求學(xué)生的總成績 call ping;求學(xué)生的平均成績 bj1:output mess1;輸出mess1 shuru;二位數(shù)數(shù)據(jù)輸入 mov bl,n mov bh,0 mov al,dl mov si,0 bj: cmp al,xh[si];將輸入的學(xué)號與輸入的學(xué)號相比,je i;存在的話,將此學(xué)生的成績輸出。je表示結(jié)果相 等則轉(zhuǎn)移。add si,1 cmp si,bx jbe bj;output mess jmp bj1 i: output strr2 shuzi xh[si];shuzi output bg;mov al,chi[si] cbw;shuzii ax;shuzii output bg;mov al,eng[si] cbw;shuzii ax;shuzii output bg mov al,mat[si] cbw shuzii ax output bg; mov al,pj[si] cbw 小于等于則轉(zhuǎn)移到bj 為二位數(shù)據(jù)輸出 輸出空格 將字節(jié)變?yōu)樽?/p> 為三位數(shù)據(jù)輸出。輸出空格 將字節(jié)變?yōu)樽?/p> 為三位數(shù)據(jù)輸出 輸出空格的字符串,用于與標(biāo)題欄對齊 shuzii ax output bg mov ax,si mov bl,2 mul bl mov bx,ax shuzii zc[bx];shuzii為三位數(shù)據(jù)輸出 output bg;輸出空格的字符串,用于與標(biāo)題欄對齊 shuzi mc[si];shuzi為二位數(shù)據(jù)輸出 ret find endp (4).顯示學(xué)生的成績排名。子程序名:show 子程序描述:通過子程序顯示學(xué)生的成績排名 代碼: show proc near;定義進(jìn)程子程序:顯示結(jié)果排名 call sum;調(diào)用宏sum call ping;調(diào)用宏ping call rank;調(diào)用宏rank call shuchu;調(diào)用宏shuchu ret show endp 3.2程序運行抓圖: 主菜單 修改學(xué)生成績 刪除學(xué)生成績 顯示各個學(xué)科各分?jǐn)?shù)段的人數(shù) 4、程序總結(jié) 通過兩個星期的學(xué)習(xí),努力,終于完成了報告。系統(tǒng)可以很好的運行。這兩個多星期的時間,幾乎每天不是在敲代碼,就是在看代碼,查書,上網(wǎng)。系統(tǒng)中用到了很多最近才學(xué)習(xí)的知識,比如宏,子程序。這些都使得代碼的運行效率提高了,代碼行數(shù)減少了。系統(tǒng)還用到了bios的清屏功能。這些功能如果不是做課程設(shè)計,我想我很難會接觸到這些知識。 由于自己對知識掌握的不是很牢固,其中也會碰到一些困難。每當(dāng)遇到問題的時候,我會先上網(wǎng)去查找,看看有沒有人提過這方面的問題?;ヂ?lián)網(wǎng)是強大的,大部分的問題通過網(wǎng)絡(luò)都可以解決。部分找不到的問題,我就去請教班里學(xué)得好的同學(xué)。他們對知識的掌握遠(yuǎn)超過我。這樣下來,很多問題都迎刃而解了。 課程設(shè)計是一個很好的掌握書本上知識的過程。平時上課之后,自己都不會想著去敲一些代碼聯(lián)系聯(lián)系。通過做課程設(shè)計,將理論與實踐結(jié)合了起來,對知識的理解更加深入了。第二篇:倉庫管理系統(tǒng)課程設(shè)計報告
第三篇:倉庫管理系統(tǒng)課程設(shè)計報告
第四篇:倉庫管理系統(tǒng)課程設(shè)計 UML
第五篇:語言課程設(shè)計-學(xué)生成績管理系統(tǒng)