C语言程序设计实验个人物品管理程序

合集下载

C语言超市商品管理系统

C语言超市商品管理系统

题目:超市商品管理系统2.2 详细设计 (3)2.2.1 数据结构设计 (3)2.2.2 主控流程 (3)2.2.3 信息输入模块 (4)2.2.4 信息增加模块 (4)2.2.5 信息修改模块 (4)2.2.6 信息删除模块 (4)2.2.7 信息查看模块 (4)2.2.8 信息统计模块 (4)2.2.9 函数功能描述 (4)实训报告3 系统实现 (5)3.1 编码 (5)3.1.1 程序预处理 (5)3.1.2 主函数main() (5)3.1.3 主菜单界面 (6)3.1.4 商品信息建立 (7)3.1.5 商品信息查看 (9)3.1.6 商品信息增加 (11)3.1.7 商品信息删除 (12)3.1.8 商品信息修改 (14)3.1.9 商品数目统计 (16)超市管理系统主界面2、系统设计2.1 总体设计本程序采用模块化设计方法,即将一个大任务分成一个个小任务,然后分别设计个小任务。

划分出来的模块相对独立而又相互关联,容易理解。

本程序由5大模块组成:1.输入信息模块2.增加信息模块3.修改信息模块4.删除信息模块5.统计信息模块2.2 详细设计定义结构体struct good{char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针类型*/ }*head,*p1,*p2;2.2.2 主控main()函数执行流程Int main()struct good *p1,*p2;while(1){if(m==1)printf("********************************商品信息的查看*******************************\n");if(m==2){入计出return 0;}本商品管理系统执行主流程。

它先以可读写的方式打开数据文件,此文件默认为“C:\goods list.txt”,若该文件不存在,则新建此文件。

用c语言编写个人财务管理程序

用c语言编写个人财务管理程序

用C语言编写个人财务管理程序青岛理工大学《C语言程序设计》题目个人财务管理程序一、内容个人财务管理程序主要实现对每次财务收支的管理,具有输入收支信息、按天查询信息、按月查询信息、按年查询信息、查询全部信息、删除全部收支信息、按天删除部分收支信息、退出等功能。

本系统操作十分简单用户只需按提示选择所需要执行的功能或输入相应信息即可。

在主功能区中有1、2、3、0四种选择。

选主功能区中的 1 是输入收支信息。

选择主功能区中的2 是进入查询收支信息功能区,在查询功能区有五个子功能选择1、2、3、4、0;选择1 是按天查询收支信息;选择2 是按月查询收支信息,选择3 是按年查询收支信息,选择4是查询全部收支信息,其中2、3、4查询方式还可以显示总收入、总支出和总余额;选择0 是退出查询功能区。

选择主功能区中的3是进入删除收支信息功能区,在删除功能区中有1、2、0三种子功能选择,选择1 是按日期删除某天的收支信息,选择2 是删除所有的收支信息;选择0是退出删除功能区。

选择主功能区的0是退出个人财务管理系统。

二、上机环境操作系统:Windows XP开发工具:VC6.0三、函数调用关系图四、各函数功能说明1、void main() 主函数2、void input() 输入收支信息函数3、void Output() 查询收支信息函数4、void Dateput() 按天查询收支信息函数5、void Monput() 按月查询收支信息函数6、void Yearput() 按年查询收支信息函数7、void Allput() 查询所有收支信息8、void Delete() 删除收支信息函数9、void Delpart() 按日期删除部分信息函数 10、void Delall() 删除所有信息函数五、算法描述或流程图算法描述:函数一:void input() /*输入收支信息函数*/ {FILE *ap;printf("\t输入收入:"); /*输入收入*/scanf("%g",&RMB.shou);printf("\t收入来源:"); /*输入收入来源*/scanf("%s",RMB.a);printf("\t输入支出:");scanf("%g",&RMB.zhi); /*输入支出*/printf("\t支出去向:");scanf("%s",RMB.b); /*输入支出去向*/RMB.yu=RMB.shou-RMB.zhi;printf("\t输入年月日:");scanf("%d",&RMB.year); /*输入年月日*/scanf("%d",&RMB.mon);scanf("%d",&RMB.day);if((ap=fopen("money.txt","ab"))==NULL) /*打开文件*/printf("不能建立文件money.txt\n");elsefwrite(&RMB,sizeof(struct money),1,ap); /*将收支信息记录在money.txt文件*/fclose(ap); /*关闭文件*/printf("************************************************************ **********\n");}函数二:void Output() /*查询收支信息函数*/ {int i;while(1){printf("\n 1 按天查询部分收支信息\n");printf(" 2 按月查询部分收支信息\n");printf(" 3 按年查询部分收支信息\n");printf(" 4 查询全部收支信息\n");printf(" 0 退出查询\n");printf(" 请选择查询方式:"); /*输入选择*/scanf("%d",&i);if(i==1){Dateput(); /*调用按日期查询收支信息函数*/}else if(i==2)Monput();else if(i==3)Yearput();else if(i==4){Allput(); /*调用查询全部收支信息函数*/}else if(i==0){printf("************************************************************ *****\n");break; /*退出查询收支信息函数*/}else{printf(" 输入错误!\n");printf("************************************************************ ******\n");break; /*用户输入错误时退出*/}}}函数三:void Dateput() /*按日期查询收支信息函数*/ {FILE *ap;int y,m,d,n=0;float zs=0,zz=0,s=0;printf("\t输入要查询的年月日:"); /*输入要查询的年、月、日*/scanf("%d%d%d",&y,&m,&d);if((ap=fopen("money.txt","r"))==NULL)printf("不能读取money.txt文件\n");while(1){if(fread(&RMB,sizeof(struct money),1,ap)>0) /*从文件读取信息*/{if(y==RMB.year&&m==RMB.mon&&d==RMB.day) /*查找用户查询的收支信息并将其输出*/{printf("\t收入:%g\n\t收入来源:%s\n",RMB.shou,RMB.a);printf("\t支出:%g\n\t支出去向:%s\n",RMB.zhi,RMB.b);printf("\t余额:%g\n\n",RMB.yu);zs+=RMB.shou; /*统计该天的总收入、总支出、总余额*/zz+=RMB.zhi;s+=RMB.yu;n++; /*统计该天的收支次数*/}}else break;}fclose(ap); /*关闭文件*/if(n==0) printf("\t无该日期的收支信息!\n");if(n>=2) /*若该天收支次数大于1则输出该天的总收入、总支出、总余额*/ {printf("\n\t该天有%d次收支信息\n",n);printf("\t该天总收入:%g\n",zs);printf("\t该天总支出:%g\n",zz);printf("\t该天总余额:%g\n",s);}printf("************************************************************ ***********\n");}函数四:void Monput() /*按月查询收支信息函数*/{FILE *ap;int y,m;float zs=0,zz=0,s=0;printf("输入要查询的年月:");scanf("%d%d",&y,&m);if((ap=fopen("money.txt","r"))==NULL)printf("不能打开money.txt文件!\n");while(fread(&RMB,sizeof(struct money),1,ap)>0){if(y==RMB.year&&m==RMB.mon) /*在文件中查找符合条件的信息并输出*/{printf("\t%d年%d月%d日\n",RMB.year,RMB.mon,RMB.day);printf("\t收入:%g\n\t收入来源:%s\n",RMB.shou,RMB.a);printf("\t支出:%g\n\t支出去向:%s\n",RMB.zhi,RMB.b);printf("\t余额:%g\n\n",RMB.yu);zs+=RMB.shou; /*统计查询月份的总收入、总支出、总余额*/zz+=RMB.zhi;s+=RMB.yu;}}fclose(ap);printf("\t%d年%d月总收入:%g\n",y,m,zs); /*输出所查询月份的总收入、总支出、总余额*/printf("\t%d年%d月总支出:%g\n",y,m,zz);printf("\t%d年%d月总余额:%g\n",y,m,s);printf("************************************************************ ******************");}函数五:void Yearput() /*按年查询收支信息函数*/{FILE *ap;int y;float zs=0,zz=0,s=0;printf("输入要查询的年份:");scanf("%d",&y);if((ap=fopen("money.txt","r"))==NULL)printf("不能打开money.txt文件!\n");while(fread(&RMB,sizeof(struct money),1,ap)>0){if(y==RMB.year) /*输出符合条件的信息*/{printf("\t%d年%d月%d日\n",RMB.year,RMB.mon,RMB.day);printf("\t收入:%g\n\t收入来源:%s\n",RMB.shou,RMB.a);printf("\t支出:%g\n\t支出去向:%s\n",RMB.zhi,RMB.b);printf("\t余额:%g\n\n",RMB.yu);zs+=RMB.shou; /*统计查询年份的总收入、总支出、总余额*/zz+=RMB.zhi;s+=RMB.yu;}}fclose(ap);printf("\t%d年总收入:%g\n",y,zs); /*输出年度总收入、总支出、总余额*/ printf("\t%d年总支出:%g\n",y,zz);printf("\t%d年总余额:%g\n",y,s);printf("******************************************************************************\n");}函数六:void Allput() /*查询全部收支信息函数*/{FILE *ap;float s=0,zs=0,zz=0;if((ap=fopen("money.txt","r"))==NULL)printf("不能读取money.txt文件\n");while(1){if(fread(&RMB,sizeof(struct money),1,ap)>0) /*在money.txt文件中读取信息*/{printf("\t日期:%d %d %d\n",RMB.year,RMB.mon,RMB.day); /*输出年、月、日*/printf("\t收入:%g\n\t收入来源:%s\n",RMB.shou,RMB.a); /*输出查询的收入、收入来源*/printf("\t支出:%g\n\t支出去向:%s\n",RMB.zhi,RMB.b); /*输出查询的支出、支出去向*/printf("\t余额:%g\n\n",RMB.yu); /*输出余额*/zs+=RMB.shou; /*统计总收入*/zz+=RMB.zhi; /*统计总支出*/s+=RMB.yu; /*统计总余额*/}else break;}printf("************************************************************ ***********\n");printf("\t总收入:%g\n\t总支出:%g\n\t总余额:%g\n",zs,zz,s); /*输出总收入、总支出、总余额*/printf("************************************************************ ***********\n");fclose(ap); /*关闭文件*/}函数七:void Delete() /*删除收支信息函数*/{int i;while(1){printf("\n 1 按日期部分删除\n");printf(" 2 全部删除\n");printf(" 0 退出删除\n");printf(" 请选择删除方式:");scanf("%d",&i); /*收受用户输入的删除方式*/if(i==1) /*按日期删除部分收支信息*/{Delpart(); /*调用按日期删除部分收支信息函数*/}else if(i==2) /*删除全部信息*/{Delall(); /*调用删除全部收支信息函数*/}else if(i==0) /*退出删除*/{printf("************************************************************ *****\n");break;}else /*用户输入的信息错误*/{printf(" 输入错误!\n");printf("************************************************************ ***\n");break;}}}函数八:void Delpart() /*按日期删除部分收支信息函数*/ {FILE *ap;List *head,*r,*s,*pb;int n=0,y,m,d;head=(List *)malloc(sizeof(List)); /*创建头节点*/head->next=NULL;r=head;if((ap=fopen("money.txt","r"))==NULL)printf("不能打开money.txt文件!\n");printf(" 输入要删除的年月日:");scanf("%d%d%d",&y,&m,&d);while(fread(&RMB,sizeof(struct money),1,ap)>0) /*在文件中读取信息查找要删除的信息*/{if(y==RMB.year&&m==RMB.mon&&d==RMB.day)n++;else{s=(List *)malloc(sizeof(List)); /*尾插入法创建链表并将不需要删除的信息存在数据域*/s->data=RMB;r->next=s;r=s;}}r->next=NULL; /*为节点的next置为NULL*/fclose(ap); /*关闭文件*/if(n) /*要删除的信息存在*/{ap=fopen("money.txt","wb"); /*重新打开文件并删除原全部记录*/pb=head->next;while(pb!=NULL){fwrite(&pb->data,sizeof(struct money),1,ap); /*将链表数据域中的数据读入文件得到删除后的新文件*/pb=pb->next;}fclose(ap); /*删除成功,关闭文件*/printf(" \n 成功删除%d年%d月%d日的收支信息!\n",y,m,d);printf("************************************************************ ****\n");}else /*要删除的信息部存在*/{printf(" \n 无%d年%d月%d日的收支信息!\n",y,m,d);printf("************************************************************ ****\n");}}函数九:void Delall() /*删除全部收支信息函数*/{FILE *ap;ap=fopen("money.txt","wb");fclose(ap);printf(" \n 成功删除全部收支信息!\n");printf("************************************************************ *\n");}函数函数十:void main(){int i;printf("**********************^_^欢迎进入个人财务管理程序^_^*************************\n");printf(" 1 输入收支信息\n");printf(" 2 查询收支信息\n");printf(" 3 删除收支信息\n");printf(" 0 退出\n");printf(" 请选择要执行的功能:");scanf("%d",&i);while(i!=0){if(i==1){input(); /*调用输入收支信息函数*/printf(" 1 输入收支信息\n");printf(" 2 查询收支信息\n");printf(" 3 删除收支信息\n");printf(" 0 退出\n");printf(" 请选择要执行的功能:");scanf("%d",&i);}else if(i==2){Output(); /*调用查询收支信息函数*/ printf(" 1 输入收支信息\n");printf(" 2 查询收支信息\n");printf(" 3 删除收支信息\n");printf(" 0 退出\n");printf(" 请选择要执行的功能:");scanf("%d",&i);}else if(i==3) /*调用删除收支信息函数*/ {Delete();printf(" 1 输入收支信息\n");printf(" 2 查询收支信息\n");printf(" 3 删除收支信息\n");printf(" 0 退出\n");printf(" 请选择要执行的功能:");scanf("%d",&i);}else /*用户输入错误时提示*/{printf("\n 只能输入1或2或3或0!\n");printf(" 请重新选择要执行的功能:");scanf("%d",&i);}}printf("========================^_^ 谢谢您的使用!^_^============================\n");}六、程序运行效果图七、总结通过做个人财务管理程序这课程设计,我意识到逻辑分析能力理清问题的思路以及函数间的相互调用关系很重要。

c语言程序课程设计-实验设备管理系统

c语言程序课程设计-实验设备管理系统

课程设计报告书实验设备管理系统班级:学号: 9姓名:指导教师:二零一零年七月十五号课程设计报告内容1.选择题目题目:实验设备管理系统2.内容摘要摘要:实验室设备管理系统是典型的设备信息管理系统,要求能为学校实验室管理提供信息化动态化的管理,方便实验室设备管理工作,提高设备管理质量和使用效率。

而且系统应符合设备管理的有关规定,包括新设备的申请、购买确认、新设备信息录入、旧设备维修和报废及用户管理等。

能满足日常工作的基本需要,并达到操作过程中的直观、方便、实用、安全等有关要求。

实验室设备管理系统是一个典型的信息管理系统,采用面向对象的分析方法,给出系统的基本结构、设计特色、设计模型及实现途径,并且对系统的开发技术进行研究。本系统是一个为适应对学校实验室设备管理的迫切需求而设计开发的软件系统。

3.索引关键词关键词:结构体、文件、数组、函数4.目录●目录……………………………………………………………●题目要求 (3)●设计思想............................................................3-4 ●系统完成及功能 (4)●界面设计……………………………………………………4-5●核心算法及说明………………………………………….5-11●结论 (11)●考资料 (12)●后记 (12)●附录………………………………………………………12-135. 正文包括课程设计的要求,设计思想,系统完成的功能,及界面设计,核心算法及说明,和结论几部分,正文必须从页首开始。

课程设计题目要求实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。

主要功能:1、能够完成对设备的录入和修改2、对设备进行分类统计3、设备的破损耗费和遗损处理4、设备的查询要求:使用二进制文件方式存储数据,系统以菜单方式工作设计思想第一,应该具有自动初始化的功能。

商品管理系统c语言

商品管理系统c语言

商品管理系统c语言简介商品管理系统是一个广泛应用于商业领域的软件系统,用于管理商品的库存、销售、采购以及相关的数据统计和报表分析等功能。

本文将从系统设计的角度出发,探讨如何使用C语言实现一个简单的商品管理系统。

系统需求分析在设计商品管理系统之前,首先需要明确系统的功能需求。

根据实际商业场景的特点,我们可以确定以下功能: 1. 商品信息管理:包括商品的基本信息(名称、编号、价格等)以及库存管理(进货、出货、盘点等)。

2. 销售管理:记录商品的销售情况,统计销售额、销售量等数据。

3. 采购管理:记录商品的采购情况,统计采购额、采购量等数据。

4. 数据统计和报表分析:根据销售和采购数据,生成各种报表进行数据分析。

数据结构设计在实现商品管理系统时,需要合理设计数据结构来存储商品的信息和相关操作。

以下是主要的数据结构设计: 1. 商品结构体:包含商品的编号、名称、价格、库存数量等信息。

2. 销售记录结构体:包含销售的商品编号、销售数量、销售日期等信息。

3. 采购记录结构体:包含采购的商品编号、采购数量、采购日期等信息。

4. 统计信息结构体:包含销售额、采购额、库存总量等信息。

系统流程设计商品信息管理流程1.显示主菜单:包含商品信息管理、销售管理、采购管理、数据统计和报表分析四个功能选项。

2.商品信息管理功能:包含商品的新增、删除、修改和查询功能。

1.新增商品:输入商品的编号、名称、价格、库存数量等信息,将商品添加到商品列表中。

2.删除商品:输入要删除的商品编号,从商品列表中删除该商品。

3.修改商品:输入要修改的商品编号,根据提示修改商品的相关信息。

4.查询商品:输入要查询的商品编号或名称,显示商品的详细信息。

3.销售管理功能:包含销售记录的新增和查询功能。

1.新增销售记录:输入销售的商品编号和销售数量等信息,将销售记录添加到销售记录列表中。

2.查询销售记录:输入要查询的销售日期,显示该日期的销售记录。

用c语言编写商品管理系统

用c语言编写商品管理系统

用c语言编写商品管理系统-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<string.h>#define LEN sizeof(struct commdity)#define FORMAT "%-8d%-15s%-12.11f%-12.11f%-12.11f\n"#define DATA comm[i].num,comm[i].name,comm[i].price,comm[i].count,comm[i].total /*定义商品的结构体*/struct commdity{int num;char name[15];double count;double total;}comm[100000],t;/*函数的声明*/void in(); /*商品录入并保存*/void show(); /*显示商品记录*/void order(); /*商品记录排序*/void del(); /*商品记录删除*/void modify(); /*商品记录修改*/void menu(); /*主菜单*/void insert(); /*商品记录插入*/void total(); /*商品统计*/void search(); /*查看商品记录*/void main(){int n;menu();scanf("%d",&n);while(n){switch(n){case 0:break;case 1:in();break;case 2:search();break;case 3:del();break;case 4:modify();break;case 5:insert();break;case 6:order();break;case 7:total();break;default:printf("error! 操作错误.....\n");break;}getch();menu();scanf("%d",&n);}}/**************************自定义主菜单函数************************/ void menu(){system("cls"); /*清屏*/printf("\n\n\n\n\n");printf("\t\t--------欢迎将进入商品管理系统----------------\n");printf("\t\t|\t0.退出 |\n");printf("\t\t|\t1.录入记录 |\n");printf("\t\t|\t2.查找记录 |\n");printf("\t\t|\t3.删除记录 |\n");printf("\t\t|\t4.修改记录 |\n");printf("\t\t|\t5.插入记录 |\n");printf("\t\t|\t6.排序记录 |\n");printf("\t\t|\t7.统计记录 |\n");printf("\t\t|--------------------------------------------|\n");printf("\t\t\t请输入您的操作类型【0-7】: \n");}/**************************自定义商品录入并保存函数************************/void in(){int i,m=0;char ch[2];FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){ printf("不能打开文件!\n");return; }while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0)printf("无商品记录........\n");else{ system("cls");show();}if((fp=fopen("data.txt","wb"))==NULL){ printf("不能打开文件!\n");return;}for(i=0;i<m;i++)fwrite(&comm[i],LEN,1,fp);printf("是否输入(y/n):\n");scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){ printf("编号:\n");scanf("%d",&comm[m].num);for(i=0;i<m;i++)if(comm[m].num==comm[i].num){ printf("该记录已经存在,按任意键返回......\n"); getch();fclose(fp);return;}printf("商品名:\n");scanf("%s",comm[m].name);printf("单价:\n");scanf("%lf",&comm[m].price);printf("数量:\n");scanf("%lf",&comm[m].num);comm[m].total=comm[m].count*comm[m].price;if(fwrite(&comm[m],LEN,1,fp)!=1){ printf("不能保存!\n");getch();return;}else{ printf("%s 已经保存!\n",comm[m].name);m++;printf("是否继续(y/n):\n");scanf("%s",ch);}fclose(fp);printf("OK!\n");return;}/**************************自定义显示商品记录函数************************/void show(){int i,m=0;FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开记录!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录........\n");}else{printf("编号商品名称单价数量总金额\t\n");for(i=0;i<m;i++){printf(FORMAT,DATA);}}}/**************************自定义商品查看函数************************/ void search(){ FILE *fp;int snum,i,m=0;char ch[2];if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)fclose(fp);if(m==0){ printf("无商品记录........\n");return;}printf("编号:\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==comm[i].num){printf("已经找到记录,是否显示(y/n):\n");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf("编号商品名称单价数量总金额\t\n"); printf(FORMAT,DATA);break;}elsereturn;}if(i==m){printf("没有找到相应的记录....\n");}}/**************************自定义商品记录删除函数************************/void del(){int i,m=0,j,snum;char ch[2];FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录........\n");return;}printf("请输入编号:\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==comm[i].num)break;if(i==m){printf("没有找到.....\n");getch();return;}printf("已经找到记录,是否删除(y/n):\n");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){for(j=i;j<m;j++)comm[j]=comm[j+1];m--;printf("删除成功....\n");}if((fp=fopen("data.txt","wb"))==NULL){printf("不能打开文件!\n");return;}for(i=0;i<m;i++)if(fwrite(&comm[j],LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}/**************************自定义商品记录修改函数************************/void modify(){int i,m=0,snum;char ch[2];FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录........\n");fclose(fp);return;}printf("请输入您要修改信息的编号:\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==comm[i].num)break;if(i<m){printf("已经找到该记录,是否修改(y/n):\n");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf("商品名:\n");scanf("%s",comm[i].name);printf("单价:\n");scanf("%lf",&comm[i].price);printf("数量:\n");scanf("%lf",&comm[i].num);comm[i].total=comm[i].count*comm[i].price;}elsereturn;}else{printf("没有找到......\n");getchar();return;}if((fp=fopen("data.txt","wb"))==NULL){printf("不能打开文件!\n");return;}for(i=0;i<m;i++)if(fwrite(&comm[i],LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}/**************************自定义商品记录插入函数************************/void insert(){int i,m=0,j,k,snum;FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}if(m==0){printf("无商品记录........\n");fclose(fp);return;}printf("请输入要插入记录的位置【即编号】:\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==comm[i].num)break;for(j=m-1;j>i;j--)comm[j+1]=comm[j];printf("请输入您要插入的信息:\n");printf("编号:\n");scanf("%d",&comm[i+1].num);for(k=0;k<m;k++)if(comm[k].num==comm[i+1].num&&k!=i+1){ printf("该编号已经存在,按任意键继续......\n"); getch();fclose(fp);return;}printf("商品名:\n");scanf("%s",comm[i+1].name);printf("单价:\n");scanf("%lf",&comm[i+1].price);printf("数量:\n");scanf("%lf",&comm[i+1].num);comm[i+1].total=comm[i+1].count*comm[i+1].price;if((fp=fopen("data.txt","wb"))==NULL){printf("不能打开文件!\n");return;}for(k=0;k<m+1;k++)if(fwrite(&comm[k],LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}/**************************自定义商品记录统计函数************************/void total(){int i,m=0;FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开记录!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}if(m==0){printf("无商品记录........\n");fclose(fp);}else{printf("编号商品名称单价数量\t\n");for(i=0;i<m;i++){printf("%-8d%-15s%-12.11f%-12.11f\n",comm[i].num,comm[i].name,comm[i].price,comm[i].count);} printf("一共有%d条记录!\n",m);fclose(fp);}}/**************************自定义商品记录排序函数************************/void order(){int i,j,m=0;FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开记录!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录........\n");}else{for(i=0;i<m;i++)for(j=i+1;j<m;j++){if(comm[i].total<comm[j].total){t=comm[i];comm[i]=comm[j];comm[j]=t;}}printf("编号商品名称单价数量总金额\t\n");for(i=0;i<m;i++){printf(FORMAT,DATA);}}}11。

C语言实验室设备管理系统

C语言实验室设备管理系统

C语言程序设计报告1课程设计题目:实验室设备管理里系统实验设备信息包括:设备编号、设备种类(如:微机打印机扫描仪等等)、设备名称、设备价格、设备购入日期、是否报废、报废日期等。

试设计一实验设备信息管理系统,使之能提供以下功能:(1)能够完成对设备的录入和修改(2)对设备进行分类统计(3)设备的查询2需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。

3总体设计与模块的划分整个系统可设计为实验设备信息输入模块实验设备信息添加模块实验设备信息修改模块实验设备分类统计模块和实验设备查询模块。

N+4建立实验设备信息结构体结构体成员包括设备编号设备名称部门编号部门名称设备价格设备购买时间是否报废报废日期。

5应用程序功能详细说明程序运行后进入管理系统,显示目录:录入设备信息,修改设备信息,查询设备信息,统计设备信息,报废设备信息,退出录入设备信息系统提示用户在原有的基础上录入新的设备信息。

流程图如下:(1)修改记录系统要求用户输入要修改的设备编号,这时系统会显示设备的具体信息,用户只需该设备新的信息按要求输入即可对信息进行修改。

流程图如下:(2) 显示记录无记录退出,有记录者按要求输出。

流程图如下:(3)(4)查询记录若信息为空,则不能查询。

流程图如下:(6)结束语通过本次c语言的程序设计,我不仅提高巩固了c语言的基础,也初学习了编写一个实用程序的流程,提高了动手操作能力,也提高了对编程的兴趣。

我相信经过努力后,我的编程能力一定会得到提高。

源程序代码清单:voidmain(){Node*equip;FILE*fp;intflag;Node*p,*q;printf("\t\t\t\t设备管理系统\n");equip=(Node*)malloc(sizeof(Node));equip->next=NULL;p=equip;fp=fopen("设备管理系统","wb+");q=(Node*)malloc(sizeof(Node));if(fread(q,sizeof(Node),1,fp))/*将文件的内容放入接点中*/{q->next=NULL;p->next=q;p=q;/*将该接点挂入链表中*/}while(1){printf("********************目录***********************");printf("\n1添加记录\n");printf("\n2修改记录\n");printf("\n3显示记录\n");printf("\n4统计分类\n");printf(“\n5查询记录\n”);printf("\n0*-EXIT-*\n");printf("请输入你要操作的序号:");scanf("%d",&flag);switch(flag){case0:printf("\n>>>>>>>>>>提示:已经退出系统,ByeBye!\n");break;case1:Add(equip);break;/*增加记录*/case2:Modify(equip);break;/*修改记录*/case3:Disp(equip);break;/*显示记录信息*/case4:Tongji(equip);break;/*统计记录*/case5:chaxun(equip);break;/*查询记录*/default:printf("\n>>>>>>>>>>提示:输入错误!\n");break;}}}Structshebei{charID[10];charname[15];charkind[15];charover[15];charyesno[10];chartime[10]; charprice[10];}voidAdd(Node*equip)/*添加记录*/{Node*p,*r,*s;charid[10];/*先用于输入ID,也用于判断是否跳出循环*/r=equip;s=equip->next;/*使s为第一个有用的结点*/while(r->next!=NULL)/*这个循环的作用是使r为最后一个有用的结点*/r=r->next;/*将指针置于最末尾*/while(1){printf(">>>>>>>>>>提示:输入0则返回主菜单!\n");printf("\n请你输入设备ID号:");scanf("%s",id);if(strcmp(id,"0")==0)break;p=(Node*)malloc(sizeof(Node));/*申请空间*/strcpy(p->data.ID,id);printf("\n请输入设备名称:");printf("\n请输入设备种类:");scanf("%s",p->data.kind);printf("\n请输入报废日期:");scanf("%s",&p->data.over);printf("\n请输入设备是否报废:");scanf("%s",&p->data.yesno);printf("\n请输入设备购买时间:");scanf("%s",&p->data.time);printf("\n请输入设备价格:");scanf("%s",&p->data.price);printf(">>>>>>>>>>提示:已经完成一条记录的添加。

个人防护用品使用和管理程序

个人防护用品使用和管理程序1、目的确保实验室个人防护用品的质量持续符合要求,实验人员和相关实验人员能够正确使用,以保护实验人员及相关实验人员的人身安全,避免发生实验室感染事故。

2、适用范围适用于所有进入生物安全实验室的各类人员。

3、职责3.1实验室负责人负责保证实验室有足够、合格的个人防护用品;组织相关人员接受生物安全和专业技术的培训。

3.2生物安全监督员负责所有进入本实验室工作或来访人员的安全监督。

3.3实验人员进入实验室前,应自觉接受个人防护装备穿戴的培训,并规范佩戴个人防护用品,严格遵守相关制度和操作程序,按照相关要求处理使用过的个人防护用品。

3.4采购部门根据各实验室需求负责采购符合国家标准和防护要求的防护用品。

3.5人事部门负责建立和实施实验人员的健康监护和免疫接种工作制度和工作,并建立个人健康档案。

4、程序4.1岗前培训所有实验工作人员(包括进修、实习、见习人员)都应接受上岗前的生物安全和专业技术培训,考试合格取得上岗证后才能进入实验室开展实验活动。

4.2免疫接种实验人员从事相关病原微生物实验活动前建议提前接种相关免疫制剂。

4.3健康监护各部门应做好实验人员的健康监护,发现不适合从事当前岗位的工作人员要及时调离或换岗。

4.4个人防护装备总体要求实验室所用的任何个人防护装备应符合国家有关标准的要求。

在生物危害评估的基础上,按防护要求选择合适的个人防护装备,并有相应的程序控制个人防护装备的选择、使用、维护等。

4.4.1实验室防护服(1)防护服的选择:选用符合国家标准的防护服,防护服应干燥、清洁、无霉斑、表面不允许有粘连、裂縫、孔洞等缺陷;防护服连接部位应平整、密封,无气泡;防护服的拉链不能外露,拉头应能自锁;应具有防水抗裂阻燃及抗静电等性能。

(2)防护服穿戴脱卸:按照相关的规定进行。

(3)防护服的舒适性检查:大小应适宜、穿脱方便,可进行伸缩、深蹲等动作。

4.4.2手套(1)进入实验室工作时,要求戴两层手套。

C语言程序设计个人财务管理系统

步调安排工程锻炼报告之阳早格格创做C谈话步调安排部分财务管造系统课程称呼 C谈话步调安排工程锻炼姓名院(系)疑息科教取技能教院博业班级教号指挥西席教务处造目录2系统总框图战功能模块证明13系统安排24系统调试34.1、步调启初真止时系统的所隐现的页里:34.2、采用退出系统:34.3、采用登陆,而且输进的帐号战暗号皆精确:3 4.4、用户输进的帐号没有精确:44.5、用户输进的帐号精确,暗号没有精确:44.6、用户举止简直支配:55归纳66源步调浑单6编写一个部分财务开销管造系统,主要办理的问题是动做一个系统而止,它所要里对付没有不过某一部分而止,而是要里对付很多的用户.那么念要办理那一问题,便必须央供那个系统不妨保存许多用户的基础疑息战记录.共时也央供系统不妨对付分歧的用户的身份举止查找战考证.正在考证通过之后,正在对付其举止用户所央供的支配.动做一个财务开销系统,那么便央供对付于用户闭于款项的每一项支配皆要有相映的记录,共时并允许用户对付于每一条完齐的记录举止支配,比方不妨根据时间去查找某一决定日期是可举止了支进大概者开销的支配,也不妨根据特定的需要去简略某一条完齐的记录.但是没有允许对付每条记录的单项数据举止变动,果为没有管是支进仍旧开销,所波及的金额皆是牢固的,时间也是牢固的,所以系统没有允许用户对付其举止支配.除此除中,还必须有脚够大的空间去保存新的记录.所以此步调便是鉴于那个思维而编写出去的,基础谦脚了用户对付于一个财务开销管造系统所央供的相闭功能.2系统总框图战功能模块证明功能模块证明(1)old_record( ):此函数由系统自止调用,效率是将所有用户疑息存进系统.(2)void save( ): 此函数的效率是将结构体数组中的疑息写进文献保存,由系统调用.(3)load( ):此函数的效率是将结构体数组中写进文献的疑息读出,由系统调用.(4)lookup_accounts():此函数的效率是将用户输进的帐号取系统中的所有帐号举止对付比,查看系统中是可有此帐号.(5)check_code( ):此函数是效率是正在系统查询到了帐号之后,对付用户输进的帐号战暗号举止考验,瞅是可相对付应.(6)print_message():此函数的功能是正在系统查看了用户输进的帐号战暗号之后,如果用户通过了系统的查看,正在此隐现用户可睹的基础疑息.(7)find_record():此函数的效率是根据用户输进的日期举止查找支配.(8)insert_record():此函数的功能是正在记录中减少一条新的记录,那个记录由用户输进.(9)del_record():此函数的功能是根据用户的输进的位子,将相映位子的记录简略.(10)sum_num():此函数的功能是估计所有支进战开销的总战,估计局部的支进的总合,估计局部输出的总合.(11)挨印输出记录的函数:正在本步调中一公有三个挨印输出记录的函数,分别为all_print()、acc_print()、pay_print()那三个函数.它们的功能依次是挨印输出局部记录,挨印输出输进记录,挨印输出开销记录.(12)mian( ):正在主函数中,不妨根据用户的采用去支配系统允许用户使用的功能,也不妨随时退出那个系统.3系统安排主要结构体部分疑息账户疑息主要功能函数old_record( ) //将所有用户疑息存进系统print_message() //隐现用户可睹的基础疑息sum_num() //估计所有支进战开销的总战all_print()、acc_print()、pay_print() //挨印输出局部记录,挨印输出输进记录,挨印输出开销记录4系统调试4.1、步调启初真止时系统的所隐现的页里:4.2、采用退出系统:4.3、采用登陆,而且输进的帐号战暗号皆精确:4.4、用户输进的帐号没有精确:4.5、用户输进的帐号精确,暗号没有精确:4.6、用户举止简直支配:5归纳本步调正在编写是,主要便是鉴于用户的角度去分解该怎么样安排此步调,战编写功能模块的.正在编写步调时,所有的数据皆是对付结构体举止的支配,正在此历程中,尔创造了自己正在对付指针支配的时间,更加是对付指背结构体数组的指针战指背结构体的指针的支配皆没有敷流利.但是正在编写完此步调之后,尔感觉自己对付语法的应用有了明隐的普及.6源步调浑单#include<stdio.h>#include<string.h>#define null 0#define max 20#define ok 1struct record{char date[20];char operate[20];int num;};struct list_record{char account[20];char code[20];char name[20];int rec_len;struct record rec[max];}r[max];//系统本罕见据,用户没有成知int old_record( struct list_record r[]){int i;for(i=0;i<3;i++)r[i].rec_len=4;strcpy(r[0].account,"1001");strcpy(r[1].account,"1002");strcpy(r[2].account,"1003");strcpy(r[0].code,"111111");strcpy(r[1].code,"222222");strcpy(r[2].code,"333333");strcpy(r[0].name ,"wang");strcpy(r[1].name ,"li");strcpy(r[2].name ,"zhang");strcpy(r[0].rec[0].date,"07-01-01"); strcpy(r[0].rec[1].date,"07-02-01"); strcpy(r[0].rec[2].date,"07-03-01"); strcpy(r[0].rec[3].date,"07-04-01"); strcpy(r[1].rec[0].date,"07-01-02"); strcpy(r[1].rec[1].date,"07-02-02"); strcpy(r[1].rec[2].date,"07-03-02"); strcpy(r[1].rec[3].date,"07-04-02"); strcpy(r[2].rec[0].date,"07-01-03"); strcpy(r[2].rec[1].date,"07-02-03"); strcpy(r[2].rec[2].date,"07-03-03"); strcpy(r[2].rec[3].date,"07-04-03"); strcpy(r[0].rec[0].operate,"in");strcpy(r[0].rec[1].operate,"out");strcpy(r[0].rec[2].operate,"in");strcpy(r[0].rec[3].operate,"out");strcpy(r[1].rec[0].operate,"out");strcpy(r[1].rec[1].operate,"in");strcpy(r[1].rec[2].operate,"out");strcpy(r[1].rec[3].operate,"in");strcpy(r[2].rec[0].operate,"in");strcpy(r[2].rec[1].operate,"out");strcpy(r[2].rec[2].operate,"in");strcpy(r[2].rec[3].operate,"out");r[0].rec[0].num=3000;r[0].rec[1].num=-1500;r[0].rec[2].num=2500;r[0].rec[3].num=-1000;r[1].rec[0].num=-3000;r[1].rec[1].num=5000;r[1].rec[2].num=-1000;r[1].rec[2].num=2000;r[2].rec[0].num=1000;r[2].rec[1].num=-1500;r[2].rec[2].num=3000;r[2].rec[2].num=-500;return ok;}//将数据写进文献void save( ){FILE *fp;int i;if((fp=fopen("wenjian","wb"))==null){printf("can not open the file.\n");return;}for(i=0;i<max;i++)if(fwrite(&r[i],sizeof(struct list_record),1,fp)!=1) printf("file write error.\n");fclose(fp);}//文献读出void load( ){FILE *fp;int i;if((fp=fopen("wenjian","rb"))==null){printf("can not open infile.\n");return;}for(i=0;i<max;i++)if(fread(&r[i],sizeof(struct list_record),1,fp)!=1){if(feof(fp))(fclose(fp));return;}fclose(fp);}//将用户输进的帐号取系统中本有帐号比较,查找用户帐号int lookup_accounts( struct list_record r[],char acc[]){int i;for(i=0;i<3;i++)if(strcmp(r[i].account,acc)==0){return ok;}printf("帐号没有存留,请沉新输进!\n");return null;}//查看暗号函数struct list_record check_code(struct list_record r[],char acc[],char c[]){int i;struct list_record a;strcpy(a.account,"0");strcpy(a.code,"0");a.rec_len=0;for(i=0;i<a.rec_len;i++){strcpy(a.rec[i].date,"0");strcpy(a.rec[i].operate,"0");a.rec[i].num=0;}for(i=0;i<3;i++)if(strcmp(r[i].account,acc)==0)if(strcmp(r[i].code,c)==0)return r[i];printf("the code is wrong,please input again!\n"); return a;}//隐现用户基础疑息void print_message( struct list_record *p) {printf("姓名:%s\n",p->name);printf("帐号:%s\n",(*p).account);}//根据用户输进的日期,查找记录int find_record( struct list_record *p,char d[]) {int i;for(i=0;i<(*p).rec_len;i++){{printf("date operate money\n");printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate);printf("%d \n",(*p).rec[i].num);return ok;}}if(i==(*p).rec_len)printf("the date is not exit!\n");return null;}//拔出函数,根据用户输进的疑息,减少记录int insert_record( struct list_record *p,struct record *p1,int lop) {int i;if((lop<1)||(lop>((*p).rec_len+1))){printf("the position is wrong.\n");return 0;}else{for(i=(*p).rec_len;i>lop-1;i--){strcpy((*p).rec[i].date,(*p).rec[i-1].date);strcpy((*p).rec[i].operate,(*p).rec[i-1].operate);(*p).rec[i].num=(*p).rec[i-1].num;}strcpy((*p).rec[i].operate,(*p1).operate);(*p).rec[i].num=(*p1).num;(*p).rec_len++;return ok;}}// 简略记录函数int del_record( struct list_record *p,int lop2){int i;if((lop2<1)||(lop2>(*p).rec_len)){printf("the position is wrong.\n");return null;}else{for(i=lop2-1;i<(*p).rec_len-1;i++){strcpy((*p).rec[i].date,(*p).rec[i+1].date);strcpy((*p).rec[i].operate,(*p).rec[i+1].operate); (*p).rec[i].num=(*p).rec[i+1].num;}(*p).rec_len--;return ok;}}//输出局部记录函数void all_print( struct list_record *p){ int i;printf("date operate num\n"); for(i=0;i<(*p).rec_len;i++){ printf("%s ",(*p).rec[i].date); printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num); printf("\n");}}//估计总的钱数int sum_num( struct list_record *p) {int i;int sum=0;int sum_in=0;int sum_out=0;for(i=0;i<(*p).rec_len;i++){sum+=(*p).rec[i].num;if((*p).rec[i].num>0)sum_in+=(*p).rec[i].num;if((*p).rec[i].num<0)sum_out+=(*p).rec[i].num;}printf("总金额为: %d\n",sum);printf("总支进为: %d\n",sum_in); printf("总开销为: %d\n",sum_out); return ok;}//输出支进记录int acc_print( struct list_record *p){int i;int sum_acc=0;printf("date operate num\n");for(i=0;i<(*p).rec_len;i++)if((*p).rec[i].num>0){sum_acc+=(*p).rec[i].num;printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num);printf("\n");}printf("总支进金额为: %d\n",sum_acc); return ok;if(sum_acc==0)printf("there is no account.\n");return null;}//输出开销记录int pay_print( struct list_record *p){int i;int sum_pay=0;printf("date operate num\n");for(i=0;i<p->rec_len;i++)if((*p).rec[i].num<0){sum_pay+=(*p).rec[i].num;printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate);printf("%d ",(*p).rec[i].num);printf("\n");}printf("总的开销为: %d\n",sum_pay);return ok;if(sum_pay==0)printf("there is no payout.\n");return null;}void main( ){int j=0,n=0;int x,k,lop1,lop2;char data1[20];char accou[20],cod[20];struct record *p0;struct record a;struct list_record b;struct list_record *p;b.rec_len=0;p0=&a;old_record(r);save( );load( );printf(" 欢迎使用部分财务开销管造系统!\n");printf("------------------------------------------------------------\n");printf("| |\n");printf("| 1、登陆系统 |\n");printf("| 2、退出系统 |\n");printf("| |\n");printf("------------------------------------------------------------\n");scanf("%d",&x);if(x==0)printf(" 感动您使用本系统,再睹!\n");else{do{printf("请输进帐号:"); //while(j<3);scanf("%s",accou);if(lookup_accounts(r,accou)){ printf("请输进暗号:"); //while(j<3);scanf("%s",cod);b=check_code(r,accou,cod);if(b.rec_len==0){do{b=check_code(r,accou,cod); //while(n>3)scanf("%s",cod);n++;}while(n<3);if(n=3)printf("您的暗号没有精确,请退出系统,开开使用,再睹!\n"); break;}else{printf("---------------请采用您要举止的支配-------------------\n"); printf("| |\n"); //while(j<3);printf("| 2、查找记录 |\n");printf("| 3、减少记录 |\n");printf("| 4、简略记录 |\n");printf("| 5、输出所有记录 |\n");printf("| 6、输出所有支进记录 |\n");printf("| 7、输出所有开销记录 |\n");printf("| |\n");printf("-----------------------------------------------------|\n");p=&b;print_message(p);do{scanf("%d",&k); //while(k>0)if(k==10)printf("感动您使用本系统,再睹!\n");if(k==2){printf("请输进您要查询的日期:");scanf("%s",data1);find_record(p,data1);}if(k==3){printf("请输进您要拔出的位子:\n");scanf("%d",&lop1);printf("请输进您要增加的记录:\n");printf("日期:");scanf("%s",p0->date);printf("支配:");scanf("%s",p0->operate);printf("金额:");scanf("%d",&(p0->num));insert_record(p,p0,lop1);}if(k==4){printf("请输进您要简略的记录的位子:\n"); scanf("%d",&lop2);del_record(p,lop2);}if(k==5){all_print(p);sum_num(p);}if(k==6)acc_print(p);if(k==7)pay_print(p);}while(k>0);break;}}j++;}while(j<3);printf("感动您使用本系统,再睹!\n");}}(2)量化评分表请教死将底下结果评比表复造到报告的末尾一页(单独一页).。

学生信息管理系统——高级语言程序设计(报告)

学校名称软件设计报告题目:学生信息管理系统系部名称:专业名称:班级:学号:学生姓名:指导教师:时间:一、实验目的1通过上机编写程序加深对C语言的认识与理解。

2能够熟练应用函数的调用,结构体数组。

3熟练应用for ,do-while等循环语句,if,switch等条件判断语句,以及strcmp,strcpy的运用。

4学会用Visual C++解决实际问题,提高独自解决问题的能力。

5熟练掌握运用文件的相关知识。

二、实验内容编写公寓管理系统程序,设置管理人员和非管理人员页面,管理人员页面主要有排序、查询、输入、更新、外来人员登记以及修改密码,储存信息有学生信息、公寓物品信息以及外来人员信息,学生信息有:姓名、学号、性别、年龄以及所在系别;公寓物品信息主要统计桌子椅子床衣柜的总数量和损坏的数量,以及需要维修的其它物品;外来人员信息主要记录人员姓名、性别、年龄以及证件号,并对此程序进行调试,修改,运行,最终达到实际应用。

三、需求分析1.系统功能描述1)进入管理人员页面设置了注册和登陆功能,注册信息时需要管理人员才能确认码(1234)才能完成登陆。

可进入管理员系统修改密码。

2)输入信息包括输入学生信息和输入物品信息。

3)更新信息中主要有添加(学生、物品)、修改(学生、物品)和删除(学生、物品、外来人员记录)。

4)查询信息:学生信息可以按学号、姓名和公寓号查询,物品按公寓号查询,外来人员按证件号查询。

