超市管理系統(tǒng)課件_第1頁
超市管理系統(tǒng)課件_第2頁
超市管理系統(tǒng)課件_第3頁
超市管理系統(tǒng)課件_第4頁
超市管理系統(tǒng)課件_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、*大學面向對象程序設計語言課程設計報告超市管理系統(tǒng)學號:* 姓名:*日期:5月17號 目 錄一.需求分析.2二.程序主要功能.2三.程序運行平臺.2四.系統(tǒng)功能框架圖.3五.程序類說明.4六.模塊分析.6七.比較有特色的地方.7八.存在的不足與對策.11九.編程體會.12十.程序源代碼.13一.需求分析本系統(tǒng)旨在實現(xiàn)一個小型的超市管理系統(tǒng),對于一個小型的超市來說,實施本系統(tǒng)不僅可以減少工作人員數(shù)量,降低成本,而且可以大大提高工作效率,降低工作強度,實現(xiàn)超市商品的控制與傳輸,從而方便銷售的管理與決策,為超市管理人員解除后顧之憂。二.程序主要功能 該程序的主要功能有:1 賬戶管理功能通過一個IDm

2、an類進行用戶管理。有一個超級管理員,對所有用戶進行管理;員工可以通過這個類注冊修改賬號,密碼;管理員和超級管理員可以修改默認密碼,超級管理員還負責管理員工信息,可以進行各種操作。2 貨物管理功能通過一個IDman的友元函數(shù),訪問IDman中私有密碼成員,對不同用戶,登陸不同的界面,實現(xiàn)不同功能;其中超級管理員涵蓋所有功能,進行銷售管理與信息管理,統(tǒng)計銷售情況,通過live函數(shù)查詢系統(tǒng)當前時間下有效期,通過一個sum函數(shù)統(tǒng)計各類商品銷售情況。5 管理員銷售管理通過一個Manager類對超市進行銷售管理;6 員工銷售管理通過一個Staff類對超市進行銷售管理,查詢與結賬,會自動扣除銷售的商品,并

3、記錄銷售商品。7幫助一個簡單的操作指南,指導用戶下一步該如何操作。8退出系統(tǒng)退出時將把所有內容以二進制保存到文件里,在運行時將從文件載入信息。運行程序后每一步都會有詳細的提示,操作簡便,大多數(shù)地方都考慮到防止用戶出現(xiàn)誤操作的情況,以提高程序的健壯性,可以放心使用!三程序運行平臺該程序是用VC+6.0制做的,使用Microsoft Visual C+ 6.0運行該程序,具體操作是:打開Microsoft Visual C+ 6.0,菜單欄里點文件打開工作區(qū)找到“圖書管理系統(tǒng).dsw”這個文件打開,或者在資源管理器中雙擊該文件,此時,VC+6.0會自動打開,并載入該系統(tǒng)相關資源,點擊Run命令菜單

4、或者或用快捷鍵Ctrl+F5運行該程程序。四系統(tǒng)功能框架圖超市管理系統(tǒng)登陸賬號管理幫助退出系統(tǒng)員工登陸管理員超級管理員員工登陸管理員登陸超級管理員登陸員工信息管理密碼修改賬號注冊顯示查找刪除庫存管理銷售總計商品結賬信息錄入返回退出庫存管理商品結賬信息錄入返回退出結賬查詢增加刪除查詢修改顯示有效期查詢返回增加刪除查詢修改顯示有效期查詢返回退出密碼修改密碼修改五類的介紹有關超市的類定義一個抽象類class Abstract public: virtual void ShowInfo() = 0; /顯示信息純虛函數(shù) virtual void AddInfo() = 0; /增加信息純虛函數(shù) vir

5、tual void SelectInfo() = 0; /查找信息純虛函數(shù) virtual void EditInfo() = 0; /修改信息純虛函數(shù) virtual void DeleteInfo() = 0; /刪除信息純虛函數(shù);賬戶管理類,實現(xiàn)對賬戶,員工信息的管理class IDman : public Abstractfstream passfile;Info number,member;string user; /管理員賬戶名string password; /密碼string superuser;string superpass;public:IDman();void Mana

