文档库

最新最全的文档下载
当前位置:文档库 > 手机专卖店管理系统

手机专卖店管理系统

《C++程序设计》课程设计报告书

题目:手机专卖店管理系统

班级:软件1202

小组成员:

教师:章永龙

周期:第十七周

2013年12月25日

一、任务描述

1、需求分析:

本系统实现简单的手机专卖店管理功能,可以对手机产品信息、顾客信息、销售信息等进行登记、修改、删除等。

2、程序的基本功能:

1)增加、修改、删除一款手机资料。

2)增加、修改、删除一名顾客资料。

3)增加、修改、删除一次交易信息。

4)按条件查询显示相关资料。

5)汇总相关销售信息。

二、系统概要设计

主要模块如下:

本程序主要分为3个类:手机类、顾客类、交易类。其中顾客类继承手机类,交易类继承顾客类。程序采用文件保存数据,可以有效防止因系统的关闭而导致数据的丢失。

注意:我把按条件查询显示相关资料,放在每个信息管理的子函数中了。

手机专卖店管理系统

三、系统详细设计

1.类的设计:

在系统开发过程中,使用类,类的使用使程序更加易读。

1. 手机类:

Class Phone

{

protected:

char model[10];//型号

char brand[10];//品牌

int price;

int num;//剩余数量

int number;//进货数量

public:

void setP(char *m,char *b,int p,int n);//设置手机信息

void setM(char *m);//设置手机型号

void setB(char *b);//设置手机品牌

void setP(int p);//设置手机价格

void setN(int n);//设置手机剩余数量

char* getM();//获取手机型号

char* getB();//获取手机品牌

int getNumber();//获取手机进货数量

int getP();//获取手机价格

int getN();//获取手机剩余数量

};

2.顾客类:

class Shopper:public Phone//顾客类(继承手机类)

{

protected:

char name[10];//姓名

char tel[12];//联系方式:手机号码

public:

void setS(char *name1="0",char *tel1="0",char *m="0",char *b="0");//设置顾客信息

char* getName();

char* getT();//获取顾客联系方式:手机号码

};

3.交易类:

class Trade:public Shopper//交易类(继承顾客类)

{

protected:

int year;//年

int month;//月

int day;//日

public:

void setTrade(int year1,int month1,int day1,char *name1="0",char *tel1="0",char *m="0",char *b="0");//设置交易信息

int getY();//获取年

int getMonth();

int getD();//获取日

};

2. 模块接口设计

系统通过函数间的相互调用实现,首先通过“主函数main()”进入系统,主函数实现将主菜单显示出来,并通过”switch”开关语句选择在不同菜单选项时调用不同的子函数菜单,手机管理、顾客管理、交易管理、汇总。

当进入子函数菜单后,进行相应的功能操作,操作结束后通过界面所提示的结束控制结束操作,系统返回上一个界面,然后再选择不同的操作进行如上相同的操作。如要退出系统,则可以依次返回上一个菜单直至到之菜单,选择“离开”选项退出系统。

其中最重要的是,数据之间的沟通。例如:当在交易界面添加一项交易时,顾客的数量就会加一,相应手机的数量就会减一。删除、修改同理。

3. 主要函数流程图

1. 主函数int main():

流程图:

手机专卖店管理系统

代码分析:

int main()

{

int iChoice;

do{

menu(); //打印界面

printf("请输入您的选择:");

scanf("%d",&iChoice);

switch(iChoice)

{

case 1:

system("cls");

PHONE();

getchar();

getchar();

break;

case 2:

system("cls");

SHOPPER();

getchar();

getchar();

break;

case 3:

system("cls");

TRADE();

getchar();

getchar();

break;

case 4:

system("cls");

SUM();

getchar();

getchar();

break;

}

system("cls");

}while(iChoice!=5);

printf("\n\n\n\t\t谢谢您的使用!!!\n\n\n");

return 0;

}

2.由于手机管理、顾客管理、交易管理子函数类似。所以拿手机管理为例:手机管理:void PHONE(void)

流程图:

手机专卖店管理系统

代码分析:

int PHONE(void)