5)排序分为按学号和姓名排序(只对学生信息)。

6)外来人员登记主要是记录外来人员的信息。

7)非管理人员系统可实现的只有排序和查询。

8)将信息保存在文件中,以便随时调用。

2.本系统要实现的目标。

1)将烦琐复杂的排序等工作用计算机完成。

2)将各类信息分开方便查询和修改。

3)记录外来人员的信息。

4)将管理人员和非管理人员分开,就是非管理人员只能查询和查看排序表。

5)管理人员进入页面需要登陆,账号密码通过注册获得,注册时需要管理人员确认码(1234)。

用c语言编写商品管理系统

#include<stdio、h>#include〈stdlib、h〉#include〈conio、h〉#include<dos、h>#include<string、h>#define LEN sizeof(struct mdity)#defineFORMAT "%—8d%—15s%-12、11f%—12、11f%-12、11f\n"#define DATA m[i]、num,m[i]、name,m[i]、price,m[i]、count,m[i]、total/*定义商品得结构体*/structmdity{intnum;charname[15];doublecount;doubletotal;}m[100000],t;/*函数得声明*/voidin();/*商品录入并保存*/void show();/*显示商品记录*/void order(); /*商品记录排序*/ voiddel(); /*商品记录删除*/void modify();/*商品记录修改*/void menu(); /*主菜单*/voidinsert(); /*商品记录插入*/ void total(); /*商品统计*/voidsearch(); /*查瞧商品记录*/ voidmain(){int n;menu();scanf("%d",&n);while(n){switch(n){case 0:break;case1:in();break;case 2:search();break;case 3:del();break;case 4:modify();break;case 5:insert();break;case6:order();break;case 7:total();break;default:printf(”e rror!操作错误、、、、、\n");break;}getch();menu();scanf("%d”,&n);}}/**************************自定义主菜单函数************************/void menu(){system(”cls"); /*清屏*/printf("\n\n\n\n\n");printf("\t\t—--——-—-欢迎将进入商品管理系统——--——-----—----\n");printf("\t\t|\t0、退出|\n”);printf(”\t\t|\t1、录入记录|\n”);printf(”\t\t|\t2、查找记录|\n”);printf("\t\t|\t3、删除记录|\n”);printf(”\t\t|\t4、修改记录|\n");printf("\t\t|\t5、插入记录|\n”);printf("\t\t|\t6、排序记录|\n");printf("\t\t|\t7、统计记录|\n");printf("\t\t|—--——-—----——-----——-———---——-----—----—----|\n");printf("\t\t\t请输入您得操作类型【0-7】: \n");}/**************************自定义商品录入并保存函数************************/voidin(){int i,m=0;char ch[2];FILE*fp;if((fp=fopen("data、txt”,"ab+"))==NULL){printf(”不能打开文件!\n");return; }while(!feof(fp)){if(fread(&m[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0)printf("无商品记录、、、、、、、、\n");else{system(”cls”);show();ﻩ}if((fp=fopen(”data、txt","wb"))==NULL){printf(”不能打开文件!\n”);return;}for(i=0;i<m;i++)fwrite(&m[i],LEN,1,fp);printf(”就是否输入?(y/n):\n");scanf("%s",ch);while(strcmp(ch,”Y")==0||strcmp(ch,”y”)==0){printf("编号:\n”);scanf(”%d",&m[m]、num);for(i=0;i<m;i++)if(m[m]、num==m[i]、num){printf(”该记录已经存在,按任意键返回、、、、、、\n”);getch();fclose(fp);return;}printf("商品名:\n”);scanf("%s",m[m]、name);printf("单价:\n");scanf("%lf",&m[m]、price);printf("数量:\n”);scanf("%lf",&m[m]、num);m[m]、total=m[m]、count*m[m]、price;if(fwrite(&m[m],LEN,1,fp)!=1){printf("不能保存!\n");getch();return;}else{printf(”%s 已经保存!\n”,m[m]、name);m++;}printf(”就是否继续?(y/n):\n");scanf("%s",ch);}fclose(fp);printf("OK!\n”);return;}/**************************自定义显示商品记录函数************************/voidshow(){int i,m=0;FILE *fp;if((fp=fopen("data、txt”,”ab+"))==NULL){printf(”不能打开记录!\n");return;}while(!feof(fp)){if(fread(&m[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录、、、、、、、、\n");}else{printf("编号商品名称单价数量总金额\t\n");for(i=0;i〈m;i++){printf(FORMAT,DATA);}}}/**************************自定义商品查瞧函数************************/void search(){FILE*fp;int snum,i,m=0;char ch[2];if((fp=fopen("data、txt”,"ab+”))==NULL){printf(”不能打开文件!\n");return;}while(!feof(fp)){if(fread(&m[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf(”无商品记录、、、、、、、、\n");return;}printf("编号:\n”);scanf(”%d",&snum);for(i=0;i〈m;i++)if(snum==m[i]、num){printf("已经找到记录,就是否显示?(y/n):\n”);scanf("%s”,ch);if(strcmp(ch,"Y”)==0||strcmp(ch,"y")==0){printf(”编号商品名称单价数量总金额\t\n”);printf(FORMAT,DATA);break;}elsereturn;}if(i==m){printf("没有找到相应得记录、、、、\n");}}/**************************自定义商品记录删除函数************************/void del(){inti,m=0,j,snum;char ch[2];FILE*fp;if((fp=fopen(”data、txt”,”a b+"))==NULL){printf(”不能打开文件!\n");return;}while(!feof(fp)){if(fread(&m[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf(”无商品记录、、、、、、、、\n");return;}printf(”请输入编号:\n”);scanf("%d",&snum);for(i=0;i<m;i++)if(snum==m[i]、num)break;if(i==m){printf("没有找到、、、、、\n");getch();return;}printf("已经找到记录,就是否删除?(y/n):\n");scanf(”%s”,ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){for(j=i;j〈m;j++)m[j]=m[j+1];m--;printf("删除成功、、、、\n");}if((fp=fopen(”data、txt","wb"))==NULL){printf(”不能打开文件!\n");return;}for(i=0;i〈m;i++)if(fwrite(&m[j],LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}/**************************自定义商品记录修改函数************************/void modify(){int i,m=0,snum;charch[2];FILE*fp;if((fp=fopen("data、txt”,”ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)){if(fread(&m[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录、、、、、、、、\n");fclose(fp);return;}printf("请输入您要修改信息得编号:\n");scanf(”%d”,&snum);for(i=0;i<m;i++)if(snum==m[i]、num)break;if(i〈m){printf(”已经找到该记录,就是否修改?(y/n):\n”);scanf(”%s",ch);if(strcmp(ch,"Y”)==0||strcmp (ch,"y")==0){printf("商品名:\n”);scanf("%s”,m[i]、name);printf(”单价:\n");scanf("%lf”,&m[i]、price);printf("数量:\n”);scanf("%lf”,&m[i]、num);m[i]、total=m[i]、count*m[i]、price;}elsereturn;}else{printf("没有找到、、、、、、\n");getchar();return;}if((fp=fopen(”data、txt”,”wb”))==N ULL){printf("不能打开文件!\n”);return;}for(i=0;i<m;i++)if(fwrite(&m[i],LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}/**************************自定义商品记录插入函数************************/void insert(){inti,m=0,j,k,snum;FILE *fp;if((fp=fopen(”data、txt”,”ab+”))==NULL){printf("不能打开文件!\n”);return;}while(!feof(fp)){if(fread(&m[m],LEN,1,fp)==1)m++;}if(m==0){printf("无商品记录、、、、、、、、\n");fclose(fp);return;}printf("请输入要插入记录得位置【即编号】:\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==m[i]、num)break;for(j=m-1;j>i;j-—)m[j+1]=m[j];printf(”请输入您要插入得信息:\n”);printf("编号:\n");scanf("%d",&m[i+1]、num);for(k=0;k<m;k++)if(m[k]、num==m[i+1]、num&&k!=i+1){printf("该编号已经存在,按任意键继续、、、、、、\n");getch();fclose(fp);return;}printf("商品名:\n");scanf(”%s”,m[i+1]、name);printf("单价:\n");scanf("%lf”,&m[i+1]、price);printf("数量:\n");scanf(”%lf”,&m[i+1]、num);m[i+1]、total=m[i+1]、count*m[i+1]、price;if((fp=fopen("data、txt”,"wb"))==NULL){printf(”不能打开文件!\n”);return;}for(k=0;k<m+1;k++)if(fwrite(&m[k],LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}/**************************自定义商品记录统计函数************************/voidtotal(){int i,m=0;FILE *fp;if((fp=fopen("data、txt","ab+"))==NULL){printf("不能打开记录!\n”);return;}while(!feof(fp)){if(fread(&m[m],LEN,1,fp)==1)m++;}if(m==0){printf("无商品记录、、、、、、、、\n”);fclose(fp);}else{printf("编号商品名称单价数量\t\n”);for(i=0;i〈m;i++){printf(”%-8d%—15s%-12、11f%—12、11f\n",m[i]、num,m[i]、name,m[i]、price,m[i]、count);}printf("一共有%d条记录!\n",m);fclose(fp);}}/**************************自定义商品记录排序函数************************/voidorder(){inti,j,m=0;FILE *fp;if((fp=fopen("data、txt”,"ab+"))==NULL){printf("不能打开记录!\n");return;}while(!feof(fp)){if(fread(&m[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录、、、、、、、、\n”);}else{for(i=0;i〈m;i++)for(j=i+1;j<m;j++){if(m[i]、total〈m[j]、total){t=m[i];m[i]=m[j];m[j]=t;}}printf(”编号商品名称单价数量总金额\t\n");for(i=0;i<m;i++){printf(FORMAT,DATA);}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《程序设计与算法综合实习I》题目:个人物品管理程序班级:学生学号:学生:指导老师:提交时间: 2015.05.16成绩:华南农业大学信息学院《个人物品管理程序》1.问题描述1.1问题描述设计一个个人物品管理程序,该程序具有以下功能:(1)用户登录:输入用户名和密码,密码正确才允许登录。

