C语言版数据结构实验报告_第1页
C语言版数据结构实验报告_第2页
C语言版数据结构实验报告_第3页
C语言版数据结构实验报告_第4页
C语言版数据结构实验报告_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

一、程序设计的基本思想,原理和算法描述:结点之间的关系可以是任意的,图中任意两个数据元素之间都可能四、调试和运行程序过程中产生的问题及采取的措施:现遗漏出错,图的遍历是重点但因为知识的残缺不能完整的编译出经过这次这么复杂的程序实验,我终于发现了调用函数的巨大优越验的逻辑性给了我们很大启发通过本次实验让我对图有了更深刻的一、程序设计的基本思想,原理和算法描述:四、调试和运行程序过程中产生的问题及采取的措施:经过这次这么复杂的程序实验,我终于发现了调用函数的巨大优越一、程序设计的基本思想,原理和算法描述个数据元素的任意序列,比较多种排序的优劣主要是看它排序的效(1)直接插入排序:是一种最简单的排序,是将一个记录插入到已冒泡排序;依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。用二重循环实现,外循环变量设为i,内循环变量设为j。外的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i,j的值依次为1,2,...10-i。四、调试和运行程序过程中产生的问题及采取的措施:用户与商品信息要采用文件存储,因而要提供文件的输入输出操作;实现用户的添加、修改、删除;商品信息的添加、修改、删除、查找等功能;实现商品浏览功能的实现,需要实现显示操作;另外还要提供键盘式选择菜单以实现功能选择。服装销售系统管理员模块店长模块销售员模块商品模块用户添加商品添加用户删除商品删除用户修改商品修改商品查找商品浏览商品出售//销售编号,主键/**对系统进行初始化,建立用户记录和商品记录**/FILE*fp;SystemUseradminUser,bossUser,sellUser;//管理员,店长,销售员三个角色信息Productsproducts[2];//初始化两件服装商品信息SellInfoRecordsellInfo[2];////初始化管理员用户名、密码与类型strcpy(adminUser.userName,"admin");strcpy(adminUser.password,"admin");adminUser.userType=ADMIN_USER_TYPE;adminUser.next=NULL;fprintf(fp,"%s\t%s",adminUser.userName,AddUser(&adminUser);AddUser(&bossUser);AddUser(&sellUser);strcpy(products[0].productType,"m001");products[0].productPrice=23.5;products[0].next=NULL;products[1].productPriAddProduct(&products[0AddProduct(&products[1AddSellInfo(&sellInfo[0AddSellInfo(&sellInfo[1voidInputAndAddProduct(){Productsproduct;//输入商品名称、型号、制作商、价格、数量、附加信息,并把从键盘输入的值赋值给结构体变量的商品名称型号、制作商、价格、数量、附加信息scanf("%s",ductName);printf("商品型号:");scanf("%s",ductType);scanf("%s",ductCompany);scanf("%f",&ductPrice);scanf("%d",&ductCount);scanf("%s",product.memo);product.next=NULL;//若成功信息添加到结构体变量product里则提示添加成功if(FUNCTION_SUCCESS==AddProduct(&product))voidModifyProduct(){Products*tmpProduct;voidDeleteProduct(){Products*tmpProductA,*tmpProductB;tmpProductA=tmpProductB=pProductHead;//tmpPif(NULL==tmpProductB)return;while(NULL!=tmpProductB){if(tmpProductB->productId==productId){if(tmpProductB==pProductHead&&tmpProductB->next==NULL){//如果系统只有一条商pProductHead=tmpProduprintf("对不起,不存在该商品编号的voidProductFind(){Products*tmpProduct;charproductName[20];printf("请选择查询方式:1--按商品编号查询2--按商品名称查询//若输入查询的商品名称与文件中的一致,则输出商品信息printf("商品名称:%s\n",tmpProduct->prodprintf("商品型号:%s\n",tmpProduct->prodprintf("商品厂家:%s\n",tmpProduct->productprintf("商品价格:%f\n",tmpProduct->produprintf("商品数量:%d\n",tmpProduct->produprintf("商品附加信息:%s\n",tmpProducprintf("对不起,不存在该商品编号的若登陆名或密码错误,则提示用户不存在若查询的商品编号不存在,则提示信息“对不起,不存在该商品编号的商品”若查询的商品名称不存在,则提示信息“对不起,不存在该商品编号的商品”销售员商品浏览、查询、及报表查看功能与管理员功能类似#include<stdio.h>//标准输入输出函数#include<windows.h>//Windows头文件#include<time.h>//日期和时间头文件#defineBOSS_USER_TYPE2#defineSELL_USER_TYPE3#defineFUNCTION_SUCCESS0//如charpassword[20];charproductCompany[20];structProducts*next;charuserName[20];structSellInfoRecord*next;staticcharcurrentUser[20]floatgetPriceById(intvoidReduceProductCount(int,int);//通过商品编号查询//通过商品编号查询//通过商品编号查询//通过商品编号减少/**对系统进行初始化,建立用户记录和商品记录**/FILE*fp;SystemUseradminUser,bossUser,sellUser;//管理员,店Productsproducts[2];//初始化两件服装商品信息SellInfoRecordsellInfo[2];//初始strcpy(adminUser.userName,"admin");strcpy(adminUser.password,"admin");adminUser.userType=ADMIN_USER_TYPE;adminUser.next=NULL;fprintf(fp,"%s\t%s",adminUser.userName,strcpy(bossUser.userName,"boss");strcpy(bossUser.password,"boss");bossUser.userType=BOSS_USER_TYPE;bossUser.next=NULL;fprintf(fp,"%s\t%s",bossUser.userNamstrcpy(sellUser.userName,"sell");strcpy(sellUser.password,"sell");sellUser.userType=SELL_USER_TYPE;fprintf(fp,"%s\t%s",sellUser.userNamproducts[0].productPri//products[1].productIdproducts[1].productPriAddProduct(&products[0AddProduct(&products[1AddSellInfo(&sellInfo[0AddSellInfo(&sellInfo[1])intAddUser(SystemUser*pUser){SystemUser*pSystemUser,*tempSystemUser;tempSystemUser=pSystemUserHead;returnFUNCTION_FAILED;}tempSystemUser=tempSystemUser->next;}returnFUNCTION_FAILED;}strcpy(pSystemUser->userName,pUsepSystemUser->userType=pUser-pSystemUser->next=pUpSystemUserHead=pS}intAddProduct(Products*pPrProducts*tempProduct,*pProduct;tempProduct=pProductHead;newProductId=tempProduct->productId+1;tempProduct=tempProduct->next;}returnFUNCTION_FAILED;}pProduct->productId=newProductId;//拷贝商品信息strcpy(pProduct->productName,pPro->productName);strcpy(pProduct->productType,pPro->productType);strcpy(pProduct->productCompany,pPro->productCompany);pProduct->productPrice=pPro->productPrice;pProduct->productCount=pPro->productCount;strcpy(pProduct->memo,pPro->memo);pProduct->next=pPro->next;tempProduct=pProductHead;//将商品信息加入到商pProductHead=pProduct;tempProduct=tempProduct->next;tempProduct->next=pProduct;}returnFUNCTION_SUCCESS;intAddSellInfo(SellInfoRecord*pSellInfo){SellInfoRecord*tmpSellInfo,*pSellInfoRecord;tmpSellInfo=pSellInfoHead;}printf("对不起,添加销售记录信息时,堆内存}pSellInfoRecord->saleId=newSellInfoId;pSellInfoRecord->day=pSellInfo->dastrcpy(pSellInfoRecord->mepSellInfoRecord->month=pSellInfo->month;pSellInfoRecord->next=pSellInfo->next;pSellInfoRecord->productId=pSellInfo->productId;pSellInfoRecord->sellCount=pSellInfo->sellCount;strcpy(pSellInfoRecord->userName,pSepSellInfoRecord->year=pSellInfo->year;tmpSellInfo=pSellInfoHead;//pSellInfoHead=pSellInfoRecotmpSellInfo->next=p}/*系统登陆函数*/voidSystemLogin(){charuserName[20],password[20];SystemUser*tmpUser;tmpUser=pSystemUserHead;if(0==strcmp(tmpUser->userName,userName)){if(0==strcmp(tmpUser->password,password)){strcpy(currentUser,tmpUser->userName);currentUserType=tmpUser->userType;switch(currentUserType){caseADMIN_USER_TYPE:AdminOperationMenu();caseBOSS_USER_TYPE:BossOperationMenu();caseSELL_USER_TYPE:SellOperationMenu();}}//遍printf("对不起,该用户不存在\n");//遍历了所有用户都没有找到用户SystemLogin();voidWelcomeMenu(){********************\n");printf("printf("printf("printf("printf("printf("printf("printf("printf("printf("(4)销售报表显示:日销售报表,月销售报表,销售员销售报(3)销售报表显示:日销售报表,月销售报表,销售员销售报printf("销售员功能:\n");**************************\n");voidAdminOperationMenu(){while(1){printf("亲爱的管理员%s同志,欢迎使用本系统,你拥有下面所有功能:\n",currentUser);printf("(1身密码修改\n");printf("(3)商品信息管理:添加,修改,查询printf("(4)销售报表显示:日报表,月报表,商品销售量报表,销售员printf("请输入上面功能对应的序scanf("%d",&select);ChangePassword();UserManage();ProductsManage();ReportPrint();UserExit();break;ExitSystem();break;break;}voidBossOperationMenu(){while(1){printf("亲爱的店长%s同志,欢迎使用本系统,你拥有下面所有功能:\n",currentUser);printf("printf("printf("printf("请输入上面功能对应的序scanf("%d",&select);ChangePassword();ProductsManage();}voidSellOperationMenu(){while(1){printf("亲爱的销售员%s同志,欢迎使用本系统,你拥有下面所有功能:\n",currentUser);scanf("%d",&select);switch(select){case1:ProductsView();continue;case2:ProductFind();continue;case3:ProductsSell();continue;case4:ReportPrint();continue;case5:UserExit();break;case6:ExitSystem();break;default:break;}if(select==5)break;}voidChangePassword(){charnewPassword1[20],newPassword2[20];SystemUser*tmpUser;printf("*********************************************************scanf("%s",newPassworscanf("%s",newPassworprintf("对不起,你两次输入的密码不一}tmpUser=pSystemUserHead;if(0==strcmp(tmpUser->userName,currentUser)){strcpy(tmpUser->password,newPassword1);}tmpUser=tmpUser->next;//用户信息管理功能voidUserManage(){while(1){printf("亲爱的管理员%s同志,你目前进入的是用户信息管理功能:\n",currentUser);printf("用()信息查n");printf("用()信息添n");printf("用()信息修n");printf("用()信息删n");printf("返(5回)上级菜n");scanf("%d",&select);switch(select){case1:UserInfoView();continue;case2:UserInfoAdd();continue;case3:UserInfoModify();continue;case4:UserInfoDelete();continue;voidProductsView(){Products*tmpProduct;tmpProduct=pProductHead;printf("*********************************************************printf("商品编号:%d\n",tmpProduct->productId);printf("商品名称:%s\n",tmpProduct->productName);printf("商品型号:%s\n",tmpProduct->productType);printf("商品厂家:%s\n",tmpProduct->productCompany);printf("商品价格:%f\n",tmpProduct->productPrice);printf("商品数量:%d\n",tmpProduct->productCount);printf("商品附加信息:%s\n",tmpProduct->memo);tmpProduct=tmpProduct->next;}voidProductsSell(){SellInfoRecordsellInfo;printf("*********************************************************printf("请依次输入以下销售信息scanf("%d",&sellIductId);scanf("%d",&sellInfo.sellCount);if(sellInfo.sellCount>getCountByIdprintf("对不起,你输入的销售数量大于system("pause");}strcpy(sellInfo.userName,currentUser);ReduceProductCount(sellIductId,sellInfo.voidProductsManage(){while(1){printf("亲爱的%s朋友,你好,你现在进入的是商品管理功能,你可以选择以下功能:\n",currentUser);printf("printf("printf("printf("printf("printf("printf("scanf("%d",&select);switch(select){ProductsView();continue;ProductFind();continue;InputAndAddProduct();continue;ModifyProduct();continue;DeleteProduct();continue;switch(currentUserType){caseADMIN_USER_TYPE:AdminOperationMenu();break;caseBOSS_USER_TYPE:BossOperationMenu();}voidInputAndAddProduct(){Productsproduct;printf("*********************************************************scanf("%s",ductName);scanf("%s",ductType);scanf("%s",ductCompany);scanf("%f",&ductPrice);scanf("%d",&ductCount);scanf("%s",product.memo);product.next=NULL;if(FUNCTION_SUCCESS==AddProduct(&product))voidModifyProduct(){Products*tmpProduct;printf("****************************************************\n");scanf("%d",&productId);tmpProduct=pProductHead;if(productId==tmpProduct->productId){printf("商品名称:%s\n",tmpProduct->productName);printf("商品型号:%s\n",tmpProduct->prodprintf("商品厂家:%s\n",tmpProduct->productprintf("商品价格:%f\n",tmpProduct->produprintf("商品数量:%d\n",tmpProduct->produprintf("商品附加信息:%s\n",tmpProducprintf("下面请对照修改该商品的相应}voidProductFind(){Products*tmpProduct;charproductName[20];printf("****************************************************\n");printf("请选择查询方式:1--按商品编号查询2--按商品tmpProduct=pProductHead;scanf("%d",&productId);if(productId==tmpProduct->productId){printf("商品名称:%s\n",tmpProduct->productName);printf("商品型号:%s\n",tmpProduct->productType);printf("商品厂家:%s\n",tmpProduct->productCompany);printf("商品价格:%f\n",tmpProduct->productPrice);printf("商品数量:%d\n",tmpProduct->productCount);printf("商品附加信息:%s\n",tmpProduct->memo);}tmpProduct=tmpProduct->next;}printf("对不起,不存在该商品编号的printf("商品名称:%s\n",tmpProduct->productName);printf("商品型号:%s\n",tmpProduct->productType);printf("商品厂家:%s\n",tmpProduct->productCompany);printf("商品价格:%f\n",tmpProduct->productPrice);printf("商品数量:%d\n",tmpProduct->productCount);printf("商品附加信息:%s\n",tmpProduct->memo);}tmpProduct=tmpProduct->next;}voidDeleteProduct(){Products*tmpProductA,*tmpProductB;printf("*********************************************************tmpProductA=tmpProductB=pProductHead;//tmpProducif(NULL==tmpProductB)return;while(NULL!=tmpProductB){if(tmpProductB->productId==productId){if(tmpProductB==pProductHead&&tmpProductB->next==NULL){//如果系统只有一条商品信息free(pProductHead);pProductHead=NULL;}tmpProductA->next=tmpProductB->next;if(pProductHead==tmpProductB)pProductHead=tmpProductB->next;free(tmpProductB);}printf("对不起,不存在该商品编号的voidReportPrint(){while(1){printf("亲爱的朋友%s,你好,你现在进入的是销售报表功能界面:\n",currentUser);scanf("%d",&select);switch(select){case1:ShowAllSellReport();continue;case2:ShowDaySellReport();continue;case3:ShowMonthSellReport();continue;case4:ShowEmployeeSellReport();continue;case5:switch(currentUserType){caseADMIN_USER_TYPE:AdminOperationMenu();break;caseBOSS_USER_TYPE:BossOperationMenu();break;default:break;}break;case6:ExitSystem();break;default:break;while(1){printf("亲爱的销售员%s,你好,你现在进入的是销售报表功能界ShowDaySellReport();ShowMonthSellReport();SellOperationMenu();ExitSystem();//查看所有用户信息voidUserInfoView(){SystemUser*tmpUser;tmpUser=pSystemUserHead;printf("*********************************************************{printf("%s\t%s\t%d\n",tmpUser->userName,tmpUser->password,tmpUser->userType);tmpUser=tmpUser->next;}voidUserInfoAdd(){SystemUsertmpUser;printf("*********************************************************printf("亲爱的管理员%s,请依次输入用户信息:\n",currentUser);scanf("%s",tmpUser.userName);voidUserInfoModify(){charuserName[20];SystemUser*pUser;printf("*********************************************************printf("亲爱的管理员%s,请输入要修改的用户帐号:",currentUser);pUser=pSystemUserHead;if(0==strcmp(pUser->userName,userName)){scanf("%s",pUser->userName);scanf("%s",pUser->password);scanf("%d",&pUser->userType);}pUser=pUser->next;}printf("对不起,没有你查找的用户信息!\n"voidUserInfoDelete(){SystemUser*pUserA,*pUserB;printf("*********************************************************printf("亲爱的管理员%s朋友,你好,你现在进入的用户信息删除功能:\n",currentUser);scanf("%s",userName);pUserpUserB=pSystemUserHead;//pUserB指向要删除的记录,pUser向前一条记录if(NULL==pUserB)return;while(NULL!=pUserB){if(0==strcmp(userName,pUserB->userName)){if(pUs=e=rpBSystemUserHe&a&dpUserB->nex=NULL){//pSystemUserHead=pUsprintf("对不起,不存在该帐号的用户//日销售报表显示voidShowDaySellReport(){floattotalPrice=0.0,onePrice;charproductName[20];SellInfoRecord*tmpSellInfo;printf("*********************************************************printf("你好%s:当前功能将进行日销售报表显示\n",currentUser);scanf("%d",&month);tmpSellInfo=pSellInfoHead;if(NULL==tmpSellInfo)retif(year==tmpSellInfo->year&&month==tmpSellInfo->month&&day==tmpSellInfo->day&&strcmp(tmpSellInfo->userName,currentUser)):1)){rsCount++;}//月销售报表显示voidShowMonthSellReport(){floattotalPrice=0.0,onePrice;charproductName[20];SellInfoRecord*tmpSellInfo;printf("***************************************************\n");printf("你好%s:当前功能将进行月销售报表显示\n",currentUser);scanf("%d",&month);tmpSellInfo=pSellInfoHead;if(NULL==tmpSellInfo)retif(year==tmpSellInfo->year&&month==tmpSellInfo->month&&strcmp(tmpSellInfo->userName,currentUser)):1)){rsCount++;//销售员销售报表显示voidShowEmployeeSellReport(){charuserName[20];floattotalPrice=0.0,onePrice;charproductName[20];SellInfoRecord*tmpSellInfo;printf("*********************************************************printf("你好%s:当前功能将进行销售员销售报表显示\n",currentUser);voidShowAllSellReport(){floattotalPrice=0.0,onePrice;charproductName[20];SellInfoRecord*tmpSellInfo;printf("*********************************************************printf("你好%s:当前功能将进行所有销售报表显示\n",currentUser);tmpSellInfo=pSellInfoHead;rsCount++;printf("销售编号:%d\n",tmpSellInfo->saleId);printf("产品编号:%d\n",tmpSellInfo->productId);getProductNameById(tmpSellInfo->productId,productName);printf("产品名称:%s\n",productName);onePrice=getPriceById(tmpSellInfo->productId);printf("商品单价:%f\n",onePrice);printf("销售数量:%d\n",tmpSellInfo->sellCount);printf("销售员:%s\n",tmpSellInfo->userName);\n",tmpSellInfo->year,tmpSellInfo->month,tmpSellInfo->day);totalPrice+=onePrice*tmpSellInfo->sellCount;tmpSellInfo=tmpSellInfo->next;}\n",rsCount,totalPrice);returntmpProduct->pr}returntmpProduct->pr}voidReduceProductCount(intproductItmpProduct->productCount=tmpProduct->productCount-Count;}tmp

温馨提示

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

评论

0/150

提交评论