基于链表的简单信息管理系统

**问题描述:
要求程序有主菜单,执行时显示实例为:
Ostrich 管理系统功能菜单
1.增加Ostrich ;
2.删除Ostrich ;
3.修改Ostrich ;
4.查询Ostrich 信息;
5.统计Ostrich 个数;
6.输出Ostrich 列表;
7.退出;
请输入你的选择(1-7):
请实现以上功能。
斜体样式
**

#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#include "DancersDef.h"
#include "DancersAlgo.h"
int main(){
	linklist *head,*p;int flag=0;
	//char name[4],biaohao;
	system("color E5");
	int SelectNumber;int bianhao;
	
    do{
	SelectNumber=menu();
	switch(SelectNumber){
		case 1:
			head=create();
			break;
		case 2:
			printf("						请输入要删除的编号:");
			scanf("%d",&bianhao);
			delet(head,bianhao);
			PrintList(head);
			break;
		case 3:
			ChangeMenu();
			printf("						请输入要修改的信息的编号:");
			scanf("%d",&bianhao);
			change(head,bianhao);
			PrintList(head);
			break;
		case 4:
			printf("						请输入要查询的编号:");
			scanf("%d",&bianhao);
			flag=search(head,bianhao);
			if(flag!=1) printf("\n						查无此人\n");
			break;		
		case 5:
			counts(head);
			break;
		case 6:
			//printf("						----------------------------------------------------\n");
			PrintList(head);
			
			break;
		case 7:
			sort(head);
			PrintList(head);
			break;
		
		case 8:
			PrintList1(head);
			break;
		case 9:
			exit(0); 
		}
	}while (SelectNumber<9);
}
//#include "DancersDef.h"文件
typedef struct dan{
  char name[5];
  int bianhao;
  char sex[5];
  int height;
  int weight;
  int nianling;
  int dengji;
  struct dan *next;
}dancer,linklist;

//#include "DancersAlgo.h"文件
int  menu(){
	int m;printf("\n						----------------------------------------------------");
	printf("\n						鸵鸟信息管理系统菜单:\n");
	printf("\n						1. 建立信息链表");
	printf("\n						2. 删除信息");
	printf("\n						3. 修改信息");
	printf("\n						4. 查询信息");
	printf("\n						5. 统计数目");
	printf("\n						6. 打印信息");
	printf("\n						7. 按照等级降序");
	printf("\n						8. 打印链表");
	printf("\n						9. 退出");
printf("\n						----------------------------------------------------");
	printf("\n						请输入1-8选择功能:");
	
	scanf("%d",&m);
	return m;
}

linklist *create(){
	linklist *head,*p,*q;
	head = (linklist *) malloc ( sizeof( linklist ) ); 
	head->next = NULL;
	q=head;
	printf("\n						请输入鸵鸟者的编号直到输入0结束\n");

	while(1){
		p = (linklist *) malloc ( sizeof( linklist ) ); 	
		printf("\t\t				编号:");
		scanf("%d",&p->bianhao);
	if(p->bianhao==0)	break;
		printf("\t					食性:");
		scanf("	%s",&p->name);
		//gets(p->name);
		printf("\t					性别:");
		scanf("	%s",&p->sex);
		printf("\t					身高:");
		scanf("	%d",&p->height);
		printf("\t					体重:");
		scanf("		%d",&p->weight);
		printf("\t					年龄:");
		scanf("		%d",&p->nianling);
		printf("\t					等级:");
		scanf("		%d",&p->dengji);
		p->next=NULL;
		q->next=p;
		q=p;

	
	}
return head;
}

void PrintList1(linklist *head)
{printf("\n						----------------------------------------------------\n");
	linklist  *p = head->next;
	printf("\n						顶点符号   领接信息\n");
	printf("                                                   %d",p->bianhao);
	while(p)
	{	p=p->next;
		
		if(!p) printf("      NULL");
        	else
			 printf("      %d",p->bianhao);	
		
	}


	printf("\n						----------------------------------------------------\n");
}