(2)录入个人物品信息;(3)给定物品名或编号,修改该个人物品信息;(4)给定物品名或编号,删除该个人物品信息;(5)根据输入的物品名或编号,显示查找到的相应物品信息;(6)根据输入的分类,显示该分类的所有物品信息;(7)根据输入的时间,查询过期或3月将过期的物品信息;(8)统计功能:统计各分类的物品。

(9)新功能:导出个人物品信息至Excel表格。

1.2系统功能分析(1)登录功能:这是一个个人物品管理程序,具有很大的开放性,已经注册的用户可以直接输入密码登陆系统,没有注册的用户可以根据自己的需要注册账户,并输入个人物品信息。

(2)录入个人物品信息:这个系统设置录入的物品信息主要包括物品的名称、编号、价格、分类、生产日期和过期日期。

(3)给定物品名或编号,修改个人物品信息:要修改物品信息时,输入物品的编号或名称查看物品信息,确认无误后可以选择对应的物品信息进行修改。

(4)给定物品名或编号,删除个人物品信息:要删除物品信息时,输入物品的编号或名称查看物品信息,确认无误后可以删除该物品信息。

(5)根据输入的物品名或编号,显示查找到的相应物品信息:输入你想查找的物品名或编号,若找到对应物品信息,则显示;否则提示用户查找的物品不存在,请重新输入想要查找的物品名或编号。

