2021年C语言库存管理系统
仓库库存管理系统源程序

仓库库存管理系统源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream.h>int shoudsave=0;struct item//物品信息定义{char code[10];//物品编码char name[20];//物品名称int num; //商品数量int level;//物品等级}item;typedef struct node{struct item data;struct node * next;}Node,*Link;//定义为链表void menu()//页面显示函数{system("cls");//清屏函数printf("***********************************《物品库存管理》*****************************\n");printf(" \n");printf("\n <1> 物品入库管理\n\t\n <2> 物品出库管理\n");printf("\n <3> 浏览库内物品信息\n\t\n <4> 修改物品信息\n");printf("\n <5> 保存物品信息\n\t\n <0> 退出库存管理\n");printf(" \n");cout<<"************************************************** ******************************"<<endl;printf("\n 请选择操作:");}void printstart(){printf("------------------------------------------\n");}void Wrong()//错误处理函数{printf("输入错误!\n");getchar();getchar();menu();return;}void Nofind(){printf("没有找到该物品!\n");}void printc()//本函数用于输出中文{printf(" 物品编码物品名称物品数量物品等级\n");}void printe(Node *p)//输出物品信息函数{cout<<endl<<" "<<p->data.code<<""<<p-><<" "<<p->data.num<<""<<p->data.level;}Node *Locate(Link l,char findmess[],char nameorcode[]) //用于定位连接中,符合要求的结点,并返回该指针{Node *r;if(strcmp(nameorcode,"code")==0)//{r=l->next;while(r!=NULL){if(strcmp(r->data.code,findmess)==0)return r;r=r->next;}}elseif(strcmp(nameorcode,"name")==0)//按名称查询{r=l->next;while(r!=NULL){if(strcmp(r->,findmess)==0)return r;r=r->next;}}return 0;}void Add(Link l)//增加物品函数{Node *p,*r,*s;char code[10];r=l;s=l->next;while(r->next!=NULL)r=r->next;while(l){system("cls");//清屏函数cout<<"请输入商品编码(输入'0'返回上一级菜单):"<<endl;scanf("%s",code);if(strcmp(code,"0")==0)break;while(s){if(strcmp(s->data.code,code)==0){printf("物品编码为'%s'的物品已经存在,如果要修改请选择'4 修改'!\n",code);printstart();printc();printe(s);printstart();printf("\n");return;}s=s->next;}p=(Node * )malloc(sizeof(Node));strcpy(p->data.code,code);printf("请输入物品名称:");scanf("%s",p->);getchar();printf("请输入物品数量:");scanf("%d",&p->data.num);printf("请输入物品等级:");scanf("%d",&p->data.level);p->next=NULL;r->next=p;r=p;shoudsave=1;}menu();}void Qur(Link l)//查询物品信息函数{int sel;char findmess[20];Node *p;if(!l->next){printf("\n没有信息可查询!\n");getchar();getchar();menu();}system("cls");//清屏函数printf("\n 1按物品编码查询\n 2按物品名称查询\n"); scanf("%d",&sel);if(sel==1)//{printf("请输入要查询的编码:\n");scanf("%s",findmess);p=Locate(l,findmess,"code");if(p){printf("\t\t\t\t查询结果\n");printstart();cout<<endl;printc();cout<<endl;printe(p);cout<<endl;printstart();getchar();getchar();return;}elseNofind();}elseif(sel==2)//{printf("请输入要查找的物品名称:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){printf("\t\t\t查询结果\n");printstart();cout<<endl;printc();cout<<endl;printe(p);cout<<endl;printstart();getchar();getchar();menu();return;}elseNofind();}elseWrong();getchar();system("cls");//清屏函数menu();}void Del(Link l)//删除{int sel;Node *p,*r;char findmess[20];if(!l->next){system("cls");//清屏函数printf("\n您的仓库为空!\n");getchar();getchar();menu();return ;}system("cls");//清屏函数printf("\n 1按物品编码出仓\n 2按物品名称出仓\n"); scanf("%d",&sel);if(sel==1){printf("请输入要出仓的物品编码:");scanf("%s",findmess);p=Locate(l,findmess,"code");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n该物品已经成功出仓\n");shoudsave=1;getchar();getchar();menu();return ;}elseNofind();}elseif(sel==2){system("cls");//清屏函数printf("请输入要出仓的物品名:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n该物品已经成功出仓!\n");shoudsave=1;getchar();getchar();menu();return;}elseNofind();}elseWrong();}void Modify(Link l)//物品信息修改{Node *p;char findmess[20];if(!l->next){system("cls");//清屏函数printf("\n您的库存为空,无需修改!\n");getchar();menu();return;}printf("请输入要修改的物品编码:");scanf("%s",findmess);p=Locate(l,findmess,"code");if(p){system("cls");//清屏函数printf("请输入新编码(原来的是%s):",p->data.code);scanf("%s",p->data.code);printf("请输入新名称(原来的是%s):",p->);scanf("%s",p->);getchar();printf("请输入新的物品数量(原来的是%d):",p->data.num);scanf("%d",&p->data.num);getchar();printf("请输入新的物品等级(原来的是%d):",p->data.level);scanf("%d",&p->data.level);printf("\n修改资料成功!\n");shoudsave=1;getchar();menu();return;}elseNofind();getchar();menu();}void Disp(Link l){int count=0;Node *p;p=l->next;if(!p){printf("\n 没有资料可以显示!\n");getchar();getchar();return;}printf("\t\t\t\t显示结果\n");printstart();printc();printf("\n");while(p){printe(p);p=p->next;}printstart();printf("\n");}void Save(Link l)//物品信息保存{FILE *fp;Node *p;int flag=1,count=0;fp=fopen("c:\\student","wb");if(fp==NULL){printf("\n重新打开文件时错误!\n");exit(1);}p=l->next;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next;count++;}else{flag=0;break;}}if(flag){system("cls");//清屏函数printf("\n 文件保存成功.(有%d条记录保存成功.)\n",count);shoudsave=0;getchar();getchar();menu();}fclose(fp);}void main()//主函数{menu();Link l;//链表Node *r;int sel;char ch;int count=0;l=(Node * )malloc(sizeof(Node));l->next=NULL;r=l;while(l){scanf("%d",&sel);if(sel==0){if(shoudsave==1){getchar();printf("\n 资料已改动,是否将改动的文件保存到文件中(y or n)?\n");scanf("%c",&ch);if(ch=='y' || ch=='Y')Save(l);}printf("\n 已退出系统!\n");break;}switch(sel){case 1:Add(l);break;//物品进库case 2:Del(l);break;//物品出库case 3:Qur(l);break;//查询物品case 4:Modify(l);break;//修改物品信息case 5:Save(l);break;//保存物品信息default:Wrong();getchar();break;}}}。
仓库管理系统数据结构课程设计c语言

