第一篇:小型超市管理系統開發實例
小型超市管理系統開發實例
一.項目論證和計劃 1.1系統調查
社會生活的現代化,使得市場的走向發生巨大變化,由于經濟的發展,人們對生活的需求已經不再滿足于豐衣足食的低度要求,許多人們往往不是單純為滿足生活必需去購買,而是憑著喜歡、意欲和感觀去購買。如果一個商店能夠打動顧客、吸引顧客,自然會顧客盈門,而近幾年新興產業中超級市場的現代化管理方式和便捷的購物方式,尤其是它輕松的購物環境。往往是打動顧客,吸引顧客的最主要的原因,且良好的周密的銷售服務更是贏得信譽、吸引顧客的優勢所在。商品經濟的高速現代化發展也促進了競爭,使一切不甘落后的商家都爭先恐后地采用最新的管理方法來加強自己的競爭地位。因此,超市經營者如果不掌握當今市場發展的這一走向,不能將超市現代化經營作為努力開拓的目標,就無法使經營活絡、財源茂盛。隨著計算機網絡技術以及數據庫技術的迅速發展,管理信息系統得到了廣泛應用。對于一個超市來講:貨品數量少則數以百計,多則數以萬計;另外,不同超市的實際情況也有所不同。要對這些貨品進行統一、高效的管理,靠人工完成工作量龐大、難免有錯漏之處。為此,一個自動化的超市貨品管理系統的開發非常必要。
當今社會,超市的競爭也進入到了一個全新的領域,競爭已不再是規模的競爭,而是技術的競爭、管理的競爭、人才的競爭。技術的提升和管理的升級是超市業的競爭核心。零售領域目前呈多元發展趨勢,多種業態:超市、倉儲店、便利店、特許加盟店、專賣店、貨倉等相互并存。如何在激烈的競爭中擴大銷售額、降低經營成本、擴大經營規模,成為超市營業者努力追求的目標。作為國內市場的一些中小型超市,它們在信息化過程中的步伐要落后于大中型超市,而對于這些企業的資源管理,信息的存儲和處理也顯得迫切需要。要適應市場競爭就需要有高效的處理方式和管理方法,因此加快超市的信息化進程是必可少的。
1.2 新系統的總體功能需求和性能要求
針對超市的特點,為了幫助超市解決現在面臨的問題,提高小型超市的競爭力,我們將開發以下系統:前臺POS銷售系統、后臺管理系統,其中這兩個子系統又包含其他一些子功能。并且系統要做到以下幾點:
(1).簡單性
系統設計盡量簡單,以實現使用方便,提高效率,節省開支,提高系統的運行質量。
(2).靈活性
系統對外界條件變化有較強的適應性
(3).完整性
系統是各個子系統的集合,作為一個有機的整體存在。因此,要求各個
子系統的功能盡量規范,數據采集統一,語言描述一致。(4).可靠性
小型超市管理系統可以用于支持超市的各項管理工作。
1.3 系統開發的框架
二.可行性分析
1.管理可行性分析
管理可行性分析管理可行性分析管理可行性分析 超市的經營者大多具備電腦基本操作知識,對于必要的專業操作經短期培訓即可;管理基礎工作和各項管理制度比較健全,執行嚴格,原始數據采集完整,保存良好。2.經濟可行性分析
經濟可行性分析經濟可行性分析經濟可行性分析 超市管理系統的投入,能夠提高工作效率,減少工作人員,從而減少人力資本的投入,根據核算,系統投入三個月后,就能夠基本收回開發系統的投資,從經濟角度來說,本系統開發完全必要。
3.技術可行性分析(1).硬件:電腦一臺(2).軟件:操作系統:中文Windows 2007開發系統:Microsoft Visual Foxpro 6.0,安裝SQL Server 2000的服務器版本 系統本身對硬件和軟件的要求都不高且系統兼容性很強,平臺的移植性也很好,因此無論在系統的硬件及軟件上都滿足開發的要求。
(3).本系統涉及到的技術因素: 管理系統的開發方法,使用面向對象開發方法開發軟件系統。網絡和通信技術,開發小組有基于C/S開發的經驗,C/S機構規劃和技術設計,開發小組有應用數據庫開發經驗。數據庫技術,開發小組能使用Visual Foxpro 6.0 編程。
(4).運行上的可行性:操作簡單:簡單的操作規則使操作人員能輕松掌握。查詢方便:用戶可設定任意條件和任意的查詢項目進行檢索。統計靈活:任意條件下任意項目的產品入庫時間、數量等的統計及查詢項目均可進行交叉統計。
三.需求分析
3.1 數據流分析
頂層數據流圖
零售前臺(POS)管理系統數據流圖
3.2 系統流程圖
3.3 數據字典
商品信息
包括品名,倉庫號,唯一標碼,條形碼,進貨價,銷售價,進貨地,供貨商號。倉庫信息
包括倉庫號,倉庫名,類別,管理員工號,備注。員工信息
包括姓名,電話,工號,部門編號。會員信息
會員編號,會員名,電話,入會日期。供貨商信息
包括供貨商號,名稱,地址,電話,聯系人。銷售信息
包括正常銷售、促銷與限量、限期禁止銷售控制、銷售明細記錄、各地收銀員收銀記錄、交結賬信息,收銀員工號。部門信息
包括部門編號,員工姓名,員工工號。
四.總體設計
4.1 功能模塊圖
4.2 層次方框圖
4.3 IPO圖
4.4 系統的功能結構圖
4.5 工作流程模擬圖
4.6系統數據庫關系說明圖
五.詳細設計
5.1 前臺銷售(POS)功能流程圖
5.2 后臺管理功能流程圖
第二篇:小型超市管理系統
小型超市管理系統一:需求分析
1.超市信息管理系統是一個面向超市用來進行超市日常信息處理的管理信息系統(MIS)。該信息系統能夠方便的為超市的售貨員提供各種日常售貨功能,也能夠為超市的管理者提供各種管理功能,如進貨、統計商品等。
(1)超市信息管理系統能夠支持售貨員日常售貨功能。每一個售貨員通過自己的用戶名稱和密碼登錄到售貨系統中,為顧客提供服務。在售貨員為顧客提供售貨服務時,售貨員接收顧客購買商品,根據系統的定價計算出商品的總價,顧客付款并接受售貨員打印的貨物清單,系統自動保存顧客購買商品記錄。
(2)超市信息管理系統能夠為超市的管理者提供管理功能。超市的管理包括庫存管理、訂貨管理、報表管理和售貨人員管理和系統維護等。庫存管理員負責超市的庫存管理;訂貨員負責超市的訂貨管理;統計分析員負責超市的統計分析管理;系統管理員負責超市的售貨人員管理和系統維護。每種管理者都通過自己的用戶名稱和密碼登錄到各自的管理系統中。
(3)庫存管理包括商品入庫管理、處理盤點信息、處理報銷商品信息和一些信息的管理設置信息。這些設置信息包括供應商信息、商品信息和特殊商品信息。庫存管理員每天對商品進行一次盤點,當發現庫存商品有損壞時,及時處理報損信息。當商品到貨時,庫存管理員檢查商品是否合格后并將合格的商品進行入庫。當商品進入賣場時,商品進行出庫處理。
(4)訂貨管理是對超市所缺貨物進行的訂貨處理,包括統計訂貨商品和制作訂單等步驟。當訂貨員發現庫存商品低于庫存下限時,根據系統供應商信息,制作訂單進行商品訂貨處理。
(5)統計分析管理包括查詢商品信息、查詢銷售信息、查詢供應商信息、查詢缺貨信息、查詢報表信息和查詢特殊商品信息,并制作報表。統計分析員使用系統的統計分析功能,了解商品信息、銷售信息、供應商信息、庫存信息和特殊商品信息,以便能夠制定出合理的銷售計劃。
(6)系統管理包括維護員工信息、維護會員信息和系統維護。系統管理員通過系統管理功能,能夠了解公司員工信息、會員信息,還能夠對系統進行維護工作。二:創建系統用例模型 1.員工用例圖
? 員工是超市售貨員和超市管理者的抽象,它所包含的行為是超市售貨員和超市管理者共同的行為。員工在本系統中通過合法的身份驗證;能夠修改自身信息和密碼。
2.售貨員用例圖
? 售貨員能夠通過該系統進行銷售商品活動。當售貨員銷售商品時,首先獲取商品信息,然后將銷售信息更新,如果顧客需要打印購物清單,則需要打印購物清單,在購物清單中需要對商品信息進行計價處理。
3.庫存管理員用例圖
? 庫存管理員能夠通過該系統進行如下活動:
(1)處理盤點。超市庫存管理員每天需要對超市商品信息進行盤點。(2)處理報銷。超市庫存管理員對超市損壞商品進行報銷處理。(3)商品入庫。當商品到貨時,庫存管理員檢查商品是否合格后并將合格的商品進行入庫。
(4)商品出庫。當商品進入賣場時,商品進行出庫處理。(5)管理設置。庫存管理員負責供應商信息、商品基本信息和特殊商品信息的管理設置。
4.訂貨員用例圖
? 訂貨員能夠通過該系統進行訂貨管理活動。訂貨員首先根據商品缺貨信息統計訂貨商品,根據需要訂貨商品信息制定出訂單。
5.統計分析員用例圖
? 統計分析員負責超市的統計分析管理,它能夠通過該系統進行如下活動:
(1)查詢基本信息。統計分析員能夠查詢商品的基本信息,根據商品的基本信息,制定出相應的方案。
(2)查詢銷售信息。統計分析員根據銷售情況,制定合理的銷售方案。
(3)查詢供應商信息。統計分析員能夠查詢供應商信息。
(4)查詢缺貨信息。統計分析員能夠查詢缺貨信息。
(5)查詢報損信息。統計分析員能夠查詢報損信息。
(6)查詢特殊商品信息。統計分析員能夠查詢特殊商品信息
6.系統管理員用例圖
? 系統管理員能夠通過該系統進行如下活動:
(1)維護會員信息。系統管理員能夠維護超市會員的信息,如添加會員、刪除會員和修改會員信息等。
(2)維護員工信息。系統管理員能夠維護超市員工的信息,如添加員工、刪除員工和修改員工信息等。
(3)系統設置。系統管理員能夠根據一些需要進行必要的系統設置。
三:創建系統靜態模型
? 在獲得系統的基本需求用例模型以后,我們通過考察系統對象的各種屬性,創建系統靜態模型。
(1)首先,我們先確定系統的參與者的屬性。每一個超市員工在登錄系統時,都需要提供員工的用戶名稱和密碼,因此每一個超市員工應該擁有用戶名稱和密碼屬性。超市員工還擁有在超市中的唯一標識——員工編號。此外,員工屬性中還包含員工的年齡、頭銜和照片等信息。超市的售貨員和管理者都繼承自員工,擁有員工的屬性。在系統中記錄的顧客包括顧客的名稱、顧客的編號、顧客地址、顧客級別和顧客的總消費金額等記錄。
(2)其次,我們確定在系統中的主要業務實體類,這些類通常需要在數據庫中進行存儲。例如,我們需要存儲商品的信息,因此需要一個商品類,同樣,根據供應商信息我們可以確定供應商類。(2)其次,我們確定在系統中的主要業務實體類,這些類通常需要在數據庫中進行存儲。例如,我們需要存儲商品的信息,因此需要一個商品類,同樣,根據供應商信息我們可以確定供應商類。
四:創建系統動態模型
1.售貨員銷售商品序列圖和交互圖 工作流程如下:
(1)顧客希望通過售貨員購買商品,售貨員希望通過售貨管理子系統處理商品銷售。
(2)顧客將購買商品提交給售貨員。
(3)售貨員通過銷售管理子系統中的管理商品界面獲取商品信息。
(4)管理商品界面根據商品的編號將商品類實例化并請求該商品信息。
(5)商品類實例化對象根據商品的編號加載商品信息并提供給管理商品界面。(6)管理商品界面對商品進行計價處理。
(7)管理商品界面更新銷售商品信息。
(8)管理商品界面顯示處理商品。
(9)售貨員將貨物提交給顧客。
2.統計分析員查詢商品信息序列圖和交互圖 工作流程如下:
(1)統計分析員希望通過統計分析子系統查詢商品信息。
(2)統計分析員通過統計分析子系統中的查詢商品信息界面獲取商品信息。
(3)查詢商品信息界面根據商品的屬性或特征將商品類實例化并請求該類商品信息。
(4)商品類實例化對象加載商品信息,并提供給管理商品界面。
(5)查詢商品信息界面顯示該類商品信息。
(6)統計分析員請求查詢商品信息界面制定出該類商品報表。
(7)查詢商品信息界面制定該類商品報表。
(8)查詢商品信息界面將該類商品報表顯示給統計分析員。
3.庫存管理員處理商品入庫
工作流程如下:
(1)庫存管理員希望通過庫存管理子系統將購買的貨物處理入庫(2)庫存管理員通過庫存管理子系統中的商品入庫界面獲取商品信息。
(3)商品入庫界面根據商品的編號將商品類實例化并請求該類商品信息。
(4)商品類實例化對象根據商品的編號加載商品信息并提供給商品入庫界面。
(5)庫存管理員通過商品入庫界面增加商品數目。(6)商品入庫界面通過商品類實例化對象修改商品信息。(7)商品類實例化對象向商品入庫界面返回修改信息。(8)商品入庫界面向庫存管理員顯示添加成功信息。
4.訂貨員進行訂貨管理 工作流程如下:
(1)訂貨員希望通過訂貨管理子系統處理商品訂貨管理。(2)訂貨員通過訂貨管理子系統中的訂貨管理界面獲取待訂貨商品信息。
(3)訂貨管理界面將商品類實例化并根據商品的數量應當滿足的條件請求有關商品信息。
(4)商品類實例化對象根據商品的數量應當滿足的條件加載商品信息并提供給訂貨管理界面。
(5)訂貨員通過訂貨管理子系統中的訂貨管理界面獲取待訂貨廠商信息。
(6)訂貨管理界面將供應商類實例化并根據商品的類型請求有關供應商信息。
(7)供應商類實例化對象加載供應商信息并提供給訂貨管理界面。(8)訂貨員通過訂貨管理子系統中的訂貨管理界面制作相關訂單。(9)訂貨管理界面制作相關訂單并顯示給訂貨員。
5.商品狀態圖
? 在超市信息管理系統中,我們將有明確狀態轉換的類進行描述,以下我們以商品的狀態圖為例,簡單進行說明。? 商品包含以下的狀態:剛被購買還未入庫后的商品、被添加能夠出售的商品、商品被出售、商品被回收。它們之間的轉化規則是:
(1)剛被購買后的商品可以通過庫存管理員添加成為入庫的商品。(2)當入庫商品被出售,商品處于被銷售狀態。(3)當商品由于過期、損壞等因素造成的不合格時,商品被剔除。
6.員工驗證登錄活動圖
? 在利用系統的活動圖來描述在超市信息管理系統中的參與者如何協同工作時,我們還可以建立相關參與者的活動圖進行說明。以下我們以員工驗證密碼為例進行說明。? 我們可以通過以下的方式描述員工驗證登錄的活動:(1)員工需要通過身份驗證后進入相關子系統才能夠進行相關操作。
(2)首先,系統運行后系統進入初始化登錄界面。(3)員工輸入自己的用戶名稱和密碼。
(4)登錄界面對用戶輸入的用戶名稱和密碼進行判斷。(5)如果是合法的用戶,則系統對用戶的權限進行判斷,員工進入相關的管理界面,登錄成功。
(6)如果是非法的用戶,系統提示用戶名稱或密碼錯誤,登錄失敗。
五:創建系統部署模型 1.系統構件圖
在超市信息管理系統中,我們通過構件映射到系統的實現類中,說明該構件物理實現的邏輯類。例如,在超市信息管理系統中,我們可以對商品類和供應商類分別創建對應的構件進行映射。
2.系統部署圖
在超市信息管理系統中,系統包括四種節點,分別是:前臺售貨節點,售貨員使用,負責貨物銷售;庫存管理節點,庫存管理員通過該節點進行庫存管理和維護;訂貨管理節點,訂貨管理員通過該節點進行訂貨管理;統計分析節點,統計分析員通過該節點進行統計分析;系統管理節點,系統管理員通過該節點進行系統維護和員工信息維護。
第三篇:基于java小型超市管理系統
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Arrays;import java.util.Scanner;
public class Mytest { static int sign=0;//goodname數組第一個空下標號
static int sign1=0;//cname數組第一個空下標號
static String[] cpass=new String[20];//存放售貨員名稱
static String[] cname=new String[20];//存放售貨員登入密碼
static String[] goodname=new String[20];//存放商品名稱
static double[] goodprice=new double[20];//存放商品價格
static int[] goodout=new int[20];//存放商品銷售量
static int[] goodnum=new int[20];//存放商品數量
public static void main(String[] args)throws Exception { cname[0]=“ZhouTian”;//初始的售貨員名稱
cpass[0]=“723”;//初始的售貨員密碼 createArrays();readArrays(“goodname”);//將文件中的內容讀入到相應的數組里
readArrays(“goodprice”);readArrays(“goodnum”);readArrays(“cname”);readArrays(“cpass”);readArrays(“goodout”);menu();//登入之后加載的主菜單
} /** * 加載登入菜單
*/ private static void menu(){
Scanner scan = new Scanner(System.in);
System.out.println(“ttt歡迎使用商超購物管理系統 n”);
System.out.println(“tttt1.登錄系統n”);
System.out.println(“tttt2.退出 ”);
System.out.println(“*************************************************”);
System.out.println(“請選擇,輸入數字: ”);
int a = scan.nextInt();
switch(a){
case 0:
System.out.println(“退出!”);//按0不登入
case 1:
System.out.println(“請輸入用戶名:”);// 查找售貨員姓名是否存在,與所對應的密碼是否匹配
String name = scan.next();
System.out.println(“請輸入密碼:”);
String pass = scan.next();
int flage = 0;
int ff = 0;
for(int i = 0;i < cname.length;i++){
if(name.equals(cname[i])){
flage = 1;//售貨員的名稱匹配flage=1;
ff = i;
break;
}
}
if(flage == 1){//名稱匹配之后再匹配密碼
if(pass.equals(cpass[ff])){
loadmenu1();//密碼也匹配之后再允許登入
} else {
System.out.println(“密碼錯誤!”);
}
} else {
System.out.println(“該用戶名不具有權限”);
}
break;
case 2:
System.out.println(“謝謝您的使用!”);
break;
default:
break;
} }
/** * ,創建文件,將數組信息存入到各文件中, */ static void createArrays(){
BufferedWriter bw = null;
try {
File file1 = new File(“d:gname.txt”);
if(!file1.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gname.txt”));
String content1 = strToString(goodname);//數組內容轉換成字符串
bw.write(content1);//寫入
bw.close();
}
File file2 = new File(“d:gprice.txt”);
if(!file2.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gprice.txt”));
String content2 = doubleToString(goodprice);//數組內容轉換成字符串
bw.write(content2);//寫入
bw.close();
}
File file3 = new File(“d:gnum.txt”);
if(!file3.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gnum.txt”));
String content3 = intToString(goodnum);//數組內容轉換成字符串
bw.write(content3);//寫入
bw.close();
}
File file4 = new File(“d:cname.txt”);
if(!file4.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:cname.txt”));
String content4 = strToString(cname);//數組內容轉換成字符串
bw.write(content4);//寫入
bw.close();
}
File file5 = new File(“d:cpass.txt”);
if(!file5.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:cpass.txt”));
String content5 = strToString(cpass);//數組內容轉換成字符串
bw.write(content5);//寫入
bw.close();
}
File file6 = new File(“d:gout.txt”);
if(!file6.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gout.txt”));
String content5 = intToString(goodout);//數組內容轉換成字符串
bw.write(content5);//寫入
bw.close();
}
} catch(IOException e){
e.printStackTrace();
}
}
/** * 登入之后加載商超購物管理系統
*/ static void loadmenu1(){
System.out.println(“歡迎進入商超購物管理系統!”);
System.out.println(“tttt商超購物管理系統”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.商品維護”);
System.out.println(“tttt2.前臺收銀”);
System.out.println(“tttt3.商品管理”);
System.out.println(“tttt4.退出”);
System.out.println(“********************************************************************************”);
System.out.println(“請選擇,輸入數字或按0退出:”);
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
switch(a){
case 0:
System.out.println(“謝謝您的使用!”);
break;
case 1:
System.out.println(“執行顯示商品維護菜單”);
loadmenu2();
break;
case 2:
System.out.println(“執行前臺收銀”);
loadmenu6();
break;
case 3:
System.out.println(“執行商品管理”);
loadmenu7();
break;
default:
break;
} } /* * 在商超購物管理系統中按1鍵時 */ static void loadmenu2(){
System.out.println(“tttt商超購物管理系統 商品維護”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.添加商品t”);
System.out.println(“tttt2.更改商品t”);
System.out.println(“tttt3.刪除商品t”);
System.out.println(“tttt4.顯示所有商品t”);
System.out.println(“tttt5.查詢商品t”);
System.out
.println(“********************************************************************************”);
System.out.println(“請選擇,輸入數字或按0返回上一級菜單:”);
Scanner scan = new Scanner(System.in);
int b = scan.nextInt();
switch(b){
case 0:
loadmenu1();
break;
case 1:
addgoods();
break;
case 2:
System.out.println(“執行更改商品操作”);
loadmenu3();// 修改商品
break;
case 3:
System.out.println(“執行商品刪除操作”);
loadmenu4();// 商品刪除
break;
case 4:
System.out.println(“顯示所有商品”);
System.out.println(“商品名稱ttt” + “商品價格ttt” + “商品數量ttt”
+ “備注”);
showgoods();
break;
case 5:
System.out.println(“執行查詢商品操作”);
loadmenu5();
break;
default:
break;
} } /* * 在商超購物管理系統中按2鍵時
*/ static void loadmenu6(){
System.out.println(“tttt商超購物管理系統 前臺收銀”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.購物結算”);
Scanner scan = new Scanner(System.in);
int ch = scan.nextInt();
switch(ch){
case 0:
loadmenu1();
break;
case 1:
pay();
break;
default:
break;
}
} /* * 在商超購物管理系統中按3鍵時
*/ static void loadmenu7(){
Scanner scan = new Scanner(System.in);
System.out.println(“ttt商超購物管理系統 商品管理”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.庫存查詢”);
System.out.println(“tttt2.已出售商品”);
System.out.println(“tttt3.售貨員管理”);
System.out.println(“請選擇,輸入數字或按0返回上一級菜單:”);
int ch = scan.nextInt();
switch(ch){
case 0: loadmenu1();
break;
case 1:
System.out.println(“執行庫存查詢操作:”);
kusear();
break;
case 2:
System.out.println(“執行已出售商品查詢操作”);
besold();
break;
case 3:
System.out.println(“執行售貨員管理操作”);
salesman();
break;
default:
break;
}
} /* * 對售貨員信息的增添,修改 */ static void salesman()
{
Scanner scan = new Scanner(System.in);
System.out.println(“
1、添加售貨員”);
System.out.println(“
2、修改售貨員信息”);
System.out.println(“請選擇,輸入數字或按0返回上一級菜單:”);
int b = scan.nextInt();
switch(b){
case 0:
loadmenu7();//返回上一級
break;
case 1:
addsale();//選擇1鍵,添加售貨員
break;
case 2:
modifysale();//更改售貨員的信息
break;
default:
break;
} } /* 添加售貨員 * */ static void addsale(){
Scanner scan = new Scanner(System.in);
String f;
// sign1 = sign1 + 1;
do {
System.out.println(“添加售貨員姓名:”);
String addname = scan.next();
add(cname, addname, sign1);//將新信息添加到相應數組中
System.out.println(“添加售貨員登陸密碼:”);
String addpass = scan.next();
add(cpass, addpass, sign1);//將新信息添加到相應數組中
// writeArray();
sign1++;//新信息添加后數組下標加1
writeArray();
System.out.println(“是否繼續(y/n)”);
f = scan.next();
// writeArray();
} while(f.equals(“y”));
salesman();} /* * 更改售貨員的信息 */ static void modifysale(){
String f;
Scanner scan = new Scanner(System.in);
System.out.println(“輸入更改員工名稱:”);
String newname = scan.next();
int k = searmember(newname);//查詢需要改的售貨員的信息,并返回其在數組中的下標
if(k >= 0){//判斷售貨員是否存在
System.out.println(“員工姓名” + “ttt密碼”);
System.out.println(cname[k] + “ttt” + cpass[k]);
System.out.println(“選擇您要更改的內容:”);
System.out.println(“
1、更改員工姓名:”);
System.out.println(“
2、更改登錄密碼:”);
int kk = scan.nextInt();
switch(kk){
case 1:
System.out.println(“請輸入已更改員工姓名:”);
String newnname = scan.next();
cname[k] = newnname;
writeArray();
System.out.println(“是否繼續(y/n)”);
f = scan.next();
if(f.equals(“y”)){
modifysale();
} else {
salesman();
}
break;
case 2:
System.out.println(“請輸入已更改密碼:”);
String newpass = scan.next();
cpass[k] = newpass;
writeArray();
System.out.println(“是否繼續(y/n)”);
// System.out.println(“是否繼續(y/n)”);
f = scan.next();
if(f.equals(“y”)){
modifysale();
}
salesman();
break;
default:
break;
}
} } /* * 查詢ename姓名的售貨員在數組中的下標 */ static int searmember(String ename){
for(int i = 0;i < cname.length;i++){
if(cname[i].equals(ename)){
return i;
}
}
return-1;// 不存在時
} /* * 查詢已出售的商品信息 */ static void besold()
{
System.out.println(“商品名稱ttt” + “商品價格ttt” + “商品數量ttt” + “備注”);
for(int i = 0;i < goodout.length;i++){
if(goodout[i]!= 0){
System.out.println(goodname[i] + “ttt” + goodprice[i]
+ “ttt” + goodout[i]);
}
}
loadmenu7();} /* * 查詢庫存中售的商品信息
*/ static void kusear(){
Scanner scan = new Scanner(System.in);
String f;
do {
System.out.println(“輸入要查詢的商品名稱:”);
String sname = scan.next();
int t = ndimsear(sname);//按確切的商品名稱進行查詢,即非模糊查詢,找出商品名稱信息的下標
if(t >= 0){
System.out.println(“商品名稱ttt” + “商品價格ttt” + “商品數量ttt”
+ “備注”);
System.out.println(goodname[t] + “ttt” + goodprice[t]
+ “ttt” + goodnum[t] + “ttt”);//按下標輸出商品相應的信息
} else {
System.out.println(“沒有此商品”);
}
System.out.println(“是否繼續(y/n)”);
f = scan.next();
} while(f.equals(“y”));
loadmenu7();
} /* * 按確切的商品名稱進行查詢,即非模糊查詢,找出商品名稱信息的下標
*/ static int ndimsear(String s){
for(int i = 0;i < goodname.length;i++){
if(goodname[i].equals(s)){
return i;
}
}
return-1;//沒查詢到時
}
/* * 商品結算
*/ static void pay(){
Scanner scan = new Scanner(System.in);
double sum = 0;
String f;
do {
dimsearch1();//按關鍵字進行模糊查詢,查找可能需要的商品
System.out.println(“請選擇商品:”);
String bnam = scan.next();//按查詢到的相關商品中選擇要購買的商品
System.out.println(“請輸入購買數量:”);
int bnum = scan.nextInt();
int fl = seargood(bnam);
System.out.println(bnam + “ttt” + goodprice[fl] + “ttt”
+ “購買數量” + bnum + “ttt” + bnum * goodprice[fl]);
goodnum[fl] = goodnum[fl]sum));
writeArray();//將對數組的更改寫入到文件中
loadmenu1();//結束購買返回
} /* * 查找商品返回下標 */ static int seargood(String bbnam){
for(int i = 0;i <= goodname.length;i++){
if(goodname[i].equals(bbnam)){
return i;
}
}
return-1;}
/* * 對商品進行各種查找
*/
static void loadmenu5(){
Scanner scan = new Scanner(System.in);
System.out.println(“
1、按商品數量升序查詢”);
System.out.println(“
2、按商品價格升序查詢”);
System.out.println(“
3、輸入關鍵字查詢商品”);
System.out.println(“請選擇,輸入數字或按0返回上一級菜單:”);
int choice = scan.nextInt();
switch(choice){
case 0:
loadmenu2();//返回上一級
break;
case 1:
numshenxu();//按商品數量升序進行查找
break;
case 2:
priceshenxu();//按商品價格升序進行查找
break;
case 3:
dimsearch();//按商品的關鍵字進行查找
break;
default:
break;
}
}
static void dimsearch1(){
int[] k;
Scanner scan = new Scanner(System.in);
System.out.println(“輸入商品關鍵字:”);
String sear = scan.next();
k = Arrays.copyOf(index(sear), index(sear).length);
System.out.println(“商品名稱ttt” + “商品價格ttt” + “商品數量ttt” + “備注”);
if(k!= null){
for(int i = 0;i < k.length;i++){
System.out.println(goodname[k[i]] + “ttt” goodprice[k[i]]
+ “ttt” + goodnum[k[i]] + “ttt”);
}
}
} /* * 按商品的關鍵字進行查找
*/ static void dimsearch()
+ {
String f;
do {
int[] k;
Scanner scan = new Scanner(System.in);
System.out.println(“輸入商品關鍵字:”);
String sear = scan.next();
k = Arrays.copyOf(index(sear), index(sear).length);
System.out.println(“商品名稱ttt” + “商品價格ttt” + “商品數量ttt”
+ “備注”);
if(k!= null){
for(int i = 0;i < k.length;i++){
System.out.println(goodname[k[i]] + “ttt”
+ goodnum[k[i]]
+ “ttt”);
}
goodprice[k[i]]
+
“ttt”
+
}
System.out.println(“是否繼續(y/n)”);
f = scan.next();} while(f.equals(“y”));loadmenu2();} static int[] index(String ss){ int countt = 0;int counttt = 0;for(int i = 0;i < goodname.length;i++){
if(goodname[i].indexOf(ss)>= 0){
countt++;
} } int[] location = new int[countt];for(int i = 0;i < goodname.length;i++){
if(goodname[i].indexOf(ss)>= 0){
location[counttt] = i;
counttt++;
}
}
return location;} /* * 按商品數量升序進行查找
*/ static void numshenxu(){
int[] newnum = Arrays.copyOf(goodnum, goodnum.length);
double[]
newprice
=
Arrays.copyOf(goodprice, goodprice.length);
String[] goodname.length);
for(int i = 0;i < newnum.lengthi1;i++){
for(int j = 0;j < newprice.length1;j++){
if(newprice[j] < newprice[j + 1]){
int temp = newnum[j];
newnum[j] = newnum[j + 1];
newnum[j + 1] = temp;
double temp1 = newprice[j];
newprice[j] = newprice[j + 1];
newprice[j + 1] = temp1;
String temp2 = newname[j];
newname[j] = newname[j + 1];
newname[j + 1] = temp2;//相應的下標在不同的數
newname
=
Arrays.copyOf(goodname, 組里進行挑換,商品的信息才能保持一致
}
}
}
System.out.println(“商品名稱ttt” + “商品價格ttt” + “商品數量ttt” + “備注”);
for(int k = 0;k < newnum.length;k++){
if(newprice[k]!= 0){
System.out.println(newname[k] + “ttt” + newprice[k]
+ “ttt” + newnum[k] + “ttt”);
}
}
loadmenu5();} /* *更改商品信息的操作
*/ static void loadmenu3(){
Scanner scan = new Scanner(System.in);
System.out.println(“輸入更改商品名稱:”);
String nam = scan.next();
int b = showflage(nam);
print(b);
System.out.println(“選擇您要更改的內容:”);
System.out.println(“
1、更改商品名稱::”);
System.out.println(“
2、更改商品價格:”);
System.out.println(“
3、更改商品數量:”);
int ch = scan.nextInt();
switch(ch){
case 0:
break;
case 1:
int counnt = 0;
String f = “y”;
while(f.equals(“y”)){
if(counnt!= 0){
// Scanner scan = new Scanner(System.in);
System.out.println(“輸入更改商品名稱:”);
nam = scan.next();
b = showflage(nam);//查找需要更改商品的下標
print(b);//輸出這個商品的各種信息
}
System.out.println(“請輸入已更改商品名稱”);
String cname = scan.next();
goodname[b] = cname;//更改名稱
System.out.println(“是否繼續(y/n)”);
f = scan.next();
counnt++;
writeArray();
}
loadmenu2();
break;
case 2:
counnt = 0;
f = “y”;
while(f.equals(“y”)){
if(counnt!= 0){
// Scanner scan = new Scanner(System.in);
System.out.println(“輸入更改商品名稱”);
nam = scan.next();
b = showflage(nam);
print(b);
}
System.out.println(“請輸入已更改商品價格”);
double cprice = scan.nextDouble();
goodprice[b] = cprice;//新價格寫入數組
System.out.println(“是否繼續(y/n)”);
f = scan.next();
counnt++;
writeArray();
}
loadmenu2();
break;
case 3:
counnt = 0;
f = “y”;
while(f.equals(“y”)){
if(counnt!= 0){
// Scanner scan = new Scanner(System.in);
System.out.println(“輸入更改商品名稱”);
nam = scan.next();
b = showflage(nam);
print(b);
}
System.out.println(“請輸入已更改商品數量”);
int cnum = scan.nextInt();
goodnum[b] = cnum;
counnt++;
writeArray();
System.out.println(“是否繼續(y/n)”);
f = scan.next();
}
loadmenu2();
break;
default:
break;
}
} /* * 查詢nama這個商品在goodname中的下標
*/ static int showflage(String nama){
int flag = 0;
for(int i = 0;i < goodname.length;i++){
if(goodname[i].equals(nama)){
flag = i;
break;
}
}
return flag;}
static void print(int b){
System.out.println(“商品名稱 tt” + “商品價格 tt” + “商品數量 tt” + “備注”);
System.out.println(goodname[b] + “tt” + goodprice[b] + “tt”
+ goodnum[b] + “ tt”);
} /* * 刪除商品菜單
*/ static void loadmenu4(){
String f;
int d;
do {
Scanner scan = new Scanner(System.in);
System.out.println(“請輸入要刪除的商品名稱:
String dname = scan.next();
d = showflage(dname);
delete(d);
System.out.println(”是否繼續(y/n)“);
f = scan.next();
writeArray();//刪除之后重新寫入文件
} while(f.equals(”y“));
loadmenu2();}
”);/* * 刪除商品 */ static void delete(int dd){
for(int i = dd;i < goodname.length1] = null;
goodprice[goodprice.length1] = 0;
} /* * 查詢所有商品
*/ static void showgoods(){
int i = 0;
while(goodprice[i]!= 0){
System.out.print(goodname[i] +
“ttt” goodprice[i] + “ttt”
+
+ goodnum[i] + “ttt”);
if(goodnum[i] < 10){
System.out.println(“ttt*該商品已不足10件!”);
}
System.out.println();
i++;
}
loadmenu2();
} /* * 商品添加操作 */ static void addgoods(){
System.out.println(“執行添加商品操作:t”);
String a;
do {
Scanner scan = new Scanner(System.in);
System.out.println(“輸入商品名稱:”);
String na = scan.next();
add(goodname, na, sign);
System.out.println(“輸入添加商品價格:”);
double pr = scan.nextDouble();
add(goodprice, pr, sign);
System.out.println(“輸入添加商品數量:”);
int c = scan.nextInt();
add(goodnum, c, sign);
sign++;
System.out.println(“是否繼續(y/n)”);
a = scan.next();
writeArray();
} while(a.equals(“y”));
loadmenu2();
} /* * 將數組信息寫入到相應的文件里,啟動程序時就要調用這個函數 */ static void writeArray(){
BufferedWriter bw = null;
try {
bw
=
new
BufferedWriter(new FileWriter(“d:gname.txt”));
String content1 = strToString(goodname);
bw.write(content1);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:gprice.txt”));
String content2 = doubleToString(goodprice);
bw.write(content2);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:gnum.txt”));
String content3 = intToString(goodnum);
bw.write(content3);
bw.close();
bw = new BufferedWriter(new FileWriter(“d:cname.txt”));
String content4 = strToString(cname);
bw.write(content4);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:cpass.txt”));
String content5 = strToString(cpass);
bw.write(content5);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:gout.txt”));
String content6 = intToString(goodout);
bw.write(content6);
bw.close();
} catch(IOException e){
e.printStackTrace();
} } /* * 添加商品名稱 */ static void add(String[] aa, String n, int b){
if(b == aa.length){
aa =(String[])Arrays.copyOf(aa, aa.length * 2);
}
aa[b] = n;} /* * 添加商品價格
*/ static void add(double[] aa, double pr, int b){
if(b == aa.length){
aa =(double[])Arrays.copyOf(aa, aa.length * 2);
}
aa[b] = pr;} /* * 添加商品數量
*/ static void add(int[] aa, int cc, int b){
if(b == aa.length){
aa =(int[])Arrays.copyOf(aa, aa.length * 2);
}
aa[b] = cc;
}
/** * 從文件中讀取信息到相應的數組里
*/ static void readArrays(String name)throws Exception {
BufferedReader br = null;
try {
if(“goodname”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:gname.txt”));
String content1 = br.readLine();
String[] arr = strToString(content1);
goodname arr.length);
for(int i = 0;i < goodname.length;i++){
if(!goodname[i].equals(“null”)){
sign++;
=
(String[])
Arrays.copyOf(arr,}
}
} else if(“goodprice”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:gprice.txt”));
String content2 = br.readLine();
double[] arr = doubleToString(content2);
goodprice arr.length);
} else if(“goodnum”.equals(name)){
br
=
new
BufferedReader(new
=
(double[])
Arrays.copyOf(arr, FileReader(“d:gnum.txt”));
String content3 = br.readLine();
int[] arr = intToString(content3);
goodnum =(int[])Arrays.copyOf(arr, arr.length);
} else if(“cname”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:cname.txt”));
String content4 = br.readLine();
String[] arr = strToString(content4);
cname arr.length);
=(String[])Arrays.copyOf(arr,for(int i = 0;i < cname.length;i++){
if(!cname[i].equals(“null”)){
sign1++;
}
}
} else if(“cpass”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:cpass.txt”));
String content5 = br.readLine();
String[] arr = strToString(content5);
cpass arr.length);
} else {
br
=
new
BufferedReader(new
=
(String[])
Arrays.copyOf(arr, FileReader(“d:gout.txt”));
String content6 = br.readLine();
int[] arr = intToString(content6);
goodout =(int[])Arrays.copyOf(arr, arr.length);
}
} catch(FileNotFoundException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
} /* * 將字符串轉換成字符串數組 */ static String strToString(String[] arry){
// String arrys=“";
// for(int i=0;i // { // arrys=arry+arry[i]+”,“; // } // //arrys=arrys+arry[arry.length-1]; // System.out.println(arrys); // return arrys; StringBuilder sb = new StringBuilder(); for(int i = 0;i < arry.length;i++){ sb.append(arry[i]).append(”,“); } sb.deleteCharAt(sb.length()-1); // System.out.println(sb.toString()); return sb.toString();} /* * 將字符串轉換成字符串數組 */ static String[] strToString(String ar){ String[] arry = ar.split(”,“);return arry;} /* * 將int型數組轉換成字符串 */ static String intToString(int[] arrr){ String ss = ”“; ss = Arrays.toString(arrr); String sss = ss.replace(”[“,”“).replace(”]“, ”“).replace(” “, ”"); 商品管理 第一章 門店商品進銷存管理 一、訂貨 1、店長依據《門店作業手冊》規范,及時了解陳列商品及庫存商品的數量情 況,結合銷售動態,倉庫容量,每日仔細填寫訂單簽字后傳至采購部,無 訂單門店次日出現斷貨現象,由店長負責,但是下訂單后,必須保證次日 貨物送達有存放位置,否則由店長自行解決,不得占用營業場地。 2、采購部接到訂單后,匯總各門店相同商品,做同一代理商統一訂貨訂單,必須標明送貨門店地址、電話、送達時間,如因不知地址無法送貨出現斷 貨由采購部責任人負責,如因供應商不給送貨出現斷貨,由采購部考核供 應商 3、供應商接到訂單,必須準時將貨物送達指定門店,如出現不送情況,店 長及時反饋運營部,由運營部督促采購部落實完成。 4、店長要結合銷售情況,保證各產品的安全庫存,不得出現斷貨現象。 二、收貨 1、供應商送達貨物后,門店進行驗貨,必須保證生產日期在保質期三分之一 內,無破損,出現外包裝破損的,開箱逐一驗收,規格、單價與合同一致,數量與訂單一致,高于訂單數量以外的貨不收,否則出現差異由收貨人承 擔。 2、所有項目核對無誤后,在票據簽字,將票據交店長或副店長審核簽字確認,然后由店長留存一聯入賬并轉財務,票據必須必須保證有送貨人簽字。 3、帶促銷品的商品,促銷品依據收貨方式簽收,妥善保管。 4、供應商清倉商品,必須帶采購部及企劃部簽署活動方案,方可收貨。 5、供應商送達貨物后,門店必須依據訂單接收,否則造成供應商不給送送貨 由店長負責,出現過大量囤貨由店長負責。 三、銷售 依據《門店作業手冊》及《企劃手冊》執行,結合超市陳列方式陳列做好銷售,不得出現貨架空缺,倉庫集貨現象,否則由店長負責,給予經濟處罰。 四、退換貨 1、破損退換貨:一袋或個別商品出現破碎或破損造成批量污染的需要退貨的,由店長和送貨人協調解決退貨,發現后及時退貨;批量破損,如門 店原因造成或者收貨不注意,由店長與供應商協調解決,協調無果由店長 負責,如出現特殊情況(氣體飲料自行開啟等)非門店造成,門店報營 運部,由營運部督促采購部協調解決,解決無果按采購制度執行。 2、臨期商品退換貨:滯銷商品出現臨期商品(保質期三分之二以上商品) 需要退換貨的,由門店報營運部,由營運部督促采購部協調解決,解決 無果按采購制度執行。 五、供應商結賬方式及門店賬務核銷、損耗標準: 依據財務部制定相關流程及方式、制度執行。 第二章 商品銷售定位管理 一、為了保證門店商品商品銷售最大化,做好快速淘汰與引進制,現將商品統稱 做如下分類:新品、戰略性商品、主力商品、穩定性商品、。 二、新品:首期開店,依據大宗采購原則引進商品,運營期間逐步采購回商品或 地區新引進商品,全部定位新品。 1、新品引進方式:大宗采購法;門店和采購部及時掌握市場信息(所有員工協助),發現比較好的新品及時引進; 2、新品淘汰: A、大宗采購的所有商品依據銷售數據,結合門店所在商圈消費習慣,逐步單店淘汰,如出現所有門店全部滯銷的,及時淘汰。 B、引進的新上市產品培養期不超2各月,依據銷售數據及時轉入一下 三種范疇內或淘汰。 3、陳列位置: A、大宗采購引進老產品按照門店陳列式陳列; B、新上市商品盡可能陳列在堆頭或端架; 三、戰略性商品:淘汰滯銷品后的知名廠家商品或進口商品;每天在無促銷活動 有較大銷售量的商品,利潤較大商品,統稱戰略性商品。 1、商品淘汰:所有商品都有生命期,依據銷售量,結合社區商圈消費習慣 及時轉入穩定商品行列或淘汰。 2、陳列位置:依據門店方式盡可能陳列于消費者視線范圍,便于拿取的地 方。 四、主力商品:每個促銷檔期的促銷商品,季節性商品統稱主力商品。 1、商品淘汰:依據促銷檔期銷售數據分析,促銷期間沒有較大量的提升,取消所在門店的以后促銷資格,季節性商品依據銷售數據,及時轉入穩 定商穩定性商品或淘汰。 2、陳列位置,盡可能陳列于堆頭、端架,并有POP指示。 五、穩定性商品:除了上述商品外,每日有銷量的商品,統稱穩定性商品。 1、商品淘汰:依據銷售數據,出現滯銷商品及時淘汰。 2、陳列位置:依據超市陳列法陳列于貨架偏下或偏上方。 第三章 商品庫存管理 一、庫房管理: 1、門店倉庫設置:根據實際情況,盡量避免占用營業面積,可以在不影響 消費者購物的情況下搭建二層架,作為臨時庫房。 2、倉庫內設施:因門店倉庫面積小,單品數量多,單品存貨量小,避免互 相堆壓,出現商品找不到,過期現象,盡量在庫內用角鋼 加木板做囤貨貨架。 二、庫位及商品存放管理: 1、庫位管理:店長必須做好商品庫位管理,按大類分區,然后在大類里按 小類分區,再按單品分區,退貨區(根據退貨量可以靈活掌 握),除退貨區,其他庫區必須固定。 2、商品存放管理:A、所有商品必須保證現金先出原則,入庫時必須注意 將舊貨應放到外邊,不得用新貨遮擋舊貨。 B、做好倉庫防護工作:防鼠、防火、防水、防壓、防 腐、防銹、防爆、防曬、防倒塌、防潮、防盜、防 蛀、防電。 C、數量管理:凡不直接上貨架需要入庫的商品,店長 要另建臺賬,做好入庫數量,每出一次 詳細記錄一次,要求有取貨人的簽字。 否則在盤點時出現差異由店長承擔。 三、商品庫存管理; 1、商品庫存管理解釋:凡門店簽收未銷售出去的商品都屬庫存商品。 2、庫存管理:銷售區陳列商品必須做臺賬,倉庫庫區商品存放必須做臺賬; 陳列商品臺賬數量+庫區商品臺賬數量=實際庫存數量 商品實際庫存+銷售數量=實際進貨量 3、商品記賬方式: 實際進貨量:按照門店簽收數量記錄總量,然后分開2筆記錄——銷售 區量、庫房區量; 銷 售 量:依據日報表數據,必須和收銀臺一致,從銷售區臺賬里核 減; 商品實際庫存量:每次從庫房出庫,從庫房區臺賬數量核減,在銷售區 數量加上。 4、庫存商品損耗:按照財務制度制定損耗執行,盤點時出現盤虧,如果損耗 數量還不足,由店長承擔;如果盤贏,無損耗,給予店長 獎勵,減去損耗還多,多出部分歸超市所有,同時追究店 長責任。 5、促銷贈品同樣按上述方式管理。 四、安全庫存管理: 1、計算公司:安全庫存=(預計最大消耗量-平均消耗量)*采購周期。 2、為了不影響門店銷售額,不出現斷貨現象,必須保證有安全庫存。 3、安全庫存由店長負責,店長依據銷售信息及送貨周期,有預見性的提前訂 貨,否則出現斷貨由店長負責,特殊情況除外(如突然性的大型團購),如 出現類似的情況,及時聯系采購部,加急訂貨、送貨,或者和顧客預約時 間。 五、現金進貨管理: 1、原則:保證不斷貨,避免擾亂供貨商送貨積極性,盡量做到每次進貨量少,訂貨頻次高,尤其是保質期偏短商品。 2、如出現現金進貨商品出現滯銷或積壓,店長應及時向營運部反饋,營運部 協調各門店,各部門協助處理,采購部和供應商落實促銷贈品,企劃部做 促銷規劃,各門店處理后,由積壓門店做退貨,協助處理門店做進貨處理,算作處理門店銷量,如協助門店無法賣出,將貨退回積壓商品店,由店長 負責。 六、賬期進貨管理: 1、原則:店長根據庫房庫容量,貨架牌面陳列量,可適當放大進貨量。 2、店長應每次例會及時反應貨量狀況,出現滯銷或積壓,尤其臨近保質期3 分之二時間時,務必及時反饋,否則由出現過期由店長承擔。 3、出現滯銷或積壓,供應部第一時間聯系供應商提供促銷支持,企劃部依據 促銷支持做促銷策劃,需要各店互調促銷的由供應商出車及人力協助,負 責取消促銷,直接做退貨處理。 第四章 商品質量管理 一、收貨時注意事項: 1、包裝或標簽破損; 2、包裝或標簽折裂; 3、包裝或標簽污染; 4、包裝或標簽變色; 5、包裝或標簽劃傷; 6、包裝或標簽變形; 7、液體商品滲漏。 二、陳列存放時注意事項: 1、包裝或標簽劃傷; 2、包裝或標簽變形; 3、包裝或標簽污染; 4、液體商品擠壓、碰撞; 5、踩踏、坐臥商品;6超出包裝承重范圍。 三、搬運時注意事項: 1、野蠻搬運; 2、踩踏、坐臥商品; 3、包裝或標簽劃傷; 4、包裝或標簽污染; 5、液體商品擠壓、碰撞;6包裝或標簽折裂。 四、衛生清潔時注意事項: 1、包裝或標簽劃傷; 2、包裝或標簽污染; 3、包裝或標簽折裂; 4、包裝或標簽損壞; 5、液體商品滲漏;6液體商品擠壓、碰撞; 7、商品凌亂堆放; 8、踩踏、坐臥商品。 綜上所述,除第一條可以拒收,其他均由損壞人賠償,發現滲漏現象及時報店長,注意污染其他商品。 江西農業大學 本科生畢業設計(論文)開題報告 題目:小型OA系統開發 學院:計算機與信息工程學院 專業:計算機科學與技術 班級:計科1002班 學號: 20102151 姓 填表日期: 年月日 一、選題的依據及意義: 隨著現代信息技術的飛速發展,尤其是計算機、網絡通信以及自動化等技術的突飛猛進,使得辦公自動化在技術和應用上得到了更高層次的發展,成為現代信息化社會的重要標志之一,同時也是企業信息化建設的重要組成部分。 所謂辦公自動化系統即Office Automation,也可簡稱為OA系統。它是將現代化辦公和計算機網絡功能結合起來的一種新型的辦公方式。OA系統以計算機網絡為依托,在企業內部進行暢通的信息交流。組織機構內部的人員通過網絡可跨越時間、地點協同工作。各個部門在信息共享的基礎上進行協作,便于明確各個部門甚至每個員工的責任,而決策層可以迅速綜合來自各個方面的信息,并以此為依據制定企業的戰略決策。 通常的辦公室業務,主要是進行大量文件的處理。而采用計算機網絡技術傳遞文檔,是辦公室自動化的基本特征。在引入辦公室自動化后除傳統的辦公室角色外,還要加入部分管理設備的專業技術人員。技術設備——計算機是另一因素。包括:計算機、復印機、電話機、傳真機、網絡設備等等,這些統稱為硬設備或硬件。另外,各種信息設備中還需要有管理設備的軟件。包括計算機的操作系統、網絡操作系統、文字處理軟件等等。顯然辦公自動化系統是一個“人-機”系統,二者缺一不可。 在辦公管理中,工作人員之間最基本的聯系是溝通(Communication)、協調(Cooperation)和控制(Control),即所謂的3C概念。而辦公自動化就是利用先進的信息技術將辦公過程電子化、數字化,從而創造一個集成的辦公環境,使所有的辦公人員都在同一個桌面環境進行協同工作。 在辦公自動化系統中通過建立企業內部的通信平臺及信息發布平臺,來保證組織內部的通信和信息交流,為企業提供一個信息發布和交流的場所,從而使員工能夠了解單位的發展動態及各種規章制度。同時企業的工作流程和各類文檔要實現的自動化,進一步規范各項工作,使企業內部的文檔能夠按權限進行保存、共享和使用,提高單位協同工作的效率。 二、國內外研究現狀及發展趨勢(含文獻綜述): 辦公自動化OA于50年代在美國等西方國家首先興起,70年代中期,美國 首先利用微型計算機系統實現辦公自動化以來,在發達國家已得到迅速的發展。美國聯邦政府高度重視辦公自動化的發展和應用,到 1984 年,90%以上的政府機構作上了電子郵件系統和電子報表系統,70%以上的政府機構準備增加其他管理支持軟件、文件查詢與報告生成程序、數據庫管理系統等。到 1987年,美國聯邦政府大約有 20%的官員和雇員可以在家里通過計算機網絡進行辦公或利用各處數據資源。在目前,辦公自動化系統中普遍采用各種先進的設備,如語言合成、語音識別、多媒體技術、光盤等,使辦公更加自動化、現代化。美國發展辦公自動化大體經歷了3個階段。 1975 年前為第一階段,采用單機設備,以文字處理機、復印機、傳真機、專用交換機等為主,完成單項業務的自動化。 1975—1982年為第二階段,該階段采用部分綜合設備,如專用自動交換機與文字、話音通信系統等,以實現關鍵競爭業務運行自動化。 1983年以后為第三階段,該階段采用系統綜合設備,如多功能工作站、電子郵件等其他辦公設備并入計算機網絡,各辦公室之間不僅能傳遞數據,而且能傳遞語音、圖形和圖像等信息,并采用多種決策支持軟件,使辦公人員不僅能快速獲得所需信息,而且能在很短的時間內作出判斷與決策,從而大大地提高辦公效率和辦公質量。 中國的OA系統起源于政府的公文和檔案管理。由于計劃經濟體制的影響,政府對企業的管理除了依靠法律、法規之外,還有大量的行政指令和指示。企業在進行許多決策的時候,也經常需要向主管的政府部門請示匯報。另外,當時的政府官員和企業領導經常是你我難以分辨,并且存在著比較嚴格的對應關系,即企業領導和政府官員行政級別掛鉤,因此在企業應用紅頭文件就比較自然。此時的OA系統的特點:以公文處理、檔案管理為核心的辦公管理系統,其實辦公就是辦文。 同樣國內的OA發展歷程大體也可以分為幾個階段: 第一代OA:以email、個人office辦公軟件處理為核心,個人來處理日常工作,在組織內缺乏很好的溝通渠道。 第二代OA:主要是以傳統的收發文管理,檔案管理為主。加入了很多的輔助功能如,BBS、公告板、名片夾、日程安排、報告管理、圖書管理、車輛管理、企業大事記等小功能。這些功能相對獨立,這樣的功能也可以用內部網站的形式 實現。這些功能對于企業沒有實際的大的幫助。 第三代OA:第二代的OA產品在功能上加強了,加入了很多功能。例如加入了文檔管理、人事的管理、資產的管理,特別是在流程方面逐步得到了加強。他的功能還是相對對立,尤其是與企業的業務還是沒有掛接上來,也是停留在將工作電子化的程度。 第四代OA:當我們的目光移開辦公自動化系統,我們就會發現,在企業除了辦公自動化系統之外,還有財務、庫存、生產、銷售、人力等管理系統。由于大量的信息孤島式的建設,他們之間很少能夠緊密協調起來。就前端來說,我們經常需要進行退出一個系統然后再進入另一個系統,并且發現數據常常不一致,我可以比較肯定地說,目前中國具有信息系統的企業絕大部分都是這種情況。他們往往具有多個供應商提供的多個系統,但很少集成。也有少數企業采用ERP套件,集成了其中的一部分,全部集成的企業鳳毛麟角,也可能正在產生之中。 第五代OA:隨著3G移動網絡的部署,辦公已經進入了移動時代。手機辦公或者叫移動辦公,是利用無線網絡實現辦公的技術。它將原有辦公系統上的OA功能遷移到手機。移動辦公系統具有傳統辦公系統無法比擬的優越性。移動辦公系統使業務軟擺脫時間和場所局限,隨時隨地進行與企業業務平臺溝通,有效提高管理效率,推動企業效益增長。手機辦公也涵蓋了手機移動執法和手機移動商務。 三、本課題研究內容: 本課題所研究的辦公自動化系統是針對于大中型的協同辦公專用系統。最大限度的提高辦公效率和辦公質量,改善辦公環境和條件。 該系統采用B/S模式,基于WEB形式,用戶工作界面通過WWW瀏覽器來實現,部分事務邏輯在前端(Browser)實現,主要事務邏輯在服務器端(Server)實現,形成所謂三層結構系統(3-tier system)。從而簡化了用戶客戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了用戶的總體成本。 具體包括: 1、網站首頁的布局設計。 2、用戶管理:注冊、修改、刪除新部門及新員工信息。(管理員功能) 3、公文流轉系統(收文、發文、簽報) (1)公文的起草、提交、審批、填寫意見等環節; (2)自主定義流程并配置每個環節的不同權限; (3)收發文的類型配置:可以有多個收發文表單的選擇、流程的選擇; (4)文件編號,印章樣式,紅頭文件等的配置; (5)對收發文進行歸檔、統計、排序、查看、搜索等操作; 4、個人事務:個人事務(我的待辦、我的待閱、我的已閱、我的已辦、我的辦結)、個人郵箱(收發郵件,查看、刪除郵件)、通訊錄。 5、行政管理:會議管理、車輛管理、用印管理。 6、公共信息:行政公告、部門文檔。 四、本課題研究方案: 本人主要通過圖書館館藏圖書以及互聯網資源獲取行業相關的各類文獻書籍,了解我國企業尤其是中大型企業在協同辦公中存在的問題,辦公效率亟待提高。在此基礎上進行相關設計開發。 1、系統數據庫的設計: 利用IBM公司的Lotus Notes/Domino平臺進行數據表的創建、視圖的創建。數據存儲采用Domino文檔型數據庫 2、開發語言包括: JavaScript、Html、Lotus Script、公式等 3、嵌套元素: 在頁面或表單中嵌入視圖、Java小程序、導航器等其他頁面與表單中的元素。 五、研究目標、主要特色及工作進度: 第一階段(約3周) 確定畢業論文題目,搜集相關資料,理解課題。 第二階段(約3周) 在學習并了解課題相關背景的基礎上,完成開題報告,成功開題。 第三階段(約4周) 學習設計與開發相關書籍,進行需求分析并完成概要設計。 第四階段(約5周) 設計和實現系統的各個模塊,并進行系統調試,進一步修改、完善系統。 第五階段(約5周) 準備畢業論文所需資料,在業務與技術兩個層面進行正文的撰寫。 第六階段(約3周) 修改并完成畢業論文,準備答辯 六、參考文獻: [1] 張翠玲.淺談辦公自動化的意義[J].中國科技縱橫,2010(14)[2] 陶德超.辦公自動化的現狀及發展[J].信息與電腦,2011(9) [3] 石麗霞.LotusDominoDesigner6應用程序開發指南[M].北京:中國水利水電出版社,2004 [4] 武坤.中文Lotus Domino/Notes R7應用教程[M].北京:機械工業出版社,2007 [5] [美] Paul Wilton Jeremy McPeak著,高宇輝等譯.JavaScript入門經典[M].北京:清華大學出版社,2011 [6] [美] Nicholas C.Zakas著,李松峰譯.JavaScript高級程序設計[M].北京:人民郵電出版社,2010 [7] [美] Freeman.E著,林旺譯.Head First HTML與CSS、XHTML中文版[M].北京:中國電力出版社,2008第四篇:小型連鎖超市商品管理
第五篇:《小型OA系統開發》(開題報告)