c语言水果系统程序设计源代码
要求:
综合以前实验的功能,设计简易XX信息管理系统,如学生管理系统,则学生信息包括学号(关键字)、姓名、年龄等信息,设计功能主要包括:界面菜单,实现记录的插入、修改、删除、查询、排序等功能。
代码来之不易复制附待点赞可吗
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct fruits // 水果结构体
{ long int num; // 水果编号
char name[20]; //水果名称
char sort[20]; // 水果类别
long int count; // 水果库存量
long int price; // 水果单价
}fruits[200]; //最多 200 个商品
int k,n,i;
int main ()
{void input(); // 输入函数void sequence(); //排序函数void purchase(); //进货函数void sell();void addOrDele();void modifyInformation();void search(); // 查询函数 printf("---------------------------- 欢迎来到水果管理系统---------------------------\n"); printf("- ︵ \n");printf("- 欢迎光临呀 (\"\\(●-●) \n");printf("- \\ / 0\\ \\ ∧ ∧ \n");printf("- ( )\" (。ω。) \n");printf("- \\__T__/ ノ/ / \n");printf("- ノ ̄ゝ \n");printf("-\n-\n-\n-\n-\n \n"); printf(" Welcome to the fruit management system \n"); printf("----------------------------------------------------------------------------\n");printf("测试程序之前别忘啦先创建几个水果信息呀!\n"); printf("\n\n请按任意键继续");getch();system("cls"); /*清屏*/lp: for(i=0;i<1;i++)printf("\n\n——★—☆——★—☆——☆—★——☆—★——☆—☆——★—\n");printf("\n\t\t\t 水果管理系统主菜单 \t\n\n");printf( " 1 →输入水果信息 \n\n");printf( " 2 →排序商品信息 \n\n");printf( " 3 →输入进货信息 \n\n");printf( " 4 →输入销售信息 \n\n");printf( " 5 →增加/删除商品 \n\n");printf( " 6 →修改商品信息 \n\n");printf( " 7 →查询商品信息 \n\n");printf("——☆—★——☆—★——☆—☆——★—☆——★—☆——★—"); //菜单选择界面 printf("\n\n");printf("\t请选择您所要的操作 (或选择 (0)退出):");scanf("%d",&k);system("cls");switch(k){ //用switch语句实现功能选择 case 1: input();break;case 2: sequence();break;case 3: purchase();break;case 4: sell();break;case 5: addOrDele();break;case 6: modifyInformation();break;case 7: search();break;case 0: printf("\n\n\t ^_^ 谢谢使用,欢迎再来,再见 O(∩_∩)O");exit(0); //退出系统 default: puts("输入错误 ,请按任意健返回主菜单: \n"); break;}system("cls"); /*清屏*/goto lp; /*返回主界面 */
} void input() { //功能1:输入水果信息 printf("\n 请输入需要建立新库存的水果种类数量 :");scanf("%d",&n);system("cls");printf("--------------------------------------------------------------------------------\n");for(i=0;i <n;i++) { //用循环实现输入 n个水果的信息printf("\n\t 请输入水果的编号 :");scanf("%ld",&fruits[i].num);printf("\n\t 请输入水果的名称 :");scanf("%s",fruits[i].name);printf("\n\t 请输入水果的类别 :");scanf("%s",fruits[i].sort);printf("\n\t 请输入水果的数量 :");scanf("%d",&fruits[i].count);printf("\n\t 请输入水果的单价 :");scanf("%d",&fruits[i].price);printf("--------------------------------------------------------------------------------\n");}printf("\t请选择按钮继续操作:");getch();return; //返回主界面
}void sequence() { //功能2:排序水果信息 long temp;char p1[30],p2[30];for(k=0;k<n-1;k++) //(1): 按编号排序 for(i=0;i <n-k-1;i++) //用起泡法排序 if (fruits[i].num>fruits[i+1].num) { //按编号由小到大排序 temp=fruits[i].num;fruits[i].num=fruits[i+1].num;fruits[i+1].num=temp;strcpy(p1,fruits[i].name);strcpy(fruits[i].name,fruits[i+1].name);strcpy(fruits[i+1].name,p1); strcpy(p2,fruits[i].sort);strcpy(fruits[i].sort,fruits[i+1].sort);strcpy(fruits[i+1].sort,p2);}printf("--------------------------------------------------------------------------------" );printf("\n\t\t按水果编号排序后的水果信息 \n\n");printf("\t水果编号 水果名称 水果类别 水果数量 水果单价\n"); /*输出排序后水果信息 */for(i=0;i<n;i++) {printf("\t %5ld %5s %5s %5ld %5ld\n" ,fruits[i].num,fruits[i].name,fruits[i].sort,fruits[i].count,fruits[i].price);}for(k=0;k<n-1;k++) /*(2): 按水果名称排序 */for(i=0;i <n-k-1;i++)if (strcmp(fruits[i].name,fruits[i+1].name)>0) {strcpy(p1,fruits[i].name);strcpy(fruits[i].name,fruits[i+1].name);strcpy(fruits[i+1].name,p1);temp=fruits[i].num;fruits[i].num=fruits[i+1].num;fruits[i+1].num=temp;strcpy(p2,fruits[i].sort);strcpy(fruits[i].sort,fruits[i+1].sort);strcpy(fruits[i+1].sort,p2);}printf("--------------------------------------------------------------------------------" );printf("\n\t\t按水果名称排序后的水果信息 \n");printf("\t水果名称 水果编号 水果类别 水果数量 水果单价\n"); /*输出排序后水果信息 */for(i=0;i<n;i++){printf("\t %5s %5ld %5s %5ld %5ld\n" ,fruits[i].name,fruits[i].num,fruits[i].sort,fruits[i].count,fruits[i].price);}for(k=0;k<n-1;k++) //(3): 按水果类别排序 for(i=0;i <n-k-1;i++) //用起泡法排序 if (strcmp(fruits[i].sort,fruits[i+1].sort)>0) { strcpy(p2,fruits[i].sort);strcpy(fruits[i].sort,fruits[i+1].sort);strcpy(fruits[i+1].sort,p2);temp=fruits[i].num;fruits[i].num=fruits[i+1].num;fruits[i+1].num=temp;strcpy(p1,fruits[i].name);strcpy(fruits[i].name,fruits[i+1].name);strcpy(fruits[i+1].name,p1);}printf("--------------------------------------------------------------------------------" );printf("\n\t\t按水果类别排序后的水果信息 \n\n");printf("\t水果类别 水果编号 水果名称 水果数量 水果单价\n"); /*输出排序后水果信息 */for(i=0;i<n;i++) {printf("\t %5s %5ld %5s %5ld %5ld\n" ,fruits[i].sort,fruits[i].num,fruits[i].name,fruits[i].count,fruits[i].price);}printf("--------------------------------------------------------------------------------\n" );printf("按任意键返回主菜单:");getch();return; //返回主界面
}void purchase() { //功能3:进货水果信息 long temp; //定义临时变量表示刚进货的水果编号 int j;printf("\n\t请输入刚进货的水果编号 :");scanf("%ld" ,& temp);printf("\n\t请输入刚进货的水果数量 :");scanf("%d",&j);printf("\t进货成功啦!\n");printf("\n\t请按任意键查看进货后的水果信息:");getch();system("cls"); //清屏*printf("\n\t输出进货后的水果信息: ");for(i=0;i<n;i++) //循环,寻找与进货相同的水果信息 if(temp==fruits[i].num)fruits[i].count=fruits[i].count+j; //自动更改水果数量 printf("\n\t水果编号 水果名 水果类别 水果数量 水果价格 \n");for(i=0;i<n;i++) { //循环,输出进货后的水果信息 */printf("\t %4ld %8s %5s %8ld %8ld\n" ,fruits[i].num,fruits[i].name,fruits[i].sort,fruits[i].count,fruits[i].price);}printf("\n\n\t\t请按任意键返回主菜单:");getch(); //返回功能选择界面 return;
}void sell() {//功能4:销售水果信息 long temp; //定义临时变量 temp表示刚销售的水果编号 int j;printf("\n\t请输入刚销售的水果编号 :");scanf("%ld" ,&temp);printf("\n\t请输入刚销售的水果数量 :");scanf("%d",&j);printf("记入数据成功啦!\n");for(i=0;i <n;i++) {//循环,找到刚销售的水果信息 if(temp==fruits[i].num) {for(;j>fruits[i].count;) { //如果销售额大于库存量,则出现错误提示 printf("\n\t售出数量大于商品原有数量,出现错误,请重新输入 :");scanf("%d",&j);}fruits[i].count=fruits[i].count-j; //完成自动更改水果数量的功能 }}printf("\n\t请按任意键查看销售后水果信息:");getch();system("cls"); /*清屏*/printf("\n\n *销售后水果信息");printf("\t水果编号 水果名称 水果类别 水果数量 水果单价\n"); //输出水果信息 for(i=0;i<n;i++) {printf("\t %8ld %8s %5s %8ld %8ld\n" ,fruits[i].num,fruits[i].name,fruits[i].sort,fruits[i].count,fruits[i].price);}printf("\n\t按任意键返回主菜单:");getch();return; //返回功能选择界面
}void addOrDele() { //功能5:添加或删除水果信息 void add(); //声明子函数 void dele();printf("\n\t请选择: 1.添加水果信息; 2.删除删除信息; ");printf("\t* 请输入 1或2 继续: ");scanf("%d",&k);switch(k) { //用switch语句实现功能选择 case 1: add();break;case 2: dele();break;}getch();return; //返回主菜单
}void add() { //添加水果信息 //定义子函数 */printf("\t* 请输入所添加水果的水果编号 :");scanf("%ld" ,& fruits[n].num);printf("\n\t请输入所添加水果的名称 :");scanf("%s",fruits[n].name);printf("\n\t请输入所添加水果的类别 :");scanf("%s",fruits[n].sort);printf("\n\t请输入所添加水果的数量 :");scanf("%d",&fruits[n].count);printf("\n\t请输入所添加水果的价格 :");scanf("%d",&fruits[n].price);n=n+1;printf("添加成功哦!\n");printf("按任意键返回主菜单:");getch();return; //返回主界面
}void dele() {//删除水果信息 //定义子函数 int temp; //定义局部变量 int j;for(i=0;i<n;i++) {printf("\n\t水果编号 水果名称 水果类别 水果数量 水果单价\n");printf("\t %4ld %8s %5s %8ld %8ld\n" ,fruits[i].num,fruits[i].name,fruits[i].sort,fruits[i].count,fruits[i].price);printf("\n" ); }printf("\n");printf("\n* 请输入要删除的水果编号 :");scanf("%ld" ,& temp);printf("\n\n");for(i=0;i<n;i++) {if(temp==fruits[i].num) {for(j=i;j <n;j++) {fruits[j].num=fruits[j+1].num;strcpy(fruits[j].name,fruits[j+1].name);strcpy(fruits[j].sort,fruits[j+1].sort);fruits[j].count=fruits[j+1].count;fruits[j].price=fruits[j+1].price;}n=n-1; //水果总库存量减少 }}printf("\t删除成功啦!\n");printf("\n\t请按任意键查看当前水果:");getch();system("cls"); /*清屏*/ for(i=0;i<n;i++) {printf("当前水果菜单:\n");printf("\n\t水果编号 水果名称 水果类别 水果数量 水果单价\n");//输出删除后的水果信息 printf("\t %4ld %8s %5s %8ld %8ld\n" ,fruits[i].num,fruits[i].name,fruits[i].sort,fruits[i].count,fruits[i].price);printf("\n");}printf("按任意键返回主菜单:");getch();return; //返回主界面
}void modifyInformation() { //功能6:修改水果信息 long temp; //定义局部变量 printf("\n\t请输入要修改的水果的编号 :");scanf("%ld" ,&temp); //输入新的水果信息 printf("\n" );for(i=0;i<n;i++) { //保存新的水果信息 if (temp==fruits[i].num) { printf("\t请输入一个新的的商品编号 :");scanf("%ld" ,&fruits[i].num);printf("\n\t请输入新的商品的名称 :");scanf("%s",fruits[i].name);printf("\n\t请输入新的商品的类别 :");scanf("%s",fruits[i].sort);printf("\n\t请输入新的商品的数量 :");scanf("%d",&fruits[i].count);printf("\n\t请输入新的商品价格 :");scanf("%d",&fruits[i].price);printf("\n");}}printf("\t修改成功啦!"); for(i=0;i<n;i++) {printf("\n\t 新的水果名称 水果编号 水果类别 水果数量 水果单价 \n");printf("\t %6ld %8s %5s %8ld %8ld\n" ,fruits[i].num,fruits[i].name,fruits[i].sort,fruits[i].count,fruits[i].price); printf("\n" );}printf("按任意键返回主菜单:"); //返回功能选择界面 getch();return; //返回主菜单
}void search() { //功能7:查询水果信息 int k; //定义局部变量 long temp1;char temp2[30],temp3[20];printf(" 1 →按水果编号查询数据\n 2 →按水果名查询数据\n 3 →按水果类别查询数据\n 4 →查询需要进货的水果名\n");printf("\n\n\n\t\t\t 请输入数字确定查询方式 :");scanf("%d",&k);switch(k) { //实现查询方式的选择 /*按水果编号查询数据 */case 1:{printf("\n\n\n\n\n\t\t请输入要查询的商品水果的编号 :"); scanf("%ld" ,&temp1);system("cls"); for(i=0;i<n;i++) {if(temp1==fruits[i].num) {printf("\n"); printf("\n\t水果编号 水果名 水果类别 水果数量 水果价格");printf("\n\t %4ld %8s %5s %8ld %8ld",fruits[i].num,fruits[i].name,fruits[i].sort,fruits[i].count,fruits[i].price);}}}break; //跳出switch语句/*按水果名查询数据 */case 2:{printf("\n\n\n\n\n\t\t请输入要查询的水果名 :"); scanf("%s",temp2);system("cls" );for(i=0;i<n;i++) {if (strcmp(temp2,fruits[i].name)==0) {printf("\n");printf("\n\t水果编号 水果名 水果类别 水果数量 水果价格");printf("\n\t %4ld %8s %5s %8ld %8ld",fruits[i].num,fruits[i].name,fruits[i].sort,fruits[i].count,fruits[i].price);}}}break; //跳出switch语句/*按水果类别查询数据*/case 3:{printf("\n\n\n\n\n\t\t请输入要查询的水果类别 :"); scanf("%s",temp3);system("cls");for(i=0;i<n;i++) {if(strcmp(temp3,fruits[i].sort)==0) {printf("\n");printf("\n\t水果编号 水果名 水果类别 水果数量 水果价格"); printf("\n\t %4ld %8s %5s %8ld %8ld",fruits[i].num,fruits[i].name,fruits[i].sort,fruits[i].count,fruits[i].price);}}}break; //跳出switch语句/*查询需要进货的水果名 */case 4:{ int a=50;for(i=0;i<n;i++) {if(fruits[i].count<a)printf("\n\t\t 需 要 进 货 的 水 果 名 :%s 现 有 库 存 量:%ld\n",fruits[i].name,fruits[i].count);}}break; //跳出switch语句}printf("\n\n\t\t请按任意键返回主菜单:");getch();return; //返回主界面
}
1.主函数 main() 定义主函数为空类型 (void); 利用选择结构 (switch) 实现在在主函数中的调用各 个子函数,利用 goto 和子函数中的 return 语句实现返回主菜单的循环。
2.子函数
(1) void input() :< 输入函数 > 确定新的库存量 n,输入商品信息,用 for 循环语句直到输入商品种类等于 n, 结束输入;
(2) void sequence() :< 排序函数 > 对已有的商品进行排序,可按商品编号、名称、类别进行排序;采用起泡法排序算法
(3) void purchase() :< 进货函数 > 进货函数主要是针对已有库存的商品,在原来的商品数量再增加:
(4) void sale() :< 销售函数 > 要求用户输入所销售的编号,系统用 for 循环查询该商品是否存在,不存在要 求再进行输入,直到输入正确,输出销售商品:
(5) void addOrDele () :< 添加/ 删除商品 > 因为在进货函数已经实现对已有商品的数量的增加, 此模块函数主要实现对新商 品的添加或对旧商品的删除, 并自动处理数据, 可以在浏览中输出, 用选择语句 switch 进行俩者操作的选择
(6) void modifyInformation () :< 修改数据函数 > 对有错误信息商品进行修改,输入需要修改的商品编号,用 for 循环与 if 语句 找到此商品,重新输入该商品的新信息,并输出:
(7) void search() :< 查询函数 > 用 switch(k) 语句可分别按商品编号、 名称、类别或需要进货商品查询; 每个 case 选择中均用 for 语句查找要查询的商品,并输出查询结果。
系统界面:
c语言水果系统程序设计源代码相关推荐
- c语言报表系统,C语言考试系统程序设计报告.doc
C语言考试系统程序设计报告 <程序设计基础> 课程设计报告 考试系统 指导教师:任姚鹏 班 级:计科系1204班 学生姓名:丁晓荟 加雪梅 姚乐 张进 吕亚斌 完成日期:2013.11.2 ...
- c语言水果系统链表,CH3讲义.doc
CH3讲义 本章知识点: 进程的顺序性和并发性 分析与时间有关的错误.(★) 进程同步与互斥的概念. 临界区及其调度.(★) 记录型信号量与PV操作.(★★★) 条件变量和管程.(★★) 进程通信种类 ...
- C语言通讯录系统程序设计
文章目录 1.前言 2.设计步骤 前言 利用链表增.删.改.查功能以及文件来完成通讯录系统.通讯录中包含联系人的基本信息:姓名.联系电话.家庭住址以及电子邮件. 以下是设计该系统的步骤: 1.导出通讯 ...
- java计算机毕业设计水果购物商城源代码+数据库+系统+lw文档
java计算机毕业设计水果购物商城源代码+数据库+系统+lw文档 java计算机毕业设计水果购物商城源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软 ...
- JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告)
毕业论文(设计)开题报告 论文题目: java考试系统 学生姓名: 年级(学号): 二级学院: 专业: 指导教师: 职称: 填表日期:20 年 月 日 学 院 教 务 处 制 一.选题依据(背景与意义 ...
- 大学生考勤系统C语言代码,C++学生考勤系统(含源代码)
<C++学生考勤系统(含源代码)>由会员分享,可在线阅读,更多相关<C++学生考勤系统(含源代码)(26页珍藏版)>请在人人文库网上搜索. 1.C+吾言程序设计课程设计报告书题 ...
- 学生考勤系统设计c语言源程序文件的后缀是,C++学生考勤系统(含源代码).doc
C++学生考勤系统(含源代码).doc /C语言程序设计课程设计报告书题目 班级 学号 姓名 指导教师 周期 以下由验收老师填写成绩 年 月 日一.课程设计的目的与要求 (一)课程设计目的与任务C作为 ...
- 列车时刻管理c语言程序设计,列车时刻管理系统C语言程序设计(源代码).doc
列车时刻管理系统C语言程序设计(源代码) 问题分析 随着社会的不断发展,人们在交通方式的选择上有了不同以往的选择,以前的靠人力,畜力,以及摩托车,现在人们的选择更多的会放在了汽车,飞机还有列车上.每当 ...
- 51单片机c语言程序控制,51单片机C语言程序设计源代码
<51单片机C语言程序设计源代码>由会员分享,可在线阅读,更多相关<51单片机C语言程序设计源代码(281页珍藏版)>请在人人文库网上搜索. 1.51 SCM c语言教程示例2 ...
最新文章
- python requests返回的json对象用json.loads()时转为字典时编码变为了unicode
- cas单点登录原理碎碎念
- Scala学习之路 (六)Scala的类、对象、继承、特质
- 关于memcached的收集
- 一步一步教你在CentOS6.0下安装NS2(ns-allinone-2.34.tar.gz)模拟仿真工具
- 计算机二级office高级应用教程,2015计算机二级Office高级应用上机试题及答案
- IOS 中的XML解析
- 使用iMazing创建配置文件时的几个重要首选项组
- python 赋值_关于 python 分片赋值
- 【彩蛋】小白入门学习 SQL 数据库基础视频教程(109个视频)
- 如何去除图片背景变透明?透明背景图片怎么做?
- eclipse svn SSL 错误
- 3d Max人物动画学习笔记(一) 骨骼创建
- 使用 Kprobes 调试内核
- JNI HelloWorld 亲测可以。
- SpringCloud五大常用组件
- 一种可以使身体吸收天道法则的电脑
- Android TimeoutException治理
- 基于Python实现的电梯进程及调度管理
- 计算机组成原理实验心得200字,2016年江西师范大学考研专业目录及考试科目
热门文章
- 走进Linux的世界,看这篇文章就够了
- 剑指 Offer 笔记: T58 - II. 左旋转字符串
- ubuntu20.04界面黑屏,有光标闪烁,解决方法
- 梦想总是要有的 - 工作20年程序员的2021年度总结
- 什么是命名空间,为什么要使用命名空间?
- React.forwardRef的使用说明
- React forwardRef的使用方法
- currentstyle 织梦_织梦channel标签currentstyle样式无效不起作用
- FFMPEG 摄像头 命令行参数 录像 直播 rtmp
- 基于通道注意力机制的图像压缩改进(zqb第三章)