Skip to content

刘付越 #76

Description

@liufuyue

0 6at9j8rma6qv gixzr2

#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define maxsize 1000
typedef struct node   /*借书证信息的结构体*/
{
	int keycard;
	int depart,clas;
	char name[100];
}lib;
typedef struct nod
{
	lib s[maxsize];
	int length;
}table;
table *create()   /*录入学生信息*/
{
	table *q;
	int i;
	q=(table*)malloc(sizeof(table));
	printf("输入学生的人数");
	scanf("%d",&q->length);
	getchar();
	q->s[0].clas=0;
	q->s[0].depart=0;
	q->s[0].keycard=0;
	q->s[0].name[100]='\0';
	for(i=1;i<=q->length;i++)
	{
		printf("输入学生信息:借阅卡号 系号 班级\n");
		scanf("%d%d%d",&q->s[i].keycard,&q->s[i].depart,&q->s[i].clas);
		printf("名字  ");
		getchar();
		scanf("%s",&q->s[i].name);
		getchar();
	}
	return q;
}

void *quicksort(table *q,int left,int right)  /*以借书卡号为关键字快速排序*/
{
	int i,j,k;
	if(left<right)
	{
		i=left;
		j=right;
		q->s[0].keycard=q->s[i].keycard;
		q->s[0].clas=q->s[i].clas;
		q->s[0].depart=q->s[i].depart;
		strcpy(q->s[0].name,q->s[i].name);
		do
		{
			while(q->s[j].keycard>q->s[0].keycard) j--;
			if(i<j)
			{
				q->s[i].clas=q->s[j].clas;
				q->s[i].depart=q->s[j].depart;
				q->s[i].keycard=q->s[j].keycard;
				strcpy(q->s[i].name,q->s[j].name);
				i++;
			}
			while(q->s[i].keycard<q->s[0].keycard&&i<j) i++;
			if(i<j)
			{
				q->s[j].keycard=q->s[i].keycard;
				q->s[j].depart=q->s[i].depart;
				q->s[j].clas=q->s[i].clas;
				strcpy(q->s[j].name,q->s[i].name);
				j--;
			}
		}while(i!=j);
		q->s[i].keycard=q->s[0].keycard;
		q->s[i].clas=q->s[0].clas;
		q->s[i].depart=q->s[0].depart;
		strcpy(q->s[i].name,q->s[0].name);
		quicksort(q,left,i-1);
		quicksort(q,i+1,right);
	}
}
void print(table *q)
{
	int k;
	for(k=1;k<=q->length;k++)
	{
	printf("学生姓名%s\n",q->s[k].name);
	printf("借阅卡号%d\n所在系%d\n班级%d\n\n",q->s[k].keycard,q->s[k].depart,q->s[k].clas);
	}
}
void seqsearch(table *q,int m)
{
	int i;
	for(i=1;i<=q->length;i++)
	{
		if(q->s[i].depart==m)
		{
			printf("姓名%s \n",q->s[i].name);
			printf("借阅卡号%d\n班级%d\n",q->s[i].keycard,q->s[i].clas);

		}
	}
}
int main()
{
	table *q;
	int left,right,m,n,g;
	do
	{
	printf("\n-------------菜单-------------\n1.录入学生借阅卡信息\n2.将录入的信息按照借阅卡号排序\n3.查找某系的学生的借阅卡信息\n请输入您要操作的项目序号:");
	scanf("%d",&n);
	if(n==1)
	q=create();
	else if(n==2)
	{
	left=1;
	right=q->length;
	quicksort(q,left,right);
	printf("按借阅卡号排序结果\n\n");
	print(q);
	}
	else if(n==3)
	{
	printf("输入要查找的系号");
	scanf("%d",&m);
	printf("%d系的学生借阅卡信息如下\n\n",m);
	seqsearch(q,m);
	}
	printf("\n如果您要继续操作请输入1退出请输入-1\n");
	scanf("%d",&g);
	}while(g==1);
	system("pause");
	return 0;
}

qpbkz 7ye 9x 0 6at9j8rma6qv gixzr2 2h si s gs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions