C语言库存管理系统
C语言课程设计仓库管理系统

C语言课程设计仓库管理系统一、教学目标本课程旨在通过学习仓库管理系统,让学生掌握C语言编程的基本概念和方法,培养学生具备一定的软件开发能力。
具体的教学目标如下:1.知识目标:(1)理解C语言的基本语法和数据结构;(2)掌握C语言的函数、指针、 arrays等核心概念;(3)熟悉常用的库函数和预处理指令;(4)了解软件开发的基本流程。
2.技能目标:(1)能够使用C语言编写简单的程序;(2)具备基本的代码调试和优化能力;(3)能够独立完成简单的软件项目。
3.情感态度价值观目标:(1)培养学生对计算机科学的兴趣和热情;(2)培养学生良好的编程习惯和团队协作精神;(3)使学生认识到编程对于解决实际问题的价值。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、指针、数组等核心概念,以及软件开发的基本流程。
具体的教学大纲如下:1.C语言的基本语法和数据结构;2.函数、指针和数组的概念及应用;3.常用的库函数和预处理指令;4.软件开发的基本流程;5.综合实例:仓库管理系统的设计与实现。
三、教学方法为了提高教学效果,我们将采用多种教学方法相结合的方式进行教学。
具体包括:1.讲授法:用于讲解C语言的基本语法、数据结构、函数、指针、数组等核心概念;2.案例分析法:通过分析实际案例,使学生更好地理解仓库管理系统的设计与实现;3.实验法:让学生动手编写代码,巩固所学知识,提高编程能力;4.小组讨论法:分组进行讨论,培养学生的团队协作能力和问题解决能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用权威、实用的C语言教材;2.参考书:提供丰富的C语言编程参考书籍;3.多媒体资料:制作精美的课件,辅助讲解;4.实验设备:提供足够的计算机设备,让学生进行编程实践。
通过本课程的学习,希望学生能够掌握C语言编程的基本概念和方法,为今后的计算机科学学习和软件开发打下坚实基础。
五、教学评估为了全面、客观地评估学生的学习成果,我们将采用多种评估方式相结合的方法。
C语言版商品库存管理系统方案

建议使用VS打开运行#pragma once#include<stdio.h>typedef struct information //商品信息{char number[20]; //编号char sname[20]; //名称float price; //价格int count; //数量char dath[20]; //生产日期struct information *next;}inf;void menu(inf *head); //显示主菜单inf *create(); //创建链表void Input(inf *head); //输入商品信息void tianjia(inf *head); //添加商品信息void output(inf *head); //输出商品信息void chaxun(inf *head); //查询商品信息void chaxun_number(inf *head); //按编号查询void chaxun_sname(inf *head); //按名称查询void xiugai(inf *head); //修改商品信息void shanchu(inf *head); //删除商品信息void write_file(inf *head); //保存商品信息到文件void paixu(inf *head);inf *Read__file(); //读取文件内商品信息void freeh(inf *head); //退出程序#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <malloc.h>#include <windows.h>#include <mmsystem.h>#pragma comment(lib, "WINMM.lib")#include"标头.h"void menu(inf *head) //显示菜单{PlaySound(TEXT("sounds\\背景.wav"), NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);system("color 3B");printf("\t\t*****************************************************\n"); printf("\t\t\t\t欢迎进入商品库存管理系统\n");printf("\t\t*****************************************************\n"); printf("\n");printf("\t\t|====================================================|\n"); printf("\t\t|______________________基本信息______________________|\n"); printf("\t\t| 1.商品信息录入 | 2.添加商品信息 |\n"); printf("\t\t| 3.查找商品信息 | 4.修改商品信息 |\n"); printf("\t\t| 5.删除商品信息 | 6.保存文件信息 |\n"); printf("\t\t| 7.读取文件信息 | 8.显示商品信息 |\n"); printf("\t\t| 9.按价格从高到低进行排序 |\n"); printf("\t\t|_________________0.释放链表。
仓库管理系统(c语言)

