c语言仓库货物管理系统_第1页
c语言仓库货物管理系统_第2页
c语言仓库货物管理系统_第3页
c语言仓库货物管理系统_第4页
c语言仓库货物管理系统_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、软件学院课程设计报告设计名称: C语言课程设计 选题名称 仓库货物管理系统 姓 名: 李明慧 学 号: 1515925610 专业班级: 云计算1班 系 (院): 软件学院 设计时间: 2015.12.292013.12.31 设计地点: 实验室 15#610 C语言课程设计报告 第 30 页,共16页1课程设计目的(1) 巩固和加深学生对C语言的基本知识的理解和掌握;(2) 掌握C语言编程和程序调试的基本技能;(3) 利用C语言进行简单软件设计的基本思路和方法;(4) 提高运用C语言解决实际问题的能力;(5) 掌握书写程序设计说明文档的能力。2课程设计任务与要求:任务设计题目从任务书所列选题

2、表中选取,每人1题。要求:1、在处理每个题目时,要求从分析题目的需求入手,进行合理的模块设计,定义正确函数和自定义数据类型(如结构体类型)、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、设计的题目要求达到一定工作量(200行以上代码),并具有一定的深度。3、程序设计语言推荐使用C,程序书写规范,源程序需加必要的注释并且缩进一致。4、每位同学需提交可独立运行的程序;5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代

3、码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。3课程设计说明书一 需求分析 现阶段快速的社会发展要求高速的完成任何事情。在各个市场,特别在超市,管理员对货物的高效管理显得尤为重要。不仅客户希望快速,准确的查询到购买的货物信息,管理员也希望能方便的管理货物,给客户提供满意的服务。因此,本程序就可以完成统计并管理货物信息的任务。实现了统计每个货物的信息,然后可以轻松地通过对货物编号的排序快速的去找到想要查询的货物,然后就可以实现对货物的修改、删除、添加等功能。 本程序的宗旨在于提高管理者的工作效率,方便管理者及客户进行查询,实现精确地管理货物目的。二 系统设计 该程序设计主要

4、运用了c语言的基本知识,通过调用各个函数实现整个完整的系统功能。该仓库管理系统主要实现了管理员和用户两种不同身份的功能,以下就是程序实现的主要功能:管理员的功能: 用户的功能: 0:显示菜单 1:读取信息 1:录入信息 2:查询信息 2:查询信息 3:退出系统 3:修改信息4:添加信息 5:删除信息 6:正向排序7:输出信息8:保存信息9:退出系统 10:读取信息有功能模块图和流程图 功能模块图:仓库货物管理系统管理员用户输入密码 退出系统否 查询信息 读取信息是否正确? 是 读取信息 退出系统 保存信息 输出信息 正向排序 删除信息 添加信息 修改信息 查询信息 录入信息显示菜单 开 始流程

5、图:读取信息是否是管理员?否输入密码查询信息是密码是否正确? 是 菜单选择 查询信 息添加信息删除信息修改信息录入信息 正向排序输入编号 选择添加方式输入编号输入编号输入信息输出信息排序完毕输入添加内容查询完毕 删除完毕选择修改内容输入完毕 添加完毕输入修改信息 修改完毕保 存 信 息 读 取 信 息 退 出 系 统结 束三 详细设计 1、首先写入头文件#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#define M sizeof(struct go

