学生借书证信息系统设计

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 100
typedef int keytype;
typedef struct{
	keytype key;
	char major[20];
	char name[20];
	char cl[20];
}recordtype;
typedef struct{
	recordtype r[maxsize+1];
	int length;
}table;
void init(table *tab){
	tab->length=1;
}
void key(){
	printf("\n						输入任意键以继续执行通讯录操作\n");
	getchar();
	getchar();
}
void add(table *tab){
	if(tab->length==maxsize){
		printf("顺序表已满!");
		exit(1);
	}
	else{
		printf("录入系别:			");scanf("%s",tab->r[tab->length].major);
		printf("录入学号:			");scanf("%d",&(tab->r[tab->length].key));
		printf("录入班级:			");scanf("%s",tab->r[tab->length].cl);
		printf("录入姓名:			");scanf("%s",tab->r[tab->length].name);
		tab->length++;
		printf("录入成功,若要继续录入其他同学信息请返回主菜单继续操作");
	}
}
void display(table *tab){
	if(!tab->length){
		printf("\n顺序表为空");
	}
	else{
		for(int i=1;i<tab->length;i++){
			printf("\n系别:			%s",tab->r[i].major);
			printf("\n学号:			%d",tab->r[i].key);
			printf("\n班级:			%s",tab->r[i].cl);
			printf("\n姓名:			%s",tab->r[i].name);
			printf("\n");
			printf("\n");
			printf("\n");
		}
	}
	key();
}
void shellinsertsort(table *tab){
	int i,j,d;
	d=tab->length/2;
	while(d>=1){
		for(i=d+1;i<tab->length;i++){
			tab->r[0]=tab->r[i];
			j=i-d;
			while(j>0&&tab->r[0].key<tab->r[j].key){
				tab->r[j+d]=tab->r[j];
				j=j-d;
			}
			tab->r[j+d]=tab->r[0];
		}
		d=d/2;
	}
}
void seqsearch(table *tab) {
	int k=tab->length-1;
	int count=1;
	char a[20];
	printf("请输入查找系别:");scanf("%s",&a);
	getchar();
	for(int i=0;i<tab->length;i++){
		if(strcmp(a,tab->r[k].major)==0){
			printf("符合条件学生%d:",count);
			printf("\n系别:			%s",tab->r[i].major);
			printf("\n学号:			%d",tab->r[i].key);
			printf("\n班级:			%s",tab->r[i].cl);
			printf("\n姓名:			%s",tab->r[i].name);
			printf("\n");
			printf("\n");
			printf("\n");
			count++;
		}
		k--;
	} 
	key();
}
int menu(){
	int set;
	printf("\n");
	printf("\n");
	printf("\n");
	printf("					校园借书证\n					(输入对应按键以完成操作)					\n");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("					1.添加学生信息\n");
	printf("					2.依据学生学号进行排序\n");
	printf("					3.依据系别查找当前系别的所有学生信息\n");
	printf("					4.展示目前存入的所有学生信息\n");
	printf("					5.返回主菜单\n");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("请输入操作指令:");
	scanf("%d",&set);
	return set;
}

int main(){
	table tab;
	init(&tab);
	int set=5;
	while(set){
		switch(menu()){
			case 1:add(&tab);break;
			case 2:shellinsertsort(&tab);break;
			case 3:seqsearch(&tab);break;
			case 4:display(&tab);break;
			case 5:menu();break;
		}
	}
	return 0;
}

以下为运行图:
主界面

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值