C语言程序的设计实验个人物品管理程序文件
cC语言物品管理-设计报告
《C 语言物品管理》课程设计报告题目:C 语言物品管理 专业:网络工程 班级:16级(3)班 姓名:代应豪 指导教师:代美丽成绩:计算机学院2017 年 4月 27 日2016-2017学年 第2学期目录1设计内容及要求 (2)1.1概述 (2)1.2主要功能 (2)1.3设计目的及具体要求 (2)2 概要设计 (2)2.1系统的功能简介 (2)2.2 总体程序框图 (3)2.3各个模块之间的主要关系 (3)3设计过程及程序代码 (3)3.1定义结构体及宏定义 (4)3.2主函数 main() (4)3.3输入物品信息函数................................................... (5)3.4输出显示物品函数 (5)3.5将物品写入磁盘 (6)3.6插入物品记录函数 (7)3.7 删除一个物品记录函数 (7)3.8按照物品编号进行递增排序函数 (8)3.9按照物品总价进行递增排序函数 (8)3.10对物品记录进行排序函数 (9)3.11输出头部信息函数 (10)3.12输出一条物品信息函数....................................... .. (10)3.13判断该编号物品是否存在函数 (10)3.14根据物品编号进行查找函数 (10)3.15根据物品名字进行查找函数 (10)3.16对物品记录进行查找函数 (11)4设计结果与分析 (12)4.1各个模块的程序流程图 (12)1)①主函数程序(N-S)流程图及运行界面 (12)2)①输入物品记录信息的(N-S)流程图及程序运行界面.......... .. (13)5设计心得 (21)6参考文献 (22)7源程序代码(物品管理系统) (23)1.设计内容及要求1.1概述《物品管理系统》主要根据课程设计要求进行设计,从对物品的简单处理着手设计一份物品管理系统。
1.2主要功能物品管理系统是一个针对物品管理的系统。
(完整word版)c语言程序设计超市管理系统
实验题目:超市管理系统一、实验目的1.熟悉 c 语言的编译连接和运行过程。
2.掌握 c 语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
3.掌握if 语句及switch 语句的运用方法及嵌套应用方法。
4.掌握实现循环结构的三种语句while 、do-while. 、for 的使用。
5.掌握函数的定义方法和调用方法。
6.能够采用模块化思想调试程序。
二.实验内容1.编写程序并进行调试运行。
2.输入商品资料,并保存于文件。
每件商品包含信息如:商品号、商品名、商品类别、商品总量、商品上限和下限、商品价格、进货日期、生产日期、保质期等。
3.对已存入的商品信息进行更新操作,包括添加一件商品信息、删除某件商品信息和修改商品信息。
4.通过按商品名、商品种类、商品进货量的方式查询商品信息。
5.输入某商品号后对其利润进行统计、对进货价格相同的商品进行统计。
6 对商品的库存量和利润进行排序。
7.最后输出商品信息,供需要时打印。
二、需求分析1.该程序可用于对商品的基本信息的存储、更新、查询、输出、统计、排序等操作,以实现管理者对商品的管理和消费者对商品的了解。
2.其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加一个或多件商品信息,也可对个别商品信息进行适当的删除或修改。
以便随时更新商品信息。
3.程序中设计的查询功能可根据需要从若干数据中查询某件商品信息,并且可根据三种不同的方法查询:按商品名查询、按商品种类查询和按商品进货量查询。
以满足不同的需要。
四、概要设计1、方案设计对系统进行分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计结构图如下:超市管理管理系统查询模块排序模块退出系统退出系统查询模块排序模块统计模块*更新模块*输出信息¥录入信息按商品名查询利润排行库存量排行退出系统第二类商品第一类商品退出系统2 •功能模块说明:对各个模块进行功能的描述(1).输入模块:录入需要管理的商品信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
《C语言程序设计》实验指导
实验1、C语言编程环境和运行C程序的方法一、实验目的1、熟悉Visual C++6.0集成开发环境的使用方法;2、熟悉C语言程序从编辑、编译、连接到最后运行得到结果的全过程及每一步骤的作用;3、了解C语言程序的结构特征与书写规则,能够编写简单的C程序;4、初步理解程序调试的思想,能找出并改正C程序中的典型语法错误。
二、实验内容1、熟悉上机环境⑴参照教材附录A(P370~376)或实验指导书前言中的内容,熟悉VC++6.0集成环境,重点是其中常用菜单、工具按钮的功能;⑵在D盘建立一个自己的工作文件夹,文件夹以班名+学号后两位+姓名来命名(例如:动漫班75号张三的工作文件夹命名为dm75zhangsan 注意:文件夹及文件的命名尽量不要用汉字!);⑶参照教材第1章中的3个例题的源代码,在自己的工作文件夹中分别创建并运行三个C源程序,初步熟悉C 程序的结构特点和运行方式。
注意:①每个例题对应一个C源程序(新建C源文件时,文件时务必要加扩展名.c);②一个源程序成功运行后,要关闭工作区后再新建下一个例题的源程序(否则会出错);2、编程参照教材例题1.1编写一个程序实现分两行输出自己的姓名及联系电话。
3、程序改错调试以下给定程序的功能是在屏幕上显示“Welcome to Y ou!”,其中存在3处语法错误,请根据编译给出的出错提示,依次指出错误所在行并进行修改,调试程序使其能运行得到正确结果。
#include<stdio.h>mian() //1{printf(Welcome to You!\n") //2}三、实验要求1、将每次实验所编辑的C 源程序调试通过后分别保存在D 盘上自己的文件夹中(备查!)及自己的U 盘中;2、对调试过程中出现的问题和解决方法进行必要的记录,并予以简要分析四、实验小结1、结合本次实验,简述C 程序从编写到最终运行的一般过程,并简要说明其中每个步骤的作用及其生成的文件类型。
物资管理系统 C语言课程设计
物资管理系统程序设计本程序在VC++ 6.0上运行无误!!!一、题目要求:主程序中,应提供文字交互菜单界面。
要求包含以下几个功能模块:(1).信息输入模块input():建立物资管理数据总文件,完成对物资原库存信息的录入,并将其存放在指定的文件(product.txt)。
(2).信息查找模块search():采用如下方式进行查找,若找到,则输出该物资的相关信息;否则,输出提示信息,如“NO FOUND”。
1).按产品信息查询;2).按进货信息查询并统计(统计某年某月进的某种产品数量,产品种类);3).按产品名称和规模查询并统计;(3).新物资入库模块:在原文件插入新物资信息。
(4).领料模块:查找所领取物资信息,若满足领料的要求,请登记领取物资名称,领料的日期,所领数量(领料后对库存修改)。
(5).打印功能模块:1).打印领料单;2).打印物资库存清单。
二、需求分析(1)、库存和领料信息以文本文件的方式存放在两个文件里,提供相应的输入输出操作。
(2)、提供库存几种方式的查找。
(3)、提供库存的建立、插入。
(4)、能查找满足领货要求的信息,并修改库存、领货文本文件。
三、总体设计根据要求可以将系统设计为七大模块。
四、详细设计1、主函数主函数只调用主菜单函数。
2、主菜单函数//********主函数********void menu(){int n,w=0;printf("\t\t**************Menu**************\n");printf("\ninput your choice:\n");scanf("%d",&n);do{if(n>6||n<1){printf("\nWrong!Input agin!\n");scanf("%d",&n);}else w=1;}while(w!=1);switch(n){case 1:input();break; 输入case 2:search_menu();break; 查找菜单流程图case 3:insert();break; 插入case 4:lend();break; 领货case 5:print_menu();break; 打印菜单case 6:exit(0); 退出}}3、输入模块[数据结构]所输入的数据在磁盘上以文本文件的形式保存,名字为product.txt! 在程序中以链表的形式储存!结构体如下:struct date /*日期结构体*/{int year;int month;int day;};struct product /*库存货物结构体*/{char p_name[20]; /*货物名称*/long int p_num; /*物资编号char size[4]; /*物资规格*/struct date in_date; /*进货日期*/long int max_s; /*最大库存量*/long int min_s; /*最小库存量*/long int real_s; /*实际库存量*/struct product *next;/*节点指针*//*输入函数*/[分析]:以只写的方式打开文件"product.txt",在do—while循环中输入各种货物的信息。
c语言课程设计物品管理
c语言课程设计物品管理一、教学目标本课程旨在通过C语言编程实现物品管理系统,让学生掌握C语言基本语法、数据结构、函数及文件操作等相关知识,培养学生具备一定的编程能力和问题解决能力。
具体目标如下:1.知识目标:–掌握C语言基本语法和编程规范。
–理解并运用数据结构(如数组、链表、栈和队列)进行编程。
–学会使用函数实现模块化编程。
–熟悉文件操作,能实现数据的读写操作。
2.技能目标:–能够运用C语言进行简单的程序设计。
–能够独立完成物品管理系统的编码和调试。
–具备查找和解决编程过程中遇到问题的能力。
3.情感态度价值观目标:–培养学生的团队合作意识和沟通表达能力。
–培养学生对编程的兴趣,激发创新精神。
–培养学生的自主学习能力,养成良好的学习习惯。
二、教学内容本课程以C语言编程实现物品管理系统为主线,教学大纲安排如下:1.C语言基础:介绍C语言的基本语法、数据类型、运算符、控制语句等。
2.数据结构:学习数组、链表、栈和队列等基本数据结构,并应用于物品管理系统的实现。
3.函数与模块化编程:学习函数的定义和调用,掌握模块化编程的方法。
4.文件操作:学习文件的基本操作,包括文件的打开、读写、关闭等。
5.项目管理:学习如何进行项目管理,包括需求分析、设计、编码、测试等。
6.物品管理系统实现:以小组为单位,分工合作完成物品管理系统的编码和调试。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解C语言基础知识和相关概念。
2.案例分析法:分析实际编程案例,让学生更好地理解知识点。
3.实验法:让学生动手实践,完成物品管理系统的编码和调试。
4.小组讨论法:分组合作完成项目,培养团队合作意识和沟通能力。
四、教学资源1.教材:选用权威、实用的C语言教材,如《C程序设计语言》(K&R)、《C Primer Plus》等。
2.参考书:提供相关的C语言编程参考书籍,如《C专家编程》、《C 陷阱与缺陷》等。
C语言物品管理-课程设计报告
2016-2017学年第二学期《高级语言程序设计》课程设计报告题目:俱乐部会员管理系统专业:网络工程(对口)班级:16(3)班姓名:代应豪指导教师:代美丽成绩:计算机学院2017 年4月25 日目录一、需求分析 (3)1.题目要求 (3)2.需求分析 (3)3.总体设计 (3)二、代码设计 (4)1.宏定义 (4)2.主函数 (5)3.各功能模块 (5)三.实验结果 (16)一、需求分析1.题目要求1)[要求]允许俱乐部成员租用DVD.若想成为会员,首先应签约并且按月交纳费用。
会员一次可租用三个DVD,没有时间限制。
可浏览所有可租用的DVD,能实现新成员的开户、会员对其账户状况的查询以及俱乐部管理者对其所交易情况的查看功能。
2)[提示]⑴需求分析:DVD信息和俱乐部会员信息用文件存储,提供文件的输入输出操作;注册新会员,提供文件的添加操作;实现按月缴纳费用,提供文件的修改操作;浏览信息提供显示操作;实现查询提供文件的查找操作;另外提供键盘式选择菜单以实现功能选择。
⑵总体设计:整体设计为会员注册模块、会员交费模块、会员租用DVD模块、会员归还DVD模块、信息浏览模块和信息查询模块等。
2.需求分析1)【输入要求】应用程序运行后,在屏幕上显示一个菜单。
用户可以根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
2)【输出要求】⑴应用程序运行后,要在屏幕上显示一个菜单;⑵要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
3.总体设计根据需求分析,可以对这个系统的设计分为以下几个模块:二、代码设计1.宏定义#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include <time.h>int n,n1; /* 全局*/int N[3];/* 记录着上次建立的档案数,从新运行程序时,不会丢上次信息*/ int yuefei=30;menu1();quit();menu2();menu3();create();/*建立档案*/add(); /* 增加信息*/monfei();dvd();search1();search2();printhuiyuan();printdvd();moon();struct dvdA{char name[20];int num;int sex;int huifei;int day;int dvd1;int dvd2;int dvd3;}stu1[100];struct dvdB{int num;char name[20];int k;}dd1[100];2.主函数主函数一般设计得比较简洁,只提供输入输出和功能处理的函数调用。
c语言编写实验物品管理
c语言编写实验物品管理实验物品管理是指对实验室中的各种仪器设备、试剂药品等实验物品进行管理、使用和维护的一项重要工作。
合理、高效地管理实验物品,能够提高实验室的工作效率,保障实验的质量和安全。
下面将从实验物品管理的重要性、管理方法和实施步骤等方面进行详细介绍。
一、实验物品管理的重要性1.提高工作效率:实验物品的管理是为了更好地利用其资源,提高工作效率。
合理的仓库管理和物品存放,能够使实验人员在进行实验时能够迅速找到所需物品,节省查找时间。
2.保证实验的质量和安全:实验物品的管理可以避免物品的过期、损坏等问题,确保实验所使用的物品的有效性和稳定性。
同时,正确的存储和使用方法可以避免物品的误用和事故的发生,保证实验的安全性。
3.节约成本:实验室是一个资源密集型的地方,各种仪器设备和试剂药品的采购和维护都需要投入一定的成本。
通过合理的物品管理措施,可以减少物品损耗和浪费,节约采购和维护的成本。
4.充分发挥物品的作用:合理的物品管理可以充分发挥实验物品的作用,避免因为存储和使用不当导致物品质量下降或无法正常使用的情况。
二、实验物品管理方法1.物品分类:根据实验物品的性质、用途和特点进行分类。
常见的分类包括试剂药品、仪器设备、耗材、实验工具等。
2.购买计划:制定物品采购计划,根据实验需求、消耗情况和经费预算等因素,明确需要购买的物品种类和数量。
3.仓库管理:建立物品仓库或存放区域,对物品进行统一存放和编号。
物品的入库、出库和库存等操作要有相应的记录和登记。
4.物品使用:根据实验的需要,人员进行物品的领用和归还。
严禁私自擅用实验物品,对实验物品的使用要做到需要使用时才使用。
5.物品维护:定期对仪器设备进行检查和维护,确保其正常运行和使用寿命。
对试剂药品和其他易损耗物品进行注意保管,避免损坏和过期。
6.废弃物处理:对于过期、损坏或不再使用的实验物品要进行正确的处理,避免对环境和人员造成危害。
三、实施实验物品管理的步骤1.制定管理制度:明确实验物品管理的目标、要求和责任。
C语言程序设计实验的个人物品管理系统程序
《程序设计与算法综合实习I》题目: 班级: 学生学个人物品管理程序号: 学生姓名:指导老师: 提交时间:成绩:华南农业大学信息学院《个人物品管理程序》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 )统计功能:统计各分类的物品信息。
c语言程序设计实验指导书
c语⾔程序设计实验指导书《C 语⾔程序设计》实验指导书实验⼀C 程序的运⾏环境⼀、实验⽬的1、了解所⽤的计算机系统的基本操作⽅法,学会独⽴使⽤该系统;2、了解在该系统上如何编辑、编译、连接和运⾏⼀个C 程序;3、通过运⾏简单的C 程序,初步了解C 程序⼆、实验预习1、认真阅读简单的C 程序介绍,C 程序上机步骤部分内容;2、编写好所需要的程序,程序的书写应该清楚整洁,⼀般检查应该是没有明显的错误。
如果在程序中有疑问的地⽅,可以标记起来,以便于上机调试时予以注意。
初学者特别忌讳上机前⾃⼰不编写程序,到时随便地抄别⼈的程序。
三、实验指导1、输⼊并运⾏⼀个简单的程序,从⽽熟悉所⽤系统的上机⽅法与步骤。
(1)选择“File”—“New”—“Win32 console application”,输⼊⼯程名称,确定。
直接选择第⼀项“An empty project”,点击“Finish”。
“File”—“New”—File框下⾯选择⽂件类型“C++ Source File” ,输⼊⽂件名称,点击“OK”。
(2)输⼊下⾯的程序(例题1.1)#includevoid main( ){printf("This is a C program.\n");}(3)选择“Build”菜单下“Compile”选项,快捷键为Ctrl+F7。
编译过程将源代码转化成⽬标⽂件格式,后缀名为.o。
选择“Build”菜单下“Build”选项,快捷键为F7。
如果出现“出错信息”,则应找出原因并改正之,再进⾏编译构建。
(4)如果编译⽆错误,选择“Build”菜单“Execute”选项,运⾏程序,快捷键为Ctrl+F5,观察分析运⾏结果。
2、输⼊并编辑⼀个C 程序(1)同上,新建⼯程和⽂件。
(2)输⼊以下程序(例题1.2,但故意漏打或打错⼏个字符)#includevoid main( ){int a,b,sum ;a=123 ;b=456 ;sum=a+b ;printf("sum is %d\n",sum);}(3)以下步骤同上⼀例题3、输⼊并运⾏⼀个需要在运⾏时输⼊数据的程序(1)清空编辑窗⼝,输⼊下⾯的程序(例题1.3)。
c语言课程设计物资管理系统
c语言课程设计物资管理系统一、教学目标本节课的教学目标是使学生掌握C语言在物资管理系统中的应用。
具体来说,知识目标要求学生了解物资管理系统的基本概念和C语言的基本语法;技能目标要求学生能够使用C语言进行简单的物资管理系统的开发;情感态度价值观目标则是使学生认识到C语言在实际应用中的重要性,激发他们对计算机编程的兴趣。
二、教学内容本节课的教学内容主要包括三个部分:首先是物资管理系统的基本概念,包括物资管理系统的定义、功能和分类;其次是C语言的基本语法,包括数据类型、变量、运算符和控制语句;最后是C语言在物资管理系统中的应用,包括物资信息的添加、删除、修改和查询等功能。
三、教学方法为了达到本节课的教学目标,我们将采用多种教学方法相结合的方式。
首先是讲授法,教师将讲解物资管理系统的基本概念和C语言的基本语法;其次是讨论法,学生将分组讨论如何使用C语言实现物资管理系统的功能;接着是案例分析法,教师将展示一个简单的物资管理系统案例,学生将分析并模仿实现;最后是实验法,学生将在实验室环境中动手编写和测试C语言程序。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:教材《C语言程序设计》、参考书《C语言实战》、多媒体资料《C语言编程入门》和实验设备(计算机、编程环境等)。
这些资源将帮助学生更好地理解物资管理系统和C语言的基本概念,提高他们的编程技能。
五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
评估方式包括平时表现、作业和考试三个部分。
平时表现主要评估学生在课堂上的参与度、提问和回答问题的积极性等;作业主要评估学生的编程实践能力,如编写和调试C语言程序;考试则主要评估学生对物资管理系统和C语言基本概念的理解和掌握程度。
通过这些评估方式,我们可以全面了解学生的学习情况,及时发现和解决问题。
六、教学安排本节课的教学安排将分为五个课时,每个课时45分钟。
CS程序综合设计-设计小型的库存管理系统软件
《C/S程序综合设计》课题设计设计小型的库存管理系统软件实验课题一、人员档案的管理、物料档案管理设计实现对企业人员基本情况的档案的输入、删除与修改,企业人员基本情况主要包括:人员代码、姓名、性别、出生日期、身份证号、籍贯、家庭住址、联系电话、其它情况等。
1.程序须包括主界面程序,程序名用“班级名+座号+main”,主界面可以通过菜单调用到其它所有子程序.2.人员档案的增加、修改、删除的程序,其中人员档案表在数据库中必须以“班级+座号+(表示人员的中英文信息)”来命名,人员档案的信息管理程序也必须以“班级+座号+(表示程序名的中英文信息)”来命名。
其中人员代码不能为空,性别必须用“男”、“女”选择方式,出生日期必须用日期控件来控制。
修改、删除程序在执行修改删除操作前,都必须进行记录定位操作,所以必须有相应的查询程序,可以借用查询程序来完成记录定位.人员档案的增加、修改、删除程序也可以用三个程序名,分别编程.修改代码:if (maskedit1.Text='') or (edit2.Text=’’) or (combobox1.text='') or (DateToStr (DateTimePicker1。
Date)=’') or (maskedit3.text='’)or (edit3。
text='')or (edit4。
text=’’) or (maskedit2.text='')thenmessagedlg(’请填写完整人员信息!’,mterror,[mbok],0)else if messagedlg('您确定要修改该人员信息吗?’,mtinformation,[mbyes,mbno],0)=mryes thenbeginADOQuery1。
Close;ADOQuery1。
SQL.Clear;ADOQuery1.SQL.Add('update 信管1002_23staff set sname='’'+edit2.text+''’,sex='''+combobox1.text+''',sno=’''+maskedit1.Text+'’',birthdate=’’’+DateToStr(DateTimePicker1。
《C语言程序设计》课程实验指导书
三、预习内容
预习教材第3章。
实验四 选择结构程序设计
一、实验目的
1.了解C语言表示逻辑值的方法。
2.学会正确使用逻辑运算符和逻辑表达式的方法。
3.熟悉if语句和switch语句。
4.结合程序掌握一些简单的算法。
5.学习调试程序的方法。
二、实验内容
本实验要求编程解决以下问题,然后上机调试运行程序。
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
运行程序,分析运行结果。
(3)将9-14行改为以下的scanf语句,即用scanf函数接收从键盘输入的数据:
scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);
{int z;
if(x>y) z=x;
else z=y;
return(z);
}
(1)运行程序,若程序有错,则修改错误后继续运行程序,当没有错误信息时输入:2,5并按Enter键,查看运行结果。
(2)将程序的第三行改为:int a;b;c;然后按F9看结果如何,将其修改为int a,b,c;将子程序max的第3,4行合并为一行,运行程序,看结果是否相同。
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
(1)运行此程序并分析运行结果。
(2)在此基础上,修改程序的第9-14行:
个人物品信息管理系统C语言
#inclu de <s tdio.h>#i nclud e <st ring.h>#i nclud e <ma th.h>#inc lude<stdl ib.h>type def s truct z1 /*定义数据结构*/{ch ar na me[20]; /*名称*/char numb er[6]; /*编号*/charcateg oty[10]; /*分类*/cha r ent er[9]; /*生产日期*/cha r out[9];/*过期时间*/chartime[5]; /*保质期*/ch ar ad dress[20]; /*生产地址*/stru ct z1 *nex t;}G OODS;/*以下是函数原型*/GO ODS *init(); /*初始化函数*/GO ODS *creat e();/*创建链表*/v oid s ave(G OODS*h);/*保存*/GOO DS *d elete(GOOD S *h); /*删除记录*/void chan ge(GO ODS *h); /*修改记录*/vo id pr int(G OODS*h);/*显示记录*/v oid s earch1(GOO DS *h); /*按照物品名或编号查找记录*/voidsearc h2(GO ODS *h); /*按照分类查找记录*/voi d sea rch3(GOODS *h); /*按照输入时间查找记录*/GOOD S *in dex(G OODS*h);/*索引*/GOO DS *l oad(); /*读入记录*/void tota l(GOO DS *h); /*分类合计*/voi d app end(); //追加记录到文件中i nt me nu_se lect();in t pas sword();/***********主函数开始***********/m ain (){ GOOD S *he ad; /*链表定义头指针*/hea d=ini t ();syste m("cl s");if(p asswo rd()){ fo r(;;){ swit ch(me nu_se lect()) /*调用主菜单函数,返回值为整数,作为开关语句的条件*/{case0:hea d=ini t();b reak; /*初始化链表*/case1:hea d=cre ate();brea k; /*创建链表*/ case 2:he ad=in dex(h ead);break; /*索引*/case3:sav e(hea d);br eak;/*保存记录*/ cas e 4:h ead=d elete(head);bre ak; /*删除记录*/case 5:ch ange(head);brea k; /*修改记录*/case6:pri nt(he ad);b reak; /*显示全部记录*/c ase 7:sear ch1(h ead);break; /*按照物品名或编号查找记录*/cas e 8:s earch2(hea d);br eak;/*按照分类查找记录*/ case 9:se arch3(head);bre ak; /*根据输入时间查找记录*/ case10:he ad=lo ad();break; /*读文件*/ca se 11:tota l(hea d);br eak;/*分类合计*/cas e 12:appen d();b reak; /*追加记录*/c ase 13:exi t(0); /*如果菜单返回值为12,则程序结束*/} }}}/*登录函数*/i nt pa sswor d(){c har p asswo rd[7]="123456";cha r s1[10];char s2[8];i nt fl ag=0;int n=3;pri ntf(" **********************************************\n");p rintf(" 用户可以自己输入用户名,但密码已经确定,输入错\n");pr intf(" 误并超过三次,将退出系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)设计测试用例:登陆账号名称:1 密码:123456名称编号价格(元)分类生产日期过期时间钢笔1100文具2014010120160101笔芯210文具2015010120160101尺子35文具2014010120160101铅笔410文具2015010120160101可乐55饮料2015010120150601雪碧65饮料2015010120151001加多宝75饮料2015020120150801水壶850日常用品2014010120160101书910生活用品2014010120160101手表1150用具2014010120150101物品信息:录入个人物品信息:名称:水杯编号: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;};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)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;}。