
要求:實作以上操作,
代碼部分:
#include<iostream>
#include<string.h>
#include<stdlib.h>
#define maxSize 100
using namespace std;
typedef struct {
char ISBN[20];
char name[50];
float price;
}Book;
typedef struct {
Book data[maxSize];
int length;
}Sqlist;
//插入函式
int insertElsm(Sqlist &L, int p/*插入位置*/, Book b) {
int i;
if (p<0 || p>L.length || L.length == maxSize) {
return 0;
}
for (i = L.length - 1; i >= p; --i) {
L.data[i + 1] = L.data[i];
}
L.data[p] = b;
++(L.length);
return 1;
}
void insert(Sqlist &L) { //插入操作
Book b1;
cout << "請輸入數的編碼:";
cin >> b1.ISBN;
cout << "請輸入書名:";
cin >> b1.name;
cout << "請輸入書的定價:";
cin >> b1.price;
int p;//插入位置
cout << "選擇插入位置:";
cin >> p;
if (insertElsm(L, p, b1)) {
cout << "插入成功!";
}
else
{
cout << "插入失敗!";
}
}
//查找函式
int findElem(Sqlist L, char e[20]/*查找的資訊*/) {
int i;
for (i = 0; i < L.length; i++) {
if (0==strcmp(L.data[i].ISBN,e))
{
return i;
}
}
return -1;
}
void find(Sqlist &L) { //查找操作
char a[20];
cout << "輸入查找的編號:";
cin >> a;
int b = findElem(L, a);
if (b==-1)
{
cout << "查詢失敗!" << endl;
}
else
{
cout << "查詢的編號:" << L.data[b].ISBN << endl;
cout << "查詢的書名:" << L.data[b].name << endl;
cout << "查詢的價格:" << L.data[b].price << endl;
cout << "查詢編號當前所處位置:" << b << endl;
}
}
//洗掉函式
int del(Sqlist &L,int p,Book &b) {
int i;
if (p<0 || p>L.length-1) {
return 0;
}
b = L.data[p];
cout << "您洗掉的編號:" << L.data[p].ISBN << endl;
cout << "您洗掉的書名:" << L.data[p].name << endl;
cout << "您洗掉的價格:" << L.data[p].price << endl;
int is_bool;
cout << "確認請輸入1:";
cin >> is_bool;
if (is_bool)
{
for (i = p; i < L.length - 1; ++i) {
L.data[i] = L.data[i + 1];
}
--(L.length);
return 1;
}
else {
return 0;
}
}
void delet(Sqlist &L) {
int p;
cout << "輸入洗掉的位置:";
cin >> p;
Book b1;
int i = del(L, p, b1);
if (i)
{
cout << "洗掉成功!" << endl;
}
else {
cout << "洗掉失敗!" << endl;
}
}
//修改函式
int cha(Sqlist &L, int p) {
int i;
cout << "您修改的編號:" << L.data[p].ISBN<<endl;
cout << "您修改的書名:" << L.data[p].name<<endl;
cout << "您修改的價格:" << L.data[p].price<<endl;
cout << "確定請輸入1:";
cin >> i;
if (i) {
cout << "輸入您修改的編號:";
cin >> L.data[p].ISBN;
cout << "輸入您修改的書名:";
cin >> L.data[p].name;
cout << "輸入您修改的價格:";
cin >> L.data[p].price;
return 1;
}
return 0;
}
void change(Sqlist &L) {
int q;
cout << "輸入需要修改的位置:";
cin >> q;
cha(L, q);
}
//排序部分
int ord(Sqlist &L,int p,int q) {
if (p>=L.length||p<0||q>=L.length||q<0)
{
return 0;
}
Book b1;
if (p > q)
{
b1 = L.data[p];
for (int i = p; i > q; i--)
{
L.data[i] = L.data[i - 1];
}
L.data[q] = b1;
return 1;
}if (p < q) {
b1 = L.data[p];
for (int i = p; i < q; i++)
{
L.data[i] = L.data[i+1];
}
L.data[q] = b1;
return 1;
}
return 0;
}
void order(Sqlist &L) {
int m,n;
cout << "請輸入需要排序的資料位置:";
cin >> m;
cout << "請輸入排序到的位置:";
cin >> n;
int a = ord(L, m, n);
if (a)
{
cout << "排序成功!" << endl;
}
else
{
cout << "排序失敗!" << endl;
}
}
//計數部分
void total(Sqlist L) {
cout << "目前表內資料共:" << L.length << "個!" << endl;
if (L.length != 0)
{
for (int i = 0; i < L.length; i++) {
cout << "編號:" << L.data[i].ISBN << " ";
cout << "書名:" << L.data[i].name << " ";
cout << "價格:" << L.data[i].price << endl;
}
}
else
{
cout << "當前無儲存資料!" << endl;
}
}
//創建部分
void creat(Sqlist &L) {
Book b;
int num; //創建串列數
cout << "輸入書的總數:";
cin >> num;
for (int i = 0; i < num; i++)
{
cout << "輸入書的編號:";
cin >> b.ISBN;
cout << "輸入書的書名:";
cin >> b.name;
cout << "輸入書的價格:";
cin >> b.price;
cout << endl;
L.data[i] = b;
L.length++;
}
}
int main() {
Sqlist book_sqlist;
book_sqlist.length = 0;
int select;
while (true)
{
cout << "-----1.插入資料操作-----" << endl;
cout << "-----2.查找資料操作-----" << endl;
cout << "-----3.洗掉資料操作-----" << endl;
cout << "-----4.修改資料操作-----" << endl;
cout << "-----5.排序資料操作-----" << endl;
cout << "-----6.計數顯示 -----" << endl;
cout << "-----7.創建線性表 -----" << endl;
cout << "----資料第一個位置為0----"<<endl;
cout << "選擇操作:";
cin >> select;
switch (select)
{
case 1: //插入
insert(book_sqlist);
system("pause");
system("cls");
break;
case 2: //查找
find(book_sqlist);
system("pause");
system("cls");
break;
case 3: //洗掉
delet(book_sqlist);
system("pause");
system("cls");
break;
case 4: //修改
change(book_sqlist);
system("pause");
system("cls");
break;
case 5: //排序
order(book_sqlist);
system("pause");
system("cls");
break;
case 6: //計數
total(book_sqlist);
system("pause");
system("cls");
break;
case 7: //創建線性表
creat(book_sqlist);
system("pause");
system("cls");
break;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/49359.html
標籤:C++
上一篇:虛函式表與多型的認知
下一篇:C語言中%與/
