小桥,流水
实验一:图书管理系统
补个学校作业,直接上码,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();
}