6、ods)2、定义一个结构体存储货物的信息struct goods int num; char name20; float price; int amount; struct goods *next;3、 输入货物信息函数struct goods *create() int i; struct goods *head,*p,*q; p=q=head=NULL; printf("请输入货物的编号 名称 价格 数量n"); for(i=1;i+) p=(struct goods *)malloc(sizeof(struct goods); scanf("%d %s %f

7、 %d",&p->num,p->name,&p->price,&p->amount); if(i=1) head=p; else q->next=p; q=p; if(p->num=0) break; q->next=NULL; return head;4、查找货物信息函数void find(struct goods *head,int num) struct goods *p1; p1=head; int i=0; while(p1!=NULL) if(p1->num=num) i=1; printf(&quo

8、t;%d %s %.2f %dn",p1->num,p1->name,p1->price,p1->amount); printf("查找货物编号成功"); p1=p1->next; if(i=0) printf("没有查到货物编号n"); 5、修改信息函数 void change(struct goods *head,int num) struct goods *p2; p2=head; int j; int i=0; while(p2!=NULL) if(p2->num=num) i=1; printf(&

9、quot;你想修改货物的1.编号 2.名称 3.价格 4.数量 5.全部修改?n"); scanf("%d",&j); switch(j) case 1:printf("请输入修改的货物的编号:");scanf("%d",&p2->num);printf("修改货物信息成功n");break; case 2:printf("请输入修改的货物的名称:");scanf("%s",p2->name);printf("修改货物信息成功n

10、");break; case 3:printf("请输入修改的货物的价格:");scanf("%f",&p2->price);printf("修改货物信息成功n");break; case 4:printf("请输入修改的货物的数量:");scanf("%d",&p2->amount);printf("修改货物信息成功n");break; case 5:printf("请输入修改的货物的编号 名称 价格 数量:");s

11、canf("%d %s %f %d",&p2->num,p2->name,&p2->price,&p2->amount);printf("修改货物信息成功n");break; default :printf("error!n");break; p2=p2->next; if(i=0) printf("没有找到要修改的货物编号n");6、(1)添加货物信息函数-头插法 struct goods *add1(struct goods *head) struct go

12、ods *p3,*pm; int i=0; pm=head; p3=(struct goods *)malloc(sizeof(struct goods); printf("请添加货物的编号 名称 价格 数量n"); scanf("%d %s %f %d",&p3->num,p3->name,&p3->price,&p3->amount); while(pm!=NULL) while(pm->num=p3->num) printf("已有此货物编号n"); scanf(&qu

13、ot;%d %s %f %d",&p3->num,p3->name,&p3->price,&p3->amount); pm=head; pm=pm->next; p3->next=head; head=p3; return head; printf("添加信息成功n");(2)添加货物信息函数-非头插法struct goods *add2(struct goods *head,int num) struct goods *p4,*p5; p5=head; p4=(struct goods *)malloc

14、(sizeof(struct goods); printf("请添加货物的编号 名称 价格 数量n"); scanf("%d %s %f %d",&p4->num,p4->name,&p4->price,&p4->amount); while(p5!=NULL) while(p5->num=p4->num) printf("已有此货物编号n"); scanf("%d %s %f %d",&p4->num,p4->name,&p4

15、->price,&p4->amount); p5=head; if(p5->num!=p4->num) p5=p5->next; p5=head; while(p5!=NULL) if(p5->num=num) p4->next=p5->next; p5->next=p4; p5=p5->next; return head; printf("添加信息成功n");7、删除货物信息函数struct goods *del(struct goods *head,int num) struct goods *p3,*

16、p4; p3=p4=head; int i=0; while(p3->next!=NULL) p4=p3; p3=p3->next; if(p3->num=num) i=1; p4->next=p3->next; free(p3); printf("删除货物信息成功n"); if(i=0) printf("没有找到要删除的货物n"); return head;8、 正向排序函数 struct goods *sort(struct goods *head) struct goods *p,*q,*a,*b,*newhead;

17、newhead=NULL; int max; while(head!=NULL) p=head; q=head->next; a=head; b=NULL; max=p->num; while(q!=NULL) if(q->num>max) max=q->num; a=q; b=p; p=p->next; q=q->next; if(a!=head) b->next=a->next; else head=head->next; if(newhead=NULL) newhead=a; a->next=NULL; else a-&g

18、t;next=newhead; newhead=a; return newhead;9、输出信息函数void print(struct goods *head) struct goods *pt; pt=head; while(pt!=NULL) printf("%d %s %.2f %dn",pt->num,pt->name,pt->price,pt->amount); pt=pt->next; 10、保存货物信息函数void save(struct goods *head) FILE *fp; struct goods *pm; pm=he

19、ad; if(fp=fopen("aaa.dat","w")=NULL) printf("cannot have this filen"); exit(0); while(pm!=NULL) fwrite(pm,sizeof(struct goods),1,fp); pm=pm->next; fclose(fp); printf("保存信息成功n");11、读取货物信息函数 struct goods * save_() int i; struct goods *head,*p,*q,*p1; FILE *fp

20、; fp=fopen("aaa.dat","r"); if(fp=NULL) printf("cannot have this filen"); exit(0); for(i=1;i+) p=(struct goods *)malloc(sizeof(struct goods); fread(p,M,1,fp); if(i=1) head=p; else q->next=p; q=p; if(p->next=0) break; q->next=NULL; p1=head; while(p1!=NULL) printf

21、("%d %s %.2f %dn",p1->num,p1->name,p1->price,p1->amount); p1=p1->next; return head; fclose(fp);12、释放内存函数void free_(struct goods *head) struct goods *p5; while(head!=NULL) p5=head; free(p5); head=head->next; printf("释放内存成功n");13、管理员界面 void menu1() struct goods *h

22、ead; int k,num,n,m,j,i,z=3; char ch7; printf("请输入密码:"); scanf("%s",ch); while(1) if(strcmp(ch,password)=0) printf("欢迎进入仓库管理系统n");break; else printf("请再次输入密码:(你还有%d次机会)n",z-1); scanf("%s",ch); z-; if(z=0) printf("退出系统"); exit (0); printf(&qu

23、ot;tt*n"); printf("tt*仓库管理系统*n"); printf("tt*n"); printf("tt*0.显示菜单*n"); printf("tt*1.录入信息*n"); printf("tt*2.查询信息*n"); printf("tt*3.修改信息*n"); printf("tt*4.添加信息*n"); printf("tt*5.删除信息*n"); printf("tt*6.正向排序*n&qu

24、ot;); printf("tt*7.输出信息*n"); printf("tt*8.保存信息*n"); printf("tt*9.退出系统*n"); printf("tt*10.读取信息*n"); printf("tt*n"); while(1) printf("n"); printf("请输入功能选择键:"); scanf("%d",&k); printf("n"); if(k=1) head=create

25、(); printf("创建信息成功请继续操作n"); printf("n"); if(k=2) printf("请输入要查询的货物编号:"); scanf("%d",&num); find(head,num); printf("n"); if(k=3) printf("请输入要修改的货物编号:"); scanf("%d",&n); change(head,n); print(head); printf("n"); if

26、(k=4) printf(">>>>>>>>>>>>>>>>1.头插 2.非头插n"); scanf("%d",&i); switch(i) case 1:head=add1(head);print(head);break; case 2:scanf("%d",&j);add2(head,j);print(head);break; default :printf("error!");break; if(k

27、=5) printf("请输入要删除的货物编号:"); scanf("%d",&m); del(head,m); print(head); printf("n"); if(k=6) printf("请将下列货物编号进行排序n"); head=sort(head); print(head); printf("货物排序成功n"); if(k=7) print(head); printf("n"); if(k=8) save(head); printf("n&qu

28、ot;); if(k=9) free_(head); exit (0); if(k=10) head=save_(); if(k=0) printf("tt*n"); printf("tt*仓库管理系统*n"); printf("tt*n"); printf("tt*0.显示菜单*n"); printf("tt*1.录入信息*n"); printf("tt*2.查询信息*n"); printf("tt*3.修改信息*n"); printf("tt

29、*4.添加信息*n"); printf("tt*5.删除信息*n"); printf("tt*6.正向排序*n"); printf("tt*7.输出信息*n"); printf("tt*8.保存信息*n"); printf("tt*9.退出系统*n"); printf("tt*10.读取信息*n"); printf("tt*n"); 14、用户界面void menu2() while(1) struct goods *head; printf(&

30、quot;tt*n"); printf("tt*仓库管理系统*n"); printf("tt*-*n"); printf("tt*-1.读取信息-*n"); printf("tt*-2.查询信息-*n"); printf("tt*-3.退出系统-*n"); printf("tt*-*n"); int num,k; printf("请输入功能选择键:"); scanf("%d",&k); if(k=1) head=sav

31、e_(); if(k=2) printf("请输入要查询的货物编号:"); scanf("%d",&num); find(head,num); printf("n"); if(k=3) exit(0); if(k<=0&&k>3) printf("没有此选项,请重新输入!n"); 15、主界面int main() int i; printf("tt*n"); printf("tt*仓库货物系统*n"); printf("tt*n&

32、quot;); printf("tt*1.管理员*n"); printf("tt*2.用户*n"); printf("tt*n"); printf("n"); printf("请输入你的身份:"); scanf("%d",&i); while(1) if(i=1) menu1(); if(i=2) menu2(); if(i!=1&&1!=2) printf("请再次输入你的身份n"); scanf("%d",&

33、amp;i); return 0; 四 设计与调试分析1. 在刚开始的时候应先将链表的创建与输出正常运行出来,然后再添加各个功能。这就要有一定的思路和学习技巧。可以将需要调用的函数归纳一下,然后一个一个添加。对于添加的函数一个一个的运行,在运行的过程中,也可以只运行其中一个函数,将其它的函数注释掉,这样比较好找错误,在将一个个都运行无误之后再整体运行,查找错误。2. 在定义结构体指针时一定要选择好全局或者是局部变量。我选择的有全局变量和局部变量,所以在下边的运用中要多加小心,一旦疏忽,就会报错。3. 每一个函数都应该有接收头指针的地址,有的还需要返回值。所以在写代码的时候应该分清头指针的去向问

34、题,避免报错或出现乱码。五 系统运行与演示1、开始界面:2、管理员界面3、管理员选择0运行的界面:4、管理员选择1的运行界面:4、管理员选择2的运行界面:5、管理员选择3的运行界面:6、管理员选择4的运行界面:7、管理员选择5的运行界面:8、管理员选择6的运行界面:9、管理员选择7的运行界面:10、管理员选择8的运行界面:11、管理员选择10的运行界面:12、用户界面:13、用户选择1的运行界面:14、用户选择2的运行界面:六、附录(代码)#include<stdio.h>#include<stdlib.h>#include<string.h>#includ

35、e<windows.h>#define M sizeof(struct goods)char password10="."struct goods int num; char name20; float price; int amount; struct goods *next;struct goods *create() int i; struct goods *head,*p,*q; p=q=head=NULL; printf("请输入货物的编号 名称 价格 数量n"); for(i=1;i+) p=(struct goods *)mal

36、loc(sizeof(struct goods); scanf("%d %s %f %d",&p->num,p->name,&p->price,&p->amount); if(i=1) head=p; else q->next=p; q=p; if(p->num=0) break; q->next=NULL; return head;void find(struct goods *head,int num) struct goods *p1; p1=head; int i=0; while(p1!=NULL)

37、 if(p1->num=num) i=1; printf("%d %s %.2f %dn",p1->num,p1->name,p1->price,p1->amount); printf("查找货物编号成功"); p1=p1->next; if(i=0) printf("没有查到货物编号n"); void change(struct goods *head,int num) struct goods *p2; p2=head; int j; int i=0; while(p2!=NULL) if(p2

38、->num=num) i=1; printf("你想修改货物的1.编号 2.名称 3.价格 4.数量 5.全部修改?n"); scanf("%d",&j); switch(j) case 1:printf("请输入修改的货物的编号:");scanf("%d",&p2->num);printf("修改货物信息成功n");break; case 2:printf("请输入修改的货物的名称:");scanf("%s",p2->n

39、ame);printf("修改货物信息成功n");break; case 3:printf("请输入修改的货物的价格:");scanf("%f",&p2->price);printf("修改货物信息成功n");break; case 4:printf("请输入修改的货物的数量:");scanf("%d",&p2->amount);printf("修改货物信息成功n");break; case 5:printf("请输入修改的货物的编号 名称 价格 数量:");scanf("%d %s %f %d",&p2->num,p2->name,&p2->price,&p2->amount);printf("修改货

温馨提示

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

评论

0/150

提交评论