{

int iChoice;

do{

menuPhone();

printf("请输入您的选择:");

scanf("%d",&iChoice);

switch(iChoice)

{

case 1:

system("cls");

addPhone();//增加手机信息

getchar();

getchar();

break;

case 2:

system("cls");

searchPhoneMenu();//查寻手机信息

getchar();

getchar();

break;

case 3:

system("cls");

delPhone();//删除手机信息

getchar();

getchar();

break;

case 4:

system("cls");

modifyPhone();//修改手机信息

getchar();

getchar();

break;

}

system("cls");

}while(iChoice!=5);

cout<<"按任意键继续。。。\n";

return 0;

}

3.增加手机信息:void addPhone(void)

流程图:

手机专卖店管理系统

代码分析:

void addPhone(void)

{

FILE *fp,*fp2;

char ch[2];

int k=0;

char m[10];//模型

char b[10];//品牌

int p,n;//p是价格,n是手机剩余数量

if((fp=fopen("phone.txt","ab"))==NULL)//以添加的方式打开phone文件

{

cout<<"file can't open!!!";

exit(1);

}

if((fp2=fopen("numPhone.txt","rb"))==NULL)//以读的方式打开numPhone文件;numPhone是手机种类的数量

{

fp2=fopen("numPhone.txt","wb");//若文件不存在则建立之,;默认numPhone=0

numPhone=0;

}

else

{

fread(&numPhone,sizeof(int),1,fp2);//若numPhone存在,则读取数据}

fclose(fp2);

// cout<

printf("\n\n\n\n\t\t+----------------手机信息录入------------------+\n\n\n");

do{

printf("是否录入数据(y/n)? ");

scanf("%s",ch);

if(strcmp(ch,"y")&&strcmp(ch,"Y")) //用于判断手机信息添加是否继续

{

printf("\n请输入任何键继续。。。。。。。");

break;

}

printf("\t\t请输入第%d种手机品牌:",numPhone+1);

cin>>b;

printf("\t\t请输入手机型号:");

cin>>m;

printf("\t\t请输入手机价格:");

cin>>p;

printf("\t\t请输入手机数量:");

cin>>n;

phone[numPhone].setP(m,b,p,n);

fwrite(&phone[numPhone],sizeof(class Phone),1,fp);//依次把手机信息写入文件

numPhone++; //手机种类数量加1

k++;

if(k%2==0)

{

system("cls");

printf("\n\n\n\n\t\t+----------------手机信息录入------------------+\n\n\n");

}

}while(TRUE);

if((fp2=fopen("numPhone.txt","wb"))==NULL)//把numPhone写进numPhone文件中{

cout<<"file cannot write";

exit(1);

}

fwrite(&numPhone,sizeof(int),1,fp2);

fclose(fp2);

fclose(fp);

}

4.手机信息查找之:按手机价格查询手机信息:void searchPhonePrice(void) 流程图:

手机专卖店管理系统

代码分析:

void searchPhonePrice(void) {

int iSearchPrice,i=0,j=0,k=0;

FILE *fp;

if((fp=fopen("phone.txt","rb"))==NULL)//以读的方式打开phone文件{

printf("File can not read\n");

exit(1);

}

while(!feof(fp))//把phone文件中的内容读入phone[i]数组之中{

fread(&phone[i++],sizeof(class Phone),1,fp);

}

printf("以0做结束");

do{

printf("\n\n请输入手机价格:");

scanf("%d",&iSearchPrice);

if(!iSearchPrice)//用于判断手机信息添加是否继续。0代表结束

{

printf("按任意键继续。。。。");

break;

}

for(j=0;j

{

if(phone[j].getP()==iSearchPrice)

{

printf("品牌是:%s\n",phone[j].getB());

printf("型号是:%s\n",phone[j].getM());

printf("价格是:%d\n",phone[j].getP());

printf("数量是:%d\n",phone[j].getN());

cout<<"-----------------------------\n";

}

}

k++;

if(k%2==0)

{

getchar();printf("按任意键继续.....");

getchar();

system("cls");

printf("以0做结束");

}

}while(1);

fclose(fp);

}

5.手机信息的删除:

流程图:

手机专卖店管理系统

手机专卖店管理系统

代码分析:

void delPhone(void)