一、概述仓库管理系统是管理仓储物品的重要工具,通过合理的数据结构设计,能够高效地管理仓库中的物品进出、库存等情况。
本文旨在设计一个基于C语言的仓库管理系统数据结构,以实现对仓库的有效管理和操作。
二、需求分析1. 仓库管理系统需要能够实现对仓库中不同类型物品的管理,包括物品的入库、出库、库存查询等功能。
2. 系统需要能够对不同的物品进行分类管理,包括对物品的编号、名称、规格、数量等信息的记录和管理。
3. 系统需要具备对物品进行盘点的功能,能够及时更新库存信息。
4. 系统需要实现对仓库内物品的结构化管理,确保物品的存储和检索的高效性和准确性。
三、数据结构设计1. 仓库管理系统主要涉及的数据结构包括:仓库、物品、库存等。
2. 仓库:仓库可以使用链表进行组织,每个节点存储一个仓库的信息,包括仓库的编号、名称、位置区域等。
3. 物品:物品可以使用结构体进行定义,包括物品的编号、名称、规格、数量等信息。
4. 库存:库存可以通过哈希表进行管理,将物品的编号作为关键字,实现对库存的快速查询和插入操作。
四、系统模块设计1. 入库模块:用于向仓库中添加物品,并更新库存信息。
2. 出库模块:用于从仓库中移除物品,并更新库存信息。
3. 查询模块:用于对仓库中的物品和库存信息进行查询。
4. 盘点模块:用于对仓库进行物品的盘点和库存的更新。
五、算法设计1. 入库算法:当向仓库中添加新物品时,需要判断物品是否已存在,若存在则更新数量,若不存在则添加新物品。
2. 出库算法:当从仓库中移除物品时,需要判断库存是否充足,若充足则更新数量,若不足则提示库存不足。
3. 查询算法:通过哈希表和链表进行查询,实现高效的物品和库存信息查询。
4. 盘点算法:遍历仓库中的物品,对库存信息进行更新。
六、系统实现1. 使用C语言编写主程序,包括对仓库的管理和操作。
2. 根据数据结构设计和算法设计,实现对仓库的物品和库存的管理。
3. 使用文件存储来实现对仓库信息的持久化,确保系统重启后数据不丢失。
C语言在物流管理中的应用解决方案

