您的当前位置:首页服装销售系统

服装销售系统

来源:小侦探旅游网


中 国 地 质 大 学

课程设计评语

对课程论文的评语:

平时成绩: 总 成 绩:

课程论文成绩: 评阅人签名: 注:1、无评阅人签名成绩无效;

2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;

3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

目 录

课程设计评语 .................................................................. 2 目 录 ......................................................................... 3 1. 课程论文题目 ............................................................ 4 2.程序设计思路 ............................................................... 4 3.功能模块图 ................................................................. 4 4.数据结构设计 ............................................................... 5 5.算法设计 ................................................................... 6 6.程序代码 .................................................................. 11 7.程序运行结果 .............................................................. 22 8.编程中遇到的困难及解决方法 ................................................ 28 9.总结心得及良好建议 ........................................................ 28 10.致谢 ..................................................................... 29

1. 课程论文题目

服装销售系统

(1)包含三类用户:管理员,店长,销售员。 (2)向管理员提供以下功能:自身密码修改,其他用户添加删除,用户信息修改,统计。商品信息添加,修改,删除,查找,统计。 (3)向店长提供以下功能:登陆,注销,自身密码修改,自身信息修改。商品信息修改商品信息统计。查看日报表,月报表,商品销量报表,营业员业绩报表,查找浏览修改商品储备信息。 (4)向销售员提供以下功能:商品浏览,查找,出售商品,查看自己的本日报表,本月报表。 [提示] (1)总体设计 整个服装销售系统可以设计为管理员模块,店长模块,销售员模块,商品模块等。 (2)数据结构采用结构体

(老师给我的题目要求是设计好店长模块,实现店长模块的功能,则下面的设计只涉及到店长模块。)

2.程序设计思路

根据题目要求,店长模块的功能是登陆、注销、密码、信息修改、商品储备信息修改、商品储备信息浏览、商品信息修改、商品信息统计。店长的名字及密码以文本文件的方式存于shop文件中。

3.功能模块图

店长

登注自商商查查查查浏修返陆 销 身品品看看看看览改回 信信信日月商营商商上

息息息报报品业品品一密修统表 表 销员储储菜码改 计 售业备备单 修量绩 信信改 表 息 息 4.数据结构设计

结构体:

输入数据

合法 N Y

店退

长 出

输入数据

N 合法 Y 登注自商商查查查查浏修返 陆 销 身品品看看看看览改回 信信信日月商营商商上

息息息报报品业品品一

密修统表 表 销员储储菜

码改 计 售业备备单

修 量绩 信信 改 表 息 息

继续运行 Y N 继续 结束 Y

5.算法设计

(1)主函数的流程图

开始 输出菜单供用户选输入菜单编号 N 判断编号是否为1.2 Y 根据编号调用各功能模块函数 结束

(2)店长模块中登录功能的流程图

检查是否已登录 N Y 提示已登录并返输入用户名和密码 N 是否找到 提示用户名不存在并返Y 回上一菜单 回上一菜单 提示登录成功并返回上一菜单

(3)店长模块的查看日(月)报表功能流程图

N 是否已登录 Y 返回上一菜单 输入要查询的日(月)N 是否找到 提示没有找到并返回上一菜单 Y 输出报表内容

(4)店长模块的商品(储备)信息修改功能

N 是否已登录 Y 输入需要修改的商品名 N 提示货物不存在是否找到 并返回上一菜单 Y 返回上一菜单 输入新的货品信息 N 信息是否合法 返回上一菜单 Y 提示修改成功并返回上一菜单

(5)店长模块的注销功能流程图

是否已登录 N Y 提示没有登录并返回上一菜单 提示注销成功并返回上一菜单

(5)店长模块的商品(储备)信息统计功能流程图

N 是否已登录 返回上一菜单 Y 输出所有商品信息

(7)店长模块的销售量报表查看功能流程图

N 是否已登录 返回上一菜单 Y 输出销售量报表

(8)店长模块的营业员业绩查看功能流程图

N 是否已登录 返回上一菜单 Y 输入营业员名字 N 是否找到 返回上一菜单 Y 输出销售量报表

(9)店长模块的主函数流程图

开始 输出菜单供用户选输入菜单编号 N 判断编号是否为1-11 Y 根据编号调用各功能模块函数 结束

6.程序代码

#include #include #include #include int k=0;

/*********************主函数 ***********************/ void shop(); void shop2(); void menu()