void PrintList(linklist *head){
printf("						----------------------------------------------------\n");
	linklist  *p = head->next;
	//for(int i=0;i<7;i++) printf("%c",information[i]);
	printf("						%s	%s	%s	%s	%s	%s	%s\n","编号","食性","性别","身高","体重","年龄","等级");
	while(p!=NULL){
		printf("						%d	%s	%s	%d	%d	%d	%d\n",p->bianhao,p->name,
			p->sex,p->height,p->weight,p->nianling,p->dengji);
		p=p->next;
	
	}printf("						----------------------------------------------------");
}
void delet(linklist *head,int bianhao){
	linklist *p=head->next ,*q=head;
	while(p!=NULL&&p->bianhao!=bianhao){q=p;p=p->next;}
		
	if(p->bianhao==bianhao){
		q->next =p->next;
		free(p);

		
	}
}
int search(linklist *head,int bianhao){
	linklist *p=head->next;
	while(p){
		
		if(p->bianhao!=bianhao) 	p=p->next;
		else  {printf("\n						%s	%s	%s	%s	%s	%s	%s\n","编号","食性","性别","身高","体重","年龄","等级");
		printf("\n						%d	%s	%s	%d	%d	%d	%d\n",p->bianhao,p->name,
			p->sex,p->height,p->weight,p->nianling,p->dengji);return 1;break;

	}
	}

}
void  counts(linklist*head){
	linklist *p=head->next;int i=0;
	if(p==NULL) printf("\n						个数为:%d",0);
	else{while(p){
		p=p->next;i++;
	}printf("\n						个数为:%d\n",i);}
}
void ChangeMenu(){
	
	printf("\n						修改的项目的号码如下:\n");
	printf("\n						1.编号");
	printf("  2.食性");
	printf("  3.身高");
	printf("  4.年龄");
	printf("  5.体重");
	printf("  6.性别");
	printf("  7.等级\n");
	
	

}
void change(linklist *head,int bianhao){
	linklist *p=head->next;int m;
	while(p!=NULL&&p->bianhao!=bianhao) p=p->next;
	printf("\n						输入要修改信息的号码:");
	scanf("%d",&m);
	switch(m){
		case 1:
			printf("						输入要修改的编号信息:");
			scanf("%d",&p->bianhao);
			
			break;
		case 2:
			printf("						输入要修改的食性信息:");
			scanf("%s",&p->name);
			
		//	gets(t);p->name=t;
			break;
		case 3:
			printf("						输入要修改的身高信息:");
			scanf("%d",&p->height);
		
			break;
		case 4:	
			printf("						输入要修改的年龄信息:");
			scanf("%d",&p->nianling);
			
			break;
		case 5:
			printf("						输入要修改的体重信息:");
			scanf("%d",&p->weight);
		
			break;
		case 6:
			printf("						输入要修改的性别信息:");
			scanf("%s",&p->sex);
			
			break;
		case 7:
			printf("						输入要修改的等级信息:");
			scanf("%d",&p->dengji);
			
			break;
	}
}

运行结果
|在这里插入图片描述

.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这是大一期末课设的一部分,,,哈哈,。写的着实有点简陋,代码看起来有点乱。不过功能基本都实现了,运行结果看起来还好。这一篇是用链表实现的,下一篇用图实现,还是同一个题目。

学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。 系统的主要功能包括: 1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。 2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排序,并继续保存至原文件。 3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。 4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。 5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。 (1) 按学号查询,输入一个学号,输出对应的学生信息。 (2) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓)。 (3) 按学院查询,输入学院名称,输出该学院的全部学生的信息。 (4) 按班级查询,输入班级名称,输出该班级的全部学生的信息。 6. 按不同条件对学生成绩进行统计工作。 (1) 按总分对学生信息进行排序(由高到低),输出排序后的信息,并将排序后的学生信息存放到一个新的二进制文件中。 (2) 按平均分统计各个分数段的学生人数(不及格,60-69,70-79,80-89,90-100)。 (3) 分别找出3门课程成绩最高的学生,并输出他们的信息。 (4) 分别统计出3门课程的不及格率,并输出。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值