(6)根据输入的分类,显示该分类的所有物品信息:若找到则显示该分类的物品信息,否则提示用户该分类不存在。

(7)根据输入的时间,查询已过期或3个月将过期的物品信息:将物品的过期时间与输入时间作比较,若过期时间与输入时差小于3个月则输出对应物品信息。

(8)统计功能:统计各分类的物品信息。

(9)导出个人物品信息至Excel表格:每个人都可以将自己的物品信息导出至Excel 表格,可以对自己的个人物品信息一目了然。

1.3开发平台及工具介绍我这个程序是使用Code::Blocks10.05编写的,它是一个开放源码的全功能的跨平台C/C++集成开发环境,它使用了著名的的图形界面库wxWidgets版。

它还提供了许多工程模板,包括控制台应用、DirectX应用和动态库等,另外它还支持用户自定义模板;它支持语法彩色醒目显示,支持代码完成,支持工程管理、项目构建、调试;它还具有灵活而强大的配置功能。

1.系统设计2.1系统总体结构设计(1)运行程序时,一开始我设置了对系统进行操作的选择界面,包括3个功能,一是登录系统,二是创建新账户,三是退出程序。

用户可以根据自己的实际情况进行选择,输入对应的操作数从而选择不同的功能。

我在这里使用了switch-case语句。