{ int n,w; do {

puts(\"\\ ***********************************************\\n\"); puts(\"\\ + 1.店长 +\\n\"); puts(\"\\ + 2.退出 +\\n\"); puts(\"\\ ***********************************************\\n\"); printf(\"\\n\\n\\ Choice your number(1-2): [ ]\\b\\b\"); scanf(\"%d\ if(n<1||n>2) w=1; else w=0; } while(w==1); switch(n) {

case 1:shop();break; case 2:exit(0); } } main() {

menu(); }

/************************店长模块**************************/ /***********登陆**************/

void shop_login(char name[],int *in) {

char pass[100],name2[100],pass2[100]; if(*in==1)printf(\"你已经登陆!\\n\"); else {

printf(\"请输入用户名,密码:\"); scanf(\"%s%s\ FILE *p; int x=0;

p=fopen(\"shop.txt\ while(!feof(p)) {

fscanf(p,\"%s%s\ if(strcmp(name,name2)==0) {

x=1;

if(strcmp(pass,pass2)==0)x=2; } }

fclose(p);

if(x==0)printf(\"该用户名不存在!\\n\"); else if(x==1)printf(\"密码错误!\\n\"); else if(x==2) {

printf(\"登陆成功!\\n\"); *in=1; } shop2(); }

printf(\"press any key to back.......\\n\");getchar();getchar(); }

/**********注销*************/ void shop_logout(int *in)

{ if(*in==0)printf(\"你没有登陆。不需要注销!\\n\"); else if(*in==1) { *in=0;

printf(\"注销成功!\\n\"); }

printf(\"press any key to back........\\n\"); getchar();getchar();shop2(); }

/**************密码、信息修改****************/

void shop_change(char name1[],int *in)

{ if(*in==0)printf(\"你没有登陆,请首先登陆\\n\"); else

{ typedef struct sh { char name[10];

char password[100]; struct sh *next; }SHOP; FILE *p;

SHOP *head,*a,*b;

head=(SHOP *)malloc(sizeof(SHOP)); a=head;

p=fopen(\"shop.txt\ while(!feof(p))

{ b=(SHOP *)malloc(sizeof(SHOP));

fscanf(p,\"%s%s\ a->next=b; a=a->next; }

a->next=NULL; fclose(p); a=head->next; while(a!=NULL) {

if(strcmp(a->name,name1)==0) {

printf(\"请输入修改后的店长姓名和密码:\"); scanf(\"%s%s\ break; }

a=a->next; }

a=head->next;

p=fopen(\"shop.txt\ while(a->next!=NULL) {

fprintf(p,\"%s %s\\n\ a=a->next; }

fclose(p);

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

printf(\"press any key to back........\\n\"); getchar();getchar();shop2(); } }

/***********商品信息修改************/ void shop_goodschange() { typedef struct g {

char name[10]; double price; long num;

struct g *next; }GOODS; FILE *p;

GOODS *head,*a,*b; char na[10]; int k=0;

head=(GOODS *)malloc(sizeof(GOODS)); a=head;

p=fopen(\"goods.txt\ while(!feof(p))

{ b=(GOODS *)malloc(sizeof(GOODS));

fscanf(p,\"%s%lf%d\ a->next=b; a=a->next; }

a->next=NULL; fclose(p);

printf(\"请输入要修改的货物的名称:\"); scanf(\"%s\ a=head->next; while(a!=NULL)

{ if(strcmp(a->name,na)==0) {

printf(\"请输入新的货物名称,价格,数量:\"); scanf(\"%s%lf%d\ k=1; break; }

a=a->next; }

a=head->next;

if(k==1)

{ p=fopen(\"goods.txt\ while(a->next!=NULL) {

fprintf(p,\"%s %.2lf %d\\n\ a=a->next; }

fclose(p);

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

else printf(\"该货物不存在!\\n\"); free(head);

printf(\"press any key to back........\\n\"); getchar();getchar();shop2(); }

/***********商品信息统计************/ void shop_goodscount() {

FILE *p; int n=0;

char name[10]; float k; int num;

printf(\" 物品 价格 数量\\n\"); p=fopen(\"goods.txt\ while(!feof(p)) {

fscanf(p,\"%s%f%d\

if(!feof(p)){printf(\"%s %.2f %d\\n\ }

printf(\"There are %d kinds of goods.\\n\ fclose(p);

printf(\"press any key to back........\\n\"); getchar();getchar();shop2(); }

/*************察看日报表************/ void daysells() {

char date2[10]; int k=0,n;

char name[10],price[10],seller[10],date[10]; printf(\"请输入要查询的年月日YYYYMMDD:\");

scanf(\"%s\ FILE *p;

p=fopen(\"sells.txt\

printf(\"货物名 价格 售货员 日期 数量\\n\"); while(!feof(p)) {

fscanf(p,\"%s%s%s%s%d\ if(strcmp(date,date2)==0&&!feof(p))

{printf(\"%s %s %s %s %d\\n\ }

printf(\"There are %d sold on %s.\\n\ fclose(p);

printf(\"press any key to back........\\n\"); getchar();getchar();shop2(); }

/************察看月报表*************/ void monthsells() {

char date2[10]; int n=0,m;

char name[10],price[10],seller[10],date[10]; int k,i;

printf(\"请输入要查询的年月YYYYMM:\"); scanf(\"%s\ FILE *p;

p=fopen(\"sells.txt\

printf(\"货物名 价格 售货员 日期 数量\\n\"); while(!feof(p)) {

k=1;

fscanf(p,\"%s%s%s%s%d\ for(i=0;i<6;i++)

if(date[i]!=date2[i]) {

k=0; break; }

if(k==1&&!feof(p))

{printf(\"%s %s %s %s %d\\n\ }

printf(\"There are %d sold in %s.\\n\ fclose(p);

printf(\"press any key to back........\\n\"); getchar();getchar();shop2(); }

/*************察看销售量报表************/ void goodssells() {

FILE *p;int n;

char name[100],price[100],seller[100],date[10]; p=fopen(\"sells.txt\

printf(\"货物名 价格 售货员 日期 数量\\n\"); while(!feof(p)) {

fscanf(p,\"%s%s%s%s%d\

if(!feof(p))printf(\"%s %s %s %s %d\\n\ }

fclose(p);

printf(\"press any key to back........\\n\"); getchar();getchar();shop2(); }

/***********察看营业员业绩表**********/ void pepsells() {

char seller2[10]; int k=0,n;

char name[10],price[10],seller[10],date[10]; printf(\"请输入要查询的售货员姓名:\"); scanf(\"%s\ FILE *p;

p=fopen(\"sells.txt\

printf(\"货物名 价格 售货员 日期 数量\\n\"); while(!feof(p)) {

fscanf(p,\"%s%s%s%s%d\ if(strcmp(seller,seller2)==0&&!feof(p)) { printf(\"%s %s %s %s %d\\n\ }

printf(\"There are %d sold by the %s.\\n\ fclose(p);

printf(\"press any key to back........\\n\"); getchar();getchar();shop2(); }

/***********商品储备信息浏览************/ void shop_goodsbrowse() {

FILE *p; int n=0;

char name[10]; float k; int num;

printf(\" 物品 价格 数量\\n\"); p=fopen(\"goods.txt\ while(!feof(p)) {

fscanf(p,\"%s%f%d\

if(!feof(p)){printf(\"%s %.2f %d\\n\ }

fclose(p);

printf(\"press any key to back........\\n\"); getchar();getchar();shop2(); }

/***********商品储备信息修改************/ void shop_goods_change() {

typedef struct g {

char name[10]; double price; long num;

struct g *next; }GOODS; FILE *p;

GOODS *head,*a,*b; char na[10]; int k=0;

head=(GOODS *)malloc(sizeof(GOODS)); a=head;

p=fopen(\"goods.txt\ while(!feof(p)) {

b=(GOODS *)malloc(sizeof(GOODS));

fscanf(p,\"%s%lf%d\ a->next=b; a=a->next;

}

a->next=NULL; fclose(p);

printf(\"请输入要修改的货物的名称:\"); scanf(\"%s\ a=head->next; while(a!=NULL) {

if(strcmp(a->name,na)==0) {

printf(\"请输入新的货物名称,价格,数量:\"); scanf(\"%s%lf%d\ k=1; break; }

a=a->next; }

a=head->next; if(k==1) {

p=fopen(\"goods.txt\ while(a->next!=NULL) {

fprintf(p,\"%s %.2lf %d\\n\ a=a->next; }

fclose(p);

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

else printf(\"该货物不存在!\\n\"); free(head);

printf(\"press any key to back........\\n\"); getchar();getchar();shop2(); }

/******************** 店长模块主函数********************/ void shop() {

char name[100]; int n,in=0,w; do {

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(\" 10,浏览商品储备信息\\n\"); printf(\" 11,修改商品储备信息\\n\"); printf(\" 12,返回上一菜单\\n\");

printf(\" ***********************************************\\n\"); printf(\" Choice your number(1-12) [ ]\\b\\b\\b\"); scanf(\"%d\

if(n>12||n<1) { printf(\"\\n输入错误!请重新输入:\"); w=1;} else w=0; } while(w);

if(n==12) menu(); switch(n) {

case 1:shop_login(name,&in);break; case 2:shop_logout(&in);break;

case 3:shop_change(name,&in);break; case 4:

if(in==1)shop_goodschange(); else printf(\"请先登陆\\n\"); break;

case 5:shop_goodscount();break; case 6:daysells();break; case 7:monthsells();break; case 8:goodssells();break; case 9:pepsells();break;

case 10:shop_goodsbrowse();break; case 11:shop_goods_change();break; case 12:menu();break; } }

/******************** 店长模块第二主函数********************/ void shop2() {

char name[100]; int n,in=1,w; do {

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(\" 10,浏览商品储备信息\\n\"); printf(\" 11,修改商品储备信息\\n\"); printf(\" 12,返回上一菜单\\n\");

printf(\" ***********************************************\\n\"); printf(\" Choice your number(1-12) [ ]\\b\\b\\b\"); scanf(\"%d\

if(n>12||n<1) { printf(\"\\n输入错误!请重新输入:\"); w=1;} else w=0; } while(w);

if(n==12) menu(); switch(n) {

case 1:shop_login(name,&in);break; case 2:shop_logout(&in);break;

case 3:shop_change(name,&in);break; case 4:

if(in==1)shop_goodschange(); else printf(\"请先登陆\\n\"); break;

case 5:shop_goodscount();break; case 6:daysells();break; case 7:monthsells();break; case 8:goodssells();break; case 9:pepsells();break;

case 10:shop_goodscount();break; case 11:shop_goodschange();break; case 12:menu();break; }

}

7.程序运行结果

主函数:

店长模块:

登陆:

注销:

商品信息修改:

商品信息统计:

查看日报表:

查看月报表:

查看商品销售量报表:

查看营业员业绩报表:

浏览商品储备信息:

修改商品储备信息:

返回上一菜单:

8.编程中遇到的困难及解决方法

在设计店长模块的过程中,我遇到的最大难题就是无法实现预想的先登录再进行下一步操作。最开始写好了子模块,但登陆完后就会直接退出程序。后来我在登陆的子模块最后调用shop函数,能够回到店长的主菜单但其他的所有操作都不能实现,即系统无法记录“已登录”这一状态。经检查后发现主函数里面定义了in=0,但已登录的情况下in=1,即只要回到shop函数,就会回到未登录的状态。在这种情况下,我添加了一个“第二主模块”,在这个模块里,除了定义in=1以外,其他的均与主函数相同。则进入店长模块以后,首先运行的是主函数,选择登陆后,再调用第二主模块,即可以实现先登录再进行后续操作了。虽然这种方法可能很笨拙,但是非常管用,虽然程序会加长但很简单。

9.总结心得及良好建议

通过本次课程设计深刻认识到C程序具有如下优点:

vc语言功能丰富、表达能力强、使用灵活方便、应用面广、目标效率高、可移植性好,既具有高级语言的许多优点,又具有低级语言的许多特点,因此特别适合于编写系统软件。vc语言之所以能存在和发展,并具有较强的生命力,总是有其于其他语言的特点vc语言的主要特点如下:

1. 语言简洁,紧凑,使用方便,灵活。 2. 运算符丰富。

3. 数据类型丰富,具有现代语言的各种数据结构。 4. 具有结构化的控制语句。

5. 语法限制不太严格,程序设计自由度大。

6. vc语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。

7. 生成目标代码质量高,程序执行效率高。

8. 用vc语言编写的程序可移植性好(与汇编语言相比)。

在本次课程设计中,通过与老师交流,学到了许多关于调试程序和检查错误的技巧。 (1)先进行人工检查。在写好一个程序后,不应匆匆上机,而应对纸面上的程序进行人工检查。这一步非常重要,可以发现由于疏漏而造成的多出错误。

(2)人工检查后,进行上机调试,根据提示信息具体找出程序中的错误,有时提示的出错行并不是真正出错的行,如果本行找不到,则到上一行寻找。如果系统错误过多,应从上到下逐一更正,可能仅有少数关键性错误。

(3)运行结果不对,大都为逻辑错误,仔细推敲或审查代码,进而排出错误。

10.致谢

感谢邵玉祥老师在C语言课程设计的过程中给予我的帮助。老师教授的知识及方法我将会牢记在心。老师是一个风趣幽默又有责任心的人,真心感谢老师的教诲。

因篇幅问题不能全部显示,请点此查看更多更全内容