您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 超市商品信息系统设计报告及程序C语言
苏州科技学院二○一三~二○一四学年第一学期电子与信息工程系课程设计报告书课程名称:程序设计基础实践班级:学号:姓名:指导教师:二○一三年十二月11.题目《超市商品信息管理系统》的设计与实现2.功能(1)每一条记录包括一个商品的ID、名称、价格、保质日期。(2)信息录入功能:可以完成信息记录的追加与插入。(3)信息排序功能:按商品ID、商品价格进行排序。(4)信息查询功能:完成按商品ID、商品名称查找商品记录,并显示。(5)读取功能:将保存在文件中的商品记录读取出来。(6)修改信息功能:按商品的ID进行读取未修改前的数据,输入新信息,保存。(7)删除功能:按商品ID删除商品信息记录,并保存。(8)退出:退出主菜单,退出程序。3.系统流程图24.设计内容整个系统除了主函数外,另外还有13个函数,实现八大功能:录入功能(追加、插入)、显示功能、查询功能、排序功能、删除功能、保存功能、读取功能。各个函数的详细设计说明分别如下:4.1主函数main()利用无限次循环while(select!='0')和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。4.2菜单选择函数voidDisMainMenu();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!4.3信息录入函数intInformationInput(GOODSgoo[],intcn)这是一个含参函数,用来执行商品信息的追加、插入。其中GOODSgoo[]是结构体数组,cn是本次录入商品记录的总数。信息录入函数的流程图如下:3信息录入函数的程序如下:intInformationInput(GOODSgoo[],intcn){intnumber,i,m,n,a1,j,a2=0;chara3;printf(\n请输入本次录入的商品品种的总数:);scanf(%d,&number);if(numberMAX_NUM-cn){printf(您输入的人数太多,大于%d人!\n,MAX_NUM-cn);system(pause);return(0);}printf(\n****1.信息的追加****\t****2.信息的插入****\n);scanf(%d,&m);if(m==1){for(i=cn;inumber+cn;i++){printf(\t商品ID:\t);scanf(%d,&goo[i].ID);printf(\t商品名称:\t);4fflush(stdin);scanf(%s,goo[i].name);for(j=0;ji;j++){if(goo[j].ID==goo[i].ID||strcmp(goo[j].name,goo[i].name)==0){printf(\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续Y/N?);fflush(stdin);scanf(%c,&a3);if(a3=='Y'||a3=='y')break;elsereturn(0);}elsecontinue;}printf(\t商品单价:\t);scanf(%f,&goo[i].price);printf(\t商品保质日期:\t);scanf(%d%d%d,&goo[i].guarant.year,&goo[i].guarant.month,&goo[i].guarant.day);printf(\n);}printf(\n本次输入的信息是:\n);DisplayInformation2(goo,cn,cn+number);printf(\n);return(number+cn);}elseif(m==2){printf(该数据插入在商品ID?之前:);scanf(%d,&n);for(i=0;icn;i++){if(goo[i].ID==n){a1=i;break;}elsecontinue;}5if(i=cn-1){for(i=cn-1;i=a1;i--){goo[i+number].ID=goo[i].ID;strcpy(goo[i+number].name,goo[i].name);goo[i+number].price=goo[i].price;goo[i+number].guarant.year=goo[i].guarant.year;goo[i+number].guarant.month=goo[i].guarant.month;goo[i+number].guarant.day=goo[i].guarant.day;}for(i=a1;ia1+number;i++){printf(\t商品ID:\t);scanf(%d,&goo[i].ID);printf(\t商品名称:\t);fflush(stdin);scanf(%s,goo[i].name);printf(\t商品单价:\t);scanf(%f,&goo[i].price);printf(\t商品保质日期:\t);scanf(%d%d%d,&goo[i].guarant.year,&goo[i].guarant.month,&goo[i].guarant.day);printf(\n);}for(i=a1;ia1+number;i++){for(j=0;ja1;j++){if(goo[j].ID==goo[i].ID||strcmp(goo[j].name,goo[i].name)==0){printf(\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续Y/N?);fflush(stdin);scanf(%c,&a3);if(a3=='Y'||a3=='y'){break;break;}elsereturn(0);}else6continue;}for(j=a1+number;jcn+number;j++){if(goo[j].ID==goo[i].ID||strcmp(goo[j].name,goo[i].name)==0){printf(\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续Y/N?);fflush(stdin);scanf(%c,&a3);if(a3=='Y'||a3=='y'){break;break;}elsereturn(0);}elsecontinue;}}printf(\n本次输入的信息是:\n);DisplayInformation2(goo,a1,a1+number);printf(\n);return(number+cn);}else{printf(\n输入插入位置有误,请查询数据文件后重新插入!);system(pause);return(0);}}else{printf(输入错误!);return(0);}}4.4信息排序函数voidSort(GOODSgoo[],intmax);这是一个不返回值的有参函数,形参为max,负责对全部商品信息分别按商品ID、价格运用“冒泡法”进行升序排序。7voidSort(GOODSgoo[],intmax){inti,j,select;GOODSp;printf(\n***********************请选择排序方式**********************\n);printf(\n\t1--按商品ID排序方式\t2--按商品价格排序方式\n);printf(\n***********************************************************\n);printf(请选择(1--2):);select=getche();getch();switch(select){case'1':printf(您选择的是按商品ID排序方式!\n);for(i=0;imax-1;i++)for(j=0;jmax-1-i;j++)if(goo[j].IDgoo[j+1].ID){p=goo[j];goo[j]=goo[j+1];goo[j+1]=p;}break;case'2':printf(您选择的是按商品价格排序方式!\n);for(i=0;imax-1;i++)for(j=0;jmax-1-i;j++)if(goo[j].pricegoo[j+1].price){p=goo[j];goo[j]=goo[j+1];goo[j+1]=p;}break;default:printf(选择错误!\n);}}84.5显示记录函数4.5.1显示记录函数voidDisplayInformation(GOODSgoo[],intmax);这是一个不返回值的有参函数,形参为max,负责对全部商品信息记录的显示。4.5.2显示记录函数voidDisplayInformation2(GOODSgoo[],intmin,intmax);这是一个不返回值的有参函数,形参为min,max,负责对刚输入的商品信息记录的显示。4.6查找记录函数4.6.1按商品ID查找intFindID(GOODSgoo[],intfindID,intmax);按照商品的ID在已有所有记录中进行查询。4.6.2按商品名称查intFindName(GOODSgoo[],charfindname[],intmax);按照商品的名称在已有所有记录中进行查询。4.7保存数据函数voidSave(GOODSgoo[],intmax)这是一个不返回值的有参函数,形参为goo[],max,负责对输入的商品信息记录进行保存,并在工程文件夹下生成info.txt的数据文件。voidSave(GOODSgoo[],intmax){inti;FILE*fp;if((fp=fopen(info.txt,w))!=NULL){for(i=0;imax;i++)fwrite(&goo[i],sizeof(GOODS),1,fp);fclose(fp);}elseprintf(cannotopenfile!\n);}4.8读取数据文件函数intRead(GOODSgoo[])这是一个不返回值的有参函数,形参为goo[],max,负责从文件info.txt中读取商品信息9到结构体数组goo中,函数返回读取的记录数。4.9信息修改函数intEditInformation(GOODSgoo[],intmax)这是一个有参函数,形参GOODSgoo[]为结构体数组,intmax是所有商品结构体总数。先输入要修改的商品的ID,显示查找到的原商品信息,之后输入新的商品信息,等确认后便可按“Y”进行删除,保存,最后返回修改商品的序号。4.10删除记录函数voidDelete(GOODSgoo[],intn,intmax);这是一个有参函数,形参GOODSgoo[]为结构体数组,intn是本次要删除的商品ID,intmax是所有的结构体总数。显示删除子菜单,提示删除信息,根据用户的选择进入不同的删除途径,之后显示未删除前的数据和删除后的数据,等确认后按“Y”进行删除,保存。完成商品信息的删除。流程图如下:105.调试分析(1)由于程序里面有大量中文,中文分号“;”出了不少报错问题。(2)主程序采用select=getche();getch();进行输入选择,很多执行的语句才执行完就再次进入主程序,所以再一些可执行语句后加上system(“pause”);一遍看清指令执行过程,当然在程序一开始的时候加入了头文件#includewindows.h.(3)再输入结构体goo[]时,用scanf(%d,&goo[i].price);输入价格,Build之后并未报错,但是商品价格显示一直是0,最后修改成scanf(%f,&goo[i].price);并顺利显示价格。(4)在一开始的信息录入函数中,但出现输入的商品ID、名称出现重复时,函数本身并不能给出提示,最后采用
本文标题:超市商品信息系统设计报告及程序C语言
链接地址:https://www.777doc.com/doc-1409532 .html