6、ge();void Manage(int);/用戶賬號管理界面void Manage(float);/重載函數(shù)體void Manage(char);void Dis();void ShowInfo(); /顯示所有用戶信息void AddInfo();/增加信息void SelectInfo();/查找用戶信息void EditInfo(); /修改管理員信息void EditInfo(float);void EditInfo(char);void DeleteInfo(); friend void chose(IDman &);/刪除用戶信息;超級管理員類,實現(xiàn)對商品管理的所有功能c

7、lass Admin : public Abstract private:struct Node *head;/鏈表的頭指針 public:void initia();/ 進入系統(tǒng)后加載數(shù)據(jù),構造為鏈表void Adisplay();/ 用戶賬號管理界面void Adisplay(int);/重載函數(shù)體void sum(); /銷售總計void live(); / 有效期查詢void DeleteInfo();void DeleteInfo(string);/刪除庫存商品信息void AddInfo(); /錄入商品信息void EditInfo(); /編輯商品信息void EditInfo

8、(string,int);/重載,自動修改銷售后商品信息void ShowInfo();void SelectInfo();void SelectInfo(string);void account(); void CreatInfo();void Free(); /退出該模塊自動保存數(shù)據(jù);管理員類,實現(xiàn)對庫存管理的所有功能class Manager private:struct Node *head;/鏈表的頭指針 public:void initia();/進入系統(tǒng)后加載數(shù)據(jù)void Mdisplay();/用戶賬號管理界面void Mdisplay(int);/重載函數(shù)體void Dele

9、teInfo();void DeleteInfo(string);/刪除庫存商品信息void AddInfo(); void EditInfo();void EditInfo(string ,int);void ShowInfo();void SelectInfo();void SelectInfo(string);void account(); void CreatInfo();void Mlive();void Free();該類通過內部函數(shù)systime()自動獲取當前系統(tǒng)時間,并且重載“-”號,來計算商品保質期class dateprivate:int year,month,day;p

