iOS暑假第三周任务(学生管理系统)

学生管理系统

这次的任务是完成学生管理系统
功能需求也是非常简单,就是增删改查
首先还是要有登录界面,这里的完成和3gshare任务一样,都是协议传值和属性传值的应用,对数组中的数据进行判别。
在这里插入图片描述
这里的素材用了share任务的图标素材
登录注册的方法和share任务一样,这个参考share任务
没有什么需要多说的

主页面

这里面显示的是一个动态的cell
cell的数量会随着数组元素的数量发生改变,这也方便我们之后的增删改查排的功能的应用
在这里插入图片描述
在主界面的头文件中声明属性

@property (strong, nonatomic) NSMutableArray* nameArray;
@property (strong, nonatomic) NSMutableArray* classArray;
@property (strong, nonatomic) NSMutableArray* scoreArray;

这里一定要用关键字strong,这里如果不用strong的话,当你初始化数组数据后在进入这个函数里面你的数组并不会被识别

   -    (NSInteger) tableView:(UITableView *)tableView > numberOfRowsInSection:(NSInteger)section {   return _nameArray.count;}

这里是要注意的点
在推出各个功能页面的时候要将主页面的数据传入到功能页面中,然后在功能页面中用协议传值再传回来,在协议函数中重新加载tableview
用函数

  • [_studentTableView reloadData];
    
  • [self.view addSubview:_studentTableView];
    

增加数据

在这里插入图片描述
这里主要展示添加功能的代码,其他功能的代码类似增加功能,这个还是简单的
在增加数据功能的页面中添加3个输入框和两个按钮,这里就不展示了,主要是展示一下,按钮的事件函数

- (void) pressRight {
    int boo = 0;
    for (int i = 0; i < _arrayName.count; i++) {
        if ([_arrayName[i] isEqualToString:_nameTextField.text]) {
            boo = 1;
            break;
        }
    }
    if (boo == 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 {
        _arrayOfName = _nameTextField.text;
        _arrayOfClass = _classTextField.text;
        _arrayOfScore = _scoreTextField.text;
        [_delegate AddData:_arrayOfName :_arrayOfClass :_arrayOfScore];
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    _nameTextField.text = nil;
    _classTextField.text = nil;
    _scoreTextField.text = nil;
}
- (void) pressCancel {
    [self dismissViewControllerAnimated:YES completion:nil];
}

在添加按钮的事件中,当你增加完数据后,需要用该页面的代理去使用我们自定义的协议函数
在主页面推出添加页面的函数中一定要设置添加页面的代理,不然添加页面没法用代理去调用该协议函数,值也就传不过去
在代理下面的三行代码是属性传值需要的东西,将主页面的值传到其他页面
在这里插入图片描述
然后我们的协议函数也是要在主页面中实现的,去完成这个数组的添加功能,这里我的协议函数里的参数类型是NSString
在这里插入图片描述
如果你创建的参数类型是NSMutableArray的,那么可以用注释的方法去实现

删除

在这里插入图片描述
这里我设置的学生数据是不允许重名的(就这么点学生还重名emmmm)
如果需要不同班但同名的情况就多添加一个判别就行(额外再加一个输入框)如果添加的班级输入框的话,这里班级输入框里可以是空数据,班级数据只是作为一个辅助判别

- (void) pressRight {
    int boo = 0;
    int j = 0;
    for (int i = 0; i < _arrayOfName.count; i++) {
        if ([_arrayOfName[i] isEqualToString:_nameTextField.text]) {
            j = i;
            boo = 1;
        }
    }
    if (boo == 1) {
        [_arrayOfName removeObjectAtIndex:j];
        [_arrayOfClass removeObjectAtIndex:j];
        [_arrayOfScore removeObjectAtIndex:j];
    }
        [_delegate DeleteData:_arrayOfName :_arrayOfClass :_arrayOfScore];
        [self dismissViewControllerAnimated:YES completion:nil];
    _nameTextField.text = nil;
    _classTextField.text = nil;
    _scoreTextField.text = nil;
}

这里主要说一下,我们之前提到的strong关键字,这里声明的数组也还是必须要这个关键字的,如果不添加,那么转过来的值是无法在按钮事件函数中显示的,在便利数组查找对应的元素的时候,不要一找到,直接进行删除操作,这有可能会导致程序crash,这里的建议是先将要删除的下标存下来,便利完之后再执行删除操作。

更改

在这里插入图片描述

这个还是很简单的,也是便利数组就行,一样要注意的是,便利完之后再进行数据的修改,和其他和删除操作差不多

查询

在这里插入图片描述
这个应该是唯一一个不需要协议传值的一个页面吧,这里属性传值,传完之后直接用UILabel显示到屏幕上就行了,不需要太多的操作。

排序

在这里插入图片描述
这个就是属性传值传过来,然后点击排序按钮,实现按钮事件函数,进行一个简单的冒泡排序,再传回去就行了。

总结

这次的任务总的来说还是很简单的,就几个页面还有很多东西是可以通用的,不过出的一些关于属性关键字的bug让我认识到,我对于属性关键字的知识还是太薄弱了,再去学习一波属性关键字。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值