链表的使用——《老人管理系统》(期末大作业)

**题目:**老人健康管理系统
要求:
1.登陆密码
2.输入功能
3.统计功能
4.排序功能
5.查询功能
6.删除功能
7.修改功能
8.退出功能
用到的头文件:

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<windows.h>
  5. #include<conio.h>

登陆界面代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#include<conio.h>
int main()
{
   
	system("color f1");/*设置界面颜色(^w^)独特美学*/
	char passstr[8];
	int c=0;
	while(1)
	{
   
		system("cls");
		printf("                                       老人健康管理系统                \n");
		printf("                           ····················\n");
		printf("                           ·            登陆界面                ·\n");
		printf("                           ·        请输入8位数字的密码:       ·\n");
		printf("                           ·       密码:______________         ·\n");
		printf("                           ····················\n");
		gets(passstr);
		if(strcmp(passstr,"20150817")!=0)/*对比输入的字符串与设置字符串*/
		{
   
			printf("                  密码错误,请重新输入(按任意键继续)\n");
		}
		else 
		{
   
			system("cls");
			printf("                                      登录成功!     \n");
			printf("                                   3秒后跳转页面·····\n");
			Sleep(3000);
			break; 
		}
		getch();c++;
		if(c==3)/*最多输入三次*/
		{
   
			printf("                     账户已经冻结,请退出界面重试\n");
			exit(0);/*退出程序*/
		}
}

主函数:

int flag,x,i,sum=0;/*i是老人的数目*/
	flag=1;	
	int delnumber=0;
	while(flag)
	{
   
		system("color F6");
		system("cls");
		printf("***************************************老人健康管理系统*******************************************\n");
	    printf("———————在这个系统中你可以实现查询老人的健康信息,并且做出删改、排序、统计等功能——————\n");
	    printf("———————                 你可以按下面的键,进入对应的任务:                     ——————\n");
	    printf("                                          按1数据输入                             \n");
	    printf("                                          按2查询数据                             \n");
	    printf("                                          按3进行修改                             \n");
	    printf("                                          按4进行排序                             \n");/*包括按照年龄,编号,姓名,肺活量查询*/ 
	    printf("                                          按5进行统计                             \n");/*求平均值*/
	    printf("                                          按6删除数据                             \n");
		printf("                                          按7退出系统                             \n");
		printf("                                     请输入你要进行的功能                             \n");
		scanf("%d",&x);
		fflush(stdin);
		system("cls");
		switch(x)/*判断x,进入各个程序*/
		{
   
			case 1:
			{
   
				printf("请输入登记老人的数目:\n");
				scanf(" %d",&i);
				Inputsystem(i);
				sum=sum+i;/*这里加入sum,将每次新增的数目也加入,作为后续算平均数等的数据结果的关键数据*/
			    break;	
			}/*输入*/ 
			case 2:
				Findsystem();break;/*查询*/
			case 3:
				Changesystem();break;/*修改*/
			case 4:
				Sortsystem();break;/*排序*/
			case 5:
				Analysesystem(sum);break;/*统计*/
			case 6:
				{
   delnumber=Deletesystem();sum=sum-delnumber;break;}/*删除功能*/
			case 7:
				flag=Exitsystem();break;/*退出系统*/
			default:printf("                  Wrong number!请输入正确的判断符!\n");
		}
	} 
	return 0;


定义链表节点

struct node/*定义链表结点*/
{
   
	char ser[20];
	char name[15];
	int age;
	int heart;
	int lung;
	int height;
	int weight;
	int press;
	/*定义名字、编号、心率、血压、肺活量、身高和体重*/
	struct node* pNext;/*定义一个结构体指针*/

};
struct node*g_Head=NULL;
struct node*g_End=NULL;/*定义全局链表头指针与尾指针*/

查询姓名(遍历)

struct node *LookstSer(char *p)/*字符串*/
{
   
	struct node*Ptemp;
	Ptemp=g_Head;/*先将结点指针指向头指针*/
	while((Ptemp!=NULL)&&(strcmp(Ptemp->ser,p)!=0))
	Ptemp=Ptemp->pNext;
	return Ptemp;/*若遍历到了这个字符串,返回节点,若没有找到,遍历到尾指针,返回NULL*/
} 

查询年龄

int LookstAge(int n_0Min,int n_0Max)/*最大最小值*/
{
   
	struct node*Ptemp_2;/*结点指针*/ 
	int flag_5=0;/*用于判断是否有符合条件的值*/
	Ptemp_2=g_Head;
	while(Ptemp_2!=NULL)
	{
   
		if(n_0Min<(Ptemp_2->age)&&(Ptemp_2->age)<n_0Max)
		{
   
			printf("编号:%s\t姓名:%s\t年龄:%d\t身高:%d\t体重:%d\t心率:%d\t肺活量:%d\t血压:%d\n",Ptemp_2->ser,Ptemp_2->name,Ptemp_2->age,Ptemp_2->height,Ptemp_2->weight,Ptemp_2->heart,Ptemp_2->lung,Ptemp_2->press);
			flag_5=1;
		}
		Ptemp_2=Ptemp_2->pNext;/*继续遍历*/
	}
	return flag_5;/*如果最后遍历完成,没有发现符合的年龄区间,回归0*/
}

查询主函数

void Printfsystem()
{
   
	struct node*Ptemp_5;/*创建节点元素Ptemp_5*/
	printf("                              老人健康数据如下:\n");
	printf("—————————————————————————————————————————\n");
	printf("|  编号 |  姓名 |  年龄\t|血压(收缩压)\t|   肺活量\t|  心率\t|  身高\t| 体重  |\n");
	Ptemp_5=g_Head;
	while(Ptemp_5!=NULL)
	{
   
		printf("————————————————————————————————————————\n");
		printf("|%s |  %-s  |   %-5d|    %-5d    |%       -5d       |   %-5d  | %-5d| %-5d |\n",Ptemp_5->ser,Ptemp_5->name,Ptemp_5->age,Ptemp_5->press,Ptemp_5->lung,Ptemp_5->heart,Ptemp_5->height,Ptemp_5->weight);
		Ptemp_5=Ptemp_5->pNext;
	}
	printf("————————————————————————————————————————\n");
	printf("\n");
	printf("\n\n             按任意键继续\n");
	getch();
}
struct node *LookstName(char *p)/*查名字*/
{
   
	struct node*Ptemp;
	Ptemp=g_Head;
	while((Ptemp!=NULL)&&(strcmp(Ptemp->name,p)!=0))/*寻找指定姓名*/ 
	Ptemp=Ptemp->pNext;
	return Ptemp;
} 
int LookstAge(int n_0Min,int n_0Max)/*最大最小值*/
{
   
	struct node*Ptemp_2;/*结点指针*/ 
	int flag_5=0;/*用于判断是否有符合条件的值*/
	Ptemp_2=g_Head;
	while(Ptemp_2!=NULL)
	{
   
		if(n_0Min<(Ptemp_2->age)&&(Ptemp_2->age)<n_0Max)
		{
   
			printf("编号:%s\t姓名:%s\t年龄:%d\t身高:%d\t体重:%d\t心率:%d\t肺活量:%d\t血压:%d\n",Ptemp_2->ser,Ptemp_2->name,Ptemp_2->age,Ptemp_2->height,Ptemp_2->weight,Ptemp_2->heart,Ptemp_2->lung,Ptemp_2->press);
			flag_5=1;
		}
		Ptemp_2=Ptemp_2->pNext;/*继续遍历*/
	}
	return flag_5;/*如果最后遍历完成,没有发现符合的年龄区间,回归0*/
}
/*这里要判断,若返回的为NULL,就是没有找到,要有相应提示*/
void Findsystem()
{
   
	int number_1;/*选项判断*/
	int flag_4=1;/*循环判断*/
	int Whether;
	char name_0[15]
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值