作品名称开发者:一、系统背景:本软件能减轻对货物数目管理及价格盈亏等信息处理的工作量以便能快捷及时准确的调整货物的仓储量达到最合理化。
可以使店主不失效率的节省大量精力用于其他方面符合当今社会的商业形式而且本软件体积小操作简单是管理仓库的不二选择二、系统简介:设计亮点:◆三级菜单使操作更简便明了◆密码操作能有效保证客户信息的安全性◆独特的dos命令调用使信息存储的实体属性为隐藏且无扩展名大大增大了安全系数◆数据结构为链表摆脱了数据数量的限制◆提供三种查看模式并会标出排名◆退出店主模式时会提示是否保存若选择yes着进行保存操作基本功能:·在员工模式下可输入卖出货物的名称和数目程序自动在后台进行一系列的操作·新建数据并同时对其处理·修改数据·插入数据·删除数据·查找数据·查看数据·数据存档·修改密码三、系统结构图#define LEN sizeof(struct shop) #include<>#include<>#include<>#include<>struct shop{char name[30];float price_in;float price_out;int num_in;int num_now;int num_sold;float win;float percent;struct shop *next;};int n=0;void main(void){void auto1(struct shop **h_p);int menu1(struct shop **h_p);void print1(void);void assistant(struct shop *head);int password(void);int menu2(struct shop **h_p);void print2(void);void creat(struct shop **h_p);void rewrite(struct shop **h_p);void insert(struct shop **h_p);void deleat(struct shop **h_p);void search(struct shop **h_p);void printall(struct shop **h_p);void save(struct shop *head);void password_set(void);int password_exi(struct shop **h_p);int data_exi(struct shop **h_p);void load(struct shop **h_p);void save(struct shop *head);struct shop *addbuild(struct shop **h_p); void sort0(struct shop **h_p);int search1(struct shop **h_p,char a[30]); void sort1(struct shop **h_p);void sort2(struct shop **h_p);void sort3(struct shop **h_p);void print3(void);void password_create(void);struct shop *addbuild(struct shop **h_p); int a;struct shop *head,**h_p;head=NULL;h_p=&head;auto1(h_p);do{a=menu1(h_p);}while(a!=3);system("cls");printf("谢谢使用^_^");getch();}int menu1(struct shop **h_p){int a,b;struct shop *head;head=*h_p;print1();scanf("%d",&a);putchar('\n');getchar();do{switch(a){case 1:assistant(head);break; case 2:if(password())do{b=menu2(h_p);}while(b!=9);break;default:break;}if(a!=3){system("cls");print1();scanf("%d",&a);}}while(a!=3);return(a);}int menu2(struct shop **h_p){int b;char a;struct shop *head;head=*h_p;print2();scanf("%d",&b);putchar('\n');getchar();do{switch(b){case 1:creat(h_p);break;case 2:rewrite(h_p);break;case 3:insert(h_p);break;case 4:deleat(h_p);break;case 5:search(h_p);break;case 6:printall(h_p);break;case 7:head=*h_p;save(head);break; case 8:password_set();break; default:break;}if(b!=9){system("cls");print2();scanf("%d",&b);getchar();}}while(b!=9);printf("\n保存吗(y/n):");putchar('\n');scanf("%c",&a);if(a=='y'){head=*h_p;save(head);}return(b);}void auto1(struct shop **h_p){if(password_exi(h_p) && data_exi(h_p)) load(h_p);}void print1(void){system("cls");printf("********************************************************************************\n");printf(" 仓库管理系统\n");printf("********************************************************************************\n");printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n");printf(" #******************* 菜单*****************# \n");printf(" #| 1.员工模式 |# \n");printf(" #| 2.店主模式 |# \n");printf(" #| 3.退出 |# \n");printf(" #*********************************************# \n");printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n");printf("\n请选择(1-3):");}void assistant(struct shop *head){char a[50],c='y';int b;struct shop *i;i=head;while(c=='y'){system("cls");printf("\n请输入卖出的商品名称:\n");gets(a);putchar('\n');printf("\n请输入卖出的商品数量:\n");scanf("%d",&b);putchar('\n');while(strcmp(i->name,a)!=0&&i->next!=NULL)i=i->next;if(i->next!=NULL){i->num_now-=b;i->win=(i->num_in-i->num_now)*(i->price_out-i->price_in); }elseprintf("\n此商品不存在或通知店主更新数据库\n");printf("\n继续吗(y/n):");putchar('\n');c=getchar();getchar();}save(head);}int password(void){FILE*fp;char a[50],b[50];int i;system("cls");fp=fopen("c:\\y_secrea","rb"); fscanf(fp,"%s",&a);fclose(fp);printf("请输入密码:\n"); putchar('\n');i=0;do{b[i]=getch();printf("*");i++;}while(b[i-1]!=13&&i<19);b[i-1]='\0';if(strcmp(a,b)==0)return(1);elsereturn(0);}void print2(void){system("cls");printf("********************************************************************************\n");printf(" 店主模式\n");printf("********************************************************************************\n");printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n");printf(" #******************* 菜单*****************# \n");printf(" #| 1.新建 2.修改 |# \n");printf(" #| 3.插入 4.删除 |# \n");printf(" #| 5.查找 6.查看 |# \n");printf(" #| 7.保存 8.改密 |# \n");printf(" #| 9.上一层 |# \n");printf(" #*********************************************# \n");printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n");printf("请选择(1-9):");}void creat(struct shop **h_p){struct shop *head,*i,*j;int f=1;head=NULL;n=0;printf("\n请输入数据若完成请在名称处输“0”.\n\n");i=j=addbuild(&head);if(strcmp(i->name,"0")==0)f=0;while(f){n++;if(n==1)head=j;f=1;printf("\n请输入下一种货物的数据.\n\n");i=addbuild(&head);if(strcmp(i->name,"0")==0){free(i);f=0;break;}j->next=i;j=i;}j->next=NULL;*h_p=head;}void rewrite(struct shop **h_p){char a[30];struct shop *i,*j,*head;head=*h_p;i=head;do{printf("\n请输入要修改货物的名称:"); putchar('\n');gets(a);if(n>=1&&!search1(h_p,a)){printf("\n不存在的货物名称!\n"); getch();if(head==NULL) goto end;}}while(n>=1&&!search1(h_p,a));while(strcmp(a,i->name)!=0&&i->next!=NULL) {i=i->next;}if(strcmp(a,i->name)==0){printf("\n真的要修改吗(y/n):");putchar('\n');if(getchar()=='y'){getchar();j=addbuild(h_p);strcpy(i->name,j->name);i->price_in=j->price_in;i->price_out=j->price_out;i->num_in=j->num_in;i->num_now=j->num_now;i->num_sold=j->num_sold;i->win=j->win;i->percent=j->percent;free(j);printf("\n修改完成^_^\n\n");}}end:;}void insert(struct shop **h_p){struct shop *i,*j,*x,*head;head=*h_p;x=addbuild(h_p);i=j=head;while(strcmp(i->name,x->name)<0&&i->next!=NULL) {j=i;i=i->next;}if(strcmp(i->name,x->name)>=0){if(i==head)head=x;elsej->next=x;x->next=i;}else{i->next=x;x->next=NULL;}printf("\n插入完成^_^\n\n.");*h_p=head;}void deleat(struct shop **h_p){struct shop*i,*j,*head;char a[30],b;head=*h_p;do{system("cls");printf("\n请输入你要删除的货物的名称:\n"); putchar('\n');gets(a);if(n>=1&&!search1(h_p,a)){printf("\n不存在的货物名称!\n");if(head==NULL) goto end;}}while(n>=1&&!search1(h_p,a));putchar('\n');b=getchar();getchar();if(b=='y'){i=head;while(strcmp(i->name,a)!=0&&i->next!=NULL) {j=i;i=i->next;}if(strcmp(i->name,a)==0){if(i==head){head=i->next;free(i);}elsej->next=i->next;n--;*h_p=head;}}end:;}void search(struct shop **h_p){int begin,end,mid,t;char a[30];struct shop *i,*head;head=*h_p;i=head;printf("\n请输入要查询货物的名称:");putchar('\n');gets(a);while((strcmp(i->name,a)!=0)&&i->next!=NULL){i=i->next;}if((strcmp(i->name,a)==0)){printf("\n名称\t进价\t售价\t进货数目存货数目销量 \t赢利\t利率\n");printf("\n================================================================= ==============\n");printf("%s%10.2f%10.2f%10d%10d%10d%9.2f%10.2f",i->name,i->price_in,i->price _out,i->num_in,i->num_now,i->num_sold,i->win,i->percent);}elseprintf("\n此货物不存在!\n");getch();}void printall(struct shop **h_p){int a,c;char b='y';struct shop *i;while(b=='y'){do{system("cls");print3();scanf("%d",&a);}while(a!=1&&a!=2&&a!=3);switch(a){case 1:sort1(h_p);break;case 2:sort2(h_p);break;case 3:sort3(h_p);break;default:break;}for(c=1,i=*h_p;i->next!=NULL;i=i->next,c++){printf("\n名称\t进价\t售价\t进货数目存货数目销量 \t赢利\t利率\t 排名\n");printf("\n================================================================= ==============\n");printf("%s%10.2f%10.2f%10d%10d%10d%9.2f%10.2f%8d",i->name,i->price_in,i->pr ice_out,i->num_in,i->num_now,i->num_sold,i->win,i->percent,c);if(c%8==0){getch();getchar();printf("按任意键继续。
C语言链表实现商品库存管理系统