C语言在物流管理中的应用解决方案物流管理是现代企业中至关重要的环节之一,能够有效地提高运输效率、降低成本,并确保顺畅的货物流转。
而C语言作为一种高效、灵活的编程语言,可以在物流管理中发挥重要作用。
本文将探讨C语言在物流管理中的应用解决方案。
一、货物跟踪与管理系统货物跟踪与管理是物流管理中的核心任务之一。
通过使用C语言,我们可以开发一个系统,实时追踪货物的位置和状态。
该系统可以通过传感器、GPS等设备获取货物信息,并使用C语言编写的算法实时解析和处理数据。
通过这个系统,物流管理人员可以随时获得关于货物位置、目的地预计达到时间等信息,从而提高货物追踪和管理的效率。
二、货物配送优化货物配送优化是物流管理中的另一个重要方面。
C语言可以用来编写算法,对货物配送路线进行优化,降低运输成本,提高配送效率。
利用C语言编写的算法可以分析货物的数量、目的地等因素,并根据实际情况建立数学模型,通过优化算法实现最佳配送路线的选择。
这样可以减少行驶距离、节约燃料消耗,并且确保货物按时送达。
三、库存管理系统库存管理是物流管理中的重要环节,也是部分企业管理的痛点之一。
利用C语言,我们可以开发一个库存管理系统,帮助企业实时跟踪和管理库存情况。
该系统可以通过C语言编写的程序自动记录进货和出货的时间、数量等信息,实时更新库存数据。
基于这些数据,可以编写算法来进行库存预警和补货提醒。
这样可以大大提高库存管理的效率,并避免因库存过多或过少而导致的问题。
四、运输路线规划在物流管理中,选择最佳的运输路线是一个关键问题。
利用C语言编程,可以实现运输路线的规划和优化。
通过C语言的算法,可以计算出不同路线的时间、成本等指标,并进行对比。
根据这些指标,可以选择最佳的运输路线,减少运输时间和成本。
此外,C语言还可以结合与其他领域的知识,如地理信息系统等,实现更加精确和智能的运输路线规划。
总结:本文探讨了C语言在物流管理中的应用解决方案。
通过C语言编程,我们可以开发货物跟踪与管理系统,货物配送优化系统,库存管理系统和运输路线规划系统。
仓库管理系统源代码

