C语言做的一个简单的系统

2023-11-03

这个适合初学者去学习!!

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//1、确定数据类型信息 
typedef struct patient
{
	char ID[10];     //编号  
	char name[10];    //姓名 
	char details[300];  //具体信息 
	int cost[3];      //话费金额 
	struct patient * next;
}node1;
typedef struct storage
{
		int amount[3];   //药品数量 
	int price[3];    //价格 
}node2;
node2 init(node2 temp)
{	
	temp.amount[0]=20;
    temp.amount[1]=20;
	temp.amount[2]=10;
	temp.price[0]=5;
	temp.price[1]=9;
	temp.price[2]=16;
	return temp;
} 
void mainmeun()
{
	//2、选择输入项 
	printf("\n");
	printf("*************欢迎使用医疗管理系统*******************\n");
	printf("1.注册学生信息\n");
	printf("2.查询学生信息\n");  //4、输出项
	printf("3.填写详细信息\n");
	printf("4.学生购买消费\n");//3、用于计算项 
	printf("5.列出所有学生信息\n");    //5、输出所以学生信息 
	printf("6.查询药品库存\n");
		printf("7.退出系统\n");
	printf("**************请选择操作项******************\n");
}
node1 * create(node1 *p1)  //注册学生信息 
{
	node1 *p;
	p=(node1 *)malloc(sizeof(node1));
	printf("请输入学生编号\n");
    scanf("%s",p->ID);
    while(p1->ID&&strcmp(p1->ID,p->ID))
	{
		p1=p1->next;
	}
    if(p1==NULL)
	{
	    printf("请输入学生姓名\n");
	    scanf("%s",p->name);
	    strcpy(p->details,"0");
	    p->cost[0]=0;
	    p->cost[1]=0; 
	    p->cost[2]=0;
    	p->next=NULL;
    	printf("已注入您的信息!\n");
	return p;
	}
	else 
{
		printf("输入学生编号以存在,注册失败!\n");
		return p;
	}
}
node1 * insert(node1 * head,node1 *p)	//检查是否存在信息 
{
    node1 *p1; 
	if(head==NULL)
	{
		head=p;
		p->next=NULL; 
	}
	else
	{
		p1=head;
		while(p1->next)
		{
			p1=p1->next; 
		}
		p1->next=p;
		p->next=NULL; 
	}
	return(head);
}
void search(node1 *p1) //查询信息 
{
	int sum;
	char a[10];
	printf("请输入学生编号\n");
	scanf("%s",a);
	while(p1->ID&&strcmp(p1->ID,a))
	{
		p1=p1->next;
	}
	if(p1)
	{
	printf("编号:%s\n",p1->ID);
		printf("姓名:%s\n",p1->name);
		printf("详细信息:%s\n",p1->details);
		printf("消费记录:\n");
		if(p1->cost[0])
			printf("阿莫西林胶囊\t%d\n",p1->cost[0]);
        if(p1->cost[1])
			printf("连花清瘟胶囊\t%d\n",p1->cost[1]);
		if(p1->cost[2])
			printf("板蓝根\t%d\n",p1->cost[2]);
				sum=p1->cost[0]*5+p1->cost[1]*9+p1->cost[2]*16;
		printf("总费用\t%d\n",sum);
	}
		else
			printf("该学生没有注册!\n");
	
}
void details(node1 *p)   //详细信息
{
	char a[10];
	char details[300];
	char enter[5]=":\n";
    printf("请输入学生编号\n");
    scanf("%s",a);
	while(p->ID&&strcmp(p->ID,a))
	{
		p=p->next;
	}
	if(p==NULL)
	{
		printf("无该学生信息!\n");
	}
	else
	{
		printf("请写详细信息:\n");
		scanf("%s",details);
		strcpy(p->details,details);
		strcat(p->details,enter);
	}
}
node2 buy(node1 *p,node2 temp)  //消费记录 
{
		char i[10];
	printf("请输入学生编号\n");
	scanf("%s",i);
	while(p->ID&&strcmp(p->ID,i))
	{
		p=p->next;
	}
	while(1)
	{
		int a,b,c,d;
		printf("1.购买阿莫西林胶囊\n");
		printf("2.购买连花清瘟胶囊 \n");
		printf("3.购买板蓝根\n");
		printf("0.退出\n");
		scanf("%d",&a);
		switch(a)
			{
			case 1:
				do
				{
					printf("现有库存%d\n",temp.amount[0]);
					printf("购买阿莫西林胶囊数量:");
					scanf("%d",&b);
					temp.amount[0]=temp.amount[0]-b;
					p->cost[0]+=b*5; 
				}while(b>20);
				break;
			case 2:
					do
				{
					printf("现有库存%d\n",temp.amount[1]);
					printf("购买连花清瘟胶囊数量:");
					scanf("%d",&c);
					temp.amount[1]=temp.amount[1]-c;
					p->cost[1]+=c*9;
				}while(c>20);
				break;
			case 3:
				do
				{
					printf("现有库存%d\n",temp.amount[2]);
					printf("购买板蓝根数量:");
						scanf("%d",&d);
					temp.amount[2]=temp.amount[2]-d;
					p->cost[2]+=d*16;
				}while(d>=10);
				break;
			case 0:
				return temp;
		}
	}	
}
void list(node1 *p)   //输出学生信息 
{	
	if(p==NULL)
		printf("尚无学生信息!\n");
	else
	{	
		do{
			printf("学生编号:%s\n",p->ID);
			printf("学生姓名:%s\n",p->name);
			printf("学生详细信息:%s\n",p->details);
			printf("购买阿莫西林胶囊费用:%d\n",p->cost[0]);
			printf("购买连花清瘟胶囊费用:%d\n",p->cost[1]);
				printf("购买板蓝根费用:%d\n",p->cost[2]);
			printf("\n");
			p=p->next; 
		}while(p!=NULL);
	}
}
void liststock(node2 temp)  //药品信息 
{
	printf("药品\t数量\t价格\t\n");
	printf("阿莫西林胶囊\t%d\t%d\t\n",temp.amount[0],temp.price[0]);
	printf("连花清瘟胶囊\t%d\t%d\t\n",temp.amount[1],temp.price[1]);
    printf("板蓝根\t%d\t%d\t\n",temp.amount[2],temp.price[2]);
				
}
chose()  //菜单选项 
{
	node1 *head=NULL,*p;
	node2 temp;
	while(1)
	{
		mainmeun();
		int a;
	    scanf("%d",&a);
		switch(a)
		{
		case 1:
		    p=create(head);
			head=insert(head,p);
			break;
		case 2:
			search(head);
			break;
		case 3:
			details(head);
			break;
		case 4:
			temp=buy(head,temp);
			break;
		case 5:
			list(head);
			break;
		case 6:
			liststock(temp);
			break;
		case 7:
			printf("谢谢使用!!\n");
			return(0);
		default:
			printf("输入有误!重新输入\n");
			break;
		}
	}
}
//主函数main 
int main()
{
	chose();
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言做的一个简单的系统 的相关文章

  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P

随机推荐

  • python 深度学习 解决遇到的报错问题

    目录 一 解决报错ModuleNotFoundError No module named tensorflow examples 二 解决报错ModuleNotFoundError No module named tensorflow co
  • node.js + 企业微信实现定时推送消息

    一 注册企业微信及配置 进入官网 https work weixin qq com 按要求填写资料开通企业微信 1 查看企业 ID 2 创建应用 3 查看应用 AgentId Secret 下拉到页面底部还要配置IP白名单 配置IP白名单
  • 睿瞳车牌识别测试总结

    摄像头型号 睿瞳科技 IVS 通讯 通过网线 功能 当有车牌识别时 将主动向IP 端口推送数据包 重要内容 准确率和车牌号 识别ID 配置 第一步 连接摄像头 默认 192 168 1 100 第二步 更改合适的IP 第三步 配置仪表网络推
  • VBA:同时修改工作薄中以日期命名的sheet名称

    修改逻辑如下 一个月的数据放在同一个工作薄中 每天的数据为一个sheet sheet名称为当天的日期 每天的数据模版一样 只是数据更新变化 现需要把上月的sheet名称日期改为当月的 只需要把月份改为当月月份 比如7 1 7 31改为8 1
  • 基于Flowable 6.x 的工作流管理平台源码 在线流程设计器 在线流程表单设

    基于Flowable 6 x 的工作流管理平台源码 在线流程设计器 在线流程表单设计器 单节点配置表单 多实例会签任务 任务节点配置任务 执行监听器 动态配置任务候选人 其它流程相关功能点
  • Unable to find resource t64.exe in package pip._vendor.distlib报错问题解决

    Unable to find resource t64 exe in package pip vendor distlib报错问题解决 问题报错具体内容 具体解决方案 解决方法一 解决方法二 问题报错具体内容 想要对python的版本进行一
  • win7下metasploit-framework安装及使用笔记

    1 去官网下载最新版本的metasploit framework 2 下载好后 退出电脑的杀毒软件 因为安装的时候里面好多文件会被当做病毒删除 3 点击安装 下一步下一步依次即可 4 安装完成后启动 这个启动的地方我找了好久 具体启动的地方
  • FPGA实现inout的两种方法

    第一种就是使用assign语句 这种会根据代码逻辑进行综合 也会综合成三态门 但不一定是使用IOBUF这种资源 assign a in or oout 1 dz out 第二种就是使用原语 以xilinx的IOBUF为例 OBUFT为一个三
  • 再聊聊财务自由

    前段时间有人在我星球讨论财务自由 说自由的本质是选择权 有读者觉得大受启发 我就翻了一下旧文 我2017年就说过了啊 谈谈财务自由 但时过境迁 其实我想改变一下之前的说法 所谓财务自由 你虽然拥有了选择权 但并不是无限选择的权力 坦白说 这
  • 电影知识图谱和基于模板的问答系统构建

    目录 前言 一 知识图谱的构建 二 问答系统的构建 1 数据准备 1 1数据获取 1 2数据处理 1 3数据读入 1 4代码 2 问答系统设计 2 1整体流程 2 2实体识别和问题分类 2 3 问题结果查询 2 4问答模板的匹配 三 优化方
  • requests.post 小坑: 默认无超时,会阻塞

    一 遇到问题 最近遇到一个小问题 发现我的进程在调某个 API 的时候 不能正常 work 了 马上一顿 strace p pid 操作 定睛一看 发现我的进程卡在了 recvfrom 23 不动了 一直不会进入 accept 或者 epo
  • 论文笔记 Spectral Regularization Algorithms for Learning Large IncompleteMatrices (soft-impute)

    2010 JMLR 0 摘要 使用凸松弛技术为大规模矩阵完成问题提供一系列正则化低秩解决方案 论文算法 SOFT IMPUTE 迭代地用从软阈值 SVD 获得的元素替换缺失的元素 通过热启动 这使算法能够有效地计算正则化参数值网格上解决方案
  • iOS架构-组件化(Carthage管理工具)

    一 Carthage项目管理工具使用 Step 1 安装 更新Homebrew工具 1 usr bin ruby e curl fsSL https raw githubusercontent com Homebrew install ma
  • 遍历列表中的字典并取出其中的值报错string indices must be integers

    今天写爬虫的时候遇到一个问题 为了方便看我截取出其中的一部分放到测试文件中测试 我想要的是使用for循环遍历列表中的每一个字典然后取出其中某个key对应的value值 但是却报错了 报错显示string indices must be in
  • Python 数据降噪处理的四种方法——均值滤波、小波变换、奇异值分解、改变binSize

    Python 数据降噪处理的四种方法 均值滤波 小波变换 奇异值分解 改变binSize github主页 https github com Taot chen 一 均值滤波 1 算法思想 给定均值滤波窗口长度 对窗口内数据求均值 作为窗口
  • 三基色配色表java_【调色】颜色配色表 适合重彩搭配用

    三基色是指红 绿 蓝三色 各自对应的波长分别为700nm 546 1nm 435 8nm 原色 又称为基色 即用以调配其他色彩的基本色 原色的色纯度最高 最纯净 最鲜艳 可以调配出绝大多数色彩 而其他颜色不能调配出三原色 三原色通常分为两类
  • mysql怎么更新单一值_MySQL 如何快速全表更新某个字段值

    这个问题似乎没有什么好的解决方法 有个朋友提示 能否将1千万条记录拆分成多个部分 并发更新 这种比单纯的一条SQL全表更新要快一些 真的是这样吗 我做了一个实验 1 环境配置 机器配置 16核 32G MySQL 版本 5 7 19 1主2
  • 2-蛇形矩阵

    蛇形矩阵 首先我们来看问题 上面这个矩阵我们要怎么将它输出呢 我们仔细观察这个矩阵 不难发现它是有一定规律的 它的数字沿着一条蛇一样弯曲排布 那么问题来了 我们在电脑中输出都是以一行一行这样来输出的 这个矩阵的顺序明显不符合以行为参考时的输
  • 利用MMPose进行姿态估计(训练、测试全流程)

    前言 MMPose是一款基于PyTorch的姿态分析开源工具箱 是OpenMMLab项目成员之一 主要特性 支持多种人体姿态分析相关任务 2D多人姿态估计 2D手部姿态估计 动物关键点检测等等 更高的精度和更快的速度 包括 自顶向下 和 自
  • C语言做的一个简单的系统

    这个适合初学者去学习 include