数据结构实现报告答案.doc_第1页
数据结构实现报告答案.doc_第2页
数据结构实现报告答案.doc_第3页
数据结构实现报告答案.doc_第4页
数据结构实现报告答案.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构实习程序设计报告班 级: 电子信息类113班姓 名: 何鑫乐学 号: 201105070306指导老师: 莫路峰一、实习内容建立一个店铺销售管理系统要求如下:记录店铺橱窗位置数量,货物上架、下架时间及数量,货物位置,库存,进货价格等,并将其保存在文件in.dat中(橱窗按照时间收费)。实时记录货品库存,按照时间计算利润额,输出到out.dat中。二、功能描述该系统可以通过录入货物编号、单价、数量、生产日期、上架时间、下架时间等信息对货物进行管理。 具体操作功能如下:请选择操作:1.入库管理:手动输入货物信息2.修改信息:手动修改货物信息3.删除信息:手动删除下架货物信息4.销售管理:手动输入售出货物信息5.统计信息:统计营销额与总利润6.查询信息:根据商品名称、进价、库存查询商品信息7.信息浏览:浏览全部商品信息8.退出系统:完成操作后退出系统三、分析设计该程序为适应销售管理系统设置了入库管理、修改信息、删除信息、销售管理、统计信息、查询信息、信息浏览、退出系统等8个操作。基本囊括了销售管理的全部操作。四、核心代码1链表的存储struct productionchar number6;char name10;int price;int out_price;char add14;int in;int out;int count;typedef struct nodestruct production data;struct node *next;node,*link;/申请成功后,就可以给它赋值了2.主函数由一个包含switch的while语句构成void main() /*主函数*/link l;FILE *fp;int select;char lname10,fname10;node *p,*r;l=(node*)malloc(sizeof(node);if(!l)printf(n 内存申请失败!);return;l-next=NULL;r=l; printf(请输入店名n); scanf(%s,fname);fp=fopen(in.dat,wb+); fwrite(&fname,sizeof(char),1,fp);fclose(fp);welcome();while(1)scanf(%d,&select);switch(select)case 0:system(cls);welcome();break;case 1:system(cls); add(l); save(l); break;case 2:system(cls);change(l);break;case 3:system(cls);delate(l);break;case 4:system(cls); sell(l);break;case 5:system(cls);sell_out(l);save(l);break;case 6:system(cls);search(l);break;case 7:system(cls);out(l);printf( (按0键返回主菜单):);break;case 8:system(cls);printf(nnnnnnnt 感谢您使用本程序(按任意键结束) nnttttttnnnnn);exit(0);break;五、运行结果欢迎界面:功能界面:1.入库管理2.修改信息3.删除信息4.销售管理5.统计信息6.查询信息7.信息浏览8.退出系统6、 结束语这次的程序设计是我得到了很大的锻炼。原本什么都不懂的我,经过了两个星期钻研,对数据结构有了一定的初步认识。虽然还并不是非常深入的理解数据结构,但是,在自己的摸索中总还是有一定的进步的。在这次课程设计的训练中,我进一步学习和掌握了对程序的设计和编写,自己的设计思想也有了一定的改进。无论是从刚开始的选择程序、理解程序还是到后来的调试程序以及改进程序,我都一点、一点地在进步。7、 代码附录#include #include #include #include#define HEADER =商品信息=n#define HEADER1 n#define HEADER2 编号 商品名称 进价 售价 生产厂家 入库量销售量库存量n#define HEADER3 n#define HEADER4 n#define END =n#define FORMAT %-6s%-10s%6d%6d%-14s%6d%6d%6dn#define DATA p-data.number,,p-data.price,p-data.out_price,p-data.add,p-data.in,p-data.out,p-data.countint saveflag=0;struct productionchar number6;char name10;int price;int out_price;char add14;int in;int out;int count; /int t;typedef struct nodestruct production data;struct node *next;node,*link;struct TTime int h,m,s; long GetSec() return 3600L*h+60*m+s; void StrToTime(char _str) int i,j,len=strlen(_str); /*去空格*/ for(i=0;ilen;+i) if(_stri= ) for(j=i;jlen-1;+j) _strj=_strj+1; -len; i=-1; continue; /*读小时*/ j=0; for(i=0;ilen;+i) if(_stri=:) break; else j=j*10 + _stri-0; h = j; /*读分钟*/ j=0; for(+i;ilen;+i) if(_stri=:) break; else j=j*10 + _stri-0; m = j; /*读秒*/ j=0; for(+i;ilens) printf(输入的长度超过其规定值!请重新输入:n);while(strlen(n)lens);strcpy(t,n);int numberinput(char *notice) /*数据输入,notice为提示信息*/int t=0;doprintf(notice);scanf(%d,&t);if(t999999) printf(n输入错误!请重新输入:n);while(t999999);return t;void printfheader() /*表头输出*/printf(HEADER);printf(HEADER1);printf(HEADER2);printf(HEADER3);void printdata(node *pp) /*数据输出*/node *p;p=pp; printf(FORMAT,DATA);node* jilu(link l,char find,char xinxi) /*记录字符串函数*/node *r;if(strcmp(xinxi,number)=0)/*按编号查找*/r=l-next;while(r)if(strcmp(r-data.number,find)=0)/find函数return r;r=r-next;else if(strcmp(xinxi,name)=0)/*按商品名称查找*/r=l-next;while(r)if(strcmp(,find)=0)return r;r=r-next;return 0;node *jilu_1(link l,int find,char xinxi) /*记录数字函数*/node *r;if(strcmp(xinxi,price)=0)/*按单价查找*/r=l-next;while(r)if(r-data.price=find)return r;r=r-next;else if(strcmp(xinxi,count)=0)/*按库存量查找*/r=l-next;while(r)if(r-data.count=find)return r;r=r-next;return 0;void out(link l) /*输出函数*/node *p;p=l-next;if(!p)printf(nnnnnntt没有相关的记录);exit(0); printf(nn);printfheader();while(p)printdata(p);p=p-next;if(!p)printf(HEADER4);printf(END);getchar(); void change(link l) /*更改信息函数*/node *p;char find30,ch;if(!l-next)system(cls);printf(nnnnnn 没有相关的记录);exit(0);printf( 修改商品信息n);out(l);loop:stringinput(find,6, 请输入要修改的商品编号(按0键返回主菜单):n); p=jilu(l,find,number); if(strcmp(find,0)=0) system(cls); welcome(); return; else if(p) printf( 请输入新的商品信息:n); stringinput(p-data.number,6, 商品编号:n); stringinput(,10, 商品的名称:n); p-data.price=numberinput( 商品进价(0-999999):n); stringinput(p-data.add,14, 生产厂家:n); printf( 修改信息成功!n); out(l); saveflag=1; printf( 是否继续修改信息(y/n):); printf(n); scanf(%c,&ch); if(ch=y|ch=Y) goto loop; else if(ch=n|ch=N) system(cls); welcome(); return; else printf(n 没有找到相关信息!n); goto loop; getchar();void delate(link l) /*删除信息*/node *p,*r;char find30,ch;if(!l-next)system(cls);printf(nnnnnn 没有相关的记录n);exit(0);printf( 删除商品信息n);out(l);loop:stringinput(find,6, 输入要删除的商品编号(按0键返回主菜单):n); printf(n); p=jilu(l,find,number); if(strcmp(find,0)=0) system(cls); welcome(); return; else if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf( 删除信息成功!n); out(l); saveflag=1; printf( 是否继续删除信息(y/n):); printf(n); scanf(%c,&ch); if(ch=y|ch=Y) goto loop; else if(ch=n|ch=N) system(cls); welcome(); return; else printf(n 没有找到相关信息!n); getchar();void add(link l) /*增加信息的函数*/node *p,*r,*s;char ch,flag=0,num10;r=l;s=l-next;while(r-next!=NULL) /*使指针移至链表的末尾,添加记录*/r=r-next;while(1)while(1)stringinput(num,6,请输入商品编号(按0键返回主菜单):n);flag=0;if(strcmp(num,0)=0)system(cls);welcome();return;s=l-next;while(s)if(strcmp(s-data.number,num)=0)flag=1;break;s=s-next;if(flag=1)getchar();printf(输入的商品编号%s应经存在,是否重新输入?(y/n):,num);printf(n);scanf(%c,&ch);if(ch=y|ch=Y)continue;else if(ch=n|ch=N)system(cls);welcome();return;else break;p=(node*)malloc(sizeof(node);if(!p)printf(n 内存申请失败!);return;strcpy(p-data.number,num);stringinput(,10,商品的名称:n);p-data.price=numberinput(商品进价(0-999999):n);p-data.out_price=0; stringinput(p-data.add,14,生产厂家:n);p-data.in=numberinput(入库量:n);printf(-n);printf(n);p-data.out=0;p-data.count=p-data.in-p-data.out; p-next=NULL;r-next=p;r=p;saveflag=1;return;void search(link l)int select,in_search1;char in_search30,ch;node *p;if(!l-next)system(cls);printf(nnnnnn 没有相关的记录);exit(0);printf( =n);printf( = - =n);printf( =n);printf( 请根据需要作出相应的选择(按0键返回主菜单):);printf(n);scanf(%d,&select);if(select=0)system(cls);welcome();return;if(select=1)printf( n);stringinput(in_search,10, 请输入要查找的商品名称:);printf(n);p=jilu(l,in_search,name);if(p)printfheader();printdata(p);printf(HEADER4);elseprintf( 没有相关记录!n);getchar();else if(select=2)printf( n);in_search1=numberinput( 请输入要查找商品的进价:);printf(n);p=jilu_1(l,in_search1,price);if(p)printfheader();printdata(p);printf(HEADER4);elseprintf( 没有相关记录!n);getchar(); else if(select=3)printf( n);in_search1=numberinput( 请输入要查找商品的库存量:);printf(n);p=jilu_1(l,in_search1,count);if(p)printfheader();printdata(p);printf(HEADER4);elseprintf( 没有相关记录!n);getchar();printf( 是否继续查询(y/n):);printf(n);scanf(%c,&ch);if(ch=y|ch=Y)system(cls);search(l);return;elsesystem(cls);welcome();return;void sell(link l)node *p;char find30;static int t=0;int w;if(!l-next)system(cls);printf(nnnnnn 没有相关的记录);exit(0);printf(该商品是在第几号窗口ntt);scanf(%d,&w);printf( =请登记已售出的商品信息= n);loop:stringinput(find,6, 请登记售出商品的编号(按0键返回主菜单):n); printf(n); p=jilu(l,find,number); if(strcmp(find,0)=0) system(cls); welcome(); return; else if(p) p-data.out_price=numberinput( 请登记商品售出的价格(0-999999):n); printf(n); while(1) if(p-data.out_pricedata.price) printf( 不能做亏本生意啊,请重新登记:n); p-data.out_price=numberinput( 请登记商品售出的价格(0-999999):n); printf(n); else break; p-data.out=numberinput( 请登记商品售出的数量:n); printf(n);while(1) if(p-data.outp-data.count) printf( 对不起,您无足够的库存,请重新登记:n); printf(n); p-data.out=numberinput( 请登记商品售出的数量:n); printf(n); else break;t+;if(t=1) p-data.count=p-data.in-p-data.out; else p-data.count=p-data.count-p-data.out; printf( 登记信息成功!n); saveflag=1; goto loop; else printf(n 没有找到相关信息!n); goto loop; getchar();void save1(float b)FILE *fp;fp=fopen(out.dat,wb+);fwrite(&b,sizeof(float),1,fp);fclose(fp);void sell_out(link l)node *p;float a,b,sum;static int flag=1; static float a_sum=0,b_sum=0;char c105,d105;int ch,w,sec,q;float mon;p=l-next;if(!p)printf(nnnnnntt没有相关的记录n);exit(0);if(flag=1)printf(请输入橱窗数ntt);scanf(%d,&q);printf(橱窗每秒收费多少ntt); scanf(%f,&mon);printf(请输入开门时间ntt);getchar();gets(c);printf(请输入关门时间ntt); getchar(); gets(d);Ta.StrToTime(c); Tb.StrToTime(d);sec=Tb.GetSec()-Ta.GetSec(); sum=sec*mon*q;printf( n);printf( =n);printf( 编号 商品名称 售价 数目 销售额 利润n);while(p)a=(p-data.out)*(p-data.out_price);b=a-(p-data.out)*(p-data.price);printf(%6s %10s %6d¥%6d %15.f¥%15.f¥n,p-data.number,,p-data.out_price,p-data.out,a,b); a_sum+=a;b_sum+=b;p=p-next;save1(b);if(flag=1)b_sum=b_sum-sum;flag+;printf( =n);printf( 总销售额为:%15.f¥n,a_sum);printf( 总

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论