仓库管理系统源代码#include#include#include#include#includestruct cangku{int num;char name[20];char introdution[50];float square;};typedef struct cangku Cangku;int Input(Cangku t[]);void List(Cangku t[],int n); void SearchOnName(Cangku t[],int n);int DeleteRecord(Cangku t[],int n); int AlterRecord(Cangku t[],int n); int AddRecord(Cangku t[],int n); void SortOnName(Cangku t[],int n); void SortOnSquare(Cangku t[],int n); void SaveRecord(Cangku t[],int n); int LoadRecord(Cangku t[]); int LoadRecord1(Cangku t[]); void Save(Cangkut[],int n); void Load(Cangku t[],int n); void Load1(Cangku t[]);int Menu_select();void main(){Cangku ck[50];int i,l,length,w=1;int q[4]={5,2,1,0};system("cls");printf("请输入第1个密码:\n");for (i=0;i<4;i++){scanf("%d",&l);system("cls");if(l==q[i])printf("正确,继续输入第%d个密码:.\n",i+2); else{w=0;printf ("输入错误!\n");break;}}while(w){switch(Menu_select()){case 1: length=Input(ck);SaveRecord(ck,length);break;case 2: length=LoadRecord(ck); SearchOnName(ck,length); break;case 3: length=LoadRecord(ck); length=DeleteRecord(ck,length); SaveRecord(ck,length);break;case 4: length=LoadRecord(ck); length=AlterRecord(ck,length); SaveRecord(ck,length);break;case 5: length=LoadRecord(ck); length=AddRecord(ck,length); SaveRecord(ck,length);break;case 6: length=LoadRecord(ck); system("cls");List(ck,length);break;case 7: length=LoadRecord(ck); system("cls");SortOnName(ck,length);SaveRecord(ck,length);break;case 8: length=LoadRecord(ck); system("cls");SortOnSquare(ck,length);SaveRecord(ck,length);break;case 9: length=LoadRecord(ck); system("cls");Save(ck,length);break;case 0: length=LoadRecord1(ck);Load1(ck);system("cls");Load(ck,length);break;case 10: exit(0);}}}int Menu_select(){int c;printf("按任意键进入仓库管理菜单\n");getchar();system("cls");system("color F0");printf(" ******************************仓库管理*******************************\n");printf(" * 1. 录入仓库初始记录 *\n");printf(" * 2. 按仓库名称查找记录 *\n");printf(" * 3. 删除仓库记录 *\n");printf(" * 4. 修改仓库记录 *\n");printf(" * 5. 增加仓库信息 *\n");printf(" * 6. 显示全部记录 *\n");printf(" * 7. 按仓库名称排序*\n");printf(" * 8. 按仓库面积排序*\n");printf(" * 9. 备份*\n");printf(" * 0. 恢复*\n");printf(" * 10. 退出*\n");printf("******************************************************************** *\n");do{printf("\n输入您想要进行的操作选项键(0-10):"); if(scanf("%d",&c)!=1){while(getchar()!='\n')continue;}}while(c<0||c>10);return c;}int Input(Cangku t[]){int i,n;system("cls");printf("\n请输入要输入的仓库数目:\n");scanf("%d",&n);printf("开始输入仓库信息:\n");for(i=0;i<n;i++){system("cls");printf("\n第%d个仓库的编号:",i+1);scanf ("%d",&t[i].num);printf("第%d个仓库的名称:",i+1);scanf ("%s",t[i].name);printf("第%d个仓库的面积:",i+1);scanf ("%f",&t[i].square);printf("第%d个仓库的说明:",i+1);scanf ("%s",t[i].introdution); }return (n);}void List(Cangku t[],int n){int i;printf("******************************************************************** *\n");printf(" ** 编号名称面积说明\n");printf("---------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%17d%13s%20f%14s\n",t[i].num,t[i].name,t[i].square,t[i].intr odution);}printf("******************************************************************** *\n");printf ("\n");getchar();}void SearchOnName(Cangku t[],int n) {char s[20];int i,flag=0;system("cls");printf("请输入要查找的仓库名称:\n");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0){flag=1;system("cls");printf("\n\n要查找的仓库信息如下:\n");printf("\n");printf("******************************************************************** *\n");printf(" ** 编号名称面积说明\n");printf("---------------------------------------------------------------------\n");{printf("%17d%13s%20f%14s\n",t[i].num,t[i].name,t[i].square,t[i].intr odution);}printf("******************************************************************** *\n");printf ("\n");}}if(flag==0)printf("要查找的仓库不存在!!\n");getchar();}int DeleteRecord(Cangku t[],int n){char s[20];char ch;int i,j,flag=0;system("cls");printf("请输入要删除的仓库名称\n");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0){flag=1;system("cls");printf("\n\n要删除的仓库信息如下:\n");printf("\n");printf("******************************************************************** *\n");printf(" ** 编号名称面积说明\n");printf("---------------------------------------------------------------------\n");{printf("%17d%13s%20f%14s\n",t[i].num,t[i].name,t[i].square,t[i].intr odution);}printf("******************************************************************** *\n");printf ("\n");printf("确定删除仓库信息吗?(Y/N)\n"); ch=getchar();ch=getchar();if(ch=='Y'||ch=='y'){for(j=i;j<n-1;j++)t[j]=t[j+1];n--;i--;printf ("删除成功.\n");}}}if(flag==0)printf("要删除的仓库不存在!!\n"); getchar();return n;}int AlterRecord(Cangku t[],int n) { int i,flag=0;char s[20],ch;system("cls");printf("请输入要修改的仓库名称\n");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0){flag=1;system("cls");printf("\n\n要修改的仓库信息如下:\n");printf("\n");printf("*********************************************************************\n" );printf(" ** 编号名称面积说明\n");printf(" ---------------------------------------------------------------------\n");{printf("%17d%13s%20f%14s\n",t[i].num,t[i].name,t[i].square,t[i].intr odution);}printf("******************************************************************** *\n");printf ("\n");printf("确定修改仓库信息吗,(Y/N)\n");ch=getchar();ch=getchar();if(ch=='y'||ch=='Y'){system("cls");printf("请输入修改后的信息:\n");printf("请输入仓库新的名称:");scanf("%s",t[i].name);printf("请输入%s仓库新的编号:",t[i].name); scanf("%d",&t[i].num);printf("请输入%s仓库新的面积:",t[i].name); scanf("%f",&t[i].square);printf("请输入%s仓库新的说明:",t[i].name); scanf("%s",t[i].introdution);}}}if(flag==0)printf("要修改的仓库不存在~~\n"); getchar();return n;}int AddRecord(Cangku t[],int n) {int i,m;system("cls");printf("\n请输入再增加的记录数:\n"); scanf("%d",&m);printf("开始追加记录\n");for(i=n;i<n+m;i++){ system("cls");printf("\n第%d个仓库的编号:",i+1); scanf("%d",&t[i].num);printf("第%d个仓库的名称:",i+1); scanf("%s",t[i].name);printf("第%d个仓库的面积:",i+1); scanf("%f",&t[i].square);printf("第%d个仓库的说明:",i+1); scanf("%s",t[i].introdution);}return (n+m);}void SortOnName(Cangku t[],int n) {int i,j;struct cangku temp ;for(j=1;j<n;j++)for(i=0;i<n-j;i++)if((strcmp(t[i].name,t[i+1].name))>0) {temp=t[i];t[i]=t[i+1];t[i+1]=temp;}printf("排序成功!!!\n");printf("排序后仓库信息列表如下:\n"); List(t,n);}void SortOnSquare(Cangku t[],int n) {int i,j;struct cangku temp ;for(j=1;j<n;j++)for(i=0;i<n-j;i++)if(t[i].square<t[i+1].square){temp=t[i];t[i]=t[i+1];t[i+1]=temp;}printf("排序成功!!!\n");printf("排序后仓库信息列表如下:\n");List(t,n);}void SaveRecord(Cangku t[],int n) {int i;FILE *fp;if((fp=fopen("record.txt","w"))==NULL) {printf("不能打开文件!\n");exit(1);}for(i=0;i<n;i++){fwrite(&t[i],sizeof(struct cangku),1,fp); }fclose(fp);}int LoadRecord(Cangku t[]){int n=0;FILE *fp;if((fp=fopen("record.txt","a+"))==NULL) {printf("不能打开文件!\n");exit(1);}while(fread(&t[n],sizeof(struct cangku),1,fp)) n++; fclose(fp);printf("从文件中成功读出记录!!!\n");return n;}int LoadRecord1(Cangku t[]) {int n=0;FILE *fp;if((fp=fopen("bkrecord.txt","a+"))==NULL){printf("不能打开文件!\n");exit(1);}while(fread(&t[n],sizeof(struct cangku),1,fp)) n++; fclose(fp);printf("从文件中成功读出记录!!!\n");return n;}void Save(Cangku t[],int n) {int i;FILE *fp;if((fp=fopen("bkrecord.txt","w"))==NULL){printf("不能打开文件!\n");exit(1);}for(i=0;i<n;i++){fwrite(&t[i],sizeof(struct cangku),1,fp);}fclose(fp);printf("备份成功.\n");getchar();}void Load1(Cangku t[]) {int n=0;FILE *fp;if((fp=fopen("bkrecord.txt","a+"))==NULL){printf("不能打开文件!\n");exit(1);}while(fread(&t[n],sizeof(struct cangku),1,fp)) n++; fclose(fp);getchar();}void Load(Cangku t[],int n) {int i;FILE *fp;if((fp=fopen("record.txt","w"))==NULL) {printf("不能打开文件!\n");exit(1);}for(i=0;i<n;i++){fwrite(&t[i],sizeof(struct cangku),1,fp); }fclose(fp);printf("恢复成功.\n");}。
银行管理系统c语言程序设计代码

