前言
- 本周内容比较简单,这个学生信息管理系统的话还是倾向于协议传值的应用,在之后也学习了BLock传值,通知传值。KVO传值等iOS基础
学生管理系统
- 要求不多 仅仅是姓名班级和成绩,我准备了3个数组来存储这些内容
关于登陆
- 参考了3Gshare的登陆界面,更换了背景图3G share-登陆
主界面
add Message -添加
- 对于添加信息,首先要注意的是重名不重班级的判断方法,如果2个人重名但是不重班级需要加以判断来正确添加
- 思路:设定Bool值 先找对应的名字,一旦找到判别班级是否重复,重复则弹出已存在该学生
-
- 相关判断代码
- (void)pressAdd {
int bool1 = 0;
int bool2 = 1;
NSString* name = _nameText.text;
NSString* class = _classText.text;
NSString* mark = _markText.text;
int x = [mark intValue];
if ([name isEqualToString:@""] || [class isEqualToString:@""] || [mark isEqualToString:@""] || x > 150 || x < 0) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"警告" message:@"输入错误!" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *sure = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:sure];
[self presentViewController:alertController animated:YES completion:nil];
_nameText.text = nil;
_classText.text = nil;
_markText.text = nil;
bool2 = 0;
}
for (int i = 0; i < _array1.count; i ++) {
if ([class isEqualToString: _array2[i]]) {
if ([name isEqualToString:_array1[i]]) {
bool1 = 1;
break;
}
}
}
if (bool1 == 1) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"警告" message:@"该班级已存在该学生" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *sure = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:sure];
[self presentViewController:alertController animated:YES completion:nil];
} else if (bool2 == 1 && bool1 == 0){
[_array1 addObject:name];
[_array2 addObject:class];
[_array3 addObject:mark];
[_delegate addMessage:_array1 :_array2 :_array3];
[self dismissViewControllerAnimated:YES completion:nil];
// [self.navigationController popViewControllerAnimated:YES];
// FristViewController* v1 = [[FristViewController alloc] init];
// [self. navigationController pushViewController:v1 animated:YES];
}
_nameText.text = nil;
_classText.text = nil;
_markText.text = nil;
}
find Message 查询
- 主要在于存在重名的人如何查询,我的思路是把重名的人的索引存到一个数组,然后在大数组里进行读取索引打印赋值给label
- 相关代码
- (void)pressFind {
int bool1 = 0;
NSString* name = _nameText.text;
// NSString* class = _classText.text;
if ([name isEqualToString:@""]) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"警告" message:@"输入不能为空!" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *sure = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:sure];
[self presentViewController:alertController animated:YES completion:nil];
}
int i;
_array = [[NSMutableArray alloc] init];
for (i = 0; i < _array1.count; i ++) {
// if ([class isEqualToString: _array2[i]]) {
if ([name isEqualToString:_array1[i]]) {
bool1 = 1;
// break;
NSString* str = [NSString stringWithFormat:@"%d", i];
[_array addObject:str];
}
// }
}
NSLog(@"count %ld", _array.count);
if (bool1 == 1) {
for (int j = 1; j < _array.count + 1; j ++) {
int intStr = [_array[j - 1] intValue];
UILabel* nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 70 * j, 100, 40)];
nameLabel.text = _array1[intStr];
nameLabel.textColor = [UIColor whiteColor];
nameLabel.font = [UIFont systemFontOfSize:21];
[self.view addSubview:nameLabel];
UILabel* classLabel = [[UILabel alloc] initWithFrame:CGRectMake(150, 70 * j, 100, 40)];
classLabel.text = _array2[intStr];
classLabel.textColor = [UIColor whiteColor];
classLabel.font = [UIFont systemFontOfSize:21];
[self.view addSubview:classLabel];
UILabel* markLabel = [[UILabel alloc] initWithFrame:CGRectMake(240, 70 * j, 100, 40)];
markLabel.text = _array3[intStr];
markLabel.textColor = [UIColor whiteColor];
markLabel.font = [UIFont systemFontOfSize:21];
[self.view addSubview:markLabel];
」
_nameText.text = nil;
_classText.text = nil;
} else {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"警告" message:@"查询驳回,检查输入是否有误" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *sure = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];
[alertControl}er addAction:sure];
[self presentViewController:alertController animated:YES completion:nil];
}
}
change Message-修改
- 修改得先找到该学生,之后再进行修改,修改的思路是修改班级和成绩,即用OC数组改变某一元素的函数即可
- 相关代码
- (void)pressChange {
int bool1 = 0;
NSString* name = _nameText.text;
if ([name isEqualToString:@""]) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"警告" message:@"输入不能为空!" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *sure = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:sure];
[self presentViewController:alertController animated:YES completion:nil];
}
int i;
for (i = 0; i < _array1.count; i ++) {
if ([name isEqualToString: _array1[i]]) {
if ([name isEqualToString:_array1[i]]) {
bool1 = 1;
break;
}
}
}
Sort- 排序
-
这里的思路比较简单,刚开始我一直在纠结OC自带的排序那种才能用,后来其实借鉴了C语言学生管理系统的思路,直接冒泡排序,然后三个数组的索引是一样的,都一交换即可完成排序
-
相关代码较简单不与展示
总结在最后的
- 学会了协议传值