10、ublic:date(int year_,int month_,int day_)year=year_;month=month_;day=day_;date(date &obj) /拷貝構造函數(shù)year=obj.year;month=obj.month;day=obj.day;int operator-(const date &indate) /重載運算符-,計算有效期int D1=0,D=0,D1_=0,D_=0,chaday;int mon_day=31,28,31,30,31,30,31,31,30,31,30,31; for(int i=0;i<=month-1;

11、i+)D1+=mon_dayi;if(!(year%4)D=365*(year-2010)+D+day+1;/同時計算與2010年到輸入時間所差天數(shù),相減得到所差天數(shù)else D=365*(year-2010)+D+day;for(i=0;i<=indate.month-1;i+)D1_+=mon_dayi;if(!(year%4)D_=365*(year-2010)+D+day+1;else D_=365*(year-2010)+D+day;chaday=D-D_;return chaday;void systime() time_t t;tm *p;t=time(NULL);p=lo

12、caltime(&t);year=p->tm_year;month=p->tm_mon;day=p->tm_mday;cout<<year+1900<<"年"<<month+1<<"月"<<day<<"日"六.模塊分析1、庫存管理:下設子菜單,包括:1.增加2.刪除 3.查找 4.修改 5.顯示 6.有效日期查詢 所有函數(shù)均封裝在管理員類Admin,manager,員工類Staff中,通過友元函數(shù)chose()訪問IDman讀取密碼,登陸

13、不同界面,實現(xiàn)不同用戶需求。信息存儲在結構體Info中,類中定義了一個指針*head,指向結構體作為鏈表的頭結點,在不同的類的成員函數(shù)中都可使用,為了防止該活動指針使用過頻,造成幾個函數(shù)同時使用同一個指針指向不明,在有些函數(shù)里還定義了一些臨時指針。其主要思路是:輸入商品信息,放到一個臨時結構體中,讓p指到head_的位置,使用p= p->next在鏈表中移動指針,用string name,ID找到與臨時數(shù)組中字符相同的point->name,p->ID,再對其所在的類進行修改、刪除、查看等一系列操作。2、用戶信息管理:所有函數(shù)封裝在IDman中。這個模塊不同上一個模塊,通過二

14、進制文件操作數(shù)據(jù);通過讀取信息,儲存在臨時結構體數(shù)據(jù)中,與輸入信息比較來操作數(shù)據(jù)3、其它:主菜單中剩下的2個選項:3.幫助 4.退出系統(tǒng)。選了退出系統(tǒng)后,將對文件進行保存,就是把新的修改過的鏈表放到指定文件中覆蓋原來的鏈表以更新文件,所以必須要正常退出,不然直接按窗口的關閉的話就不會保存修改后的鏈表了。七比較有特色的函數(shù)1使用鏈表操作數(shù)據(jù),并將其與文件存儲數(shù)據(jù)結合,進入相應功能區(qū)時用initia()函數(shù)初始化鏈表,退出時保存數(shù)據(jù).2使用友元函數(shù)chose(),訪問IDmin類的私有成員。 3重載-運算符,計算查詢時日期與生產日期所差天數(shù),重載很多顯示界面函數(shù)。八存在的不足與對策 程序大量使用鏈

15、表,用到很多指針。再用到鏈表循環(huán)時比較難以把握,以及自動初始化鏈表文件打開很容易出錯。導致出現(xiàn)很多細小錯誤難以發(fā)現(xiàn),只得通過一次次的調試,最終發(fā)現(xiàn)錯誤?;蚴褂玫胶芏鄦我坏臄?shù)據(jù)類型,構造判斷,來解決一些問題。九編程體會 第一次編寫這么多代碼的程序,暴露了自己的很多不足,但收獲是很明顯的,對于C+的掌握比之前好多了。在自己發(fā)現(xiàn)問題,一次次的思考并最終解決問題時,很是高興,尤其整體完成,編譯通過時。由于水平有限,程序雖然寫了不少,但是效率并不怎么高十程序源代碼Main_c.cpp#include <iostream>#include"simple.h"using na

16、mespace std;void main()display();Simpli.h#ifndef DISPLAY_H#define DISPLAY_H#include"IDman.h"void display(); #endifDisplay.h#include"IDMan.h"#include"simple.h"#include"Admin.h"#include"manager.h"#include"staff.h"void display()IDman ID;int ch

17、oose;while(choose!='0') system("cls"); cout <<endl<< "t" ; cout <<endl<< "t " ; cout <<endl<< "t 水龍超市管理系統(tǒng) " ; cout <<endl<< "t " ; cout <<endl<< "t" ; cout <<endl<

18、< "t " ; cout <<endl<< "t 1.賬號登錄 " ; cout <<endl<< "t " ; cout <<endl<< "t 2.賬號管理 " ; cout <<endl<< "t " ; cout <<endl<< "t 3.幫助 " ; cout <<endl<< "t " ; c

19、out <<endl<< "t 4.退出系統(tǒng) " ; cout <<endl<< "t " ; cout <<endl<< "t" ; cout <<endl<<"tt請輸入14的數(shù)字進行選擇:" cin >> choose;switch(choose) case 1:chose(ID);break;case 2:ID.Manage(); /尚未添加實參 未定義break;case 3:cout <&l

20、t; "tt1、分為員工登陸,管理員登陸。員工管理商品銷售、庫存、進貨儲存管理;" << endl;cout << "tt管理員登陸,進行對全局的查看,以及統(tǒng)計分析銷售情況。"cout << "tt2、進行管理員賬號注冊、注銷、密碼修改操作。" << endl;system("pause");break;case 4:cout << "tt謝謝使用!" << endl;exit (0);default:system(&quo

21、t;cls");cout << endl << endl << endl;cout << "tt輸入錯誤,請重新輸入!" << endl;system("pause");break; IDMan.h#ifndef IDMAN_H#define IDMAN_H#include<iostream>#include<cstdlib>#include<iomanip>#include<fstream>#include<string>#

22、include"Abstract.h"using namespace std;struct Infostring name;string age;string phone;string address;string username;string passwor_d;class IDman : public Abstractfstream passfile;Info number,member;string user; string password; string superuser;string superpass;public:IDman();void Manage(

23、);void Manage(int);/用戶賬號管理界面void Manage(float);/重載函數(shù)體void Manage(char);void Dis();void ShowInfo(); /顯示所有用戶信息void AddInfo();/增加信息void SelectInfo();/查找用戶信息void EditInfo(); /修改管理員信息void EditInfo(float);void EditInfo(char);void DeleteInfo(); friend void chose(IDman &);/刪除用戶信息;#endifID_fun.cpp#includ

24、e"IDMan.h"#include"simple.h"IDman:IDman()user = "user"password = "sl123456"superuser = "superuser"superpass = "sl1234567"void IDman:Manage()int choose;while(choose!=0)system("cls"); cout <<endl<< "t" ;cout &l

25、t;<endl<< "t " ; cout <<endl<< "t 水龍超市用戶管理 " ;cout <<endl<< "t " ; cout <<endl<< "t" ;cout <<endl<< "t " ;cout <<endl<< "t 1.員工密碼管理 " ;cout <<endl<< "t &q

26、uot; ;cout <<endl<< "t 2.管理員密碼管理 " ;cout <<endl<< "t " ;cout <<endl<< "t 3.超級管理員密碼管理 " ;cout <<endl<< "t " ;cout <<endl<< "t 4.返回 " ;cout <<endl<< "t " ;cout <<en

27、dl<< "t 5.退出 " ;cout <<endl<< "t " ;cout <<endl<< "t " ;cout <<endl<< "t" ;cout <<endl<<"tt請輸入15的數(shù)字進行選擇:"cin >> choose;int a=1;float b=1.25;char c='f'switch(choose) case 1:Manage (a)

28、;break;case 2:Manage(b); break;case 3:Manage(c); break;case 4:display();case 5:exit (0);default:system("cls");cout << endl << endl << endl;cout << "tt輸入錯誤,請重新輸入!" << endl;system("pause");break; void IDman:Manage(int a)int choose;while(choos

29、e!=0)system("cls"); cout <<endl<< "t" ;cout <<endl<< "t " ;cout <<endl<< "t 1.賬號注冊 " ;cout <<endl<< "t " ;cout <<endl<< "t 2.密碼修改 " ;cout <<endl<< "t " ;cout

30、<<endl<< "t 3.返回 " ;cout <<endl<< "t " ;cout <<endl<< "t 4.退出 " ;cout <<endl<< "t " ;cout <<endl<< "t" ;cout <<endl<<"tt請輸入14的數(shù)字進行選擇:"cin >> choose;int a=1;switch

31、(choose) case 1:AddInfo(); break;case 2:EditInfo(); break;case 3:Manage();break;case 4:exit (0);default:system("cls");cout << endl << endl << endl;cout << "tt輸入錯誤,請重新輸入!" << endl;system("pause");break; void IDman:Manage(float b)system("

32、;cls"); string zhhu,pass;cout<<"請輸入賬號:"cin>>zhhu;cout<<"請輸入密碼:"cin>>pass;if(zhhu=user&&pass=password) int choose; while(choose!=0)system("cls"); cout <<endl<< "t" ;cout <<endl<< "t " ;cout

33、<<endl<< "t 1.密碼修改 " ;cout <<endl<< "t " ;cout <<endl<< "t 2.返回 " ;cout <<endl<< "t " ;cout <<endl<< "t 3.退出 " ;cout <<endl<< "t " ;cout <<endl<< "t&qu

34、ot; ;cout <<endl<<"tt請輸入14的數(shù)字進行選擇:"cin >> choose;float b=1.25;switch(choose) case 1:EditInfo(b); break;case 2:Manage();break;case 3:exit (0);default:system("cls");cout << endl << endl << endl;cout << "tt輸入錯誤,請重新輸入!" << end

35、l;system("pause");break; elsecout<<"輸入錯誤!"Manage();void IDman:Manage(char c)system("cls"); string zhhu,pass;cout<<"請輸入賬號:"cin>>zhhu;cout<<"請輸入密碼:"cin>>pass;if(zhhu=superuser&&pass=superpass) int choose; while(cho

36、ose!=0)system("cls"); cout <<endl<< "t" ;cout <<endl<< "t " ;cout <<endl<< "t 1.密碼修改 " ;cout <<endl<< "t " ;cout <<endl<< "t 2.其他賬戶管理 " ;cout <<endl<< "t " ;c

37、out <<endl<< "t 3.返回 " ;cout <<endl<< "t " ;cout <<endl<< "t 4.退出 " ;cout <<endl<< "t " ;cout <<endl<< "t" ;cout <<endl<<"tt請輸入14的數(shù)字進行選擇:"cin >> choose;char c=

38、9;f'switch(choose) case 1:EditInfo(c); break;case 2:Dis();break;case 3:Manage();case 4:exit (0);default:system("cls");cout << endl << endl << endl;cout << "tt輸入錯誤,請重新輸入!" << endl;system("pause");break; elsecout<<"輸入錯誤!"s

39、ystem("pause");Manage();void IDman:AddInfo()passfile.open("password.dat",ios:out|ios:binary|ios:in);if(passfile.fail()cout<<"無法注冊!"<<endl;system("pause");exit(0);cout<<"請輸入姓名:"cin>>;cout<<"請輸入年齡:"cin

40、>>number.age;cout<<"請輸入手機號:"cin>>number.phone;cout<<"請輸入家庭住址:"cin>>number.address;cout<<"請輸入賬號(必須是字母,大于2小于5):"cin>>number.username;cout<<"請輸入密碼(必須是含有字母與數(shù)字的字符串,大于7小于15):"cin>>number.passwor_d;passfile.write(

41、char*)&number,sizeof(number);passfile.close();cout << "tt注冊成功!" << endl;system("pause");display();void IDman:EditInfo()Info temp;string zhanghao,fupass;passfile.open("password.dat",ios:in|ios:binary);fstream fupassfile;fupassfile.open("pass.dat"

42、;,ios:out|ios:binary);if(passfile.fail()|fupassfile.fail()cout<<"錯誤,無法修改!"<<endl;exit(0);cout<<"請輸入要修改賬號?"cin>>zhanghao;passfile.read(char *)&temp,sizeof(temp);while(!passfile.eof() if(zhanghao!=temp.username)fupassfile.write(char *)&temp,sizeof(te

43、mp);elsecout<<"請輸入原密碼:"cin>>fupass;if(fupass=temp.passwor_d)cout<<"請輸入新密碼:"cin>>temp.passwor_d;cout<<"確認新密碼:"cin>>fupass;if(fupass=temp.passwor_d)fupassfile.write(char *)&temp,sizeof(temp);elsecout<<"密碼錯誤!"system(&

44、quot;pause");Manage();fupassfile.write(char *)&temp,sizeof(temp);passfile.read(char *)&temp,sizeof(temp);passfile.close();fupassfile.close();fupassfile.open("pass.dat",ios:in|ios:binary);passfile.open("password.dat",ios:out|ios:binary);fupassfile.read(char *)&tem

45、p,sizeof(temp);while(!fupassfile.eof()passfile.write(char *)&temp,sizeof(temp);fupassfile.read(char *)&temp,sizeof(temp);passfile.close();fupassfile.close();cout<<"修改成功!"<<endl;system("pause");display();void IDman:EditInfo(float b)float c = 1.25;string zhangha

46、o,fupass;cout<<"請輸入賬號:"cin>>zhanghao;cout<<"請輸入密碼:"cin>>fupass;if(fupass=password&&zhanghao=user)cout<<"請輸入新賬號:"cin>>user;cout<<"請輸入新密碼:"cin>>password;cout<<"請再次確認,賬號:"cin>>zhanghao;cout<<"密碼:"cin>>fupass;if(fupass=password&&zhanghao=user)cout<<"修改成功!"<<endl;system("pause");Manage();elsecout<<"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論