银行管理系统c语言程序设计代码以下是一个简单的银行管理系统的C语言程序设计代码示例:```c#include <stdio.h>#include <stdlib.h>struct BankAccount {int accountNumber;char accountHolder[50];float balance;};void createAccount(struct BankAccount *account) {printf("请输入账户号码: ");scanf("%d", &(account->accountNumber));printf("请输入账户持有人姓名: ");scanf("%s", account->accountHolder);printf("请输入账户余额: ");scanf("%f", &(account->balance));printf("账户创建成功!\n");}void deposit(struct BankAccount *account) {float amount;printf("请输入存款金额: ");scanf("%f", &amount);account->balance += amount;printf("存款成功!\n");}void withdraw(struct BankAccount *account) {float amount;printf("请输入取款金额: ");scanf("%f", &amount);if (amount > account->balance) {printf("余额不足,取款失败!\n");} else {account->balance -= amount;printf("取款成功!\n");}}void displayAccount(struct BankAccount *account) {printf("账户号码: %d\n", account->accountNumber);printf("账户持有人姓名: %s\n", account->accountHolder); printf("账户余额: %.2f\n", account->balance);}int main() {struct BankAccount account;int choice;while (1) {printf("\n银行管理系统\n");printf("1. 创建账户\n");printf("2. 存款\n");printf("3. 取款\n");printf("4. 显示账户信息\n");printf("5. 退出\n");printf("请选择操作: ");scanf("%d", &choice);switch (choice) {case 1:createAccount(&account); break;case 2:deposit(&account);break;case 3:withdraw(&account);break;case 4:displayAccount(&account);break;case 5:printf("感谢使用银行管理系统,再见!\n");exit(0);default:printf("无效的选择,请重新输入。
catics练习题

一、选择题1. 下列哪个选项是C语言的基本数据类型?A. floatB. charC. intD. all of the above2. 在C语言中,下列哪个运算符用于取余数?A. %B. /C.D. +A. printf()B. scanf()C. getchar()D. putchar()A. int arr[3][4];B. int arr[3, 4];C. int arr[3];D. int arr[3, ];A. returnB. gotoC. continueD. recursion二、填空题1. 在C语言中,字符类型的数据通常用______关键字表示。
2. 在C语言中,______函数用于实现字符串的拷贝。
3. 在C语言中,______运算符用于实现按位与操作。
4. 在C语言中,______关键字用于定义结构体。
5. 在C语言中,______函数用于获取当前时间。
三、编程题1. 编写一个C语言程序,实现计算两个整数的和。
2. 编写一个C语言程序,实现判断一个整数是否为素数。
3. 编写一个C语言程序,实现冒泡排序算法。
4. 编写一个C语言程序,实现计算斐波那契数列的前10项。
5. 编写一个C语言程序,实现实现一个简单的计算器,能够进行加、减、乘、除运算。
四、简答题1. 解释C语言中的指针的概念及其用途。
2. 描述C语言中的函数指针的概念。
3. 说明C语言中的结构体和联合体的区别。
4. 列举C语言中常用的内存分配函数及其作用。
5. 解释C语言中的文件操作的基本流程。
五、编程题6. 编写一个C语言程序,实现计算一个数的阶乘。
7. 编写一个C语言程序,实现将字符串反转。
8. 编写一个C语言程序,实现判断一个链表是否为回文链表。
9. 编写一个C语言程序,实现实现一个简单的银行账户管理系统。
10. 编写一个C语言程序,实现实现一个简单的学生信息管理系统。
六、编程题11. 编写一个C语言程序,实现实现一个简单的计算器,支持加减乘除和开方运算。
仓库管理系统代码大全

系统主函数(program.cs)using System;using System.Collections.Generic;using System.Windows.Forms;namespace warehouse{static class Program{/// <summary>/// 应用程序的主入口点。
/// </summary>[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmLogin());//运行一个登陆对象}}}集的常规信息using System.Reflection;using System.Runtime pilerServices;using System.Runtime.InteropServices;// 有关程序集的常规信息通过下列属性集// 控制。
更改这些属性值可修改// 与程序集关联的信息。
[assembly: AssemblyTitle("warehouse")][assembly: AssemblyDescription("")][assembly: AssemblyConfiguration("")][assembly: AssemblyCompany("")][assembly: AssemblyProduct("warehouse")][assembly: AssemblyCopyright("所有 2009")][assembly: AssemblyTrademark("")][assembly: AssemblyCulture("")]// 将 ComVisible 设置为 false 使此程序集中的类型// 对 COM 组件不可见。
C语言课程设计-书店管理系统精选全文

计算机程序设计(C语言)课程设计报告题目:图书管理系统学院:专业:班级:学号:姓名:指导教师:设计日期:2013年06月24日一、选题背景:设计一个图书管理系统,管理员通过登陆账号来进行下一步,使用错误账号和密码会被视为非法登陆。
图书信息包括:每种图书都有书名、ISBN、一名或多名作者(译者)、出版社、定价和内容简介等;读者信息包括:借书证记录有借阅者的姓名、密码、所在单位和类别等;读者凭借书证借书二、设计思想:(1)整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。
主要实现了图书的录入、存储、查询、添加、删除、修改、借书、还书等功能。
(2)、Cbook();这是一个指针函数,它主要实现了链表的创建,并且在创建过程中从文件读取信息到链表中,以用于后面其他函数的操作。
它返回的时一个单向链表的头。
其他函数调用时只需调用它返回的头即可。
(3)、mainmenu();、menu1();、glm enu();、cxmenu();、jhmenu();这五个函数时整个图书管理系统的全部菜单函数,mainmenu();为系统主界面,进入时可选择进入程序和退出程序。
menu1();为进程序时显示的功能菜单,在此菜单可以选择录入、保存图书信息,也可选择进入其他子系统。
glmenu();此菜单为进入图书管理系统的菜单,在此可以选择添加、删除、修改图书等操作。
cxmenu();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。
jhmenu();为借书还书的子菜单,在此可以选择借书还书操作。
操作完成后按提示信息进行文件的保存操作。
三、程序流程图会员登陆系统系统管理界面收银系统管理系统报表系统退出系统四、主要解决问题的方法及技术关键通过自己定义的函数和声明一个结构,主要方法是先使用int函数定义,不同的选择进入不同的定义函数,通过for语句进行判断,然后使用heart数组的各种方式打开此文件,然后通过while函数和for函数关闭文件,在不同的取用数值里,分别使用for,while语句进行判断是否进行下条语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
沈阳商品航天大学北方科技学院欧阳光明(2021.03.07)课程设计任务书课程设计题目库存管理程序设计教研室计算机教研室专业班级学号姓名课程设计时间:年月日至年月日课程设计的内容及要求:主要内容设计一个程序管理库存商品,主要实现的功能如下:1、添加、修改、删除库存商品信息,商品信息包括:编号、名称、类别、数量、产地等;2、进货或售出商品后,相应的库存商品数量应该有所改变;3、当某种商品库存少于一定数量时,应该提醒进货;4、可以按商品名称模糊查询商品信息。
基本要求1、系统采用C程序设计语言实现;2、独立完成系统的设计、编码和调试,通过指导教师当场验收;3、交出完整的课程设计报告。
指导教师史俊年月日沈阳商品航天大学北方科技学院课程设计成绩评定单课程名称C语言综合训练课程设计题目库存管理程序设计专业班级学号姓名答辩日期年月日指导教师(答辩组)评语:课程设计成绩指导教师(答辩组)签字年月日库存管理程序设计目录摘要31.绪论32. 系统分析32.1功能需求32.2数据需求42.3性能需求43. 总体设计43.1功能模块设计43.2系统设计方案54. 详细设计64.1商品信息管理模块64.2商品查询管理模块95. 调试与测试105.1调试105.2测试106. 结论12结束语12参考文献12附录1-用户手册12附录2-源程序13摘要库存管理系统是厂家、商城、商场等的管理商品信息不可缺少的部分,利用这个系统,可以更好地管理商品的信息。
本系统使用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_ANYKEY continue;case 3:break;}continue;case 2:chazhao_menu();P("请输入序号:");scanf("%d", &i);switch (i){case 1:print(link);PRESS_ANYKEY continue;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_ANYKEY continue;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;}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;}。