通過C. OC實現(xiàn)圖書管理系統(tǒng)(要求如下)
1咧栗、使用數(shù)組管理所有書籍。
2虱肄、數(shù)組可以添加致板、刪除(按照書名)。
3咏窿、可以從數(shù)組根據(jù)書名查找書籍,并修改書籍的價格斟或。
4、可以輸入價格區(qū)間[a, b],根據(jù)價格區(qū)間查找書籍集嵌。
5萝挤、展示所有書籍清單(書名)御毅。
思路引導(dǎo):通過題目要求我們可以先建一個空的數(shù)組用來存放書籍,為了操作方便,我們首先定義一個菜單欄,逐步完成每一道程序,很容易我們會想到switch語句,將題目中的要求分別放在每一個case中.(注意每個case中以C語言輸入的字符串要轉(zhuǎn)換成OC中的字符串.)顯而易見,整個程序界面的建立一直在循環(huán)使用,所以要在程序的最外邊加一層while循環(huán).如下是解題過程:
@autoreleasepool { ? ? ? ? ? ? ? ? ? ? ? ? ? //自動釋放池
NSMutableArray *array = [NSMutableArray array]; ? //創(chuàng)建可變數(shù)組用于存放書籍
NSInteger a = 1;
while ((a = 1)) { ? ? ? ? ? ? ? ?//外層循環(huán)
//建立菜單
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中的字符串轉(zhuǎn)換
//一本書的信息:
Book *book = [Book BookWithName:sc_name Price:price];
//放到建好的存放書籍的數(shù)組中:
[array addObject:book];
}
break;
case 2:{
?//刪除書籍:
char name[40];
printf("請輸入你想刪除的書的名字:");
scanf("%s", name);
NSString *sc_name = [NSString stringWithUTF8String:name];
NSMutableArray *tempArray = [NSMutableArray array]; ? ?//創(chuàng)建臨時數(shù)組存放想要刪除 ? ? ? ? 的書籍:
for (Book *book in array) { ? ? ? ? ? ? ? ? ? ? ? ?//for in遍歷數(shù)組找出想要刪除的書籍
if ([book.name isEqualToString:sc_name]) {
[tempArray addObject:book]; ? ? ? ? ? ? ? //將找到的書籍存在先前定義的臨時數(shù)組中
}
}
[array removeObjectsInArray:tempArray]; ? ? ? //在書籍?dāng)?shù)組array中刪除tempArray
}
break;
case 3:{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //時刻關(guān)注數(shù)組中元素動態(tài)
//遍歷書籍?dāng)?shù)組并輸出:
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; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //定義一個循環(huán)的標(biāo)記
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:{
//按照價格區(qū)間查找書籍:
printf("請輸入您想要查找的價格區(qū)間:");
NSInteger a = 0;
NSInteger b = 0;
scanf("%ld%ld", &a, &b);
NSInteger flag1 = 0;
//定義一個新的數(shù)組用來存放查找到的書籍:
NSMutableArray *array2 = [NSMutableArray array];
//遍歷存放書籍的數(shù)組:
for (Book *book in array) {
if (a <= book.price && b >= book.price) { ? ? ? ? ?//遍歷并找到價格在定義區(qū)間內(nèi)的書
[array2 addObject:book]; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //將符合條件的書籍全部放到數(shù)組中
flag1 = 1;
NSLog(@"在這個價格區(qū)間的書名是:%@", book.name);
}
}
if (flag1 == 0) {
printf("抱歉 ,沒有這個價位區(qū)間的書籍");
}
}
break;
case 0:{
printf("謝謝您的使用!");
a = 0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//結(jié)束while循環(huán)
}
break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
default:printf("您輸入的操作不存在");
break;
}
}
}