首页 分享 数据结构——宠物信息管理系统(顺序表实现)

数据结构——宠物信息管理系统(顺序表实现)

来源:萌宠菠菠乐园 时间:2024-08-19 07:12

最近在学习严蔚敏老师的《数据结构C语言版》,了解了线性表的相关内容,用顺序表实现了宠物信息管理,具有增删改查的功能,代码如下。

#include <iostream>

using namespace std;

#define MAXSIZE 100

typedef struct {

char name[20];

int age;

char type[20];

} Pet;

typedef struct {

Pet *elem;

int length;

} SqList;

bool InitList(SqList &L) {

L.elem = new Pet[MAXSIZE];

if (!L.elem)

return false;

L.length = 0;

return true;

}

bool GetElem(SqList &L, int i, Pet &p) {

if (i < 1 || i > L.length)

return false;

p = L.elem[i - 1];

cout << "name:" << p.name << " "

<< "type:" << p.type << " "

<< "age:" << p.age << endl;

return true;

}

int LocateElem(SqList L, Pet p) {

for (int i = 0; i < L.length; i++) {

if (strcmp(p.name, L.elem[i].name) == 0 &&

strcmp(p.type, L.elem[i].type) == 0 &&

p.age == L.elem[i].age)

return i + 1;

}

return 0;

}

bool ListInsert(SqList &L, int i, Pet p) {

if (i < 1 || (i > L.length + 1) || L.length == MAXSIZE)

return false;

for (int j = L.length - 1; j >= i - 1; j--) {

L.elem[j + 1] = L.elem[j];

}

L.elem[i - 1] = p;

++L.length;

return true;

}

bool ListDelete(SqList &L, int i, Pet p) {

if (i < 1 || i > L.length)

return false;

p = L.elem[i - 1];

for (int j = i; j <= L.length - 1; j++) {

L.elem[j - 1] = L.elem[j];

}

L.length--;

return true;

}

void DisplayList(SqList L) {

for (int i = 0; i < L.length; i++) {

cout << "name:" << L.elem[i].name

<< " " << "type:" << L.elem[i].type

<< " " << "age:" << L.elem[i].age << endl;

}

}

int GetLength_Sq(SqList L) {

return L.length;

}

bool SetList_Sq(SqList &L, Pet p[], int length) {

for (int i = 0; i < length; i++) {

L.elem[i] = p[i];

L.length++;

}

return true;

}

void DrawMenu() {

cout << "***欢迎使用宠物信息管理系统***" << endl;

cout << "* 0:退出系统 *" << endl;

cout << "* 1:输出宠物信息表 *" << endl;

cout << "* 2:新宠物信息入库 *" << endl;

cout << "* 3:旧宠物信息出库 *" << endl;

cout << "* 4:查找宠物位序 *" << endl;

cout << "* 5:查找第i个宠物信息 *" << endl;

cout << "* 6:获取宠物数量 *" << endl;

}

int main() {

SqList L;

int i = 0;

Pet p;

Pet pet[1] = {"lele", 8, "dog"};

InitList(L);

SetList_Sq(L, pet, sizeof(pet) / sizeof(pet[0]));

DrawMenu();

cout << "请输入您的选择" << endl;

while (true) {

int j;

cin >> j;

switch (j) {

case 0:

cout << "感谢使用本信息管理系统,已退出" << endl;

exit(0);

break;

case 1:

DisplayList(L);

break;

case 2:

cout << "请输入增加的宠物信息" << endl;

cin >> p.name >> p.age >> p.type;

cout << "请输入入库位置" << endl;

cin >> i;

ListInsert(L, i, p);

cout << "录入完毕,宠物信息如下" << endl;

DisplayList(L);

break;

case 3:

cout << "请输入需要删除信息的宠物位序:" << endl;

cin >> i;

ListDelete(L, i, p);

cout << "删除完毕,剩余宠物信息如下" << endl;

DisplayList(L);

break;

case 4:

cout << "请输入所需查找位序的宠物信息" << endl;

cin >> p.name >> p.age >> p.type;

cout << "该宠物位序为:" << LocateElem(L, p) << endl;

break;

case 5:

cout << "请输入所需查找信息的宠物位序:" << endl;

cin >> i;

GetElem(L, i, p);

break;

case 6:

cout << "宠物总数为:" << GetLength_Sq(L) << endl;

break;

default:

cout << "输入错误请输入正确选择:" << endl;

break;

}

DrawMenu();

cout << "请继续选择后续操作" << endl;

}

}

 测试结果如下:

 

相关知识

基于Springboot宠物健康咨询系统的设计与实现
【开题报告】基于SpringBoot的宠物寄存商店管理系统的设计与实现
毕业设计:基于java的宠物管理系统设计与实现
基于springboot实现宠物咖啡馆平台管理系统项目【项目源码+论文说明】计算机毕业设计
基于Java+MySQL+SpringBoot宠物健康咨询系统的设计与实现
基于java+springboot+vue实现的宠物美容机构CRM系统(文末源码+Lw+ppt)23
网上宠物服饰销售系统设计与实现
云计算技术在宠物信息管理中的应用.docx
宠物领养系统的设计与实现 毕业设计
宠物救助系统

网址: 数据结构——宠物信息管理系统(顺序表实现) https://www.mcbbbk.com/newsview78964.html

所属分类:萌宠日常
上一篇: html5做宠物饲养,说一说最适
下一篇: 宠物的生长(虚函数和多态)

推荐分享