{

int i=0,j=0,leep;

FILE *fp1,*fp2;

char ch[3],brand[10],model[10];

if((fp1=fopen("phone.txt","rb"))==NULL)//以读的方式打开phone文件

{

printf("File can not read\n");

exit(0);

}

while(!feof(fp1))//把phone文件中的内容读入phone[i]数组之中

{

fread(&phone[i],sizeof(class Phone),1,fp1);

i++;

}

numPhone=i-1;// 手机种类的数量

// cout<

do{

leep=0;

printf("是否要删除手机信息(y/n)? ");//用于判断手机信息添加是否继续,y代表继续

scanf("%s",ch);

if(strcmp(ch,"y")&&strcmp(ch,"Y"))

{

printf("\n请输入任何键继续。。。。。。。");

break;

}

printf("\n\n请输入要删除手机品牌:");

cin>>brand;

printf("\n\n请输入要删除手机型号:");

cin>>model;

for(j=0;j

{

if(!strcmp(phone[j].getB(),brand)&&!strcmp(phone[j].getM(),model))//判断数组中是否存在要删除的手机信息

{

leep=1;//leep=1代表以找到要删除的手机信息

break;

}

}

if(!leep)

{

printf("未找到要删除的手机!\n\n");

}

else

{

while(j

{

phone[j]=phone[j+1];

j++;

}

numPhone--;//手机种类的数量减一

printf("删除成功!\n\n");

}

}while(1);

fclose(fp1);

if((fp1=fopen("phone.txt","wb"))==NULL)//更新phone与numPhone文件的信息{

printf("File can't open\n");

exit(0);

}

fwrite(phone,sizeof(class Phone),numPhone,fp1);

fclose(fp1);

if((fp2=fopen("numPhone.txt","wb"))==NULL)

{

printf("File can't open\n");

exit(1);

}

fwrite(&numPhone,sizeof(int),1,fp2);

fclose(fp2);

}

6.手机信息的修改:

流程图:

手机专卖店管理系统

代码分析:

void modifyPhone(void)

{

int i=0,j=0,leep=0;

FILE *fp;

char ch[2],brand[10],model[10];

int p,n;

if((fp=fopen("phone.txt","rb"))==NULL)//以读的方式打开phone文件

{

printf("File can not read\n");

exit(0);

}

while(!feof(fp))//把phone文件中的内容读入phone[i]数组之中

{

fread(&phone[i],sizeof(class Phone),1,fp);

i++;

}

numPhone=i-1;//手机种类的数量

printf("\n\n\n\n\t\t+----------------手机信息修改------------------+\n\n\n");

do{

printf("是否要修改手机信息(y/n)? ");

scanf("%s",ch);

if(strcmp(ch,"y")&&strcmp(ch,"Y")) //用于判断手机信息添加是否继续,y代表继续

{

printf("\n请输入任何键继续。。。。。。。");

break;

}

printf("\n\n请输入手机品牌:");

scanf("%s",brand);

cout<<"请输入手机型号:";

cin>>model;

for(j=0;j

{

if(!strcmp(phone[j].getB(),brand)&&!strcmp(phone[j].getM(),model))//判断数组中是否存在要修改的手机信息

{

printf("\t\t请输入修改后的品牌:");//修改手机信息

scanf("%s",brand);

printf("\t\t请输入修改后的型号:");

scanf("%s",model);

printf("\t\t请输入修改后的价格:");

scanf("%d",&p);

printf("\t\t请输入修改后的数量:");

scanf("%d",&n);

phone[j].setP(model,brand,p,n);

leep=1;//leep=1代表以找到要删除的手机信息

break;

}

}

if(!leep)

{

printf("未找到要修改的手机信息!\n\n");

}

else

{

printf("修改成功!\n\n");

}

}while(1);

fclose(fp);

if((fp=fopen("phone.txt","wb"))==NULL)//更新phone与numPhone文件的信息{

printf("File can not read\n");

exit(0);

}

fwrite(phone,sizeof(class Phone),numPhone-1,fp);

fclose(fp);

}

四、系统实现

1. 主界面截图:

手机专卖店管理系统

2. 手机信息增加截图:

手机专卖店管理系统

3.顾客资料信息管理截图

手机专卖店管理系统

4.交易信息增加截图

手机专卖店管理系统

5.手机信息汇总截图(交易成功时,手机数量减一)

手机专卖店管理系统

6.顾客信息汇总截图(交易成功时,顾客数量加一)

手机专卖店管理系统

7.交易信息修改截图

手机专卖店管理系统

8.交易信息查找截图