当用户选择了登陆系统或创建新账户操作时,程序会要求输入账号(20个字符以),以及密码(10个字符以),在输入密码时我使用了getch()函数(在头文件conio.h中)隐藏用户密码信息,当用户登陆成功或创建新用户成功时程序就会进入功能选择界面;如果用户选择退出程序,程序运行停止。

(2)功能选择界面,我提供了九个功能选择,分别是录入个人物品信息、给定物品名或编号,修改该个人物品信息、给定物品名或编号,删除该个人物品信息、根据输入的物品名或编号,显示查找到的相应物品信息、根据输入的分类,显示该分类的所有物品信息、根据输入的时间,查询已过期或3个月将过期的物品信息、统计功能:统计各分类的物品信息、导出个人物品信息至Excel表格、退出到登陆界面。

根据用户输入的操作数,我使用了switch语句实现相应功能。

(3)录入个人物品信息:录入的物品信息包括物品的名称、编号、价格、分类、生产日期和过期日期。

我首先将信息录入链表中,之后用自定义的保存函数Save()将信息存入文件中。

(4)给定物品名或编号,删除个人物品信息:先输入要删除的物品名或编号,之后再通过文件指针在文件中找到相应物品信息并输出,用户确定无误后可以自行选择删除与否,若删除再调用Save函数,否则退回到功能选择界面。

