本节书摘来自异步社区《iPad开发从入门到精通》一书中的第6章,第6.3节站站查询,作者 杨春泽,更多章节内容可以访问云栖社区“异步社区”公众号查看

6.3 站站查询
iPad开发从入门到精通
本模块的功能是提供站站查询功能,只需输入起始站和目的站的名称,就可以快速查询到符合要求的公交线路了。在本节的内容中,将详细讲解站站查询模块的具体实现流程。

6.3.1 站站查询主视图
站站查询主视图CBus_StatToStatView.xib的UI界面如图6-6所示,在上方显示搜索表单,下方列表显示了30条线路。


实现文件CBus_StatToStatViewController.h的代码如下所示。

#import <UIKit/UIKit.h>
#define kBeginStationComponent 0
#define kEndStationComponent 1
enum EStationType{EBeginStationType,EEndStationType,ENoneStationType
};
@interface CBus_StatToStatViewController : UIViewController <UITableViewDelegate,
UITableViewDataSource,UISearchDisplayDelegate, UISearchBarDelegate, UIPickerView Delegate, UIPickerViewDataSource>{UITableView    *busStatToStatTableView;UISearchBar    *currentSearchBar;UISearchBar    *beginSearchBar;UISearchBar    *endSearchBar;  UIPickerView  *stationPickView;NSInteger     currentBeginIndex;NSInteger     currentEndIndex;  NSInteger     stationType;  NSMutableArray  *beginFilteredListContent;NSMutableArray  *endFilteredListContent;NSString    *ifSelectedPickerString;NSString    *ifSelectedPickEndString;BOOL       isSearchBegin;BOOL       isSearchEndBegin;BOOL       isJumpToStat;UIBarButtonItem  *returnKeyBordBtn;
}
@property (nonatomic, retain) IBOutlet UITableView    *busStatToStatTableView;
@property (nonatomic, retain) IBOutlet UISearchBar    *beginSearchBar;
@property (nonatomic, retain) IBOutlet UISearchBar    *endSearchBar;
@property (nonatomic, retain) IBOutlet UIPickerView    *stationPickView;
@property(nonatomic, retain)      NSMutableArray  *beginFilteredListContent;
@property(nonatomic, retain)      NSMutableArray  *endFilteredListContent;
@property(nonatomic) BOOL   isJumpToStat;
- (void)filterContentForSearchText:(NSString*)searchText;@end
文件CBus_StatToStatViewController.m是文件CBus_StatToStatViewController.h的实现,功能是显示搜索表单,根据用户输入的起始站点和终点站信息,列表显示符合搜索条件的线路。#import "CBus_StatToStatViewController.h"
#import "CBus_LineDetailViewController.h"
#import "CBus_StationDetailViewController.h"
#import "CDataContainer.h"
@implementation CBus_StatToStatViewController
@synthesize busStatToStatTableView,beginFilteredListContent,endFilteredListContent;
@synthesize beginSearchBar, endSearchBar, stationPickView;
@synthesize isJumpToStat;
// 界面初始化
- (void)viewDidLoad {[super viewDidLoad];returnKeyBordBtn = [[UIBarButtonItem alloc] initWithTitle:@"收起键盘"  style:UIBarButtonItemStylePlain
target:self
action:@selector(HideKeyBoard:)];self.navigationItem.rightBarButtonItem = nil;// 输入键盘;self.beginFilteredListContent = [NSMutableArray arrayWithArray:[CDataContainer Instance].stationNameArray];self.endFilteredListContent = [NSMutableArray arrayWithArray:[CDataContainer Instance].stationNameArray];isSearchBegin = NO;isSearchEndBegin = NO;isJumpToStat = NO;ifSelectedPickerString = [[NSString alloc] init];ifSelectedPickEndString = [[NSString alloc] init];
}
#pragma mark -
#pragma mark View lifecycle
//根据设置的样式显示
- (void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];[self.busStatToStatTableView reloadData];NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];NSInteger styleNum = [userDefault integerForKey:@"styleType"];switch (styleNum){case 0:{[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyle Default;self.navigationController.navigationBar.barStyle = UIBarStyleDefault;self.beginSearchBar.barStyle = UIBarStyleDefault;self.endSearchBar.barStyle = UIBarStyleDefault;break;}case 1:{[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyle BlackOpaque;self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;self.beginSearchBar.barStyle = UIBarStyleBlackOpaque;self.endSearchBar.barStyle = UIBarStyleBlackOpaque;break;}}self.navigationItem.rightBarButtonItem = nil;stationType = ENoneStationType;[stationPickView reloadAllComponents];if(isJumpToStat){CBus_StationDetailViewController *detailViewController = [[CBus_Station DetailViewController alloc] initWithNibName:@"CBus_StationDetailView" bundle:nil];detailViewController.currentStationName = [[CDataContainer
Instance].stationNameArray objectAtIndex:currentBeginIndex];detailViewController.currentStationIndex = currentBeginIndex+1;[self.navigationController pushViewController:detailViewController animated:YES];[detailViewController release];isJumpToStat = NO;}  
}
- (void)viewDidAppear:(BOOL)animated{[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated{[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated{[super viewDidDisappear:animated];beginSearchBar.text = @"";endSearchBar.text = @"";
}// 默认图片
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation{// Return YES for supported orientationsreturn (interfaceOrientation == UIInterfaceOrientationPortrait);
}-(IBAction)HideKeyBoard:(id)sender{NSLog(@"------HideKeyBoard------");self.navigationItem.rightBarButtonItem = nil;beginSearchBar.text = @"";endSearchBar.text = @"";stationPickView.hidden = YES;[currentSearchBar resignFirstResponder];
}
#pragma mark -
#pragma mark Table view data source
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger) section{return @"站站查询";
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger) section{return 30;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{return [[CDataContainer Instance].stationNameArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];}  cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;cell.selectionStyle = UITableViewCellSelectionStyleGray;// Configure the cellcell.textLabel.text = [[CDataContainer Instance].stationNameArray objectAtIndex: indexPath.row];cell.imageView.image = [UIImage imageNamed:@"bus_table_stat.png"];return cell;
}
#pragma mark -
#pragma mark Table view delegate- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {// 创造和推动另一个视图控制器CBus_StationDetailViewController *detailViewController = [[CBus_StationDetail ViewController alloc] initWithNibName:@"CBus_StationDetailView" bundle:nil];detailViewController.currentStationName = [[CDataContainer Instance].stationName Array objectAtIndex:indexPath.row];detailViewController.currentStationIndex = indexPath.row+1;[self.navigationController pushViewController:detailViewController animated:YES];[detailViewController release];
}
-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:
(NSIndexPath *)indexPath
{
}
#pragma mark -
#pragma mark Picker view data source
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger) component{if (component == kBeginStationComponent){if ([beginSearchBar.text isEqualToString:@""]){return [[CDataContainer Instance].stationNameArray count];}if (stationType == EBeginStationType){return[beginFilteredListContent count];}else{return [[CDataContainer Instance].stationNameArray count];}}else if(component == kEndStationComponent){if ([endSearchBar.text isEqualToString:@""]){return [[CDataContainer Instance].stationNameArray count];}if (stationType == EEndStationType){return[endFilteredListContent count];}else {return [[CDataContainer Instance].stationNameArray count];}}  return 0;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row
forComponent:(NSInteger)component{if (component == kBeginStationComponent){if ([beginSearchBar.text isEqualToString:@""]){return [[CDataContainer Instance].stationNameArray objectAtIndex:row];}if (stationType == EBeginStationType){return[beginFilteredListContent objectAtIndex:row];}else {return [[CDataContainer Instance].stationNameArray objectAtIndex:row];}}else if(component == kEndStationComponent){if ([endSearchBar.text isEqualToString:@""]){return [[CDataContainer Instance].stationNameArray objectAtIndex:row];}if (stationType == EEndStationType){return[endFilteredListContent objectAtIndex:row];}else {return [[CDataContainer Instance].stationNameArray objectAtIndex:row];}}return nil;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component{if (component == kBeginStationComponent){currentBeginIndex = row;if ([beginSearchBar.text isEqualToString:@""]){isSearchBegin = NO;ifSelectedPickerString = [[CDataContainer Instance].stationNameArray objectAtIndex:row];beginSearchBar.text = [[CDataContainer Instance].stationNameArray objectAtIndex:row];}else if (stationType == EBeginStationType){ifSelectedPickerString = [beginFilteredListContent objectAtIndex:row];beginSearchBar.text = [beginFilteredListContent objectAtIndex:row];}else {ifSelectedPickerString = [[CDataContainer Instance].stationNameArray objectAtIndex:row];beginSearchBar.text = [[CDataContainer Instance].stationNameArray objectAtIndex:row];}}else if(component == kEndStationComponent){currentEndIndex = row;if ([endSearchBar.text isEqualToString:@""]){isSearchEndBegin = NO;ifSelectedPickEndString = [[CDataContainer Instance].stationNameArray objectAtIndex:row];endSearchBar.text = [[CDataContainer Instance].stationNameArray object AtIndex:row];}else if (stationType == EEndStationType){ifSelectedPickEndString = [endFilteredListContent objectAtIndex:row];endSearchBar.text = [endFilteredListContent objectAtIndex:row];}else{ifSelectedPickEndString = [[CDataContainer Instance].stationNameArray objectAtIndex:row];endSearchBar.text = [[CDataContainer Instance].stationNameArray object AtIndex:row];}}
}
#pragma mark -
#pragma mark SearchBarText delegate
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{NSLog(@"------searchBarTextDidBeginEditing---");stationPickView.hidden = NO;self.navigationItem.rightBarButtonItem = returnKeyBordBtn;currentSearchBar = searchBar;if (currentSearchBar == beginSearchBar){NSLog(@"---------Type------EBeginStationType");stationType = EBeginStationType;}else{NSLog(@"---------Type------EEndStationType");stationType = EEndStationType;}
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{NSLog(@"------searchBarTextDidEndEditing---");
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{NSLog(@"--------SearchBar_text Changed--------");if(searchBar == beginSearchBar){if ([ifSelectedPickerString isEqualToString:searchText]){return;}if (stationType == EBeginStationType){isSearchBegin = YES;[self filterContentForSearchText:searchText];[stationPickView reloadAllComponents];}}else if(searchBar == endSearchBar){if ([ifSelectedPickEndString isEqualToString:searchText]){return;}if (stationType == EEndStationType){isSearchEndBegin = YES;[self filterContentForSearchText:searchText];[stationPickView reloadAllComponents];}}
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{NSLog(@"------searchBarSearchButtonClicked---");  CBus_StationDetailViewController *detailViewController = [[CBus_StationDetail ViewController alloc] initWithNibName:@"CBus_StationDetailView" bundle:nil];if ((![beginSearchBar.text isEqualToString:@""])&&(![endSearchBar.text isEqual ToString:@""])){NSLog(@"------站站查询------");if (isSearchBegin){detailViewController.beginStationName = [beginFilteredListContent
objectAtIndex:currentBeginIndex];detailViewController.beginStationIndex = [[CDataContainer Instance]. stationNameArray indexOfObject:[beginFilteredListContent objectAtIndex:currentBeginIndex]]+1;}else {detailViewController.beginStationName = [[CDataContainer Instance].
stationNameArray objectAtIndex:currentBeginIndex];detailViewController.beginStationIndex = currentBeginIndex+1;}    if (isSearchEndBegin){detailViewController.endStationName = [endFilteredListContent object
AtIndex:currentEndIndex];detailViewController.endStationIndex = [[CDataContainer Instance].
stationNameArray indexOfObject:[endFilteredListContent objectAtIndex:currentEndIndex]]+1;}else {detailViewController.endStationName = [[CDataContainer Instance].
stationNameArray objectAtIndex:currentEndIndex];detailViewController.endStationIndex = currentEndIndex+1;}    detailViewController.isStatToStat = YES;}else if (stationType == EBeginStationType){NSLog(@"------始站查询------");if (isSearchBegin){detailViewController.currentStationName = [beginFilteredListContent objectAtIndex:currentBeginIndex];detailViewController.currentStationIndex = [[CDataContainer Instance].
stationNameArray indexOfObject:[beginFilteredListContent objectAtIndex:currentBeginIndex]]+1;}else {detailViewController.currentStationName = [[CDataContainer Instance].
stationNameArray objectAtIndex:currentBeginIndex];detailViewController.currentStationIndex = currentBeginIndex+1;}detailViewController.isStatToStat = NO;}else if(stationType == EEndStationType){NSLog(@"------尾站查询------");if (isSearchEndBegin){detailViewController.currentStationName = [endFilteredListContent
objectAtIndex:currentEndIndex];detailViewController.currentStationIndex = [[CDataContainer Instance].
stationNameArray indexOfObject:[endFilteredListContent objectAtIndex:currentEndIndex]]+1;}else{detailViewController.currentStationName = [[CDataContainer Instance]. stationNameArray objectAtIndex:currentEndIndex];detailViewController.currentStationIndex = currentEndIndex+1;}detailViewController.isStatToStat = NO;}  [currentSearchBar resignFirstResponder];stationPickView.hidden = YES;// 通过选定的对象到新视图控制器[self.navigationController pushViewController:detailViewController animated:YES];[detailViewController release];
}
#pragma mark -
#pragma mark Search Methods- (void)filterContentForSearchText:(NSString*)searchText;{//基于搜索文本和范围更新过滤阵列//首先清除过滤数组if (stationType == EBeginStationType){[self.beginFilteredListContent removeAllObjects]; for (int i = 0; i < [[CDataContainer Instance].stationNameArray count]; i++){NSString *searchNameInfo = [[CDataContainer Instance].stationNameArray objectAtIndex:i];NSString *searchPYInfo = [[CDataContainer Instance].stationPYArray objectAtIndex:i];NSComparisonResult result = [searchNameInfo compare:searchText options: (NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];NSComparisonResult resultPY = [searchPYInfo compare:searchText options: (NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];if (result == NSOrderedSame || resultPY == NSOrderedSame){[self.beginFilteredListContent addObject:searchNameInfo];}}}else if(stationType == EEndStationType){[self.endFilteredListContent removeAllObjects];for (int i = 0; i < [[CDataContainer Instance].stationNameArray count]; i++){NSString *searchNameInfo = [[CDataContainer Instance].stationNameArray objectAtIndex:i];NSString *searchPYInfo = [[CDataContainer Instance].stationPYArray objectAtIndex:i];NSComparisonResult result = [searchNameInfo compare:searchText options: (NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];NSComparisonResult resultPY = [searchPYInfo compare:searchText options: (NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];if (result == NSOrderedSame || resultPY == NSOrderedSame){[self.endFilteredListContent addObject:searchNameInfo];}}}
}
- (void)dealloc {[busStatToStatTableView release];[beginSearchBar release];[endSearchBar release];[currentSearchBar release];[stationPickView release];[beginFilteredListContent release];[endFilteredListContent release];[returnKeyBordBtn release];[super dealloc];
}
@end

执行效果如图6-7所示。


6.3.2 站站查询详情视图
站站查询详情视图CBus_StatDetailStatView.xib的UI界面如图6-8所示,在上方显示票价、始发站、终点站、首班车时间和末班车时间,在下方列表显示了30条线路。


其实本模块和上一节中的线路详情模块类似,实现文件CBus_StatDetailStatViewController.m的主要代码如下所示。

#import "CBus_StatDetailStatViewController.h"
#import "CBus_StationDetailViewController.h"
#import "CBus_LineDetailLineViewController.h"
#import "CDataContainer.h"
@implementation CBus_StatDetailStatViewController
@synthesize busLineDetailTableView,currentLineName;
@synthesize currentLineIndex;
@synthesize isStatToStat;
// 视图初始化
- (void)viewDidLoad{[super viewDidLoad];  self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBar ButtonSystemItem:UIBarButtonSystemItemAdd                        target:self        action:@selector(AddLineToFavorite)];[[CDataContainer Instance] GetLineStationFromTableSequence:currentLineIndex];
}
#pragma mark -
#pragma mark View lifecycle
- (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];[self.busLineDetailTableView reloadData];NSLog(@"-----Nav----%@",self.navigationController.viewControllers);NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];NSInteger styleNum = [userDefault integerForKey:@"styleType"];switch (styleNum) {case 0:{[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;self.navigationController.navigationBar.barStyle = UIBarStyleDefault;self.searchDisplayController.searchBar.barStyle = UIBarStyleDefault;break;}case 1:{[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyle BlackOpaque;self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;self.searchDisplayController.searchBar.barStyle = UIBarStyleBlackOpaque;break;}}
}
- (void)viewDidDisappear:(BOOL)animated {[super viewDidDisappear:animated];isStatToStat = NO;
}
-(void)AddLineToFavorite{NSLog(@"-------addLineToFavorite---------%@---%d",currentLineName,currentLineIndex);for(NSString *lineName in [CDataContainer Instance].favoriteLineNameArray){if ([lineName isEqualToString:currentLineName]) {UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"收藏"message:[NSString stringWithFormat:@"%@ 已收藏",currentLineName]delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil];[alert show];[alert release];return;}}[[CDataContainer Instance] InsertFavoriteInfoToDatabase:0 AddName:currentLine
Name AddIndex:currentLineIndex AddNameEnd:nil AddIndexEnd:0];UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"收藏"message:[NSString stringWithFormat:@"收藏 %@ 成功",currentLineName]delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil];[alert show];[alert release];
}
#pragma mark -
#pragma mark Table view data source
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{return currentLineName;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{return 30;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {// Return the number of sectionsreturn 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {// Return the number of rows in the sectionreturn [[CDataContainer Instance].sequenceNumArray count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];if (cell == nil){cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];}  cell.selectionStyle = UITableViewCellSelectionStyleGray;cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
// Configure the cellcell.textLabel.text = [[CDataContainer Instance].stationNameArray objectAtIndex: [[CDataContainer Instance] GetBusLineSequenceByIndex:indexPath.row]-1];cell.imageView.image = [UIImage imageNamed:@"bus_table_stat.png"];return cell;
}
#pragma mark -
#pragma mark Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{// Navigation logic may go here. Create and push another view controllerif (isStatToStat) {return;}  CBus_StationDetailViewController *statDetailViewController = [self.navigation
Controller.viewControllers objectAtIndex:1];statDetailViewController.currentStationName = [[CDataContainer Instance].station NameArray objectAtIndex:[[CDataContainer Instance] GetBusLineSequenceByIndex:indexPath.row]-1];statDetailViewController.currentStationIndex = [[CDataContainer Instance].station NameArray indexOfObject:statDetailViewController.currentStationName]+1;[self.navigationController popViewControllerAnimated:YES];
}

《iPad开发从入门到精通》——6.3节站站查询相关推荐

  1. 《iPad开发从入门到精通》——6.2节系统主界面

    本节书摘来自异步社区<iPad开发从入门到精通>一书中的第6章,第6.2节系统主界面,作者 杨春泽,更多章节内容可以访问云栖社区"异步社区"公众号查看 6.2 系统主界 ...

  2. 《iPad开发从入门到精通》——6.4节收藏历史

    本节书摘来自异步社区<iPad开发从入门到精通>一书中的第6章,第6.4节收藏历史,作者 杨春泽,更多章节内容可以访问云栖社区"异步社区"公众号查看 6.4 收藏历史 ...

  3. 《iPad开发从入门到精通》——6.5节地图信息

    本节书摘来自异步社区<iPad开发从入门到精通>一书中的第6章,第6.5节地图信息,作者 杨春泽,更多章节内容可以访问云栖社区"异步社区"公众号查看 6.5 地图信息 ...

  4. 《iPad开发从入门到精通》——6.6节系统设置

    本节书摘来自异步社区<iPad开发从入门到精通>一书中的第6章,第6.6节系统设置,作者 杨春泽,更多章节内容可以访问云栖社区"异步社区"公众号查看 6.6 系统设置 ...

  5. 《iOS移动开发从入门到精通》图书连载一:如果你也想开发一款自己的APP,可以看一下这篇文

    前言:互联网+时代给自己多一个选择的机会,尝试开发一款属于自己的APP,绝对是件激动人心的事情!<iOS移动开发从入门到精通>已经上市并和大家见面.从今天起,我会将把图书的部分内容以连载的 ...

  6. 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序

    本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...

  7. 《Visual C++ 开发从入门到精通》——2.7 变量

    本节书摘来自异步社区出版社<Visual C++ 开发从入门到精通>一书中的第2章,第2.7节,作者: 王东华 , 李樱,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  8. 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序

    本节书摘来自异步社区<ASP.NET 开发从入门到精通>一书中的第2章,第2.3节,著 张明星 ,责任编辑 张 涛, 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  9. 《51单片机应用开发从入门到精通》——2.2 跑马灯实例

    本节书摘来自异步社区<51单片机应用开发从入门到精通>一书中的第2章,第2.2节,作者 张华杰,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 跑马灯实例 ...

最新文章

  1. 30岁找不到工作很绝望_计算机为绝望的新编码员工作方式的快速指南
  2. pandas使用read_csv函数读取文件时指定数据列的数据类型、pandas使用read_csv函数读取文件时通过keep_default_na参数设置缺失值替换为空字符串
  3. Java 常用类库 之 Random 随机数类实例
  4. EhLib控件在windows 2003 中delphi 安装问题解决办法
  5. 家用光纤猫设备、光纤收发器和光电交换机介绍
  6. AI 人工智能学习经典书单
  7. Kubernetes学习笔记之Calico CNI Plugin源码解析(二)
  8. C# 启动停止SQLServer数据库服务器
  9. 虚拟IP技术 ip地址漂移技术
  10. oracle查询创建视图语句
  11. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.23
  12. html游戏导出存档,switch怎么导出存档-switch导出存档教程
  13. 数据结构之——拓补排序和并查集
  14. 江苏成人高考考前注意事项
  15. 业务数据分析最佳案例!旅游业数据分析!⛵
  16. 英文网页批量翻译导出本地教程
  17. 丁腈橡胶的广泛应用及其特点
  18. java毕业设计中国民航酒店分销系统Mybatis+系统+数据库+调试部署
  19. 手把手教你设置Typora的图床-gitee
  20. uniapp实现瀑布流懒加载实现和无限上拉加载更多

热门文章

  1. 如何系统的学习服务器相关知识?
  2. B/S与C/S模式比较
  3. Tensorflow中scope命名方法
  4. match、search、findall用法区别
  5. 【软考必读】软考高级证书对工作的6大帮助
  6. SQL——基础语句练习
  7. 2021年中国外汇交易情况分析:中国银行结汇金额为16.5万亿元,同比增长17%[图]
  8. php如何让图片铺满屏幕,如何解决js获取屏幕大小并且让图片自适应的方法
  9. WIN 10 初体验:期待越多失望越大
  10. 802.1X与portal的无线认证