c语言程序设计实验报告new

上传人:沈*** 文档编号:71415451 上传时间:2022-04-07 格式:DOC 页数:51 大小:382KB
返回 下载 相关 举报
c语言程序设计实验报告new_第1页
第1页 / 共51页
c语言程序设计实验报告new_第2页
第2页 / 共51页
c语言程序设计实验报告new_第3页
第3页 / 共51页
点击查看更多>>
资源描述
西安郵電學院C语言课程设计报告题 目:超市管理系统院系名称:计算机学院专业名称:网络工程班 级:网络1001班学生姓名:李婷婷学号(8位):04102016指导教师:张 红 英设计起止时间:2011年6月13日2011年6月22日一. 设计目的1.掌握带头节点的链表的工作原理和处理方法。2.会使用malloc、free等函数对链表进行创建、增加、删除、查询、统计等操作。3.加深理解模块化的编程思想,将一个程序划分成不同的函数来编写,掌握函数之间有效的调用关系。4.会使用C语言对文件进行读取、修改等操作,掌握文件的读、写操作。5.了解商品管理中所需处理的信息以及县官的处理方法6.掌握简单的加密方法,同时对密码加密。二. 设计内容本程序主要分为六个模块:主模块、信息输出修改模块、新建信息模块、排序模块、统计模块、打印模块。1) 主模块:通过调用各分模块实现功能;2) 信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3) 新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中;4) 排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5) 打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;6) 统计模块:统计商品信息。 三概要设计 1功能模块图;管理员/用户户管理员用户信息的输入/输出信息查询信息修改信息统计信息排序添加信息删除信息输出信息信息查询信息统计商品编号查询商品名称查询生产单位查询按种类统计按商品价格按生产日期升序输出降序输出升序输出降序输出商品编号商品名称生产单位按种类统按商品价按生产日期2各个模块详细的功能描述。 1重新输入管理员信息 1.升序输出 2.输出管理员基本信息 2.降序输出3.查询管理员基本信息 1.按姓名查询 管理员信息 4.删除管理员信 2.按管理号 5.统计管理员信息 1.增加管理员 6.修改管理员信息 2.修改管理员 7.读取链表到文件超市管理系统 1.输入/输出商品信息 1.升序输出 2.商品排序 2.降序输出 3.添加商品信息 1.按编号查询商品信息 4.查询商品信息 2.按名称查查询 5.修改商品信息 3.按生产单位查询 6.删除商品信息 1.按种类统计 7.统计商品信息 2.按生产日期统计 8.读取文件信息 3.按价格统计四详细设计1功能函数的调用关系图管理员/用户登录主函数主界面输入商品信息输出商品信息商品信息排序添加商品信息查询商品信息修改商品信息删除商品信息统计商品信息打印信息报表读取文件信息输出商品信息查询商品信息统计商品信息管理员录入管理员信息输出管理员信息删除管理员信息修改管理员信息统计管理员信息读取文件信息返回主界面2各功能函数的数据流程图修改商品信息流程图开始请输入要修改商品名q-next!=NULLq=q-nextStrcmp(q-name)=0选择你要修改的项目输入修改后的信息leaf=0Leaf=0未找到修改的人结束查询商品信息流程图开 始请输入要查找的姓名:nameq=q-nextq-next!=NULLstrcmp(q-name,name)=0输出人员信息leafname,name)0p-next=NULL结束交换结点内容指针指向下一结点输入商品信息流程图开 始给头节点head开辟空间i-0inext=NULLreturn head结 束输入n给p1开辟空间向p1中输入结构体内容p2-next=p1p2=p1输出商品信息流程图h-next!=NULL结束开始输出统计个数n指针指向下一结点P=p-next打开文件流程图h-next=NULL 打开文件 写入文件 开始 结束统计商品信息流程图 开始 i=0 p-next!=NULL i+ p=p-next 输出i 结束删除商品信息流程图p0=p-nextP0!=NULLstrcmp(p0-num,num)= =0)p-next=p0-next free(p0) p=p0 p0=p0-next 结束 开始添加商品信息流程图传入链表头结点t,t1=t,t2=t-next inext,t2=t2-nextt2!=NULL&t2-name=t0-nameefree(t0),flag=0flag=1,t0-next=t1-nextt1-next=t0return(t)开始输入n,i=0创建新结点t0t2!=NULL&strcmp(t2-name,t0-name)=0 结 束3重点设计及编码商品信息的你排序/降序排序struct good *jiangxu(struct good *h)struct good *p1=h-next,*p2,*p;while(p1-next!=NULL)p=p1;p2=p1-next;while(p2!=NULL)if(strcmp(p-num,p2-num)next;if(p!=p1)exchange(p,p1);p1=p1-next;return h;/升序排序struct good *shengxu(struct good *h)struct good *p1=h-next,*p2,*p;while(p1-next!=NULL)p=p1;p2=p1-next;while(p2!=NULL)if(strcmp(p-num,p2-num)0)p=p2;p2=p2-next;if(p!=p1)exchange(p,p1);p1=p1-next;return h;void exchange(struct good *p,struct good *p1)char cdata50;strcpy(cdata,p1-num);strcpy(p1-num,p-num);strcpy(p-num,cdata);strcpy(cdata,p1-name);strcpy(p1-name,p-name);strcpy(p-name,cdata); strcpy(cdata,p1-kind);strcpy(p1-kind,p-kind);strcpy(p-kind,cdata); strcpy(cdata,p1-price);strcpy(p1-price,p-price);strcpy(p-price,cdata); strcpy(cdata,p1-unit);strcpy(p1-unit,p-unit);strcpy(p-unit,cdata);strcpy(cdata,p1-quantity);strcpy(p1-quantity,p-quantity);strcpy(p-quantity,cdata); strcpy(cdata,p1-pro_time);strcpy(p1-pro_time,p-pro_time);strcpy(p-pro_time,cdata);统计商品信息/按种类统计tongji1(struct good *p)int flag=0,i=0;char spkind20;printf(请输入种类:);scanf(%s,spkind);while(p-next!=NULL)p=p-next;if(strcmp(p-kind,spkind)=0)i+;flag=1;if(flag=0)printf(no find!);if(flag=1)printf(这个种类的商品有%d个.n,i);删除商品信息/删除商品信息函数int shanchu(struct good *p0)char num10;struct good *p;p=p0-next;printf(请输入删除的商品号:);scanf(%d,&num);while(p!=NULL)if(strcmp(p-num,num)=0)p0-next=p-next;free(p);return 1;printf(删除后的商品信息:n);printf(商品编号:%s n,p-num);printf(商品名称:%s n,p-name);printf(商品类型:%s n,p-kind);printf(商品价格:%s n,p-price);printf(商品生产单位:%s n,p-unit);printf(商品数目:%s n,p-quantity);printf(商品生产日期:%s n,p-pro_time);printf(*n);p0=p;p=p-next;printf(删除失败!);return 0;五测试数据及运行结果1正常测试数据和运行结果要求提供3组正常测试数据和运行结果2异常测试数据及运行结果六调试情况,设计技巧及体会1改进方案对于密码的设计以及加密把握不太准确,调试时经常会出现密码不匹配的情况。对于排序函数的设计采用交换指针内容而不会采用交换节点来实现。对文件的读写还需进一步的改进。2体会在调试的过程中多使用单目跟踪的方法,这样可以更快更方便的找到自己的错误。在编程的过程中采用分模块编写,可以是思维更加清晰,七参考文献C语言程序设计案例实践,C语言程序设计教材八附录:源代码(电子版)/*超市管理系统*/#include #include #include #include #define N sizeof(struct good)void exchange(); struct good /*商品结构体类型*/char num10; char name20; char kind40; char price10; char unit10; char quantity10; char pro_time10;struct good *next; /*定义结构体指针类型*/typedef struct manage /管理人员信息结构体 char name20; char numb15; char key20;struct manage *next;manage;/管理人员基本信息的创建函数struct manage *creat1(void) struct manage *p1,*p2,*l;int i,m,j,k=0;char key30;printf(nn);printf( *nn);printf( 请输入要存入管理人员的人数:);scanf(%d,&m);l=p2=(struct manage*)malloc(sizeof(struct manage);for(i=0;inumb);printf(n请输入姓名:);scanf(%s,p1-name); printf(n请输入密码:);for(j=0;jkey,key); p2-next=p1;p2=p1;p2-next=NULL; printf(nn);printf(*nn);return l;/输出管理员信息void print1(struct manage *h) int x,i;printf(nnn);printf(*公寓楼管理员信息*nn);h=h-next;while(h!=NULL)printf(管理号:%-8s姓名:%-8s密码:,h-numb,h-name);x=strlen(h-key);for(i=0;inext; printf(nn);printf(*nn);struct manage *sort1(struct manage *p) struct manage *r,*s;r=p-next;p-next=NULL;while(r!=NULL)s=r-next;r-next=p-next;p-next=r;r=s;free(r);free(s);return p; /用姓名查找管理人员信息函数lookname(struct manage *h) int leaf=0,x,i;char name15;printf(nn);printf(*nn);printf(请输入要查找的管理员姓名:n);scanf(%s,name); while(h-next!=NULL)h=h-next;if(strcmp(h-name,name)=0)printf(管理号:%-8s姓名:%-8s密码:,h-numb,h-name);x=strlen(h-key);for(i=0;inext!=NULL)h=h-next;if(strcmp(h-numb,numb)=0)printf(管理号:%-8s姓名:%-8s密码:,h-numb,h-name);x=strlen(h-key);for(i=0;inext;printf(nn);printf(*nn);printf(请输入要删除的管理员姓名:n);scanf(%s,name);while(j!=NULL)if(strcmp(j-name,name)=0)h-next=j-next;free(j);printf(删除成功!n);leaf=1;break;h=j;j=h-next;if(leaf=0)printf(未找到要删除的管理员!n);printf(nn);printf(*nn);/增加管理人员信息函数add(struct manage *h ) struct manage *p;char key30;int i;p=(struct manage*)malloc(sizeof(struct manage);printf(nn);printf(*nn);printf(请输入要增加的管理员信息:n ); printf(请输入姓名:);scanf(%s,p-name);printf(请输入管理号:);scanf(%s,p-numb);printf(请输入密码:);for(i=0;ikey,key);printf(nn);printf(*nn);while(h-next!=NULL&strcmp(h-next-name,p-name)next;p-next=h-next;h-next=p;printf(it is ok!nn);system(pause);/修改管理人员信息函数revise1(struct manage *h ) struct manage *d; int l=0,choice4,i,j=0,k=0,m=0,leaf=0;char name20,name120,numb15,key10,key110,identity20;d=h-next;printf(nn);printf(*nn);strcpy(identity,guanliyuan);printf(请输入要修改人的姓名:n);scanf(%s,name);while(d!=NULL)d=d-next;if(strcmp(d-name,name)=0)l=1;while(m!=3) m+;printf(请输入你要修改人原来的密码:nn);for(i=0;ikey,key)=0)printf( it is ok!nn);system(pause);dosystem(cls);printf(nn);printf( 可修改项目为:n);printf(*nn);printf( 1:姓名nn);printf( 2:管理号nn);printf( 3:密码nn);printf( 0:返回.nn);printf( 请选择 (0-3):nn);printf(*nn);printf( 您的选择是:nn);fflush(stdin);scanf(%d,&choice4);switch(choice4) case 0:break;case 1: printf(请输入你修改后的名字:);scanf(%s,name1);strcpy(d-name,name1);system(pause);break;case 2: printf(请输入你修改后的管理号:);scanf(%s,numb);strcpy(d-numb,numb);system(pause);break;case 3: printf(请输入你修改后的新密码:);for(i=0;i20;i+)keyi=getch();if(keyi=015) break;else if(keyi=b) printf(b b);keyi=0; i=i-2;else printf(*);keyi=0; printf(请再次输入你修改后的新密码:);for(i=0;ikey,key);elseprintf(密码修改不成功!nn);system(pause);system(cls);continue;while(choice4!=0);break;elseprintf( sorry!原密码不正确!nn);system(pause);continue; /elsed=d-next;if(l=0) printf( sorry!不存在此人!nn);system(pause);system(cls); /统计管理人员函数count1(struct manage *h) int count=0;while(h-next!=NULL)h=h-next;count+;printf(nn);printf(*n);printf( $ 统计: 管理员人数为%d个! $n,count);printf(*n);/管理员排序函数(按)struct manage *rank1(struct manage *h) struct manage *r,*s,*p,*a;a=(struct manage *)malloc(N);p=h-next;while(p-next!=NULL)r=p;s=r-next;while(s!=NULL)if(strcmp(r-numb,s-numb)0)r=s;s=s-next;if(r!=p)strcpy(a-name,p-name);strcpy(p-name,r-name);strcpy(r-name,a-name);strcpy(a-numb,p-numb);strcpy(p-numb,r-numb);strcpy(r-numb,a-numb);strcpy(a-key,p-key);strcpy(p-key,r-key);strcpy(r-key,a-key);p=p-next;return p;int test(struct manage *k,char ide30,char name30,char key10)int leaf=0;k=k-next;while(k!=NULL) if(strcmp(k-name,name)=0&strcmp(k-key,key)=0)leaf=1;return 1;k=k-next;/ if(leaf=0)return 0;/保存管理员链表信息到文件中save1(struct manage *h) struct manage *s;int i,n;char k20;FILE *fp;if(fp=fopen(a.txt,wt)=NULL)printf(写文件出错,按任意键退出!);getch();exit(1);for(s=h-next;s!=NULL;s=s-next)strcpy(k,s-key);n=strlen(k);for(i=0;inumb,s-name,k);printf(nn);fclose(fp);/读取管理员文件信息到链表中struct manage *read1(struct manage *h) struct manage *m,*r,*s;int i,n;char key20;FILE *fp;if(fp=fopen(a.txt,rt)=NULL)printf(文件读出错误,按任意键退出!n);getch();exit(1);m=(struct manage*)malloc(N);m-next=NULL;r=m;while(!feof(fp)s=(struct manage*)malloc(N);fscanf(fp,%s %s %sn,s-numb,s-name,key);n=strlen(key);for(i=0;ikey,key);r-next=s;r=s;r-next=NULL;fclose(fp);print1(m);printf(nn);printf(*n);printf( $ it is ok ! $ n);printf(*n);printf(nn);system(pause);getch();return m;/初始读取管理员信息struct manage *read2() struct manage *m,*r,*s;int i,n;char key20;FILE *fp;if(fp=fopen(a.txt,rt)=NULL)printf(文件读出错误,按任意键退出!n);getch();exit(1);m=(struct manage*)malloc(N);m-next=NULL;r=m;while(!feof(fp)s=(struct manage*)malloc(N);fscanf(fp,%s %s %sn,s-numb,s-name,key);n=strlen(key);for(i=0;ikey,key);r-next=s;r=s;r-next=NULL;fclose(fp);return m;/输入商品信息函数struct good *creat(void)int i,n;struct good *head3,*p3,*p4;head3=(struct good *)malloc(N);head3-next=NULL;p3=head3;printf(输入的商品有种n= );scanf(%d,&n);for(i=0;inum);printf(请输入商品名称:n);scanf(%s,p4-name);printf(请输入商品类型:n);scanf(%s,p4-kind);printf(请输入商品价格:n);scanf(%s,p4-price);printf(请输入商品生产单位:n);scanf(%s,p4-unit);printf(请输入商品数目:n);scanf(%s,p4-quantity);printf(请输入商品生产日期:n);scanf(%s,p4-pro_time);p3-next=p4;p3=p4;printf(*n);p3-next=NULL;return head3;/升序排序struct good *shengxu(struct good *h)struct good *p1=h-next,*p2,*p;while(p1-next!=NULL)p=p1;p2=p1-next;while(p2!=NULL)if(strcmp(p-num,p2-num)0)p=p2;p2=p2-next;if(p!=p1)exchange(p,p1);p1=p1-next;return h;/降序排序struct good *jiangxu(struct good *h)struct good *p1=h-next,*p2,*p;while(p1-next!=NULL)p=p1;p2=p1-next;while(p2!=NULL)if(strcmp(p-num,p2-num)next;if(p!=p1)exchange(p,p1);p1=p1-next;return h;void exchange(struct good *p,struct good *p1)char cdata50;strcpy(cdata,p1-num);strcpy(p1-num,p-num);strcpy(p-num,cdata);strcpy(cdata,p1-name);strcpy(p1-name,p-name);strcpy(p-name,cdata); strcpy(cdata,p1-kind);strcpy(p1-kind,p-kind);strcpy(p-kind,cdata); strcpy(cdata,p1-price);strcpy(p1-price,p-price);strcpy(p-price,cdata); strcpy(cdata,p1-unit);strcpy(p1-unit,p-unit);strcpy(p-unit,cdata);strcpy(cdata,p1-quantity);strcpy(p1-quantity,p-quantity);strcpy(p-quantity,cdata); strcpy(cdata,p1-pro_time);strcpy(p1-pro_time,p-pro_time);strcpy(p-pro_time,cdata);/输出函数void output(struct good *p)p=p-next;while(p!=NULL)printf(商品编号:%s n,p-num);printf(商品名称:%s n,p-name);printf(商品类型:%s n,p-kind);printf(商品价格:%s n,p-price);printf(商品生产单位:%s n,p-unit);printf(商品数目:%s n,p-quantity);printf(商品生产日期:%s n,p-pro_time);printf(*n);p=p-next;/按编号查询商品信息函数chaxun1(struct good *p) int flag=0;char bianhao20;printf(请输入编号:);scanf(%s,bianhao);while(p-next!=NULL)p=p-next;if(strcmp(p-num,bianhao)=0)printf(商品编号:%s n,p-num);printf(商品名称:%s n,p-name);printf(商品类型:%s n,p-kind);printf(商品价格:%s n,p-price);printf(商品生产单位:%s n,p-unit);printf(商品数目:%s
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!