(5)给定物品名或编号,修改个人物品信息:与删除个人物品信息一样,根据输入的物品名或编号,通过文件指针找到物品信息并输出,用户可以根据自己的需要选择修改对应的信息,在确认修改后,通过Save函数保存信息,放弃修改则退回功能选择界面。

(6)根据输入的物品名或编号,显示查找到的相应物品的所有信息,这也是通过文件指针实现的查找。

(7)根据输入的分类,显示该分类的所有物品信息:输入想查找的分类,使用一个字符数组记录输入的分类,使用文件指针对文件进行只读操作,将输入的分类与fgets()读出的分类比较,若相同则输出对应物品所有信息,直到文件指针为空。

(8)根据输入的时间,查询已过期或3个月将过期的物品信息:按照固定的时间输入格式(如2015年1月1日则写成20150101)输入时间,再与文件中的过期时间比较,通过比较,输出输入时间与过期时间之差小于3个月的物品信息。

(9)统计功能:统计各分类的物品信息,使用文件指针对文件进行读操作,分别记录不同分类的物品个数,之后输出分类信息和对应的物品个数。

(10)导出个人物品信息至Excel表格:创建新的文件指针,将链表里的信息写入名为“goods.xls”的Excel文件里,输出的时候包括跳格符‘\t’和换行符‘\n’符号,保证输出格式的正确性。

