c语言仓库货物管理系统[31页].docx
最新资料推荐软件学院课程设计报告设计名称: C语言课程设计 选题名称 仓库货物管理系统 姓 名: 李明慧 学 号: 1515925610 专业班级: 云计算1班 系 (院): 软件学院 设计时间: 2015.12.292013.12.31 设计地点: 实验室 15#610 最新精品资料整理推荐,更新于二二一年一月十九日2021年1月19日星期二20:00:131课程设计目的(1) 巩固和加深学生对C语言的基本知识的理解和掌握;(2) 掌握C语言编程和程序调试的基本技能;(3) 利用C语言进行简单软件设计的基本思路和方法;(4) 提高运用C语言解决实际问题的能力;(5) 掌握书写程序设计说明文档的能力。2课程设计任务与要求:任务设计题目从任务书所列选题表中选取,每人1题。要求:1、在处理每个题目时,要求从分析题目的需求入手,进行合理的模块设计,定义正确函数和自定义数据类型(如结构体类型)、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、设计的题目要求达到一定工作量(200行以上代码),并具有一定的深度。3、程序设计语言推荐使用C,程序书写规范,源程序需加必要的注释并且缩进一致。4、每位同学需提交可独立运行的程序;5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。3课程设计说明书一 需求分析 现阶段快速的社会发展要求高速的完成任何事情。在各个市场,特别在超市,管理员对货物的高效管理显得尤为重要。不仅客户希望快速,准确的查询到购买的货物信息,管理员也希望能方便的管理货物,给客户提供满意的服务。因此,本程序就可以完成统计并管理货物信息的任务。实现了统计每个货物的信息,然后可以轻松地通过对货物编号的排序快速的去找到想要查询的货物,然后就可以实现对货物的修改、删除、添加等功能。 本程序的宗旨在于提高管理者的工作效率,方便管理者及客户进行查询,实现精确地管理货物目的。二 系统设计 该程序设计主要运用了c语言的基本知识,通过调用各个函数实现整个完整的系统功能。该仓库管理系统主要实现了管理员和用户两种不同身份的功能,以下就是程序实现的主要功能:管理员的功能: 用户的功能: 0:显示菜单 1:读取信息 1:录入信息 2:查询信息 2:查询信息 3:退出系统 3:修改信息4:添加信息 5:删除信息 6:正向排序7:输出信息8:保存信息9:退出系统 10:读取信息有功能模块图和流程图 功能模块图:仓库货物管理系统管理员用户输入密码 退出系统否 查询信息 读取信息是否正确? 是 读取信息 退出系统 保存信息 输出信息 正向排序 删除信息 添加信息 修改信息 查询信息 录入信息显示菜单 开 始流程图:读取信息是否是管理员?否输入密码查询信息是密码是否正确? 是 菜单选择 查询信 息添加信息删除信息修改信息录入信息 正向排序输入编号 选择添加方式输入编号输入编号输入信息输出信息排序完毕输入添加内容查询完毕 删除完毕选择修改内容输入完毕 添加完毕输入修改信息 修改完毕保 存 信 息 读 取 信 息 退 出 系 统结 束三 详细设计 1、首先写入头文件#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#define M sizeof(struct goods)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 %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("%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("你想修改货物的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");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("修改货物信息成功n");break; default :printf("error!n");break; p2=p2->next; if(i=0) printf("没有找到要修改的货物编号n");6、(1)添加货物信息函数-头插法 struct goods *add1(struct goods *head) struct goods *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("%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(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->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,*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; 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->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=head; 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; 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("%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 *head; 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("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"); 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(); 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(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=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"); 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*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("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=save_(); 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");