通过C. OC实现图书管理系统(要求如下)
1、使用数组管理所有书籍。
2、数组可以添加、删除(按照书名)。
3、可以从数组根据书名查找书籍,并修改书籍的价格。
4、可以输入价格区间[a, b],根据价格区间查找书籍。
5、展示所有书籍清单(书名)。
思路引导:通过题目要求我们可以先建一个空的数组用来存放书籍,为了操作方便,我们首先定义一个菜单栏,逐步完成每一道程序,很容易我们会想到switch语句,将题目中的要求分别放在每一个case中.(注意每个case中以C语言输入的字符串要转换成OC中的字符串.)显而易见,整个程序界面的建立一直在循环使用,所以要在程序的最外边加一层while循环.如下是解题过程:
@autoreleasepool { //自动释放池
NSMutableArray *array = [NSMutableArray array]; //创建可变数组用于存放书籍
NSInteger a = 1;
while ((a = 1)) { //外层循环
//建立菜单
printf("/---------------------------------/\n");
printf("/--------------菜单----------------/\n");
printf("/------------1.添加----------------/\n");
printf("/------------2.删除----------------/\n");
printf("/------------3.查看----------------/\n");
printf("/------------4.按名字查找书籍并改价格-/\n");
printf("/-------------5.按价格查找书籍-------/\n");
printf("/------------0.退出---------------/\n");
printf("/---------------------------------/\n");
NSInteger number = 0;
printf("请输入您想要的操作:");
scanf("%ld", &number);
//定义一个number用于case
switch (number) {
case 1:{
//添加书籍:
printf("请输入一本书的信息:");
char name[40]; //名字
CGFloat price; //价格
scanf("%s%lf", name, &price); //输入一本书的的信息
NSString *sc_name = [NSString stringWithUTF8String:name]; //将C中的字符串转换
//一本书的信息:
Book *book = [Book BookWithName:sc_name Price:price];
//放到建好的存放书籍的数组中:
[array addObject:book];
}
break;
case 2:{
//删除书籍:
char name[40];
printf("请输入你想删除的书的名字:");
scanf("%s", name);
NSString *sc_name = [NSString stringWithUTF8String:name];
NSMutableArray *tempArray = [NSMutableArray array]; //创建临时数组存放想要删除 的书籍:
for (Book *book in array) { //for in遍历数组找出想要删除的书籍
if ([book.name isEqualToString:sc_name]) {
[tempArray addObject:book]; //将找到的书籍存在先前定义的临时数组中
}
}
[array removeObjectsInArray:tempArray]; //在书籍数组array中删除tempArray
}
break;
case 3:{ //时刻关注数组中元素动态
//遍历书籍数组并输出:
for (Book *book in array) {
NSLog(@"%@---%lf", book.name, book.price);
}
}
break;
case 4:{
//按照书名修改价格:
printf("请输入您想改价格的书名:");
char name[50];
scanf("%s", name);
NSString *sc_name = [NSString stringWithUTF8String:name];
NSInteger flag = 0; //定义一个循环的标记
for (Book *book in array) { //遍历查找该书籍:
if ([book.name isEqualToString:sc_name]) {
printf("请输入新的价格:");
CGFloat newPrice = 0; //定义一个新书的价格
scanf("%lf", &newPrice);
book.price = newPrice;
flag = 1;
}
}
if (flag == 0) {
printf("非常抱歉,你想更换价格的书不存在");
}
}
break;
case 5:{
//按照价格区间查找书籍:
printf("请输入您想要查找的价格区间:");
NSInteger a = 0;
NSInteger b = 0;
scanf("%ld%ld", &a, &b);
NSInteger flag1 = 0;
//定义一个新的数组用来存放查找到的书籍:
NSMutableArray *array2 = [NSMutableArray array];
//遍历存放书籍的数组:
for (Book *book in array) {
if (a <= book.price && b >= book.price) { //遍历并找到价格在定义区间内的书
[array2 addObject:book]; //将符合条件的书籍全部放到数组中
flag1 = 1;
NSLog(@"在这个价格区间的书名是:%@", book.name);
}
}
if (flag1 == 0) {
printf("抱歉 ,没有这个价位区间的书籍");
}
}
break;
case 0:{
printf("谢谢您的使用!");
a = 0; //结束while循环
}
break;
default:printf("您输入的操作不存在");
break;
}
}
}