(11)退出到登陆界面,其他用户可以继续使用该系统。

2.2数据结构设计我主要定义了用户信息结构user和物品信息结构Goods,还有使用了3个文件,分别用于存放用户信息和物品信息。

用户信息结构体struct user{char username[20];char password[8];};username是账号,password是密码。

物品信息结构体typedef struct wp //定义数据结构{char name[20]; /*名称*/char number[6];/*编号*/char price[6];/*价格*/char categoty[10]; /*分类*/char MFG[9]; /*生产日期*/char EXP[9]; /*过期时间*/struct wp *next;}Goods;2.3系统各个函数及函数之间关系设计开始登陆系统2.4界面设计(1)开始界面(2)功能选择界面(3)查找物品界面(4)录入新物品(5)删除物品信息界面(6)修改物品信息界面(7)输出物品分类界面(8)查询过期物品界面(9)统计分类信息界面(10)导出物品信息到Excel表格界面3.系统实现①登陆模块登录系统欢迎使用个人物品管理系统创建新账户退出系统选择对应操作,登陆时用户名或密码错误会提示输入账号或密码错误,并退回到本界面;创建新账户成功后会提示创建成功,并退到本界面,只需用刚创建的用户名和密码登陆即可,只有用户和密码都正确,才会提示登陆成功并跳转到功能选择界面。

②录入个人物品信息物品名称物品编号物品价格录入物品信息物品分类生产日期过期时间按照提示输入相应的物品信息。

③输入物品名或编号之后,程序会输入对应物品信息,确认删除后才会删除对应物品信息并保存。

物品名称物品编号物品价格删除物品信息物品分类生产日期过期时间④修改物品信息:输入物品名或编号之后,程序会输入对应物品信息,可以选择对应信息进行修改。

列出要修改物品所有信息修改物品信息选择对应信息进行修改⑤查找物品信息输入物品名或编号查找物品信息列出对应物品信息⑥根据输入的分类,显示该分类的所有物品信息输入物品分类根据输入分类显示物品信息列出对应物品信息⑦根据输入的时间,查询已过期或3个月将过期的物品信息输入查询时间查询过期物品或三个月过期物品比较输入的时间和过期时间输出对应物品信息⑧统计功能:统计各分类的物品信息用不同变量记录不同分类的物品个数统计各分类的物品信息用文件指针对文件进行读写输出物品分类及对应物品个数⑨导出个人物品信息至Excel表格输出物品存储信息项目名称导出物品信息到Excel表格1.系统测试(1)设计测试用例:登陆账号名称:201430330101 密码:123456录入个人物品信息:名称:水杯编号:10 价格:50 分类:日常用品生产日期:20140101过期时间:20160101删除物品信息:名称:钢笔编号:01修改个人物品信息:修改编号为11的物品名称为灯查找物品信息:查找编号为10的物品信息根据输入分类输出该分类所有物品:输入文具过期物品查询:输入时间为20160101统计各分类物品个数;导出物品信息到Excel表格;预期结果:全都符合要求。

1.系统运行界面:①登录系统②录入个人物品信息③删除物品信息④修改个人物品信息⑤查找物品信息⑥根据输入分类输出该分类所有物品⑦过期物品查询⑧统计各分类物品个数⑨导出物品信息到Excel表格(3)运行结果与预期结果相同。

1.总结刚开始设计时毫无头绪,代码也是写得一团糟,感觉自己对上学期的容好陌生,所以决定还是先把有关容看一遍。

后来我看了课本和上网查了有关资料,然后再仔细地看了一遍题目要求:信息要求必须存在文件里面,而且数据操作要用链表,所以我将程序设计为开始时读取文件信息到链表,退出时再把链表信息全部覆盖写回文件里面。

但是在实际操作中发现自己对链表这一块还是不太熟悉,所以又去找了一些和链表有关的资料。

最后自己就边摸索着尝试了一下,最后发现原来也不是特别难,其实最大的欠缺就是动手能力差。

这次的程序设计,我觉得不仅是让我复习了上学期学过的容,更是发现了自己在学习上的许多缺点和不足,也是给了自己一个反省的机会,我觉得自己在以后的学习中必须要将理论与实际相结合,在巩固理论知识的基础上一定要将其付诸实践,要敢于尝试,不要让一次的失败就让自己士气全无。

