信息技术学院课程设计(大作业)任务书姓名:院(系):信息技术学院专业:计算机科学与技术学号:任务起止日期:2016.6.20—2016.6.24课程设计题目:销售管理系统课程设计要求:设计一产品及销售员信息管理系统,使之能提供以下功能:销售信息包括:产品价格的添加、查询、删除等,销售员的添加、查询、删除等。1、系统以菜单方式工作2、产品及销售员信息录入功能(产品价格及销售员信息用文件保存),可不定时地增加信息,编号不允许重复;3、产品及销售员信息浏览功能4、产品及销售员信息查询功能查询方式:按编号查询5、产品及销售员信息的删除输入编号,查询该信息,如果存在,则删除该信息。6、产品及销售员信息的修改输入编号,查询该信息,如果存在,则修改该信息。工作计划及安排:6月20日:查阅资料,分析系统需求,设计系统流程图,分割模块。6月21日:设计模块,写结构算法。6月22日:编写代码,上机调试,改进程序,实现功能。6月23日:撰写报告。6月24日:整理改进报告,为答辩做准备。指导教师签字年月日-2-设计报告一、需求分析根据任务要求进行分析,本系统主要包括销售及销售员信息录入、销售及销售员信息查询、销售及销售员信息删除、销售及销售员信息修改功能。具体要说明如下:1.销售及销售员信息录入(1)货物及销售员编号不可以重复。(2)随时添加销售信息。2.销售及销售员信息浏览(1)只可以浏览不可以修改。(2)同时输出所有的有关信息。3.销售及销售员信息查询(1只输出所需信息,不可修改。4.销售及销售员信息删除(1)首先调用print输出所有信息,方便知道自己要删除的信息。(2)输入编号,信息整条删除。(3)再次调用print,方便查看删除效果。5.销售及销售员信息修改(1)首先调用print输出所有信息,方便知道自己要修改的编号。(2)输入编号,可修改除编号外的信息。(3)再次调用print,方便查看修改后效果。6、销售及销售员的信息的保存二.总体设计1.系统总模块设计根据系统总模块设计系统需求分析设计总模块如图1所示。销售信息管理产品及销售员信息录入产品及销售员信息查询产品及销售员信息删除产品及销售员信息修改产品及销售员信息浏览按编号查询图1信息管理系统功能结构2.各功能模块说明-3-根据上述的分析,将系统按功能分为以下模块主程序模块tel.cpp;调用各模块中的函数实现对通讯录的管理。头文件模块tel.h;定义相关结构,定义常量及全局变量,声明所有模块的函数。文件模块file.cpp;读文件及建立链表的函数,将链表写入磁盘文件。浏览模块print1.cpp;输出产品信息。Print2.cpp;输出销售员信息。查询模块search.cpp;查询商品信息。found.cpp;销售员管理查询录入模块insert.cpp;销售信息的录入。查询模块found.cpp;按销售员管理查询。search.cpp;查询商品信息删除模块delate.cpp;按编号删除销售员信息。del.cpp;删除产品信息。修改模块chang.cpp;按编号修改产品信息。mod.cpp;修改销售员姓名排序模块sortbypid1.cpp;对产品进行排序。sortbypid2.cpp;对销售员排序三、详细设计1.系统流程图描述系统总流程如图2所示销售员信息录入销售员信息浏览销售员信息查询销售员信息删除从数据文件读入销售员信息组成链表显示主菜单界面开始结束销售员信息修改退出·保存数据到文件2.模块设计(1)主要结构设计-4-系统主要功能销售员信息,销售员信息的结构体定义如下:3.控制结构设计(1)主程序模块first.cppfirst模块有主函数main。主函数main流程图如图2所示。显示菜单输入菜单项选择=choice读取文件信息创建链表head指向链表头结点开始012345退出录入销售信息修改销售信息删除销售信息浏览销售信息结束按编号查询图2主函数处理流程四、代码实现#includestdlib.h#includestdio.h#includestring.h#defineLEN1sizeof(PROD1)#defineLEN2sizeof(PROD2)voidsaveprod1();voiddel();voidsearch();voidprint1();voidsortbypid1();voidchange();intadd_sale();-5-voidsaveprod2();intadd_saleman();voidsortbypid2();voidprint2();voidmod();voiddelate();typedefstructsale{intpid;//产品编号charname[20];//产品名称floatprice;//产品价格}PROD1;typedefstructsale2{intsid;//销售员编号charpname[20];//销售员名字}PROD2;PROD1sale[5];PROD2sale2[5];intpn=0;intsn=0;inti,j;intadd_sale()//添加商品信息{intpid,w,z;floatprice;charname[20];FILE*fp;if((fp=fopen(f:\\price.dat,rb))==NULL){printf(cannotopenfile!\n);exit(0);}for(w=0;w3;w++){if(fread(&sale[w],LEN1,1,fp)!=1){printf(error!);break;}}for(pn=0;sale[pn].pid!=0;pn++);-6-z=3-pn;printf(已有%d个商品信息,请再输入%d组数据\n,pn,z);while(pn3){printf(请输入产品编号:);scanf(%d,&pid);sale[pn].pid=pid;if(sale[pn].pid==sale[pn-1].pid||sale[pn].pid==sale[pn-2].pid){printf(已有该编号!\n);continue;}printf(请输入产品名称和价格:);scanf(%s%f,name,&price);sale[pn].price=price;strcpy(sale[pn].name,name);pn++;}sortbypid1();returnpn;}voidsaveprod1()//把信息保存在磁盘上{FILE*fp;inti;if((fp=fopen(f:\\price.dat,wb))==NULL)//从磁盘打开文件{printf(Filecan'topen!\n);exit(0);}for(i=0;i3;i++)if(fwrite(&sale[i],LEN1,1,fp)!=1)printf(filewriteerror\n);fclose(fp);}voidsearch()//查询商品信息{FILE*fp;if((fp=fopen(f:\\price.dat,rb))==NULL){printf(cannotopenfile!\n);exit(0);}-7-for(intw=0;w3;w++){fread(&sale[w],LEN1,1,fp);}intk,l;printf(请输入要查询的编号:\n);scanf(%d,&k);for(l=0;l3;l++){if(sale[l].pid==k)break;}printf(\t\t\t编号名称价格\t\n);printf(\t\t\t%d%s%.f\n,sale[l].pid,sale[l].name,sale[l].price);if(l=3||l0){printf(**************\n);printf(*没有这个编号*\n);printf(**************\n);}fclose(fp);//关闭文件}voidchange()//修改商品信息{FILE*fp;floatp;if((fp=fopen(f:\\price.dat,rb))==NULL){printf(cannotopenfile!\n);exit(0);}for(intw=0;w3;w++){fread(&sale[w],LEN1,1,fp);}printf(请输入要修改的编号:\n);scanf(%d,&j);for(i=0;i3;i++)if(sale[i].pid==j)break;if(j!=sale[i].pid){printf(没有这个编号\n);}else-8-{printf(编号商品姓名商品价格\n);printf(%d%s%.2f\n,sale[i].pid,sale[i].name,sale[i].price);printf(请输入你要修改的价格:\n);scanf(%f,&p);sale[i].price=p;printf(修改成功\n);}saveprod1();fclose(fp);}voiddel()//删除产品{FILE*fp;if((fp=fopen(f:\\price.dat,rb))==NULL){printf(cannotopenfile!\n);exit(0);}for(i=0;i3;i++){fread(&sale[i],LEN1,1,fp);}intt,num,k=0,h;printf(请输入你要删除产品的编号:\n);scanf(%d,&num);for(h=0;sale[h].pid0;h++);for(k=0;k3;k++)if(num==sale[k].pid)break;if(num!=sale[k].pid||num=0){printf(没有这个编号\n);}else{printf(编号商品姓名商品价格\n);printf(%d%s%.2f\n,sale[k].pid,sale[k].name,sale[k].price);for(t=k;th;t++)sale[t]=sale[t+1];h--;printf(删除成功\n);}saveprod1();-9-fclose(fp);}voidprint1()//总览商品信息{FILE*fp;if((fp=fopen(f:\\price.dat,rb))==NULL){printf(cannotopenfile!\n);exit(0);}printf(\t\t\t编号\t商品姓名\t商品价格\n);for(inti=0;i3;i++){printf(\t\t\t%d\t%s\t%.2f\n,sale[i].pid,sale[i].name,sale[i].price);}fclose(fp);}voidsortbypid1()//对产品进行排序{for(i=1;ipn;i++)for(j=0;jpn-i;j++)if(sale[j].pidsale[j+1].pid){PROD1temp;temp=sale[j];sale[j]=sale[j+1];sale[j+1]=temp;}}intadd_saleman()//添加销售员{intsid;charname[20];while(pn3){printf(Inputsid:);scanf(%d,&sid);sale2[pn].sid=sid;if(sale2[pn].sid==sale2[pn-1].sid||sale2[pn].sid==sale2[pn-2].sid){printf(已有该编号\n);continue;}-10-printf(Inputthesaler'sname:);scanf(%s,name);strcpy(sale2[pn].pname,name);pn++;}sortbypid2();printf(DataFinish!\n);returnpn;}voidsaveprod2()//保存到磁盘{FILE*fp;inti;if((fp=fopen(f:\\salemen.