C语⾔链表实现商品库存管理系统本⽂实例为⼤家分享了C语⾔链表实现商品库存管理系统的具体代码,供⼤家参考,具体内容如下代码:12345678910111213141516171819202122 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54#include <stdio.h>#include <stdlib.h>#include <string.h>//定义⼀个商品结构体typedef struct sp{char no[12]; //商品编号char name[40]; //名称int workload; //库存量struct sp *next; //指向下⼀节点的指针} SP;//函数声明放在这⾥void ListCreate(SP *L, int n); //创建商品链表节点void LIstSearch(SP *L); //查找商品信息void ListModify(SP *L); //修改商品信息void ListInsert(SP *L); //插⼊商品信息void ListDelete(SP *L); //删除商品信息void Input(SP *p, int i); //输⼊商品信息void SumSp(SP *L); //统计商品的库存总量void Sort(SP *L); //对每类商品的库存量进⾏排名void Menu(); //考试报名管理系统的菜单//商品库存管理系统的主函数⼊⼝int main(){int item, n; //item⽤于接收输⼊的命令,n⽤于接收输⼊的商品⼈数 SP *L = NULL; //初始化⼀个头节点L = (SP *)malloc(sizeof(SP)); //为头节点开辟内存空间L->next = NULL; //将头节点的指针域置空do{Menu(); //菜单printf("请输⼊相应的数字,进⾏相应的操作:\n");scanf("%d", &item);55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 system("cls");switch(item){case1:printf("请输⼊您要录⼊的商品数⽬:");scanf("%d", &n);ListCreate(L, n);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case2:LIstSearch(L); //查找商品信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case3:ListModify(L); //修改商品库存信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case4:ListDelete(L); //删除商品信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case5:ListInsert(L); //插⼊商品信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case6:SumSp(L);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case7:Sort(L);getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case0: //退出商品库存管理系统printf("即将退出商品库存管理系统.....");exit(0);default:printf("您输⼊的指令不正确,请重新输⼊"); }printf("\n\n");} while(item);return0;}//创建链表,将新⽣成的节点插⼊到链表的表头void ListCreate(SP *L, int n){int i;for(i = 0; i < n; i++){SP *p;//将新⽣成的节点插⼊到链表中117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 p = NULL;p = (SP *)malloc(sizeof(SP));Input(p, i);p->next = L->next;L->next = p;}printf("录⼊成功!");}//查找商品库存量void LIstSearch(SP *L){char n[40];SP *p = L->next;if(p == NULL)printf("数据为空,⽆法查找!");else{printf("请输⼊您要查找的商品名称:");scanf("%s", n);while(strcmp(p->name, n) != 0){p = p->next;if(p == NULL){printf("没有找到相关信息\n");return;}}printf("%s的库存量为%d\n",p->name,p->workload);}}//修改商品的库存量void ListModify(SP *L){int a;char nam[40];SP *p = L->next;if(p == NULL)printf("数据为空,⽆法修改!");else{printf("请输⼊您修改的商品名称:");scanf("%s",nam);while(strcmp(p->name, nam) != 0){p = p->next;if(p == NULL){printf("没有找到相关信息\n");return;}}printf("请输⼊您修改后的库存量:");scanf("%d",&p->workload);printf("修改成功");}}//删除商品信息void ListDelete(SP *L){char n[40];SP *p = L->next, *pre = L; //定义p指针指向头节点的指向,定义pre指向头节点,pre始终指向p的前驱节点 if(p == NULL)printf("数据为空,⽆法删除!");else{printf("请输⼊您要删除的商品名称:");scanf("%s", n);while(strcmp(p->name, n) != 0)180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 p = pre->next;if(p == NULL){printf("没有找到相关信息,⽆法删除\n"); return;}}pre->next = p->next;free(p);printf("删除成功");}}//插⼊商品库存的相关信息void ListInsert(SP *L){SP *s = NULL; //⽣成⼀个新节点ss = (SP *)malloc(sizeof(SP));printf("请输⼊商品的商品编号:");scanf("%s", s->no);printf("请输⼊商品的名称:");scanf("%s", s->name);printf("请输⼊商品的库存量:");scanf("%d", &s->workload);s->next = L->next;L->next = s;printf("插⼊成功!");}//统计商品的库存总量void SumSp(SP *L){int sum=0;SP *p=L->next;while(p!=NULL){sum+=p->workload;p=p->next;}printf("商品的库存总量为%d\n",sum);}//对每类商品的库存量进⾏排名void Sort(SP *L){SP *p,*q,*tail,*l;tail=NULL;while((L->next->next) != tail){p = L;q = L->next;while(q->next != tail){if((q->workload) > (q->next->workload)){p->next = q->next;q->next = q->next->next;p->next->next = q;q = p->next;}q = q->next;p = p->next;}tail = q;}printf("商品库存量从⼩到⼤结果如下:\n");l=L->next;while(l!=NULL){if(l->next!=NULL){printf("%s(%d)->",l->name,l->workload); l=l->next;242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293{ printf("%s(%d)",l->name,l->workload); l=l->next;}}}//输⼊商品库存的相关信息void Input(SP *p, int i){ printf("请输⼊第%d 个商品的商品编号:", i + 1);scanf("%s", p->no);printf("请输⼊第%d 个商品的名称:", i + 1); scanf("%s", p->name); printf("请输⼊第%d 个商品的库存量:", i + 1); scanf("%d", &p->workload);}//商品库存管理系统的菜单void Menu(){ printf("\n\n"); printf("\t\t\t===================商品库存管理系统======================\n"); printf("\t\t\t* 作者:XXX 班级:XXXXXXXXXXX 学号:XXXXXXXXXX *\n"); printf("\t\t\t* *\n");printf("\t\t\t* 1>. 录⼊商品库存信息 *\n"); printf("\t\t\t* 2>. 查找某个商品的库存量 *\n"); printf("\t\t\t* 3>. 修改某个商品的库存量 *\n");printf("\t\t\t* 4>. 删除某个商品库存相关信息 *\n");printf("\t\t\t* 5>. 插⼊某个商品的相关信息 *\n");printf("\t\t\t* 6>. 统计商品的库存总量 *\n"); printf("\t\t\t* 7>. 对每类商品的库存量排名 *\n"); printf("\t\t\t* 0>. 退出管理系统 *\n"); printf("\t\t\t* 欢迎使⽤本系统!*\n");printf("\t\t\t========================================================\n");printf("\t\t\t 输⼊选项,按回车进⼊选项: \n");}部分运⾏结果截图以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
C语言商品库存管理系统

