課程設(shè)計(jì)說(shuō)明書產(chǎn)品信息管理系統(tǒng)
課程設(shè)計(jì)說(shuō)明書題目:產(chǎn)品信息管理系統(tǒng)院 系:信息技術(shù)系 專業(yè)班級(jí):08計(jì)算機(jī)科學(xué)與技術(shù)學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 2010年 6月20日 1概述1.1開(kāi)發(fā)背景11.2系統(tǒng)目標(biāo)和開(kāi)發(fā)的可行性12 設(shè)計(jì)任務(wù)書23本組課題及本人任務(wù)34 系統(tǒng)功能需求分析41.1開(kāi)發(fā)背景某某連鎖店主要提供電視、手機(jī)、空調(diào)、電腦等商品。因規(guī)模的擴(kuò)大,業(yè)務(wù)的擴(kuò)張,必須引進(jìn)先進(jìn)的管理思想、方法和技術(shù),以提高企業(yè)的管理水平。為此,該連鎖店提出,近期內(nèi)要運(yùn)用信息技術(shù),建立起庫(kù)存管理系統(tǒng)的管理信息系統(tǒng),以提高商品庫(kù)存效率,增加公司年度利潤(rùn)。1.2系統(tǒng)目標(biāo)和開(kāi)發(fā)的可行性1.2.1 系統(tǒng)目標(biāo)本系統(tǒng)開(kāi)發(fā)混合運(yùn)用結(jié)構(gòu)化系統(tǒng)開(kāi)發(fā)方法與面向?qū)ο箝_(kāi)發(fā)方法,結(jié)合兩種開(kāi)發(fā)方法各自的優(yōu)勢(shì)進(jìn)行系統(tǒng)開(kāi)發(fā)。1.2.2 系統(tǒng)開(kāi)發(fā)可行性技術(shù)可行性:開(kāi)發(fā)本系統(tǒng)要求開(kāi)發(fā)人員能夠熟練運(yùn)用C#等編程語(yǔ)言。目前技術(shù)人員已經(jīng)掌握這些編程語(yǔ)言。因此,本次系統(tǒng)開(kāi)發(fā)在技術(shù)上是可行的。時(shí)間可行性:開(kāi)發(fā)時(shí)間需要一個(gè)周時(shí)間。前五天主要用于系統(tǒng)分析、設(shè)計(jì)、實(shí)現(xiàn),后面的時(shí)間用于調(diào)試。資金可行性:由于現(xiàn)在已有電腦等所需設(shè)備,可以盡可能的發(fā)揮作用,資金可節(jié)約不少,因此開(kāi)發(fā)資金是可行的。2 設(shè)計(jì)任務(wù)書2.1研究方案和目標(biāo)本題目是設(shè)計(jì)一個(gè)軟件系統(tǒng),按照軟件工程的一般方法和過(guò)程,從軟件需求分析開(kāi)始,經(jīng)過(guò)概要設(shè)計(jì)、詳細(xì)設(shè)計(jì),最后選擇相應(yīng)的開(kāi)發(fā)平臺(tái)或工具設(shè)計(jì)出實(shí)現(xiàn)系統(tǒng)功能的軟件系統(tǒng)。本系統(tǒng)架構(gòu)可采用B/S/S(Browser/Web Server/DB Server)三層結(jié)構(gòu),即基于Web的文件訪問(wèn)。客戶端采用通用的瀏覽器。后臺(tái)數(shù)據(jù)管理可采用Access、SQL Server等,設(shè)計(jì)相應(yīng)的數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)。設(shè)計(jì)的主要內(nèi)容在Web Server端選擇相應(yīng)的腳本編寫技術(shù)或Web應(yīng)用程序設(shè)計(jì)語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)系統(tǒng)功能的程序。3本組課題及本人任務(wù) 建立產(chǎn)品管理系統(tǒng),建立起庫(kù)存管理系統(tǒng)的管理信息系統(tǒng),4 系統(tǒng)功能需求分析1.信息查詢:產(chǎn)品信息查詢,產(chǎn)品入庫(kù)記錄查詢,產(chǎn)品銷售記錄查詢,供應(yīng)商信息查詢,銷售人員信息查詢。2.信息管理:產(chǎn)品信息管理,產(chǎn)品入庫(kù)記錄管理,產(chǎn)品銷售記錄管理,供應(yīng)商信息管理,銷售人員信息管理。3.統(tǒng)計(jì)與報(bào)表:產(chǎn)品信息統(tǒng)計(jì)表,產(chǎn)品入庫(kù)記錄統(tǒng)計(jì)表,產(chǎn)品銷售記錄統(tǒng)計(jì)表,供應(yīng)商信息統(tǒng)計(jì)表,銷售人員信息統(tǒng)計(jì)表。4.系統(tǒng)幫助:幫助信息,版本信息等。5 相關(guān)代碼#include<stdio.h>/*I/O函數(shù)*/ #include<stdlib.h>/*標(biāo)準(zhǔn)庫(kù)函數(shù)*/ #include<string.h>/*字符串函數(shù)*/ #include<ctype.h>/*字符操作函數(shù)(#include<ctype.h>是在調(diào)用字符函數(shù)時(shí),在源文件中包含的頭文件。字符函數(shù)如:intisspace(intch);檢查ch是否為空格制表或換行字符?!癱type”中c為字符型char的縮寫,type為類型。)*/ #defineM50/*定義常數(shù)表示記錄數(shù)*/ typedefstruct/*定義數(shù)據(jù)結(jié)構(gòu)*/ intnumber;/*產(chǎn)品編號(hào)*/ charname20;/*產(chǎn)品名稱*/ longnum;/*產(chǎn)品類型編號(hào)*/ charsize10;/*產(chǎn)品規(guī)格*/ chardanwei5;/*計(jì)量單位*/ intacount;/*數(shù)量*/ intpay;/*參考價(jià)格*/ charinday20;/*進(jìn)貨日期*/ charworkday20;/*有效期*/ CHAN_PIN; /*以下是函數(shù)聲明*/ voidSearch(CHAN_PINt,intn);/*查找記錄函數(shù)*/ intenter(CHAN_PINt);/*輸入記錄函數(shù)*/ voidlist(CHAN_PINt,intn);/*顯示記錄函數(shù)*/ intmainCD();/*主菜單函數(shù)*/ voidSearch(CHAN_PINt,intn);/*查找記錄函數(shù)*/ intRemove(CHAN_PINt,intn);/*刪除記錄函數(shù)*/ voidxiugai(CHAN_PINt,intn);/*修改記錄函數(shù)*/ voidpaixu(CHAN_PINt,intn);/*按參考價(jià)格從小到大顯示記錄函數(shù)*/ voidbadgoods(CHAN_PINt,intn);/*顯示過(guò)期產(chǎn)品記錄*/ intLoadRecord(CHAN_PINt);/*保存函數(shù)函數(shù)*/ voidsaverecord(CHAN_PINt,intn);/*保存記錄函數(shù)*/ /*主函數(shù)開(kāi)始*/ main() inti; CHAN_PINadrM;/*定義結(jié)構(gòu)體數(shù)組*/ intlength;/*保存記錄長(zhǎng)度*/ clrscr();/*清屏幕函數(shù)*/ for(;)/*無(wú)限循環(huán)*/ switch(mainCD()/*調(diào)用主菜單函數(shù),返回值整數(shù)作開(kāi)關(guān)語(yǔ)句的條件*/ case1:length=enter(adr);/*輸入記錄*/ saverecord(adr,length); break; case2:length=LoadRecord(adr);/*修改記錄*/ xiugai(adr,length); saverecord(adr,length); break; case3:length=LoadRecord(adr);/*刪除記錄*/ length=Remove(adr,length); saverecord(adr,length); break; case4:length=LoadRecord(adr);/*根據(jù)產(chǎn)品名稱查詢產(chǎn)品信息記錄*/ Search(adr,length); saverecord(adr,length); break; case5:length=LoadRecord(adr);/*顯示全部產(chǎn)品記錄記錄*/ list(adr,length); break; case6:length=LoadRecord(adr);/*按參考價(jià)格從小到大顯示記錄記錄*/ paixu(adr,length); saverecord(adr,length); break; case7:length=LoadRecord(adr);/*顯示全部過(guò)期產(chǎn)品信息記錄*/ badgoods(adr,length); break; case0:exit(0); intmainCD()/*主菜單函數(shù)*/ intc; clrscr(); printf("*MENU*nn"); printf("1.產(chǎn)品基本信息的錄入n"); printf("2.產(chǎn)品信息的修改n"); printf("3.產(chǎn)品信息的刪除n"); printf("4.根據(jù)產(chǎn)品名稱查詢產(chǎn)品信息n"); printf("5.顯示全部產(chǎn)品記錄n"); printf("6.按參考價(jià)格從小到大顯示記錄n"); printf("7.顯示全部過(guò)期產(chǎn)品信息n"); printf("0.退出n"); printf("*n"); do printf("nEnteryourchoice(0-7):"); if(scanf("%d",&c)!=1) while(getchar()!=n) continue; continue; while(c<0|c>7); returnc; intenter(CHAN_PINt)/*輸入記錄函數(shù)*/ inti,n; char*s; clrscr();/*清屏*/ printf("您要輸入的紀(jì)錄數(shù)目是:n");/*提示信息*/ scanf("%d",&n);/*輸入記錄數(shù)*/ printf("請(qǐng)輸入記錄:n");/*提示輸入記錄*/ for(i=0;i<n;i+) clrscr(); printf("n第%d條記錄的產(chǎn)品編號(hào):",i+1); scanf("%d",&ti.number); printf("n第%d條記錄的產(chǎn)品名稱:",i+1); scanf("%s",ti.name); printf("n第%d條記錄的產(chǎn)品類型編號(hào)(5位,如:001001):",i+1); scanf("%ld",&ti.num); printf("n第%d條記錄產(chǎn)品的規(guī)格(如:250*300):",i+1); scanf("%s",ti.size); printf("n第%d條記錄產(chǎn)品的計(jì)量單位(kg或g):",i+1); scanf("%s",ti.danwei); printf("n第%d條記錄產(chǎn)品的數(shù)量:",i+1); scanf("%d",&ti.acount); printf("n第%d條記錄產(chǎn)品的參考價(jià)格:",i+1); scanf("%d",&ti.pay); printf("n第%d條記錄的產(chǎn)品進(jìn)貨日期(格式為:20070710):",i+1); scanf("%s",ti.inday); printf("n第%d條記錄的產(chǎn)品保質(zhì)期(格式為:20070710):",i+1); scanf("%s",ti.workday); return(n); voidlist(CHAN_PINt,intn)/*顯示記錄函數(shù)*/ inti; clrscr(); printf("nn*產(chǎn)品信息*n"); printf("編號(hào)名稱類型編號(hào)規(guī)格計(jì)量單位數(shù)量參考價(jià)格進(jìn)貨日期保質(zhì)期n"); printf("-n"); for(i=0;i<n;i+) printf("%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); printf("%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); if(i+1)%10=0)/*判斷輸出是否達(dá)到10條記錄*/ printf("Pressanykeycontinue.n");/*提示信息*/ getch();/*壓任意鍵繼續(xù)*/ printf("*end*n"); printf("pressanykeycontinue."); getch(); voidSearch(CHAN_PINt,intn)/*查找記錄函數(shù)*/ chars20; inti,flag=0; clrscr(); printf("請(qǐng)輸入要查找的產(chǎn)品記錄名稱:"); scanf("%s",s); for(i=0;i<n;i+) if(strcmp(s,ti.name)=0) flag=1; clrscr(); printf("nn與該產(chǎn)品相關(guān)的信息如下:n"); printf("編號(hào)名稱類型編號(hào)規(guī)格計(jì)量單位數(shù)量參考價(jià)格進(jìn)貨日期保質(zhì)期n"); printf("-n"); printf("%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); printf("%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); if(flag=0)printf("沒(méi)有此記錄!n"); printf("npressanykeycontinu."); getch(); returnn; intRemove(CHAN_PINt,intn)/*要?jiǎng)h除記錄的名稱*/ chars20; charch=N; inti,j,flag=0; clrscr(); printf("請(qǐng)輸入要?jiǎng)h除的商品名稱:n"); scanf("%s",s); for(i=0;i<n;i+) if(strcmp(s,ti.name)=0)/*是否找到記錄*/ flag=1; clrscr(); printf("編號(hào)名稱類型編號(hào)規(guī)格計(jì)量單位數(shù)量參考價(jià)格進(jìn)貨日期保質(zhì)期n"); printf("-n"); printf("%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); printf("%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); printf("Areyousuredeleteit(Y/N)"); ch=getchar(); if(ch=y|Y) for(j=i;j<n-1;j+)/*n-1,讓后一個(gè)記錄不動(dòng),為了使后1個(gè)記錄覆蓋前面的記錄*/ tj=tj+1; n-;/*記錄數(shù)量-1*/ i-; printf("n刪除成功!"); if(flag=0) printf("無(wú)此商品!n"); printf("npressanykeycontinu."); getch(); returnn; voidxiugai(CHAN_PINt,intn)/*修改記錄函數(shù)*/ chars20; inti; clrscr(); printf("請(qǐng)輸入要修改商品的名稱:n"); scanf("%s",s); for(i=0;i<n;i+) if(strcmp(s,ti.name)=0) printf("n要修改的記錄的產(chǎn)品編號(hào):"); scanf("%d",&ti.number); printf("n要修改的記錄的產(chǎn)品名稱:"); scanf("%s",ti.name); printf("n要修改的記錄的產(chǎn)品類型編號(hào)(5位,如:001001):"); scanf("%ld",&ti.num); printf("n要修改的記錄的規(guī)格(如:250*300):"); scanf("%s",ti.size); printf("n要修改的記錄產(chǎn)品的計(jì)量單位(kg或g):"); scanf("%s",ti.danwei); printf("n要修改的記錄產(chǎn)品的數(shù)量:"); scanf("%d",&ti.acount); printf("n要修改的記錄產(chǎn)品的參考價(jià)格:"); scanf("%d",&ti.pay); printf("n要修改的記錄的產(chǎn)品進(jìn)貨日期(格式為:20070710):"); scanf("%s",ti.inday); printf("n要修改的記錄的產(chǎn)品保質(zhì)期(格式為:20070710):"); scanf("%s",ti.workday); voidpaixu(CHAN_PINt,intn)/*按參考價(jià)格從小到大顯示記錄函數(shù)*/ inti,j; CHAN_PINtemp; for(j=1;j<n;j+) for(i=0;i<n-j;i+) if(ti.pay>ti+1.pay) temp=ti; ti=ti+1; ti+1=temp; printf("排序成功!"); printf("nn*產(chǎn)品信息*n"); printf("編號(hào)名稱類型編號(hào)規(guī)格計(jì)量單位數(shù)量參考價(jià)格進(jìn)貨日期保質(zhì)期n"); printf("-n"); for(i=0;i<n;i+) printf("%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); printf("%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); if(i+1)%10=0)/*判斷輸出是否達(dá)到10條記錄*/ printf("Pressanykeycontinue.n");/*提示信息*/ getch();/*壓任意鍵繼續(xù)*/ printf("*end*n"); printf("pressanykeycontinue."); getch(); printf("pressanykeycontinue."); getch(); voidbadgoods(CHAN_PINt,intn)/*顯示過(guò)期產(chǎn)品記錄函數(shù)*/ inti,j,flag=0; charnowday20; printf("請(qǐng)輸入現(xiàn)在的時(shí)間(格式為:20070710):"); scanf("%s",nowday); for(i=0;i<n;i+) if(strcmp(nowday,ti.workday)>0) flag=1; printf("nn與該產(chǎn)品相關(guān)的信息如下:n"); printf("編號(hào)名稱類型編號(hào)規(guī)格計(jì)量單位數(shù)量參考價(jià)格進(jìn)貨日期保質(zhì)期n"); printf("-n"); printf("%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); printf("%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); printf("npressanykeycontinu."); getch(); if(flag=0)printf("沒(méi)有過(guò)期產(chǎn)品!n"); returnn; intLoadRecord(CHAN_PINt)/*保存函數(shù)函數(shù)*/ inti,n; FILE*fp; if(fp=fopen("record.txt","r")=NULL) printf("cannotopenfilen"); exit(1); fscanf(fp,"%d",&n);/*讀入記錄數(shù)*/ for(i=0;i<n;i+) fscanf(fp,"%-6d%-12s%-8ld%-11s%-7s",&ti.number,ti.name,&ti.num,ti.size,ti.danwei); fscanf(fp,"%-8d%-8d%-11s%-6sn",&ti.acount,&ti.pay,ti.inday,ti.workday); fclose(fp);/*關(guān)閉文件*/ printf("從文件中成功讀出記錄!n"); returnn;/*返回記錄數(shù)*/ voidsaverecord(CHAN_PINt,intn)/*保存記錄函數(shù)*/ inti; FILE*fp;/*指向文件的指針*/ if(fp=fopen("record.txt","wb")=NULL)/*打開(kāi)文件,并判斷打開(kāi)是否正常*/ printf("cannotopenfilen");/*沒(méi)打開(kāi)*/ exit(1); fprintf(fp,"%d",n);/*將記錄數(shù)寫入文件*/ fprintf(fp,"rn");/*將換行符號(hào)寫入文件*/ for(i=0;i<n;i+) fprintf(fp,"%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); fprintf(fp,"%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); fprintf(fp,"rn"); fclose(fp);