图书管理系统c语言版+手写线序表

小桥,流水

实验一:图书管理系统

补个学校作业,直接上码,qwq

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
int const N=37;
int const M=1e3+7;
 
typedef struct{
	char no[N];	//图书编号-
	char name[N];	//图书名字
	double price;	//图书价格
}Book;
 
typedef struct{
	Book elem[M];
	int length;
}SqList;  
 
void InList(SqList &L){
	L.length=0;
	printf("顺序表构造成功!\n");
} 
 
void showList(SqList &L){
	if(L.length==0){
		printf("暂时没有图书\n");
		return;
	}
	for(int i=0;i<L.length;i++)
		printf("no:%s\t name:%s\t price:%.2lf\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
}
 
bool getList(SqList &L){
	
	if(L.length==M-1){
			printf("图书馆已存放满,无法在添加一本图书了\n");
			return false;
		}
	
	printf("请按顺序输入图书的信息\n");
	printf("输入图书编号:\n");
	scanf("%s",L.elem[L.length].no);
	printf("输入图书名称:\n");
	scanf("%s",L.elem[L.length].name);
	printf("输入图书价格:\n");
	scanf("%lf",&L.elem[L.length].price);
	
	printf("添加图书成功\n");
	L.length++;
	return true;
}
 
bool queryList(SqList &L){
	char target[N];
	printf("输入你要查找的图书名称:\n");
	scanf("%s",target);
	
	for(int i=0;i<L.length;i++){
		if(strcmp(L.elem[i].name,target)==0){
			printf("图书馆里有此图书,该图书信息如下:\n");
			printf("no:%s\t name:%s\t price:%.2lf\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
			return  true;
		}
	}
	printf("图书馆里无此图书\n");
	return false;
}
 
bool insert(SqList &L){
	if(L.length==M-1){
		printf("图书馆已存放满,无法在插入一本图书了\n");
		return false;
	}
	
	printf("请按顺序输入你要插入的图书的信息\n");
	printf("输入图书编号:\n");
	scanf("%s",L.elem[L.length].no);
	printf("输入图书名称:\n");
	scanf("%s",L.elem[L.length].name);
	printf("输入图书价格:\n");
	scanf("%lf",&L.elem[L.length].price);
	
	//这里为了方便,直接采用的尾插
	printf("插入图书成功\n");
	L.length++;
	return true;
}
 
bool eraseList(SqList &L){
	char target[N];
	printf("输入你要删除的图书名称:\n");
	scanf("%s",target);
	
	for(int i=0;i<L.length;i++){
		if(strcmp(L.elem[i].name,target)==0){	//书的name一样 
			printf("图书馆里有此图书,该图书信息如下:\n");
			printf("no:%s\t name:%s\t price:%.2lf\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
			
			
			for(int j=i;j<=L.length-2;j++)
				L.elem[j]=L.elem[j+1];
			
			L.length--;
			printf("该图书已成功被删除了\n");
			return  true;
		}
	}
	
	
	printf("图书馆无此书,无法删除!\n");
	return false;
}
 
void countList(SqList &L){
	printf("图书馆的书的数量为:%d\n",L.length);
}
 
void query_price_range(SqList &L){
	printf("输入一个价格区间:\n");
	double l,r;	scanf("%lf%lf",&l,&r);
	int flag=0;
	for(int i=0;i<L.length;i++){
		if(L.elem[i].price>=l&&L.elem[i].price<=r){	//在区间范围,输出图书信息 
			printf("no:%s\t name:%s\t price:%.2lf\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
			flag=1;
		}
	}
	if(flag==0){
		printf("此价格区间,图书馆里没有一本书!\n");
	}
}
 
void modify_price(SqList &L){
	printf("请输入要修改的书籍书名与要修改的价格:\n");
	char name[20];	
	double price; scanf("%s%lf",name,&price);
	for(int i=0;i<L.length;i++){
		if(strcmp(L.elem[i].name,name)==0){	//书的name一样 
			L.elem[i].price=price;
			printf("修改成功!\n");
			return; 
		}
	} 
	printf("图书馆没有此书,请先添加此书!\n");
}
 
void delete_all(SqList &L){
	L.length=0;
	printf("删除成功!\n");
}
 
void sort_price(SqList &L,bool flag){
	int n=L.length;
	for(int i=n-1;i>=0;i--){	//升序 
		for(int j=0;j<i;j++)
			if(L.elem[j].price>L.elem[j+1].price){
				Book temp=L.elem[j];
				L.elem[j]=L.elem[j+1];
				L.elem[j+1]=temp;	
			} 
	}
	
	if(flag) printf("按价格排序成功!\n");
}

void max_price_book(SqList &L){
	sort_price(L,false);
	if(L.length==0){
		printf("图书馆里还没有图书");
	}
	else{
		int i=L.length-1;
		printf("no:%s\t name:%s\t price:%.2lf\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
	}
}
 
void min_price_book(SqList &L){
	sort_price(L,false);
	if(L.length==0){
		printf("图书馆里还没有图书");
	}
	else{
		int i=0;
		printf("no:%s\t name:%s\t price:%.2lf\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
	}
}

void solve(SqList &L){
	while(1){
		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("------8:按书名修改书的价格-----------------\n");
		printf("------9:按书的价格从小到大排序-----------=-\n");
		printf("------A:删除全部的书-----------------------\n");
		printf("------B:查找价格最贵的书-------------------\n");
		printf("------C:查找价格最便宜的书-----------------\n");
		printf("------0:退出系统---------------------------\n");
		
		printf("输出你要执行的操作:\n");
		char opt[N];	
		scanf("%s",opt);
		
		switch(opt[0]){
			case '1':{
				showList(L); 
				break;
			} 
			case '2':{
				getList(L);
				break;
			} 
			case '3':{
				queryList(L);	//按图书名称查找
				break;
			} 
			case '4':{
				insert(L);
				break;
			} 
			case '5':{
				eraseList(L);
				break;
			} 
			case '6':{
				countList(L);
				break;
			} 
			case '7':{
				query_price_range(L);
				break;
			} 
			case '8':{
				modify_price(L);
				break;
			} 
			case '9':{
				sort_price(L,true);
				break;
			} 
			case 'A':{
				delete_all(L);
				break; 
			} 
			case 'B':{
				max_price_book(L);
				break; 
			} 
			case 'C':{
				min_price_book(L);
				break; 
			} 
			case '0':{
				printf("程序结束!!!\n");
				exit(0);
				break;
			} 
			
			default:printf("你的输入非法,请重新输入:\n"); 
		} 
	}
}
 
int main(){
	SqList L;
	system("color 4f");	//改变运行的颜色 
	InList(L);	//初始化	
	solve(L);
 
	return 0;
}

实验二:职工管理系统

什么功能都给出来了,哈哈,接下来练练打字吗???

好像真的是这个样子,win麻了

#include<stdio.h>
#include<string.h>
#include<stdlib.h>			//exit(0)的头文件 
#include<malloc.h>

typedef struct{
	int no;	//职工号 
	char name[10];
	int dep;	//部门编号(department)
	double salary;	//职工类型 
}EmpType;	//employ:雇员 

typedef struct Node{
	EmpType data;	//职工信息 
	struct Node *next;	//指针域 
}EmpList; 

void add(EmpList *L){
	EmpList *temp=(EmpList *)malloc(sizeof(EmpList));
	printf("输入职工号:\n");
	scanf("%s",&temp->data.no);
	printf("输入职工名字:\n");
	scanf("%s",temp->data.name);
	printf("输入职工部门编号:\n");
	scanf("%d",&temp->data.dep); 
	printf("输入工资:\n");
	scanf("%lf",&temp->data.salary);
	
	temp->next=L->next;
	L->next=temp; 
	printf("添加成功\n"); 
}


void solve(){
	EmpList *L;
	
	while(1){
		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("------0:退出系统---------------\n");
		
		char opt[10];	
		printf("请选择:");
		scanf("%s",opt);
		
		switch(opt[0]){
			case '1':{
				add(L); 
				break;
			}
			case '2':{
				
				break;
			}
			case '3':{
				
				break;
			}
			case '4':{
				
				break;
			}
			case '5':{
				
				break;
			}
			case '6':{
				
				break;
			}
			case '7':{
				
				break;
			}
			case '0':{
				printf("程序结束!!!\n"); 
				exit(0);
				break;
			}
			default:printf("输入非法!请重新输入\n");
		}
	}
}

int main(){
	solve();
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值