建议使用VS打开运行#pragma once#include<>typedef struct information "void menu(inf*head) av") , NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);system("color 3B");printf("\t\t***************************************** ************\n");printf("\t\t\t\t欢迎进入商品库存管理系统\n");printf("\t\t***************************************** ************\n");printf("\n");printf("\t\t|======================================== ============|\n");printf("\t\t|______________________基本信息______________________|\n");printf("\t\t| 1.商品信息录入| 2.添加商品信息|\n");printf("\t\t| 3.查找商品信息| 4.修改商品信息|\n");printf("\t\t| 5.删除商品信息| 6.保存文件信息|\n");printf("\t\t| 7.读取文件信息| 8.显示商品信息|\n");printf("\t\t| 9.按价格从高到低进行排序 |\n");printf("\t\t|_________________0.释放链表。
数据结构课程设计_C语言_库存管理系统_源代码

void change(linklist *l);
void write_file(linklist *l);
linklist* read_file(linklist *l);
int main(void)//主函数
{
int y;
}
else
{
printf("%10s %10s %10s %10s %10s\n","编号","名称","品牌","价格","数量");
printf("%10d %10s %10s %10d %10d\n",p->data.j,p->,p->data.pai,p->data.price,p->data.number);
p=p->next;
j++;
}
}
}
int StrCmp(char na[],char name[],int y)
{
int i =0;
int n=0;
while(na[i])
printf(" * ======================================================= * \n");
printf(" * 1. 读 取 记 录 * \n");
printf(" * 6. 更 改 记 录 * \n");
printf(" * 0. 退 出 系 统 * \n");
c语言库存管理系统课程设计

c语言库存管理系统课程设计一、课程目标知识目标:1. 学生能掌握C语言的基本语法和结构,理解库存管理系统的基本概念;2. 学生能理解并运用数组、函数、指针等C语言特性实现库存管理功能;3. 学生能了解文件操作在库存管理系统中的应用,实现数据的存储和读取。
技能目标:1. 学生能运用C语言编写出具有基本库存管理功能的程序,包括商品信息的增加、删除、修改和查询;2. 学生能通过调试和优化程序,提高库存管理系统的稳定性和效率;3. 学生能运用所学知识解决实际问题,具备一定的编程实践能力。
情感态度价值观目标:1. 学生通过学习C语言库存管理系统,培养对计算机编程的兴趣和热情;2. 学生在编程实践中,培养解决问题的能力和团队协作精神;3. 学生认识到编程在生活中的广泛应用,增强对信息技术的认识和责任感。
课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握C语言在库存管理系统中的应用。
学生特点:学生具备一定的C语言基础,对编程有一定兴趣,但实践经验不足。
教学要求:教师需注重理论与实践相结合,引导学生通过实际操作,掌握课程内容,提高编程能力。
同时,关注学生的情感态度,激发学生的学习兴趣和积极性。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. C语言基础回顾:数据类型、运算符、控制结构(第二章)- 复习C语言基础知识,重点掌握基本数据类型、运算符及控制结构。
2. 函数与数组:函数的定义与调用、数组的定义与应用(第三章、第四章)- 学习如何使用函数实现模块化编程,理解数组在存储批量数据中的应用。
3. 指针与字符串:指针的概念与操作、字符串处理(第五章、第六章)- 掌握指针的基本概念和操作,学习字符串处理方法,为库存管理系统开发打下基础。
4. 文件操作:文件的打开、读写、关闭(第七章)- 学习文件操作相关知识,实现库存数据的存储和读取。
5. 库存管理系统设计与实现- 分析库存管理系统的功能需求,设计系统模块;- 实现商品信息的增加、删除、修改和查询等功能;- 学习调试和优化程序,提高系统稳定性。
仓库管理系统(c语言)

仓库管理系统(c语言)仓库管理系统文档1·引言仓库管理系统是一种用于管理仓库库存、入库和出库等操作的软件系统。
本文档旨在描述仓库管理系统的设计与实现细节,以便开发人员进行开发和维护。
2·系统概述2·1 目标仓库管理系统的目标是提供一个高效、准确的仓库管理解决方案,以确保库存的可视化和及时管理。
2·2 功能仓库管理系统具备以下主要功能:●商品管理:包括商品信息的添加、编辑和删除。
●入库管理:包括商品入库记录的增加、查询和修改。
●出库管理:包括商品出库记录的增加、查询和修改。
●库存管理:包括库存数量的计算和更新。
●报表管理:包括出入库报表和库存报表。
3·系统设计3·1 数据库设计仓库管理系统的数据由以下表格组成:●商品表:包括商品ID、名称、价格等字段。
●入库记录表:包括记录ID、商品ID、入库数量、入库日期等字段。
●出库记录表:包括记录ID、商品ID、出库数量、出库日期等字段。
3·2 模块设计3·2·1 商品管理模块●添加商品:管理员可以添加新的商品到系统中,并输入商品的相关信息。
●编辑商品:管理员可以编辑已有的商品信息,包括商品名称、价格等。
●删除商品:管理员可以删除已有的商品信息。
3·2·2 入库管理模块●添加入库记录:管理员可以添加新的入库记录,包括选择商品、输入入库数量等。
●查询入库记录:管理员可以查询已有的入库记录,以便查看入库历史。
●修改入库记录:管理员可以修改已有的入库记录,包括修改入库数量、入库日期等。
3·2·3 出库管理模块●添加出库记录:管理员可以添加新的出库记录,包括选择商品、输入出库数量等。
●查询出库记录:管理员可以查询已有的出库记录,以便查看出库历史。
●修改出库记录:管理员可以修改已有的出库记录,包括修改出库数量、出库日期等。
3·2·4 库存管理模块●计算库存数量:根据入库和出库记录,系统可以计算当前商品的库存数量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
沈阳商品航天大学北方科技学院课程设计任务书课程设计题目库存管理程序设计教研室计算机教研室专业班级学号课程设计时间: 年月日至年月日课程设计的内容及要求:主要内容设计一个程序管理库存商品,主要实现的功能如下:1、添加、修改、删除库存商品信息,商品信息包括:编号、名称、类别、数量、产地等;2、进货或售出商品后,相应的库存商品数量应该有所改变;3、当某种商品库存少于一定数量时,应该提醒进货;4、可以按商品名称模糊查询商品信息。
基本要求1、系统采用C程序设计语言实现;2、独立完成系统的设计、编码和调试,通过指导教师当场验收;3、交出完整的课程设计报告。
指导教师史俊年月日沈阳商品航天大学北方科技学院课程设计成绩评定单课程名称C语言综合训练课程设计题目库存管理程序设计专业班级学号答辩日期年月日指导教师(答辩组)评语:课程设计成绩指导教师(答辩组)签字年月日库存管理程序设计目录摘要 (5)1.绪论 (5)2. 系统分析 (6)2.1功能需求 (6)2.2数据需求 (6)2.3性能需求 (6)3. 总体设计 (6)3.1功能模块设计 (6)3.2系统设计方案 (7)4. 详细设计 (9)4.1商品信息管理模块 (9)4.2商品查询管理模块 (13)5. 调试与测试 (14)5.1调试 (14)5.2测试 (14)6. 结论 (15)结束语 (15)参考文献 (16)附录1-用户手册 (17)附录2-源程序 (18)摘要库存管理系统是厂家、商城、商场等的管理商品信息不可缺少的部分,利用这个系统,可以更好地管理商品的信息。
本系统使用C语言开发,实现商品信息库的新建,查询商品信息,修改商品信息,可对商品的出售进货有数量的变化,当数量不足时做提醒。
本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。
关键词:库存;商品信息;数量变化;1.绪论随着时代的进步,社会的发展,人们的生活水平逐渐提高,平时购物的种类越来越多,商场出售商品的种类也越来越多,各种商品的库存量在每天的销售与进货过程中会发生不断的变化,管理起来也越来越繁琐。
发库存管理系统,可使管理商品信息变得更加简单,节省人力物力,降低成本。
库存管理系统,能实现商场对商品的添加,查询,修改,删除等功能,对商品的数量进行管理,满足商场的需求。
随着社会的发展,社会生活水平不断提高,外出出行的人们也越来越多,伴随而来的是民航部门对商品管理和订票业务更加繁重的问题。
开发商品售票管理系统,使得国家民航部门对出行人员的信息和商品的管理问题得到了改善。
商品售票管理程序,能实现民航部门对商品信息的添加、查找、修改和删除等功能,方便了民航部门的管理,满足了民航部门的需求。
根据课程设计任务书要求,本系统开发主要完成以下功能和性能。
1、添加、修改、删除库存商品信息,商品信息包括:编号、名称、类别、数量、产地等;2、进货或售出商品后,相应的库存商品数量应该有所改变;3、当某种商品库存少于一定数量时,应该提醒进货;4、可以按商品名称模糊查询商品信息2. 系统分析2.1 功能需求本系统主要是库存商品进行管理的系统。
该系统需要有添加,删除商品信息,查询商品信息,货少提醒等。
2.2数据需求需要管理的商品信息包括:商品号、商品名称、商品类别、数量和产地。
2.3 性能需求安全性:本系统在设计,开发,运行各环节,都贯彻了安全性的原则。
可靠性:遵循安全性原理,来提高本系统的可靠性。
稳定性:本系统根据需要可以定义全局变量,可以使用结构体以及链表,来确保本系统的稳定性。
响应速度;本系统因应用了链表,理论上可以提高查找的速度,整体的响应速度也会得到了提升。
3. 总体设计3.1功能模块设计根据分析整个系统主要划分为4个模块,分别执行对于功能。
商品信息管理实现商品编号、名称、类别、数量、产地等的查询、添加、修改、删除等功能。
出售和进货管理可对商品在商品有数量变化时,对应变化,当商品数量少于一定数量时,提醒数量不够。
功能模块图如图1所示。
库存管理系统商品信息管理进货出售管理商品信息查询商品信息添加商品信息删除商品信息修改图1功能模块图(1)商品信息管理子模块该模块是对商品编号、名称、类别、数量、产地等信息的增加、删除和修改。
(2)出售进货管理子模块该模块是对商品的出售进货时,数量的随之变化,当数量少于一定数值时,提醒数量不足。
3.2系统设计方案(1) 数据结构设计typedef struct per{char id[10], 定义编号name[10], 定义商品名称leibie[10], 定义商品类别chandi[10]; 定义商品产地int num; 定义商品数量struct per *next;} per;(2)菜单设计本系统中的菜单有以下几种:。
1. 一级菜单:即主菜单。
其中包括:1.新建;2.查询;3.修删;4.售出或进货;5.退出。
2.二级菜单a:新建菜单:包括:1、新建信息库;2、添加商品;3、返回。
b:查询菜单:包括:1、查看信息库;2、查找商品号;3、返回。
c:修删菜单:包括:1、修改商品信息;2、删除商品信息;3返回。
d:售出或进货菜单:包括1、售出;2、进货;3、返回。
(3) 函数设计void menu(); 主菜单void xinjian_menu(); 新建菜单void chaozhao_menu(); 查找菜单void xiugai_menu(); 修删菜单per *cj(); 新建信息库void print(per *head); 输出商品信息void chazhao(per * head); 查找商品信息per *sc(per *head); 删除商品信息per *charu(per *head); 添加商品信息per *xiugai(per *head); 修改商品信息per *dp(per *head); 售出或进货4. 详细设计4.1商品信息管理模块(1)添加商品模块先建立商品信息,定义整型变量i和n以及指针变量p1和p2,在开辟新的结点,使结点为空,输入商品编号,执行n++,当p1->number不为0时,继续往下输入商品信息否则p2->next=p1。
继续执行p2=p1,p2->next=null。
返回后可继续此输入,可循环重复,否则回到主函数。
具体实现程序流程如图2。
Y图2 商品信息添加流程图(2)删除商品模块定义整型变量i,指针变量p1和p2,输入商品号i,判断是否有此商品((i, p1->id) != 0 && p1->next != NULL),如果有,将p2 = p1;p1 = p1->next,在匹配与输入相同的商品,使(i, p1->id) == 0,则删除成功回到主函数。
具体实现程序流程如图3图3 商品信息删除流程图(3)修改商品模块定义字符型变量na、整型变量na1、指针变量p1,使p1=head,如果!Head 则信息库为空,否则输入要修改的商品,如果!P1则商品不存在,否则进入后不修改,按‘-’返回,否则继续输入商品信息然后可按‘-’号结束,返回目录。
具体实现程序流程如图4图4 商品信息修改流程图4.2商品查询管理模块建立输出函数,定义指针p,p1,p1=head。
当head等于空,输出“该信息库为空!!!”,返回主函数。
当head不等于空,输出信息库信息,再判断p->num<3,如果是则输出“数量太少请进货”返回主函数。
具体实现程序流程如图3。
图5商品查询流程图5. 调试与测试5.1 调试调试是系统开发的一个重要的步骤。
调试可分为2个步骤,先是运行编写好程序找到问题,然后再解决并改正问题。
本系统在调试时,发现在判断商品数量提醒时,有时出现错误,在反复查找后发现,在前面没有判断该商品是否存在,在改正后,程序正确运行。
5.2 测试系统测试是系统开发的一个重要阶段,是系统保证质量的关键。
如果在测试中不认真检查,在后期维护过程中将会非常麻烦。
本系统测试数据过程如下。
先进入运行程序输入“1”,进入新建菜单,再输入“1”进入新建信息库。
请输入用第个1商品信息:商品号:1商品名称:三星商品类别:电子产品数量:2产地:是否继续输入:(1)是(2)否输入“2”。
返回到主函数。
输入“2”,进入查看菜单。
再输入“1”,进入查看信息库,屏幕输出1 三星电子产品2 1沈阳数量太少请进货返回到主菜单。
输入“4”,进入售出或进货菜单。
输入“2”,按提示输入商品号“1”,按提示依次输入数量:5屏幕输出进货成功!!!返回到主菜单。
输入“2”,进入查看菜单。
再输入“1”,进入查看信息库,屏幕输出1 三星电子产品2 1沈阳返回到主菜单。
输入“5”,进入退出程序。
屏幕输出BYE BYE!!!退出程序。
多次运行程序后,发现各个菜单功能都可执行,在输入错误商品号时,给出该商品不存在的提示,因此,该程序无错误可正确执行。
6. 结论本次课程设计,根据任务书要求,实现了添加、修改、删除库存商品信息,商品信息包括:编号、名称、类别、数量、产地等,进货或售出商品后,相应的库存商品数量应该有所改变,当某种商品库存少于一定数量时,应该提醒进货,可以按商品名称查询商品信息,可满足商场对系统的需求。
但有部分功能还不太完善,如只可新建一次信息库,再次创建时,会将上个信息库覆盖,且不能保存数据。
结束语通过这次的课程设计实验,让我了解了我的一些方面的不足,也提高了我的学习能力,在通过查找资料来完成实验时,使我的知识更加的丰富,培养了我的学习兴趣。
今后我要更加努力来学习。
参考文献[1] 严蔚敏,吴伟国.数据结构(C语言版).:清华大学出版社,2002.9[2]潭浩强.C语言程序设计(第三版).:清华大学出版社,2005附录1-用户手册(1)首先打开程序,初始页面,如图6。
图6 登录界面输入“1”进入新建菜单,如图7。
图7 新建页面主界面中输入“2”进入查询界面,如图8图8 查询页面主界面中输入“3”进入订票页面,如图9图9 修改或删除页面主界面中输入“4”进入订票页面,如图10图10 进货或出售页面附录2-源程序主要模块源代码清单:#include <stdio.h>#include <string.h>#include <malloc.h>#define LEN sizeof(struct per)#define PRESS_ANYKEY P("请输入任意键继续……");getchar();getchar();#define P printftypedef struct per{char id[10], name[10], leibie[10], chandi[10];int num;struct per *next;} per;void menu();void xinjian_menu();void chaozhao_menu();void xiugai_menu();void shou_menu();void print(per *head);void chazhao(per * head);per *dp(per *head);per *cj();per *sc(per *head);per *charu(per *head);per *xiugai(per *head);void menu(){P("\t\t***************************************\n");P("\t\t* 库存信息管理系统*\n");P("\t\t* 1、新建*\n");P("\t\t* 2、查询*\n");P("\t\t* 3、修删*\n");P("\t\t* 4、售出或进货*\n");P("\t\t* 5、退出*\n");P("\t\t***************************************\n");}void xinjian_menu(){P("\t\t<<<<<<<<<<<<<<新建>>>>>>>>>>>>>>>\n");P("\t\t 1、新建信息库\n");P("\t\t 2、添加商品\n");P("\t\t 3、返回\n");P("\t\t<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>\n"); }void chazhao_menu(){P("\t\t<<<<<<<<<<<<<<查看>>>>>>>>>>>>>>>\n");P("\t\t 1、查看信息库\n");P("\t\t 2、查找商品号\n");P("\t\t 3、返回\n");P("\t\t<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>\n"); }void xiugai_menu(){P("\t\t<<<<<<<<<<<<修改或删除>>>>>>>>>>>>\n");P("\t\t 1、修改商品信息\n");P("\t\t 2、删除商品信息\n");P("\t\t 3、返回\n");P("\t\t<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>\n"); }void shou_menu(){P("\t\t<<<<<<<<<<<<进货或出售>>>>>>>>>>>>\n");P("\t\t 1、出售\n");P("\t\t 2、进货\n");P("\t\t 3、返回\n");P("\t\t<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>\n"); }void main(){per *head = NULL;per *link = head;register int i;do{menu();P("请输入序号:");scanf("%d", &i);switch (i){case 1:xinjian_menu();P("请输入序号:");scanf("%d", &i);switch (i){case 1:link = cj();continue;case 2:link = charu(link);print(link); PRESS_ANYKEYcontinue;case 3:break;}continue;case 2:chazhao_menu();P("请输入序号:");scanf("%d", &i);switch (i){case 1:print(link);PRESS_ANYKEYcontinue;case 2:chazhao(link);case 3:break;}continue;case 3:xiugai_menu();P("请输入产品编号:");scanf("%d", &i);switch (i){case 1:link = xiugai(link);print(link); PRESS_ANYKEYcontinue;case 2:link = sc(link);print(link);continue;case 3:break;}continue;case 4:link = dp(link);continue;case 5:P("BYE BYE!\n");PRESS_ANYKEY}break;} while (1);}per *cj(){int i, n = 0;per *head = NULL;per *p1 = head, *p2 = head;do{p1 = (per *)malloc(sizeof(per));P("请输入用第个%d商品信息\n", ++n);P("商品号:");scanf("%s", &p1->id);if (!strcmp(p1->id, "0"))break;P("商品名称:");scanf("%s", &p1->name);P("商品类别:");scanf("%s", &p1->leibie);P("数量:");scanf("%d", &p1->num);P("产地:");scanf("%s", &p1->chandi);if (n == 1)head = p1;elsep2->next = p1;p2 = p1;p2->next = NULL;printf("是否继续输入:(1)是(2)否\n");scanf("%d", &i);} while (i == 1);return head;}per *charu(per *head){per *p0, *p1;p1 = head;p0 = (per *)malloc(sizeof(per));p0->next = NULL;P("商品号:");scanf("%s", &p0->id);P("商品名称:");scanf("%s", &p0->name);P("商品类别:");scanf("%s", &p0->leibie);P("数量:");scanf("%d", &p0->num);P("产地:");scanf("%s", &p0->chandi);if (!head){head = p0;return head;}while (p1->next)p1 = p1->next;p1->next = p0;return head;}void print(per *head){per *p;p = head;if (!head){P("\t\t该信息库为空!!!\n");return;}P("编号\t名称\t类别\t数量\t产地\t提醒\n");while (p){P("%s\t%s\t%s\t%d\t%s\t", p->id, p->name, p->leibie, p->num, p->chandi);if (p->num < 3)P("数量太少请进货\n");elseP("\n");p = p->next;}}void chazhao(per * head){char j[5];per *p1;p1 = head;P("请输入要查询的名称:");scanf("%s", &j);if (p1 != NULL){while (p1){if (strcmp(j, p1->name) == 0){P("%s\t%s\t%s\t%d\t%s\t\n", p1->id, p1->name, p1->leibie, p1->num, p1->chandi);}p1 = p1->next;}}P("编号\t名称\t类别\t数量\t产地\n"); }per *xiugai(per *head){char na[5];int na1;per *p1;p1 = head;if (!head){P("\t\t该信息库为空!!!\n");return head;}P("请输入要修改商品号:");scanf("%s", &na);P("(如果不修改,请输入“-”)\n");while (p1){if (!strcmp(na, p1->id))break;p1 = p1->next;}if (!p1){P("\t\t此商品不存在!!!\n");return head;}P("商品名称:");scanf("%s", &na);if (strcmp(na, "-"))strcpy(p1->name, na);P("商品类别:");scanf("%s", &na);if (strcmp(na, "-"))strcpy(p1->leibie, na);P("数量:");scanf("%d", &na1);if (strcmp(na, "-"))p1->num=na1;P("产地:");scanf("%s", &na);if (strcmp(na, "-"))strcpy(p1->chandi, na);return head;}per *sc(per *head){char i[5];per *p1, *p2;p1 = p2 = head;if (head == NULL){P("\t\t该信息库为空!!!\n");return(head);}P("请输入要删除序号:");scanf("%s", i);while (1){p1 = head;while (strcmp(i, p1->id) != 0 && p1->next != NULL){p2 = p1;p1 = p1->next;}if (strcmp(i, p1->id) == 0){if (p1 == head)head = p1->next;else p2->next = p1->next; P("\t\t删除成功!!!\n"); PRESS_ANYKEY;}else P("\t\t此产品不存在!!!\n"); break;}return(head);}per *dp(per *head){char na[5];int yu1, i;per *p1;p1 = head;shou_menu();P("请输入序号:");scanf("%d", &i);switch (i){case 1:{if (!head){P("\t\t该信息库为空!!!\n");return NULL;}P("请输入要定的商品号:");scanf("%s", &na);while (p1){if (!strcmp(na, p1->id))break;p1 = p1->next;}if (!p1){P("\t\t此商品不存在!!!\n");return head;}P("请输入要售出商品数量:");scanf("%d", &yu1);.if (yu1 <= 0){P("输入数量有误");}else if (p1->num >= yu1){p1->num = p1->num - yu1;P("\t\t出售成功!!!\n");}else{P("商品数量不足");}return head;}case 2:{if (!head){P("\t\t该信息库为空!!!\n");return NULL;}P("请输入要定的商品号:");scanf("%s", &na);while (p1){if (!strcmp(na, p1->id))break;p1 = p1->next;}if (!p1).{P("\t\t此商品不存在!!!\n");return head;}P("请输入要进货商品数量:");scanf("%d", &yu1);if (yu1 <= 0){P("输入数量有误");}else{p1->num = p1->num + yu1;P("\t\t进货成功!!!\n");}return head;}}}完成日期:2015年4月21日。