附(源代码):#include<stdio.h>#include<malloc.h>#include<string.h>#include<stdlib.h>#include<conio.h>struct user//用户信息{char username[20];char password[8];};typedef struct wp //定义数据结构{char name[20]; /*名称*/char number[6];/*编号*/char price[6];/*价格*/char categoty[10]; /*分类*/char MFG[9]; /*生产日期*/char EXP[9]; /*过期时间*/struct wp *next;}Goods;void Newuser(void)//创建新账户{printf(" 欢迎创建新账户!\n");FILE *fp;char p[10];int i=0;void encrypt(char *mima);//加密算法struct user su;if((fp=fopen("f:\\usermessage","a+"))==NULL){printf("文件打开失败!\n");exit(0);}printf("请输入新账号:");scanf("%s",ername);printf(" 请输入密码:");while((p[i]=getch())!='\r'){printf("*");i++;}p[i]='\0';strcpy(su.password,p);encrypt(su.password);fprintf(fp,"%s %s\n",ername,su.password); if(fclose(fp)){printf("文件无法关闭!\n");exit(0);}printf("\n 恭喜你成功创建新账户!\n"); }void encrypt(char *mima)//加密程序{int i,j;j=strlen(mima);for(i=0;i<j;i++)mima[i]=mima[i]^15;;}int Login(char *mark)//用户登录{system("color 0A");struct user su;FILE *fp;int i=0;char usr[30],usr1[30],mima[10],p[10];int check=0;printf("请输入账号名称:");scanf("%s",ername);printf("请输入登录密码:");while((p[i]=getch())!='\r'){printf("*");i++;p[i]='\0';strcpy(su.password,p);strcpy(usr,ername);strcpy(mima,su.password);encrypt(mima);strcat(usr," ");strcat(usr,mima);strcat(usr,"\n");if((fp=fopen("f:\\usermessage","r"))==NULL){printf("File open error!\n");exit(0);}while(!feof(fp)){fgets(usr1,30,fp);if(strcmp(usr,usr1)==0){check=1;break;}}if(fclose(fp)){printf("Can not close the file\n");exit(0);}if(check==1){printf("\n 恭喜你,登陆成功!\n");//登陆成功 strcpy(mark,ername);return 1;}else{printf("\n 用户名或密码错误,请重新登陆\n");return 0;}}void Save(Goods *h,char *mark)//保存记录{FILE *fp;Goods *p;char wp[20];strcpy(wp,mark);strcat(wp,".dat");if((fp=fopen(wp,"wb"))==NULL)printf(" Can't open the file!\n");exit(0);}printf("\n Save succefully!\n");p=h;while(p!=NULL){fwrite(p,sizeof(Goods),1,fp);p=p->next;}fclose(fp);}Goods *Load(char *mark)//读入记录{Goods *p,*q,*h=NULL;char ch;FILE *fp;char wp[20];strcpy(wp,mark);system("cls");strcat(wp,".dat");if((fp=fopen(wp,"ab+"))==NULL){printf(" Can't open the file!\n");exit(1);}p=(Goods *)malloc(sizeof(Goods));if(!p){printf(" Memory overflow!\n");return h;}h=p;ch=fgetc(fp);if(ch==EOF){h=NULL;p->next=NULL;return h;}rewind(fp);while(!feof(fp)){if(1!=fread(p,sizeof(Goods),1,fp))break;p->next=(Goods *)malloc(sizeof(Goods));if(!p->next){printf(" Memory overflow!\n");return h;}q=p;p=p->next;}q->next=NULL;fclose(fp);return h;}void Excel(char *mark)//新功能,将物品信息导出至Excel表格{system("cls");Goods *p,*head=Load(mark);p=head;FILE *fpex;int i=0;if((fpex=fopen("goods.xls","w"))==NULL){system("color 04");printf("文件导出失败!");exit(0);}fprintf(fpex,"名称编号价格(元)分类生产日期过期时间\n");while(p!=NULL){fprintf(fpex,"%s %s %s %s %s %s\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);p=p->next;i++;}if(fclose(fpex)){printf("Can't close the file!\n");exit(0);}if(i){printf("\n");printf(" ┏━━━━━━━━━━━━━━┓\n");printf(" ┃文件成功导出至“goods.xls”.┃\n");printf(" ┗━━━━━━━━━━━━━━┛\n");}else{system("color 04");printf("\n┏━━━━━━━━━━━━━━━┓\n");printf("┃导出至文件“goods.xls”失败!┃\n");printf("┗━━━━━━━━━━━━━━━┛\n");}}void DeleteGoods(char *mark){//给定物品名或编号,删除该个人物品信息system("cls");char s[10];int i=0,a=1,j=0;int k;Goods *p,*q,*head=Load(mark);p=head;while(a==1){printf("输入要删除物品名或编号:");scanf("%s",s);while(p!=NULL){i++;if(strcmp(s,p->name)==0)break;if(strcmp(s,p->number)==0)break;p=p->next;};if(p!=NULL){printf("##################################################### ###########################");printf(" 要删除物品名:");printf("%s\n",p->name);printf(" 要删除物品编号:");printf("%s\n",p->number);printf(" 要删除物品价格:");printf("%s\n",p->price);printf("要删除物品生产日期:");printf("%s\n",p->MFG);printf(" 要删除物品分类:");printf("%s\n",p->categoty);printf("要删除物品过期时间:");printf("%s\n",p->EXP);printf("################################################################################");a=2;}else{printf("您要删除的物品不存在!请重新输入!\n");}}printf("你确定要删除该物品的信息吗?\n1.是 2.否\n");scanf("%d",&k);if(k==1){if(i==1)head=head->next;else{p=head;while(p->next&&j<i-2){p=p->next;++j;}if(!(p->next)||j>i-1)exit(0);q=p->next;p->next=q->next;free(q);}Save(head,mark);printf(" 你已成功删除该物品信息!\n");}else printf("你已取消删除操作!\n");}void AddNewGoods(char *mark)//录入个人物品信息{system("cls");Goods *p,*head,*s,*q;head=Load(mark);p=q=head;int a=1;s=(Goods*)malloc(sizeof(Goods));printf("┌┬┬┬┬┬┬┬┬┬┐\n");printf("├请输入新物品信息┤\n");printf("└┴┴┴┴┴┴┴┴┴┘\n");printf(" 输入物品名称:");scanf("%s",s->name);while(a==1){while(q!=NULL){if(strcmp(s->name,q->name)==0)break;q=q->next;};if(q!=NULL){printf("该物品名已存在,请重新输入物品名:");scanf("%s",s->name);q=head;}else{a=2;q=head;}}printf(" 输入物品编号:");scanf("%s",s->number);while(a==2){while(q!=NULL){if(strcmp(s->number,q->number)==0)break;q=q->next;};if(q!=NULL){printf("该物品编号已存在,请重新输入物品编号:"); scanf("%s",s->number);q=head;}else{a=3;q=head;}}printf(" 输入物品价格(元):");scanf("%s",s->price);printf(" 日期输入格式(例:20150101)\n");printf(" 输入物品生产日期:");scanf("%s",s->MFG);printf(" 输入物品过期日期:");scanf("%s",s->EXP);printf(" 输入物品分类:");scanf("%s",s->categoty);s->next=NULL;if(p==NULL){Save(s,mark);}else{while(p->next!=NULL){p=p->next;}p->next=s;Save(head,mark);}}void SearchGoods(char *mark)//根据输入的物品名或编号,显示查找到的相应物品信息{system("cls");char s[10];printf("输入物品名或编号:");scanf("%s",s);Goods *head,*q;head=Load(mark);q=head;while(q!=NULL){if(strcmp(s,q->name)==0)break;if(strcmp(s,q->number)==0)break;q=q->next;};if(q!=NULL){printf(" 物品名:");printf("%s\n",q->name);printf(" 物品编号:");printf("%s\n",q->number);printf(" 物品价格:");printf("%s\n",q->price);printf(" 物品生产日期:");printf("%s\n",q->MFG);printf(" 物品过期日期:");printf("%s\n",q->EXP);printf(" 物品分类:");printf("%s\n",q->categoty);}else printf("没有找到该物品!\n");}void ChangeGoods(char *mark)//给定物品名或编号,修改该个人物品信息{system("cls");char s[10];int choice=0;int i=1;int k;printf("输入要修改物品名或编号:");scanf("%s",s);Goods *head,*p,*q;Goods w;head=Load(mark);p=q=head;while(p!=NULL){if(strcmp(s,p->name)==0)break;if(strcmp(s,p->number)==0)break;p=p->next;};if(p!=NULL){printf("##################################################### ###########################");printf(" 修改物品基本信息:\n");printf(" 物品名:");printf("%s\n",p->name);printf(" 物品编号:");printf("%s\n",p->number);printf(" 物品价格:");printf("%s\n",p->price);printf(" 物品生产日期:");printf("%s\n",p->MFG);printf(" 物品过期时间:");printf("%s\n",p->EXP);printf(" 物品分类:");printf("%s\n",p->categoty);printf("##################################################### ###########################");printf(" 请输入要修改的物品信息:\n");printf("1.物品名");printf(" 2.物品编号\n");printf("3.物品价格");printf(" 4.物品生产日期\n");printf("5.物品过期时间");printf(" 6.物品分类\n");scanf("%d",&choice);switch(choice){case 1:printf(" 请输入修改后物品名:");scanf("%s",);while(i==1){while(q!=NULL){if(strcmp(,q->name)==0)break;q=q->next;};if(q!=NULL){printf("该物品名已存在,请重新输入物品名:"); scanf("%s",);q=head;}else{i=2;q=head;strcpy(p->name,);}}break;case 2:printf("请输入修改后的物品编号:");scanf("%s",w.number);{while(q!=NULL){if(strcmp(w.number,q->number)==0)break;q=q->next;};if(q!=NULL){printf("该物品名已存在,请重新输入物品名:"); scanf("%s",w.number);q=head;}else{i=2;q=head;strcpy(p->number,w.number);}}break;case 3:printf("请输入修改后的物品价格:");scanf("%s",p->price);case 4:printf("请输入修改后的物品生产日期:");scanf("%s",p->MFG);case 5:printf("请输入修改后的物品过期时间:");scanf("%s",p->EXP);case 6:printf("请输入修改后的物品类别:");scanf("%s",p->categoty);default: printf("输入错误!请重新输入要修改的物品信息:");scanf("%d",&choice);break;}}else printf("没有找到该物品!\n");printf("你确定修改信息?\n1.是 2.否\n");scanf("%d",&k);if(k==1){Save(head,mark);printf("物品信息已完成修改!\n");}else printf("你已取消修改物品信息!\n");}void Sort(char *mark)//根据输入的物品名或编号,显示查找到的相应物品信息{system("cls");Goods *head,*p,*q,*k;int i=1;head=Load(mark);q=p=k=head;char s[10];system("cls");while(i==1){printf("请输入需要查找的该分类:");scanf("%s",s);while(q!=NULL){if(strcmp(s,q->categoty)==0)break;q=q->next;};printf("|名称 |编号 |分类 |\n");if(q!=NULL){for(;;){if((strcmp(p->categoty,s)==0)&&p!=NULL){printf("|%-10s|%-6s|%-10s|\n",p->name,p->number,p->categoty); }p=p->next;if(p==NULL){i=2;break;}}}else {printf("您输入的分类不存在,请重新输入!\n");q=k;}}}void AllSort(char *mark)//根据输入的分类,显示该分类的所有物品信息{system("cls");Goods *head,*p,*q;char b[10];int i=0;head=Load(mark);p=q=head;typedef struct lb{char categoty[20];struct lb *next;}lb;lb *k,*l,*m,*s,*j;k=(lb*)malloc(sizeof(lb));k->next=NULL;l=(lb*)malloc(sizeof(lb));s=(lb*)malloc(sizeof(lb));j=(lb*)malloc(sizeof(lb));s=k;l=k;if(head==NULL){printf("不存在任何物品!\n");}else{while(p!=NULL){while(l->next!=NULL){j=l->next;if(strcmp(j->categoty,p->categoty)==0){l=s;p=p->next;}else l=l->next;}m=(lb*)malloc(sizeof(lb));strcpy(b,p->categoty);strcpy(m->categoty,b);m->next=k->next;k->next=m;k=m;l=s;p=p->next;}}printf("物品各分类数目:\n");while(s->next!=NULL){printf("%s:",s->next->categoty);strcpy(b,s->next->categoty);while(q!=NULL){if(strcmp(b,q->categoty)==0)i++;q=q->next;};if(q==NULL){printf("%d\n",i);i=0;q=head;}s=s->next;}}int atoi(const char *s)//把字符窜转换成整型数{int a,b,c,d;a=strlen(s);c=s[a-2]-'0';b=s[a-1]-'0';d=c*10+b;return d;}void SearchTime(char *mark)//根据输入的时间,查询过期或3月将过期的物品信息{system("cls");char t[9],t1[5],t2[7],t3[9],t4[5],t5[7],t6[9];int a1,a2,a3,a4,a5,a6;int x,y,z,n,m;Goods *p;system("cls");printf("输入要查找的时间:");scanf("%s",t);memcpy(t1,t,4);memcpy(t2,t,6);memcpy(t3,t,8);t1[4]='\0';t2[6]='\0';t3[8]='\0';a1=atoi(t1);a2=atoi(t2);a3=atoi(t3);p=Load(mark);if(p==NULL){printf("你尚未存储任何物品信息!\n");}else{printf("|名称 |编号 |价格 |分类 |生产日期 |过期时间 |\n");while(p!=NULL){memcpy(t4,p->EXP,4);memcpy(t5,p->EXP,6);memcpy(t6,p->EXP,8);t4[4]='\0';t5[6]='\0';t6[8]='\0';a4=atoi(t4);a5=atoi(t5);a6=atoi(t6);if(a1>a4){printf("|%-10s|%-6s|%-6s|%-10s|%-9s|%-9s|\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);}else{if(a1==a4){x=a2-a5;if(x>=-2){printf("|%-10s|%-6s|%-6s|%-10s|%-9s|%-9s|\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);}else{if(x==-3){y=a3+30;z=y-a6;if(z>=0){printf("|%-10s|%-6s|%-6s|%-10s|%-9s|%-9s|\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);}}}}else{n=a4-a1;if(n==1){m=a5-12;if((m+a2)<=2){printf("|%-10s|%-6s|%-6s|%-10s|%-9s|%-9s|\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);}else{if((m+a2)==3){if(a6<=a3){printf("|%-10s|%-6s|%-6s|%-10s|%-9s|%-9s|\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);}}}}}}p=p->next;}}}int Inputchoice()//输入操作数{system("color 0B");int mychoice;printf("--------------------------------------------------------------------------------");printf("请选择你的操作:\n");printf(" 1.查找物品信息. 2.增加新物品.\n");printf(" 3.删除物品信息. 4.修改物品信息.\n");printf(" 5.输出分类信息. 6.查询过期物品.\n");printf(" 7.显示所有分类信息. 8.导出物品信息至Excel表格.\n"); printf(" 9.退出到登陆界面.\n");printf("--------------------------------------------------------------------------------");scanf("%d",&mychoice);return mychoice;}int Operation(char *mark)//操作选择{system("color 02");int choice;while((choice=Inputchoice())!=0){switch(choice){case 1:SearchGoods(mark);break;case 2:AddNewGoods(mark);break;case 3:DeleteGoods(mark);break;case 4:ChangeGoods(mark);break;case 5:Sort(mark);break;case 6:SearchTime(mark);break;case 7:AllSort(mark);break;case 8:Excel(mark);break;case 9: system("cls");return 0;default:printf("输入有误!");break;}}return 0;}int main()//主函数{system("color 02");int choice,i=1;char mark[20];printf(" ╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf(" ╠欢迎使用个人物品管理系统!╣\n");printf(" ╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n");while(i){printf("********************************************************************************");printf(" 请选择你的操作:\n");printf(" 1.登陆系统\n");printf(" 2.创建新账户\n");printf(" 3.退出程序\n");printf("********************************************************************************");printf(" ");scanf("%d",&choice);switch(choice){case 1:if(Login(mark)==1)Operation(mark);//登陆个人用户管理系统break;case 2:Newuser();break;case 3:exit(0);default:break;}}return 0;}。

相关文档
最新文档