数据结构——宠物信息管理系统(顺序表实现)
最近在学习严蔚敏老师的《数据结构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做宠物饲养,说一说最适 |
下一篇: 宠物的生长(虚函数和多态) |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352