C语言库存管理系统
- 格式:docx
- 大小:84.45 KB
- 文档页数:27
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语言编程的基本概念和方法,为今后的计算机科学学习和软件开发打下坚实基础。
五、教学评估为了全面、客观地评估学生的学习成果,我们将采用多种评估方式相结合的方法。
建议使用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.释放链表。
作品名称开发者:一、系统背景:本软件能减轻对货物数目管理及价格盈亏等信息处理的工作量以便能快捷及时准确的调整货物的仓储量达到最合理化。
可以使店主不失效率的节省大量精力用于其他方面符合当今社会的商业形式而且本软件体积小操作简单是管理仓库的不二选择二、系统简介:设计亮点:◆三级菜单使操作更简便明了◆密码操作能有效保证客户信息的安全性◆独特的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("按任意键继续。
第1章系统分析与设计1.1 系统分析1.1.1解决问题运用现代信息化和智能化的管理方式,解决商品库存信息在日常生活中易于丢失、遗忘,不易保存、管理的问题,从而使企业和商家能够更全面,更直观地了解到商品库存信息。
1.1.2软件功能将商品库存信息进行入库、出库、查询、修改、盘点、排序等操作,更直观反映商品库存信息。
1.2 系统设计1.2.1系统设计思路以简便快捷和人性化为最终目标,力求最简单有效地管理商品库存信息。
1.2.2系统功能划分通过对数据的不同处理方式,将系统分成了商品入库、商品出库、查询商品、修改商品、日盘点、出库排序六大类,在查询商品中又包含了关键字(选项)查询,在出库排序中又包含升降排序等功能。
1.2.3功能结构图图0第2章详细设计与编码2.1详细设计2.1.1主要函数算法设计图1.1.2流程图1.主函数:main函数函数原型:void main()功能是输出一个欢迎界面,并调用函数,提供1-7个功能选项。
图22.分函数(1)商品入库:input函数原型:void input()图32)商品出库:output函数原型:void output()功能是商品出库(减少库存商品数量)图4(3)查询商品find函数原型:void find()void find_1()void find_2()void find_3()三种方式查询图51,.按名称查询图6 2. 按代码查询图73.按生产商查询图84.修改商品change()函数原型:void change()图96,出库排序图102.2系统编码#include "stdio.h"#include "string.h"#include<stdlib.h>#define N 80 /*最大容量限定*/struct a /*商品库内结构体*/{char name[10];int numb;char boss[6];int date ;int count;int price;int chu;int ru;}goods[1];struct a product[N]={{"ac",1,"AC",1,15,5,0,0},{"bd",2,"BD",2,10,20,0,0}}; int num=2;void read(){FILE*fp;int i;system("cls");fp=fopen("text.txt","r+");if(fp==NULL){printf("不能打开文件!\n");exit(0);}i=0;while(!feof(fp)){ if(fread(&product[i],sizeof( struct a),1,fp)==1)i++;} num=i;fclose(fp);}void save()/*保存商品的信息*/{FILE*fp;int i;if((fp=fopen("text.txt","w"))==NULL){printf("cannot open file");return;}for(i=0;i<num;i++){if(fwrite(&product[i],sizeof(struct a),1,fp)!=1) printf("file write error\n");}system("cls");/*清屏*///printf("商品已保存!\n");//getch();fclose(fp);}void input(){ char a[10],g;int m,i;printf("输入商品名称:");scanf("%s",a);for(i=0;i<num;i++){ if(strcmp(product[i].name,a)==0){printf("请输入商品数量:");scanf("%d",&m);product[i].count=product[i].count+m;printf("入库后该商品的数量:");printf("%d",product[i].count);printf("该商品入库量:");product[i].ru=m;printf("%d",product[i].ru);getch();break;}}if(i>=num){printf("库存中无此商品!\n");printf("请输入商品名称:");scanf("%s",product[num].name);printf("请输入商品代码:");scanf("%d",&product[num].numb);printf("请输入商品生产商:");scanf("%s",product[num].boss);printf("请输入商品生产日期:");scanf("%d",&product[num].date);printf("请输入商品数量:");scanf("%d",&product[num].count);printf("请输入商品价格:");scanf("%d",&product[num].price);printf("请输入商品入库:");scanf("%d",&product[num].ru);printf("请输入商品出库:");scanf("%d",&product[num].chu);num++;save();}printf("是否还想入库商品??\n");printf("按y为继续添加,按n为不添加");scanf("\n%c",&g);if(g=='y'){input();getch();}}void output(){int k,i;char str[10],l;system("cls"); /*清屏*/printf("\n请输入要出库的商品名称:");scanf("%s",str);getchar();for(i=0;i<num;i++){if(strcmp(str,product[i].name)==0){printf("\n请输入出库商品数量:");scanf("%d",&k);if(k<=product[i].count){printf("\n剩余的库存商品数量:%d",product[i].count-k);product[i].count=product[i].count-k;printf("显示该库存商品的出库量:");product[i].chu=product[i].chu+k;printf("%d\n",product[i].chu);}else printf("库存数量不足\n");break;}}if(i>=num){printf("没有该商品!\r\n");}printf("是否还想出库商品??\n");printf("按y为继续出库,按n为不出库\n");l=getche();if(l=='y'){output();getch();}save();}void find_1(){char str[10];system("cls"); /*清屏*/printf("输入要找的商品的名称\n");scanf("%s",str);printf("名称\t 代码\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)if((strcmp(str,product[i].name))==0){ printf("%s\t %d\t %s\t %d %d\t %d\t%d\t %d\n",product[i].name,product[i ].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);break;getch();}while(i>=num)printf("没有该商品");printf("按回车键返回!");getch();}void find_2(){int i;int x;system("cls"); /*清屏*/printf("输入要找的商品的代码\n");scanf("%d",&x);printf("名称\t 代码\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)if(x==product[i].numb){ printf("%s\t %d\t %s\t %d %d\t %d\t%d\t %d\n",product[i].name,product[iproduct[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);break;getch();}while(i>=num)printf("没有该商品");printf("按回车键返回!");getch();}void find_3(){char a[6];int i;system("cls"); /*清屏*/printf("输入要找的商品的生产商\n");scanf("%s",a);printf("名称\t 代码\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)if((strcmp(a,product[i].boss))==0){ printf("%s\t %d\t %s\t %d %d\t %d\t%d\t %d\n",product[i].name,product[i ].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);break;getch();}while(i>=num)printf("没有该商品");printf("按回车键返回!");getch();}void find (){int j;getch();printf("查询商品,用商品名称查询请按1,用代码查询请按2,用商品生产商查询请按3");scanf("%d",&j);switch(j){ case 1:printf("按商品名称查询\n");find_1();break;case 2:printf("按代码查询\n");find_2();break;case 3:printf("按生产商查询\n");find_3();break;default:break;}}void change(){int i,k;char str[10];system("cls"); /*清屏*/printf("输入准备修改的商品名称:");scanf("%s",str);for(i=0;i<num;i++)if((strcmp(str,product[i].name))==0){printf("名称\t 代码\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n\n",product[i].name,p roduct[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);printf("是否修改名称<y/n>:\n");k=getche();if (k=='y'){printf("请输入新的名称:\n"); scanf("%s",product[i].name);}printf("是否修改代码<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的代码:\n"); scanf("%d",&product[i].numb);}printf("是否修改生产商<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的生产商:\n"); scanf("%s",product[i].boss);}printf("是否修改生产日期<y/n>:\n"); k=getche();if(k=='y'){printf("请输入新的生产日期:\n"); scanf("%d",&product[i].date);printf("是否修改数量<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的数量:\n"); scanf("%d",&product[i].count);}printf("是否修改价格<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的价格:\n");scanf("%d",&product[i].price);}printf("是否修改出库量<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的出库量:\n");scanf("%d",&product[i].chu);}printf("是否修改入库量<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的入库量:\n");scanf("%d",&product[i].ru);}}}}void display(){int i;system("cls"); /*清屏*/printf("\n\n名称\t 编号\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n",product[i].name,pro duct[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);for(i=0;i<num;i++){ printf("\n\n统计并输出商品(出库)的量\n");printf("名称\t 编号\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)if(product[i].chu>0){printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n",product[i].nam e,product[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);}printf("\n\n统计并输出商品(入库)的量\n");printf("名称\t 编号\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)if(product[i].ru>0){printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n",product[i].nam e,product[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);}}printf("按回车键返回!");getch();}void shun(){int i;int j;printf("名称\t 编号\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num-1;i++)for(j=0;j<num-1-i;j++)if(product[j].chu >product[j+1].chu ){goods[0]=product[j];product[j]=product[j+1];product[j+1]=goods[0];}for(i=0;i<num;i++)printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n",product[i].name,pro duct[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);printf("按回车键返回!");getch();}void dao(){int i;int j;printf("名称\t 编号\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num-1;i++)for(j=0;j<num-1-i;j++)if(product[j].chu <product[j+1].chu ){goods[0]=product[j];product[j]=product[j+1];product[j+1]=goods[0];}for(i=0;i<num;i++)printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n",product[i].name,pro duct[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);printf("按回车键返回!");getch();}void order(){char t;system("cls"); /*清屏*/printf("对于出库的数量,你想看升序请按1,按2为降序\n");printf("\t 请选择[1/2]:\n ");t=getch();switch(t){ case'1': shun();break;case'2': dao();break;default:break;}}void quit(){system("cls"); /*清屏*/printf("\n\n\n\t\t\t →※谢谢使用※←");printf("\n\n\n\n\n\n\t ◆◆◆^ v ^ ◆◆◆");printf("\n\n\n\t\t ★〓★〓★商品库存管理系统★〓★〓★");printf("\n\n\n\t\t\t\t\t→◆作者:电气121,陈志华");printf("\n\n\t\t\t\t\t◎◎◎◎◎2013年6月\n");printf("\n\n\n\t按回车键进入主菜单:"); /*界面*/getch();}void main(){char j;save();read();printf("\n\n\n\n\n\n\t ◆◆◆^ v ^ ◆◆◆"); printf("\n\n\n\t\t\t →※欢迎使用※←");printf("\n\n\n\t\t ★〓★〓★商品库存管理系统★〓★〓★");printf("\n\n\n\t\t\t\t\t→◆作者:电气121,陈志华");printf("\n\n\t\t\t\t\t◎◎◎◎◎2013年6月\n");printf("\n\n\n\t按回车键进入主菜单:"); /*界面*/getch();do{system("cls"); /*清屏*/printf("\n");printf("\t\t\t ************\n");printf("\t\t\t * 主菜单*\n"); /*主菜单*/printf("\t\t\t ************\n\n\n");printf("\t 1 商品入库 2 商品出库\n\n\n\n");printf("\t 3 查询商品7 退出系统 4 修改商品\n\n\n\n");printf("\t 5 日盘点 6 出库排序\n\n\n");printf("\n\n");printf("\t 请选择[1/2/3/4/5/6/7]: ");j=getch();switch(j){case '1': input(); break; /*返回主菜单*/case '2': output(); break;case '3': find(); break;case '4': change(); break;case '5': display(); break;case '6': order(); break;case '7': save();quit(); break;default: break;}}while(1);}3.3测试数据1.初始数据:名称代码生产商日期数量价格入库出库"ac" 1 "AC" 1 15 5 0 0"bd" 2 "BD" 2 10 20 0 02.新增加数据:“af” 4 ”AF” 1 100 5 100 0“ad” 3 ”AD” 6 34 9 34 03.出库商品:ad 10ac 5bd 2af 502.4运行结果1.开始界面:图112.主菜单:图123.商品入库:图13 继续入库:图14 继续入库图154.商品出库图16 继续出库图17继续出库图18 继续出库图195.查询商品:图20 查询商品图216.修改商品:图22 7.日盘点:图23 8.出库排序:图24 出库量升序排序图25出库量降序排序图26 9.退出系统:图27第3章用户手册. 1.用户首先进入欢迎界面,按回车键进入到主菜单中,然后输入功能选项所对应的数字进行操作。
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");}部分运⾏结果截图以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
建议使用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语言库存管理系统课程设计一、课程目标知识目标:1. 学生能掌握C语言的基本语法和结构,理解库存管理系统的基本概念;2. 学生能理解并运用数组、函数、指针等C语言特性实现库存管理功能;3. 学生能了解文件操作在库存管理系统中的应用,实现数据的存储和读取。
技能目标:1. 学生能运用C语言编写出具有基本库存管理功能的程序,包括商品信息的增加、删除、修改和查询;2. 学生能通过调试和优化程序,提高库存管理系统的稳定性和效率;3. 学生能运用所学知识解决实际问题,具备一定的编程实践能力。
情感态度价值观目标:1. 学生通过学习C语言库存管理系统,培养对计算机编程的兴趣和热情;2. 学生在编程实践中,培养解决问题的能力和团队协作精神;3. 学生认识到编程在生活中的广泛应用,增强对信息技术的认识和责任感。
课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握C语言在库存管理系统中的应用。
学生特点:学生具备一定的C语言基础,对编程有一定兴趣,但实践经验不足。
教学要求:教师需注重理论与实践相结合,引导学生通过实际操作,掌握课程内容,提高编程能力。
同时,关注学生的情感态度,激发学生的学习兴趣和积极性。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. C语言基础回顾:数据类型、运算符、控制结构(第二章)- 复习C语言基础知识,重点掌握基本数据类型、运算符及控制结构。
2. 函数与数组:函数的定义与调用、数组的定义与应用(第三章、第四章)- 学习如何使用函数实现模块化编程,理解数组在存储批量数据中的应用。
3. 指针与字符串:指针的概念与操作、字符串处理(第五章、第六章)- 掌握指针的基本概念和操作,学习字符串处理方法,为库存管理系统开发打下基础。
4. 文件操作:文件的打开、读写、关闭(第七章)- 学习文件操作相关知识,实现库存数据的存储和读取。
5. 库存管理系统设计与实现- 分析库存管理系统的功能需求,设计系统模块;- 实现商品信息的增加、删除、修改和查询等功能;- 学习调试和优化程序,提高系统稳定性。
仓库管理系统(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 库存管理模块●计算库存数量:根据入库和出库记录,系统可以计算当前商品的库存数量。
仓库管理系统(c语言)仓库管理系统范本1. 简介1.1 目的本文档旨在详细描述仓库管理系统的功能和特性,为开发人员和用户提供详尽的指导和参考。
1.2 范围本文档涵盖了仓库管理系统的各个方面,包括系统需求、系统设计、功能模块、数据库设计、用户界面等内容。
1.3 定义、缩写词汇表1.3.1 仓库管理系统(Warehouse Management System,WMS):指用于管理仓库内物流、库存和信息的软件系统。
2. 功能需求2.1 登录功能2.1.1 用户登录用户需要通过用户名和密码登录系统。
2.1.2 用户注册新用户需要填写个人信息进行注册。
2.2 主页功能2.2.1 仓库信息展示系统在主页上展示仓库的基本信息,包括名称、地址、联系方式等。
2.2.2 快速查询用户可以在主页上快速查询指定物品的库存情况。
2.3 库存管理功能2.3.1 入库管理用户可以将新物品入库,并记录相关信息,如物品名称、数量、批次等。
2.3.2 出库管理用户可以将库存物品进行出库,并记录相关信息,如物品名称、数量、出库人等。
2.3.3 库存查询用户可以通过指定条件查询仓库中的物品库存情况。
2.4 货物管理功能2.4.1 货物分类管理用户可以对仓库中的货物进行分类管理,实现更加有效的货物管理。
2.4.2 货物信息管理用户可以对货物的基本信息进行管理,包括名称、规格、单价等。
2.5 人员管理功能2.5.1 员工管理用户可以对仓库内的员工进行管理,包括添加新员工、编辑员工信息、删除员工等。
2.5.2 权限管理用户可以给予不同员工不同的权限,实现信息的安全管理。
3. 系统设计3.1 技术选型本系统采用C语言作为开发语言,使用MySQL作为后台数据库。
3.2 系统架构系统采用客户端-服务器架构,客户端通过与服务器进行交互实现功能。
4. 功能模块4.1 登录模块该模块实现用户登录和注册功能。
4.2 主页模块该模块实现主页信息展示和查询功能。
建议使用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语言仓库管理系统课程设计一、教学目标本节课的教学目标是让学生掌握C语言在仓库管理系统中的应用。
通过本节课的学习,学生应能理解仓库管理的基本概念,熟悉仓库管理系统的功能模块,并掌握C语言在实现仓库管理系统中的基本操作。
具体来说,知识目标包括:1.理解仓库管理的基本概念和原理。
2.掌握仓库管理系统的功能模块及其相互关系。
3.掌握C语言在实现仓库管理系统中的基本操作。
技能目标包括:1.能够使用C语言编写简单的仓库管理系统程序。
2.能够对仓库管理系统程序进行调试和优化。
3.能够分析仓库管理系统的性能并提出改进措施。
情感态度价值观目标包括:1.培养学生的团队协作能力和沟通能力。
2.培养学生的创新意识和问题解决能力。
3.培养学生的责任感和使命感,使他们在实际工作中能够认真负责地履行仓库管理职责。
二、教学内容本节课的教学内容主要包括以下几个部分:1.仓库管理的基本概念和原理:介绍仓库管理的定义、目的和重要性,以及仓库管理的基本原理和原则。
2.仓库管理系统的功能模块:介绍仓库管理系统的主要功能模块,如入库管理、出库管理、库存查询等,并解释各模块之间的相互关系。
3.C语言在仓库管理系统中的应用:介绍如何使用C语言编写仓库管理系统程序,包括各功能模块的实现方法和技巧。
三、教学方法为了提高学生的学习兴趣和主动性,本节课将采用多种教学方法相结合的方式进行教学。
包括:1.讲授法:教师讲解仓库管理的基本概念、原理和C语言编程基础知识。
2.案例分析法:分析实际仓库管理系统的案例,让学生了解仓库管理系统在实际中的应用。
3.实验法:让学生动手编写简单的仓库管理系统程序,培养学生的实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的C语言编程教材,为学生提供理论知识的学习。
2.参考书:提供相关的仓库管理书籍,帮助学生深入了解仓库管理知识。
3.多媒体资料:制作课件、演示文稿等多媒体资料,以图文并茂的形式展示仓库管理系统的基本概念和原理。
c 库存管理系统课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体和文件操作的知识点,能够运用这些知识点设计库存管理系统。
2. 让学生理解库存管理系统的基本概念,包括商品信息的存储、查询、修改和删除。
3. 使学生了解系统模块划分和功能实现,掌握系统整体设计思路。
技能目标:1. 培养学生运用C语言进行问题分析、程序设计和调试的能力。
2. 培养学生运用结构体和文件操作进行数据存储和管理的能力。
3. 培养学生具备独立设计和实现简单库存管理系统的能力。
情感态度价值观目标:1. 培养学生面对实际问题时,能够积极思考、主动探究和合作交流的态度。
2. 培养学生具备良好的编程习惯,注重代码规范性和可维护性。
3. 培养学生对计算机编程产生兴趣,激发他们继续深入学习的动力。
课程性质:本课程为实践性较强的课程,旨在培养学生运用C语言解决实际问题的能力。
学生特点:学生已经掌握了C语言的基础知识,具有一定的编程能力,但对结构体和文件操作的应用还不太熟悉。
教学要求:教师应注重引导学生将理论知识与实际应用相结合,鼓励学生积极参与课堂讨论和实践活动,培养他们独立解决问题的能力。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. C语言结构体的定义和使用,包括结构体的声明、初始化、访问成员变量等。
- 教材章节:第三章 结构体与联合2. 文件操作的基本概念和常用函数,如文件的打开、关闭、读写等。
- 教材章节:第五章 文件操作3. 库存管理系统需求分析,明确系统功能模块和需求。
- 系统模块划分:商品信息管理、库存管理、用户管理等。
4. 库存管理系统的详细设计,包括数据结构设计、功能模块实现等。
- 数据结构设计:结构体用于存储商品信息、库存信息等。
- 功能模块实现:商品信息的添加、查询、修改、删除等操作。
5. 系统测试与调试,包括单元测试、集成测试和系统测试。
- 教材章节:第七章 程序调试与测试教学安排和进度:第一周:回顾C语言基础知识,学习结构体的定义和使用。
c语言仓库管理系统 课程设计一、课程目标知识目标:1. 理解仓库管理系统的基本概念,掌握C语言实现数据存储、读取、修改和删除等基本功能;2. 学会运用结构体、文件操作等C语言知识模块,实现仓库管理系统的设计与开发;3. 掌握C语言中数组、字符串、指针等在仓库管理系统中的应用。
技能目标:1. 能够运用结构体对仓库中的商品信息进行合理组织;2. 熟练运用文件操作,实现商品信息的存储与读取;3. 学会编写C语言程序,实现对商品信息的增删改查功能;4. 能够运用调试工具,对程序进行调试与优化。
情感态度价值观目标:1. 培养学生的编程兴趣,激发他们学习C语言的积极性;2. 培养学生的团队合作意识,提高他们在项目开发过程中的沟通与协作能力;3. 培养学生严谨、细心的编程习惯,提高他们分析问题和解决问题的能力。
本课程针对高年级学生,已具备一定C语言基础,旨在通过仓库管理系统这一实际项目,让学生巩固和运用所学知识,提高编程实践能力。
课程要求学生在理解基本概念的基础上,注重实践操作,培养解决实际问题的能力,同时注重培养团队协作和沟通能力,提高学生的综合素质。
通过本课程的学习,学生将能够独立完成一个简单的仓库管理系统,为后续深入学习C语言及软件开发打下坚实基础。
二、教学内容1. 仓库管理系统概述:介绍仓库管理系统的基本功能、应用场景和发展前景,帮助学生了解课程背景。
教材章节:第一章 仓库管理系统概述2. C语言基础知识回顾:复习结构体、数组、字符串、指针等基本概念,为后续课程打下基础。
教材章节:第二章 C语言基础知识回顾3. 文件操作:讲解文件操作的基本方法,包括文件的打开、读取、写入和关闭等,为仓库管理系统中的数据存储提供技术支持。
教材章节:第三章 文件操作4. 仓库管理系统功能设计:分析系统需求,设计商品信息管理、库存管理、用户管理等模块。
教材章节:第四章 仓库管理系统功能设计5. C语言实现仓库管理系统:按照功能模块,运用C语言编写程序代码,实现仓库管理系统的各项功能。
c语言课程设计库存管理系统一、教学目标本课程的教学目标是使学生掌握C语言的基本语法和编程技巧,具备使用C语言进行程序设计的能力,并能够运用C语言实现一个简单的库存管理系统。
1.理解C语言的基本数据类型、运算符和表达式。
2.掌握C语言的控制结构,包括条件语句和循环语句。
3.熟悉C语言的函数定义和调用。
4.理解指针的概念和应用。
5.掌握结构体的定义和使用。
6.能够使用C语言编写简单的程序,实现输入输出、数据处理等功能。
7.能够运用C语言的编程技巧解决实际问题。
8.能够使用C语言实现一个简单的库存管理系统,包括数据结构的定义、数据的增删改查等操作。
情感态度价值观目标:1.培养学生的编程兴趣,提高学生主动学习和解决问题的能力。
2.培养学生团队合作的精神,学会与他人交流和分享。
3.培养学生的创新意识,鼓励学生进行创新设计和实践。
二、教学内容本课程的教学内容主要包括C语言的基本语法、编程技巧和库存管理系统的设计与实现。
1.C语言的基本语法:包括数据类型、运算符、表达式、控制结构等。
2.C语言的函数:包括函数的定义、声明和调用,以及函数的参数传递和返回值。
3.指针:指针的概念、指针的运算、指针与数组、指针与函数等。
4.结构体:结构体的定义、使用和指针操作结构体。
5.库存管理系统的设计与实现:包括数据结构的定义、数据的增删改查操作、文件的读写等。
本课程采用多种教学方法,包括讲授法、案例分析法、实验法和讨论法等。
1.讲授法:通过教师的讲解,使学生掌握C语言的基本语法和编程技巧。
2.案例分析法:通过分析实际案例,使学生理解和掌握C语言的应用。
3.实验法:通过上机实验,使学生动手实践,培养学生的编程能力和解决问题的能力。
4.讨论法:通过小组讨论,促进学生之间的交流和合作,培养学生的团队合作精神。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。
1.教材:选择一本适合学生水平的C语言教材,作为主要的学习资源。
c语言库存管理系统课程设计一、教学目标本课程的教学目标是使学生掌握C语言在库存管理方面的应用。
通过本课程的学习,学生将能够:1.知识目标:理解C语言的基本语法和数据结构;掌握库存管理的基本概念和原理。
2.技能目标:能够使用C语言编写简单的库存管理程序;能够分析并解决库存管理中的实际问题。
3.情感态度价值观目标:培养学生的编程兴趣和主动学习的态度;使学生认识到C语言在现代社会中的重要作用。
二、教学内容本课程的教学内容分为两部分:C语言基础和库存管理。
1.C语言基础:主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等。
2.库存管理:主要包括库存管理的基本概念、库存分类、库存控制方法等。
三、教学方法本课程采用多种教学方法,包括讲授法、案例分析法、实验法等。
1.讲授法:用于讲解C语言的基本语法和库存管理的基本概念。
2.案例分析法:通过分析实际案例,使学生掌握库存管理的方法和技巧。
3.实验法:通过编写和运行C语言程序,使学生加深对C语言和库存管理知识的理解。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用《C语言程序设计》和《库存管理》作为主要教材。
2.参考书:提供《C语言编程指南》等参考书,供学生自主学习。
3.多媒体资料:制作课件和教学视频,丰富教学手段。
4.实验设备:提供计算机实验室,供学生进行编程实验。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和理解程度。
2.作业:布置编程作业,评估学生的编程能力和应用能力。
3.考试:进行期中和期末考试,评估学生对C语言和库存管理知识的掌握程度。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节安排教学内容,确保学生逐步掌握C语言和库存管理知识。
2.教学时间:安排每周两次课,每次课2小时,确保学生有足够的时间学习和实践。
C语言仓库管理系统题目是:设计一个简单的仓储管理系统,要求具有基本的操作功能:插入(添加)、删除、查找、修改和统计。
业务简介1.采购人员将采购物资清单交与财务人员,其中包含一些必要的数据.财务人员据此作帐,将数据记入,并开一张票据,交与采购人员实现物资入库.2.当有物资卖出时,即物资出库,财务人员会查阅目前此类货物的库存情况,如此类货物还有存量,且有不同的出价时,财务人员会根据情况,调出相应价的货物.由于市场行情时常波动,管理人员可能会据此对物资做出相应的调价.3.当货物出现问题,需要退给供货商,并把退还的货物名,数量,金额,记录下来.4.到一定时期的时候,例如月底,年终,需要将各种物资的出入库,库存金额整理出来,以便为管理人员提供详尽,可靠的数据,为下一步制定目标方案提供依据.2、1数据结构用4个结构数组(或链表)来存储下述4类信息,每类信息的每条记录用结构类型自定义:1.商品信息:商品编号、商品名、型号/规格、数量、进货价、销售价2.入库信息:入库编号、商品编号、入库商品名、入库数量、入库价格、总价3.出库信息:出库编号、商品编号、出库商品名、出库数量、出库价格、总价4.退货信息:退货编号、商品编号、退还货物名、退货数量、退货价格、总价2、2 设计要求5. 对以上每类信息建立数据结构6. 对以上每类信息进行插入操作7. 对以上每类信息进行删除操作8. 对以上每类信息进行修改操作9. 对以上每类信息进行查找操作(查找关键字用下划线标出)10. 数据统计;i. 统计入库商品的总数及总价:ii. 统计出库商品的总数及总价:iii. 统计仓库中现有商品的总数及总价格:#include <stdio.h>#include <string.h>struct product{char p_num[12]; char name[12];char spec[12];int amount;int price;int s_price;struct product *next; };struct product *head;struct in_product {char num[12];char p_num[12];int amount;int price;int t_price;struct in_product *next; };struct in_product *ihead;struct out_product{char num[12];char p_num[12];char name[12];int amount;int price;int t_price;struct out_product *next; };struct out_product *ohead;struct quit_product{char p_num[12];char name[12];int amount;int price;int t_price;struct quit_product *next;};struct quit_product *qhead;int init(){head=ihead=ohead=qhead=NULL;printf("0: Quit\n");printf("1: Enter the information of in product\n ");printf("2: Enter the information of out product\ n");printf("3: Enter the information of quit product \n");printf("4: Total the information of product\n"); }int menu(){printf("1:insert data\n");printf("2:delete data\n");printf("3:modify data\n");printf("4:select data\n");printf("Other to quit\n");}int menu2(){printf("0: Quit\n");printf("1: Enter the information of in product\n ");printf("2: Enter the information of out product\ n");printf("3: Enter the information of quit product \n");printf("4: Total the information of product\n"); }int insert_product(){struct product * p1,* p;p1=(struct product *)malloc(sizeof(struct produ ct));p=head;if (p==NULL)/*开始没有数据*/{printf("Enter the data of product\n");printf("Include the spbh,name,style,num,price,s ale_price of product\n");scanf("%s%s%s%d%d%d",&p1->p_num,&p1->name,&p1->spec,&p1->am ount,&p1->price,&p1->s_price);head=p1;head->next=NULL;return 0;}while(p->next!=NULL)/*把指针移到链表末端,在链表末端插入数据*/p=p->next;p->next=p1;printf("Enter the data\n");scanf("%s%s%s%d%d%d",&p1->num,&p1->p_num,&p1->name,&p1->am ount,&p1->price,&p1->t_price);p1->next=NULL;}int in_insert(){struct in_product * p1,* p;p1=(struct in_product *)malloc(sizeof(struct in_ product));p=ihead;if (p==NULL)/*开始没有数据*/{printf("Enter the data of in product\n");printf("Include the rkbh,spbh,name,number,pri ce,total_price\n");scanf("%s%s%s%d%d%d",&p1->num,&p1->p_num,&p1->name,&p1->am ount,&p1->price,&p1->t_price);ihead=p1;ihead->next=NULL;return 0;}while(p->next!=NULL)/*把指针移到链表末端,在链表末端插入数据*/p=p->next;p->next=p1;printf("Enter the data\n");scanf("%s%s%s%d%d%d",&p1->num,&p1->p_num,&p1->name,&p1->am ount,&p1->price,&p1->t_price);p1->next=NULL;}int in_modify(){char m_num[12];struct in_product * p;p=ihead;printf("Enter the modify num\n");scanf("%s",&m_num);if (p==NULL)/*开始没有数据*/{printf("Sorry! No data can be found\n"); return 0;}while(p!=NULL){if (strcmp(p->num,m_num)==0){printf("Enter the new data without num\n"); scanf("%s%s%d%d%d",&p->p_num,&p->name,&p->amount,&p->price ,&p->t_price);printf("One data had modified\n");return 0;}p=p->next;}printf("Sorry! No num has found\n");}int in_select(){struct in_product * p;p=ihead;printf("Enter the select num\n");scanf("%s",&s_num);while(p!=NULL){if (strcmp(p->num,s_num)==0){printf("The data you want is:\n");printf(" %s %s %s %d %d %d\n",p->num,p->p_num,p->name,p->amount,p->pric e,p->t_price);return 0;}p=p->next;}printf("Sorry! No num has found\n");}int in_delete(){struct in_product * p1,* p;p=ihead;printf("Enter the delete num\n");scanf("%s",&d_num);if (p==NULL)/*开始没有数据*/{printf("No data can be found\n");return 0;}if (strcmp(p->num,d_num)==0 && p->next==N ULL)/*链表只有一个数据,且是要删除的*/ {ihead=NULL;printf("One data has been deleted\n");return 0;}if (strcmp(p->num,d_num)==0 && p->next!=N ULL)/*要删除的数据在链表的头上*/{ihead=ihead->next;printf("One data has been deleted\n");return 0;}while(p->next!=NULL){p1=p->next;if (strcmp(p1->num,d_num)==0){p->next=p1->next;printf("One data has been deleted\n");return 0;}p=p->next;}printf("Sorry! No num has found\n");}int out_insert(){struct out_product * p1,* p;p1=(struct out_product *)malloc(sizeof(struct ou t_product));p=ohead;if (p==NULL)/*开始没有数据*/{printf("Enter the data of out product\n"); printf("Include the ckbh,spbh,name,number,pri ce,total_price\n");scanf("%s%s%s%d%d%d",&p1->num,&p1->p_num,&p1->name,&p1->am ount,&p1->price,&p1->t_price);ohead=p1;ohead->next=NULL;return 0;}while(p->next!=NULL)/*把指针移到链表末端,在链表末端插入数据*/p=p->next;p->next=p1;printf("Enter the data\n");scanf("%s%s%s%d%d%d",&p1->num,&p1->p_num,&p1->name,&p1->am ount,&p1->price,&p1->t_price);p1->next=NULL;}int out_modify(){char m_num[12];struct out_product * p;p=ohead;printf("Enter the modify num\n");scanf("%s",&m_num);if (p==NULL)/*开始没有数据*/{printf("Sorry! No data can be found\n"); return 0;}while(p!=NULL){if (strcmp(p->num,m_num)==0){printf("Enter the new data without num\n"); scanf("%s%s%d%d%d",&p->p_num,&p->name,&p->amount,&p->price ,&p->t_price);printf("One data had modified\n");}p=p->next;}printf("Sorry! No num has found\n");}int out_select(){char s_num[12];struct out_product * p;p=ohead;printf("Enter the select num\n");scanf("%s",&s_num);while(p!=NULL){if (strcmp(s_num,p->num)==0){printf("The data you want is:\n");printf(" %s %s %s %d %d %d\n",p->num,p->p_num,p->name,p->amount,p->pric e,p->t_price);}p=p->next;}printf("Sorry! No num has found\n");}int out_delete(){char d_num[12];struct out_product * p1,* p;p=ohead;printf("Enter the delete num\n");scanf("%s",&d_num);if (p==NULL)/*开始没有数据*/{printf("No data can be found\n");return 0;}if (strcmp(p->num,d_num)==0 && p->next==N ULL)/*链表只有一个数据,且是要删除的*/ {ohead=NULL;printf("One data has been deleted\n");return 0;}if (strcmp(p->num,d_num)==0 && p->next!=N ULL)/*要删除的数据在链表的头上*/{ohead=ohead->next;printf("One data has been deleted\n");return 0;}while(p->next!=NULL){p1=p->next;if (strcmp(p1->num,d_num)==0){p->next=p1->next;printf("One data has been deleted\n");return 0;}p=p->next;}printf("Sorry! No num has found\n");}int quit_insert(){struct quit_product * p1,* p;p1=(struct quit_product *)malloc(sizeof(struct q uit_product));p=qhead;if (p==NULL)/*开始没有数据*/{printf("Enter the data of quit product\n"); printf("Include the thbh,spbh,name,number,pri ce,total_price\n");scanf("%s%s%s%d%d%d",&p1->num,&p1->p_num,&p1->name,&p1->am ount,&p1->price,&p1->t_price);qhead=p1;qhead->next=NULL;return 0;}while(p->next!=NULL)/*把指针移到链表末端,在链表末端插入数据*/p=p->next;p->next=p1;printf("Enter the data\n");scanf("%s%s%s%d%d%d",&p1->num,&p1->p_num,&p1->name,&p1->am ount,&p1->price,&p1->t_price);p1->next=NULL;}int quit_modify(){char m_num[12];struct quit_product * p;p=qhead;printf("Enter the modify num\n");scanf("%s",&m_num);if (p==NULL)/*开始没有数据*/{printf("Sorry! No data can be found\n"); return 0;}while(p!=NULL){if (strcmp(p->num,m_num)==0){printf("Enter the new data without num\n"); scanf("%s%s%d%d%d",&p->p_num,&p->name,&p->amount,&p->price ,&p->t_price);printf("One data had modified\n");return 0;}p=p->next;}printf("Sorry! No num has found\n");}int quit_select(){char s_num[12];struct quit_product * p;p=qhead;printf("Enter the select num\n");while(p!=NULL){if (strcmp(s_num,p->num)==0){printf("The data you want is:\n");printf(" %s %s %s %d %d %d\n",p->num,p->p_num,p->name,p->amount,p->pric e,p->t_price);return 0;}p=p->next;}printf("Sorry! No num has found\n");}int quit_delete(){char d_num[12];struct quit_product * p1,* p;p=qhead;printf("Enter the delete num\n");if (p==NULL)/*开始没有数据*/{printf("No data can be found\n");return 0;}if (strcmp(p->num,d_num)==0 && p->next==N ULL)/*链表只有一个数据,且是要删除的*/ {qhead=NULL;printf("One data has been deleted\n");return 0;}if (strcmp(p->num,d_num)==0 && p->next!=N ULL)/*要删除的数据在链表的头上*/{qhead=qhead->next;printf("One data has been deleted\n");return 0;}while(p->next!=NULL){p1=p->next;if (strcmp(p1->num,d_num)==0){p->next=p1->next;printf("One data has been deleted\n"); return 0;}p=p->next;}printf("Sorry! No num has found\n"); }int total(){int in_num=0,in_price=0;int out_num=0,out_price=0;int num=0,price=0;struct in_product *ip;struct out_product *op;struct product *p;ip=ihead;while(ip!=NULL){in_num+=ip->amount;in_price+=ip->t_price;ip=ip->next;}op=ohead;while(op!=NULL){out_num+=op->amount;out_price+=op->t_price;op=op->next;}p=head;while(p!=NULL){num+=p->amount;price+=p->s_price;p=p->next;}printf("The in product's total number and total price is:\n");printf("%d %d\n",in_num,in_price);printf("The out product's total number and tota l price is:\n");printf("%d %d\n",out_num,out_price);printf("The product's total number and total pri ce is:\n");printf("%d %d\n",num,price);}int in_case(){int choice;printf("The information of in product:\n"); while(1){printf("Enter the choice\n");scanf("%d",&choice);switch(choice){case 1: in_insert();insert_product();break; case 2: in_delete();break;case 3: in_modify();break;case 4: in_select();break;default: return 0;}menu();}}int out_case(){int choice;printf("The information of out product:\n"); while(1){printf("Enter the choice\n");scanf("%d",&choice);switch(choice){case 1: out_insert();break;case 2: out_delete();break;case 3: out_modify();break;case 4: out_select();break;default:return 0;}menu();}}int quit_case(){int choice;printf("The information of quit product:\n"); while(1){printf("Enter the choice\n");scanf("%d",&choice);switch(choice){case 1: quit_insert();break;case 2: quit_delete();break;case 3: quit_modify();break;case 4: quit_select();break;default: return 0;}menu();}}int main(){int choice;init();while(1){scanf("%d",&choice);switch(choice){case 0: return 0;case 1: menu();in_case(); break; case 2: menu();out_case();break; case 3: menu();quit_case();break; case 4:total();break;}menu2();}}。
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>structInfo{charnum[20];charname[20];intprice;intamount;};charmenu()/*菜单选择函数*/{charn;/*n记录选择的菜单*/system("cls");puts("\t\t欢迎来到仓库货物管理系统");puts("\t\t***********************MENU***********************\n"); puts("\t\t*1.录入货物信息*\n");puts("\t\t*2.显示货物信息*\n");puts("\t\t*3.查找货物信息*\n");puts("\t\t*4.修改货物信息*\n");puts("\t\t*5.删除货物信息*\n");puts("\t\t*6.退出系统*\n");puts("\t\t**************************************************\n");puts("*********************************");printf("*请选择你要输入数(1-6):*\n");puts("*********************************");while(1){n=getchar();getchar();if(n<'1'||n>'6'){puts("**********************************");printf("*出错了!请再次输入(1-6):*\n");puts("**********************************");}elsebreak;}returnn;}voidappend()/*货物信息输入函数*/{structInfoinfo;FILE*fp;charch;if((fp=fopen("F:\\test\\filemolde\\123.txt","wb"))==NULL) {printf("******************\n");printf("*不能打开文件!*\n");printf("******************\n");getch();exit(1);}do{printf("\tnum:");gets(info.num);printf("\tname:");gets();printf("\tprice:");scanf("%d",&info.price);printf("\tamount:");scanf("%d",&info.amount);getchar();fwrite(&info,sizeof(info),1,fp);printf("***************************\n");printf("*还需要输入吗?(Y/N):*\n");printf("***************************\n");ch=getchar();getchar();}while(ch=='Y'||ch=='y');fclose(fp);}voidprintf1(){printf("*************************************************************************\ n");printf("\t\t%-10s\t%-10s\t%-10s\t%-10s\n","num","name","price","amount\n");printf("************************************************************************* \n");}voidprintf2(structInfoinfo){printf("-------------------------------------------------------------------------\ n");printf("\t\t%-10s\t%-10s\t%-10d\t%-10d\n",info.num,,info.price,info.amoun t);printf("-------------------------------------------------------------------------\ n");}voiddisplay()/*货物信息显示函数*/{structInfoinfo;FILE*fp;intm=0;if((fp=fopen("F:\\test\\filemolde\\123.txt","rb"))==NULL){printf("******************");printf("*不能打开文件!*");printf("******************");getch();exit(1);}while(fread(&info,sizeof(info),1,fp)==1){m++;if(m==1)printf1();printf2(info);if((m!=0)&&(m%10==0)){printf("*****************************\n");printf("*输入任何键继续*");printf("*****************************\n");getch();puts("\n\n");printf1();}}fclose(fp);printf("************************************\n"); printf("*总共有%d条记录在其中!*\n",m);printf("************************************\n"); getch();}voidsearch()/*货物信息查询函数*/{structInfoinfo;FILE*fp;intflag;/*flag为1按编号查询,flag为2按姓名查询*/inttotal=0;/*记录符合条件的记录的个数*/charch[10];charf;if((fp=fopen("F:\\test\\filemolde\\123.txt","rb"))==NULL) {printf("************************************\n");printf("*\t不能打开文件!*\n");printf("************************************\n");getch();exit(1);}do{rewind(fp);printf("************************************\n");printf("*查询通过(1:编号2:姓名):*\n");printf("************************************\n");while(1){scanf("%d",&flag);getchar();if(flag<1||flag>2){printf("*****************************************\n");printf("*出错了!请再次输入[1:编号][2:姓名]*\n");printf("*****************************************\n"); }elsebreak;}if(flag==1)/*按编号进行查询*/{printf("************************************\n");printf("*请输入你要查询的编号:*\n");printf("************************************\n");gets(ch);total=0;/*符合条件的记录数*/while(fread(&info,sizeof(info),1,fp)==1)if(strcmp(ch,info.num)==0){total++;if(total==1)printf1();printf2(info);}}else/*按姓名进行查询*/{printf("************************************\n");printf("*请输入你要查询的姓名:*\n");printf("************************************\n");gets(ch);total=0;while(fread(&info,sizeof(info),1,fp)==1)if(strcmp(ch,)==0){total++;if(total==1)printf1();printf2(info);}}printf("************************************\n"); printf("*总共有%d记录在其中!*\n",total);printf("************************************\n"); printf("************************************\n"); printf("*还需要查询吗?(Y/N):*\n");printf("************************************\n"); f=getchar();getchar();}while(f=='Y'||f=='y');fclose(fp);}voidmodify()/*货物信息修改函数*/{structInfoinfo;FILE*fp1,*fp2;intflag;charch[10];charf;do{if((fp1=fopen("F:\\test\\filemolde\\123.txt","rb"))==NULL) {printf("************************************\n");printf("*不能打开文件!*\n");printf("************************************\n"); getch();exit(1);}if((fp2=fopen("F:\\test\\filemolde\\456.txt","wb"))==NULL) {printf("************************************\n");printf("*不能打开文件!*\n");printf("************************************\n"); getch();exit(1);}printf("************************************\n");printf("*请输入你要修改的货物编号:*\n");printf("************************************\n");gets(ch);flag=0;while(fread(&info,sizeof(info),1,fp1)==1){if(strcmp(ch,info.num)==0){printf1();printf2(info);printf("************************************\n");printf("*请输入新的信息:*\n");printf("************************************\n");printf("\tnum:");gets(info.num);printf("\tname:");gets();printf("\tprice:");scanf("%d",&info.price);printf("\tamount:");scanf("%d",&info.amount);getchar();flag=1;}fwrite(&info,sizeof(info),1,fp2);}fclose(fp1);fclose(fp2);if(flag==1){printf("************************************\n");printf("*修改成功!*\n");printf("************************************\n");remove("F:\\test\\filemolde\\123.txt");rename("F:\\test\\filemolde\\456.txt","F:\\test\\filemolde\\123.txt");}else{printf("************************************\n");printf("*不能找到这个记录!*\n");printf("************************************\n");}printf("************************************\n");printf("*还修改其他吗?(Y/N):*\n");printf("************************************\n");f=getchar();getchar();}while(f=='y'||f=='Y');}voidDelete()/*货物信息删除函数*/{structInfoinfo;FILE*fp1,*fp2;intflag;charch[10];charf;do{if((fp1=fopen("F:\\test\\filemolde\\123.txt","rb"))==NULL) {printf("************************************\n");printf("*\t不能打开文件!*\n");printf("************************************\n");getch();exit(1);}if((fp2=fopen("F:\\test\\filemolde\\456.txt","wb"))==NULL) {printf("************************************\n");printf("*\t不能打开文件!*\n");printf("************************************\n");getch();exit(1);}printf("************************************\n");printf("*请输入你需要删除货物的编号:*\n");printf("************************************\n");gets(ch);flag=0;while(fread(&info,sizeof(info),1,fp1)==1){if(strcmp(ch,info.num)==0){printf1();printf2(info);flag=1;break;}elsefwrite(&info,sizeof(info),1,fp2);}fclose(fp1);fclose(fp2);if(flag==1){printf("************************************\n");printf("*删除成功!*\n");printf("************************************\n");remove("F:\\test\\filemolde\\123.txt");rename("F:\\test\\filemolde\\456.txt","F:\\test\\filemolde\\123.txt");}else{printf("************************************\n");printf("*不能找到这个记录!*\n");printf("************************************\n");}printf("************************************\n");printf("*还删除其他吗?(Y/N):*\n");printf("************************************\n");f=getchar();getchar();}while(f=='y'||f=='Y');}voidmain()/*主函数*/{while(1){inta;charf;charch[10];charnum[20]={"12345"};printf("pleaseinputthesecret:\n");scanf("%s",ch);if(strcmp(num,ch)==0)a=1;if(a==1){printf("\npleaseenterinthetelproject!\n");f=getchar();getchar();break;}else{printf("\nthesecretiserror");printf("pleaseinputtherightsecret"); }}while(1)switch(menu()){case'1':append();break;case'2':display();break;case'3':search();break;case'4':modify();break;case'5':Delete();break;case'6':exit(0);break;}}。
c 库存管理系统课程设计一、课程目标知识目标:1. 理解库存管理系统的基本概念,掌握库存管理的基本流程。
2. 学会运用C语言编写库存管理系统的基本功能模块,如商品信息管理、库存盘点、库存预警等。
3. 了解数据库的基本操作,能够使用C语言实现库存数据与文件的有效存储与读取。
技能目标:1. 培养学生运用C语言进行编程解决问题的能力,提高代码编写规范性和逻辑思维能力。
2. 培养学生独立分析库存管理系统需求,设计并实现相应功能模块的能力。
3. 培养学生团队协作能力,能够与他人共同完成一个完整的库存管理系统项目。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养良好的编程习惯和积极的学习态度。
2. 培养学生关注企业实际需求,理解库存管理系统在企业管理中的重要性。
3. 增强学生的自信心,培养面对挑战、勇于解决问题的精神。
课程性质:本课程为实践性较强的课程,以项目为导向,结合企业实际需求,培养学生的编程能力和团队协作能力。
学生特点:学生具备一定的C语言基础,具有较强的学习意愿,但实践经验不足。
教学要求:教师需注重理论与实践相结合,引导学生主动参与项目实践,关注学生个体差异,提供有针对性的指导。
通过课程学习,使学生能够独立完成库存管理系统的设计与实现,达到预期的学习成果。
二、教学内容1. 库存管理基本概念:讲解库存管理的定义、作用和分类,结合课本相关章节,让学生理解库存管理在企业运营中的重要性。
2. C语言基础回顾:复习C语言的基本语法、数据类型、运算符、控制结构等,为后续编程打下基础。
3. 库存管理系统功能模块设计:- 商品信息管理:介绍商品信息的数据结构设计,实现商品信息的增加、删除、修改和查询功能。
- 库存盘点:讲解库存盘点的基本流程,实现库存数量的统计和更新。
- 库存预警:分析库存预警的设置方法,编写相应功能模块,对库存量进行监控和预警。
4. 数据库操作:结合课本内容,介绍文件存储和读取方法,实现库存数据的持久化存储。
C语言库存管理系统公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-沈阳商品航天大学北方科技学院课程设计任务书课程设计题目库存管理程序设计教研室计算机教研室专业班级学号姓名课程设计时间: 年月日至年月日课程设计的内容及要求:主要内容设计一个程序管理库存商品,主要实现的功能如下:1、添加、修改、删除库存商品信息,商品信息包括:编号、名称、类别、数量、产地等;2、进货或售出商品后,相应的库存商品数量应该有所改变;3、当某种商品库存少于一定数量时,应该提醒进货;4、可以按商品名称模糊查询商品信息。
基本要求1、系统采用C程序设计语言实现;2、独立完成系统的设计、编码和调试,通过指导教师当场验收;3、交出完整的课程设计报告。
指导教师史俊年月日沈阳商品航天大学北方科技学院课程设计成绩评定单课程名称C语言综合训练课程设计题目库存管理程序设计专业班级学号姓名答辩日期年月日指导教师(答辩组)评语:课程设计成绩指导教师(答辩组)签字年月日库存管理程序设计目录摘要 (2)1.绪论 (2)2. 系统分析 (3)2.1功能需求 (3)2.2数据需求 (3)2.3性能需求 (3)3. 总体设计 (3)3.1功能模块设计 (3)3.2系统设计方案 (4)4. 详细设计 (5)4.1商品信息管理模块 (5)4.2商品查询管理模块 (9)5. 调试与测试 (10)5.1调试 (10)5.2测试 (10)6. 结论 (11)结束语 (11)参考文献 (11)附录1-用户手册 (12)附录2-源程序 (14)摘要库存管理系统是厂家、商城、商场等的管理商品信息不可缺少的部分,利用这个系统,可以更好地管理商品的信息。
本系统使用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]; 定义商品产地i nt num; 定义商品数量s truct 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。
图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日。