【iOS】APP仿写——学生管理系统

news2024/12/28 5:11:43

前言

学生管理系统和C语言学生管理系统要求相似,需要实现增删改查排序功能,这个仿写比较简单,但通过这个仿写中的限制输入的要求,初步了解了正则表达式。

注册、登陆界面

这个界面和3G share相同,这里就不多做解释了。链接:【iOS】 3G shaere

首页

这个界面中,由一个UITableView和按钮组成,最上方的标题是三个UILabel。整体来说比较简单,这里就不多做解释了。
效果图
在这里插入图片描述

增加

这里先遍历数组,寻找学生是否已经存在,我这里允许异班同名,所以需要对班级也进行判断。

-(void) presstui
{
    BOOL N = NO;
    BOOL C = NO;
    BOOL G = NO;
    
    NSString* s1 = self.text1.text;
    NSString* s2 = self.text2.text;
    NSString* s3 = self.text3.text;
    
    for(int i = 0; i < self.arrName.count; i++) {
        if([s1 isEqual:self.arrName[i]] && [s2 isEqual:self.arrClass[i]]) {
            N = YES;
            C = YES;
            break;
        }
        if(s3.integerValue < 0 || s3.integerValue > 150) {
            G = YES;
            break;
        }
    }
    if(s1.length > 0 && s2.length > 0 && s3.length > 0) {
        self.text1.text = nil;
        self.text2.text = nil;
        self.text3.text = nil;
        if(N && C) {
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告" message:@"该名学生已经存在,请勿重复注册" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){}];
            [alert addAction:cofirm];
            [self presentViewController:alert animated:YES completion:nil];
        } else if (G) {
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告" message:@"请输入正确的成绩" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){}];
            [alert addAction:cofirm];
            [self presentViewController:alert animated:YES completion:nil];
        } else {
            [self.arrName addObject:s1];
            [self.arrClass addObject:s2];
            [self.arrGrade addObject:s3];
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"该名学生已成功添加" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){
                [self.delegate AddStudentName:self.arrName andClass:self.arrClass andGrade:self.arrGrade];
                [self dismissViewControllerAnimated:YES completion:nil];
            }];
            [alert addAction:cofirm];
            [self presentViewController:alert animated:YES completion:nil];
        }
    } else {
        self.text1.text = nil;
        self.text2.text = nil;
        self.text3.text = nil;
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"内容不能为0" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){}];
        [alert addAction:cofirm];
        [self presentViewController:alert animated:YES completion:nil];
    }
}

效果图
在这里插入图片描述

删除

删除也是先遍历数组找到这名学生,在将他从数组中移除,要同时移除成绩和班级,否则会导致信息错行,而后协议传值传会给首页即可。

BOOL N = NO;
    BOOL C = NO;
    
    NSString* s1 = self.text1.text;
    NSString* s2 = self.text2.text;
    
    int index = 0;
    
    for(int i = 0; i < self.arrName.count; i++) {
        if([s1 isEqual:self.arrName[i]] && [s2 isEqual:self.arrClass[i]]) {
            N = YES;
            C = YES;
            index = i;
            break;
        }
    }
    if(s1.length>0&& s2.length>0) {
        if(N && C) {
            [self.arrName removeObjectAtIndex:index];
            [self.arrClass removeObjectAtIndex:index];
            [self.arrGrade removeObjectAtIndex:index];
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"该名学生已成功删除" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){
                [self.delegate shanStudentName:self.arrName andClass:self.arrClass andGrade:self.arrGrade];
                [self dismissViewControllerAnimated:YES completion:nil];
            }];
            [alert addAction:cofirm];
            [self presentViewController:alert animated:YES completion:nil];
        } else {
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告" message:@"未查询到该名学生信息" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){
                self.text1.text = @"";
                self.text2.text = @"";
                //[self.tableview removeFromSuperview];
            }];
            [alert addAction:cofirm];
            [self presentViewController:alert animated:YES completion:nil];
        }
    } else {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告" message:@"你没有输入全部信息,无法查询" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){
            self.text1.text = @"";
            self.text2.text = @"";
            //[self.tableview removeFromSuperview];
        }];
        [alert addAction:cofirm];
        [self presentViewController:alert animated:YES completion:nil];
    }

效果图
在这里插入图片描述

查询

查询的逻辑是根据输入的名字遍历整个数组,将查找出来的放进一个新的数组,最后交给tableView让他显示出来。

-(void) presstui
{
    BOOL N = NO;
    
    self.arrName1 = [NSMutableArray array];
    self.arrClass2 = [NSMutableArray array];
    self.arrGrade3 = [NSMutableArray array];
    
    NSString* s1 = self.text1.text;
    
    int index = 0;
    
    for(int i = 0; i < self.arrName.count; i++) {
        if([s1 isEqual:self.arrName[i]]) {
            N = YES;
            index = i;
            [self.arrName1 addObject:self.arrName[i]];
            [self.arrClass2 addObject:self.arrClass[i]];
            [self.arrGrade3 addObject:self.arrGrade[i]];
            //break;
        }
    }
    if(s1.length==0)
    {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"你没有输入信息,请别玩" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){}];
        [alert addAction:cofirm];
        [self presentViewController:alert animated:YES completion:nil];
    }
    if(N) {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"已经查询到该名学生" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){
            //[self.delegate shanddStudentName:self.arrName andClass:self.arrClass andGrade:self.arrGrade];
            [self UseTableView];
        }];
        [alert addAction:cofirm];
        [self presentViewController:alert animated:YES completion:nil];
    } else {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"该名学生不存在" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){
            self.tableview.hidden = YES;
            self.text1.text = @"";
        }];
        [alert addAction:cofirm];
        [self presentViewController:alert animated:YES completion:nil];
    }
}

-(void) UseTableView
{
    self.tableview = [[UITableView alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 300) style:UITableViewStylePlain ];
    self.tableview.delegate = self;
    self.tableview.dataSource = self;
    self.tableview.hidden = NO;
    [self.view addSubview:self.tableview];
    [self.tableview registerClass:[Cellshitu class] forCellReuseIdentifier:@"cellshitu"];
}

在这里插入图片描述

更改学生信息

更改学生信息的逻辑是先找到这名学生,所以需要班级和姓名都确定,而后更改班级和成绩,但是这名学生的更改后班级必须要进行查重,不然在这里会出现同名同班的情况。

-(void)presstui
{
    NSString* s1 = self.text1.text;
    NSString* s2 = self.text2.text;
    NSString* s3 = self.text3.text;
    NSString* s4 = self.text4.text;
    
    BOOL N = NO;
    BOOL C = NO;
    int index = 0;
    for(int i = 0; i < self.arrName.count; i++) {
        if([s1 isEqual:self.arrName[i]] && [s2 isEqual:self.arrClass[i]]) {
            N = YES;
            C = YES;
            index = i;
            break;
        }
    }
    for(int i = 0; i < self.arrName.count; i++) {
        if([s1 isEqual:self.arrName[i]] && [s3 isEqual:self.arrClass[i]]) {
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告" message:@"这个班级已经存在这个学生" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){
                return;
            }];
            [alert addAction:cofirm];
            [self presentViewController:alert animated:YES completion:nil];
        }
    }
    if(s1.length > 0 && s2.length > 0 && s3.length > 0 && s4.length > 0) {
        self.text1.text = nil;
        self.text2.text = nil;
        self.text3.text = nil;
        self.text4.text = nil;
        if(s4.integerValue < 0 || s4.integerValue > 150) {
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告" message:@"请输入正确的成绩" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){}];
            [alert addAction:cofirm];
            [self presentViewController:alert animated:YES completion:nil];
        }
        if(N && C) {
            [self.arrClass replaceObjectAtIndex:index withObject:s3];
            [self.arrGrade replaceObjectAtIndex:index withObject:s4];
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"添加成功" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){
                [self.delegate GaiStudentName:self.arrName andClass:self.arrClass andGrade:self.arrGrade];
                [self dismissViewControllerAnimated:YES completion:nil];
            }];
            [alert addAction:cofirm];
            [self presentViewController:alert animated:YES completion:nil];
        }  else {
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"未找到该名学生" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){}];
            [alert addAction:cofirm];
            [self presentViewController:alert animated:YES completion:nil];
        }
    } else
    {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"请输入全部内容" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *cofirm = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){
            self.text1.text = nil;
            self.text2.text = nil;
            self.text3.text = nil;
            self.text4.text = nil;
        }];
        [alert addAction:cofirm];
        [self presentViewController:alert animated:YES completion:nil];
    }
}

在这里插入图片描述

排序

这里排序我使用的是C语言中的冒泡排序,较为简单,不多做解释。

for(int i = 0; i < self.arrName.count; i++) {
        for(int j = 0; j < self.arrName.count - i - 1; j++) {
            if([self.arrGrade[j] intValue] > [self.arrGrade[j + 1] intValue]) {
                NSString* tmp1 = @"";
                NSString* tmp2 = @"";
                NSString* tmp3 = @"";
                
                tmp1 = [NSString stringWithFormat:@"%@", self.arrName[j]];
                tmp2 = [NSString stringWithFormat:@"%@", self.arrClass[j]];
                tmp3 = [NSString stringWithFormat:@"%@", self.arrGrade[j]];
                
                self.arrName[j] = [NSString stringWithFormat:@"%@", self.arrName[j+1]];
                self.arrClass[j] = [NSString stringWithFormat:@"%@", self.arrClass[j+1]];
                self.arrGrade[j] = [NSString stringWithFormat:@"%@", self.arrGrade[j+1]];
                
                self.arrName[j+1] = [NSString stringWithFormat:@"%@", tmp1];
                self.arrClass[j+1] = [NSString stringWithFormat:@"%@", tmp2];
                self.arrGrade[j+1] = [NSString stringWithFormat:@"%@", tmp3];
            }
        }
    }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1969707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第309题买卖股票的最佳时机含冷冻期

题目&#xff1a; 题解&#xff1a; int maxProfit(int* prices, int pricesSize) {if (pricesSize 0) {return 0;}int f0 -prices[0];int f1 0;int f2 0;for (int i 1; i < pricesSize; i) {int newf0 fmax(f0, f2 - prices[i]);int newf1 f0 prices[i];int newf2…

芋道源码yudao-cloud 二开笔记(Feign服务调用,如何定义一个 API 接口)

在yudao-cloud如何定义一个Api接口&#xff0c;提供给另一个服务去调用&#xff1f;下面是 yudao-module-syetem系统服务 调用 yudao-module-infra文件服务的示例&#xff1a; 首先需要在服务提供者yudao-module-infra定义好对应的api&#xff0c; 第1步&#xff1a; cn.iocod…

c++中的Stack与Queue

目录 一queue与stack&#xff1a; 1.queue介绍&#xff1a; 2.queue模拟实现&#xff1a; 3stack介绍&#xff1a; 4stack模拟实现&#xff1a; 二priority_queue&#xff08;优先队列&#xff09;&#xff1a; 1介绍&#xff1a; 2仿函数&#xff1a; 3模拟实现&#…

学懂C语言(三十三):C语言 递归详解

目录 一、C语言递归 1、语法格式 2、流程图 示例1&#xff1a;数的阶乘 示例2&#xff1a;斐波那契数列 二、递归的基本要素 三、递归的工作原理 四、递归的优势与劣势 五、递归的应用示例 六、递归与非递归&#xff08;迭代&#xff09;的比较 一、C语言递归 递归指…

Navicat 在整个数据库中查找字符

Navicat 在整个数据库中查找字符 1.首先打开Navicat,连接目标数据库。2.选择工具选项卡&#xff0c;选择在数据库或模式中查找。3.查找前填入关键字信息&#xff0c;点击查找4.双击查找到数据&#xff0c;进行查看 说明&#xff1a;当我们知道数据库有数据的关键字&#xff0c;…

只有经历了无数超预期的BUG才知道Hutool有多香

目录 Hutool资源 为什么要Hutool Hutool核心模块 代码精进之道 如何更上一层楼 Htool官网是这样介绍自己的&#xff1a; Hutool是一个小而全的Java工具类库&#xff0c;通过静态方法封装&#xff0c;降低相关API的学习成本&#xff0c;提高工作效率&#xff0c;使Java拥有…

反序列化靶机serial

1.创建虚拟机 2.渗透测试过程 探测主机存活&#xff08;目标主机IP地址&#xff09; 使用nmap探测主机存活或者使用Kali里的netdicover进行探测 -PS/-PA/-PU/-PY:这些参数即可以探测主机存活&#xff0c;也可以同时进行端口扫描。&#xff08;例如&#xff1a;-PS&#xff0…

(~_~)

一、用不同url头利用python访问一个网站&#xff0c;并把返回的东西保存为 requests库 主要用于http发送请求和处理响应 1.发送get和post请求 requests.get(目标网址) requests.post(url,data) post于get不同的是get一般用来请求获取数据&#xff0c;而post相当于带着数…

WEB前端14-Element UI(学生查询表案例/模糊查询/分页查询)

Vue2-Element UI 1.可重用组件的开发 可重用组件 我们一般将可重复使用的组件放在components目录之下&#xff0c;以便父组件的灵活调用 <!--可重用组件一般与css密切相关&#xff0c;使用可重用组件的目的是&#xff0c;将相似的组件放在一起&#xff0c;方便使用-->…

SYD88xx代码复位不成功和解决办法

原来的复位代码如下: void ota_manage(void){#ifdef _OTA_if(ota_state){switch(ota_state){case 1 : #if defined(_DEBUG_) || defined(_SYD_RTT_DEBUG_)dbg_printf("start FwErase\r\n");#endifCmdFwErase();#if defined(_DEBUG_) || defined(_SYD_RTT_DEBUG_)db…

计算机毕业设计选题推荐-社区停车信息管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Linux 内核块设备

磁盘&#xff08;disk&#xff09;是指利用磁记录技术存储数据的存储器。 磁盘是计算机主要的存储介质&#xff0c;可以存储大量的二进制数据&#xff0c;并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘&#xff08;Floppy Disk&#xff0c;简称软盘&#xff09;…

能交易场外个股期权标的有哪些?

目前国内的期权市场能交易场外个股期权标的有除去ST类股票外&#xff0c;一般包括沪深3000多只个股以及股票指数&#xff0c;在交易日内且个股开盘的情况下可以报价购买。不过&#xff0c;由于场外个股期权是非标准化合约&#xff0c;具体的可交易股票名单可能会根据需求有所不…

请转告HPC计算AI计算单位,选对存储事半功倍

U.2 NVMe全闪混合统一存储GS 5000U是Infortrend产品中一款高性能机型。得益于搭载强劲的第五代IntelXeon处理器&#xff0c;以及支持PCIe 5.0、NVMe-oF、100GbE等多种特点&#xff0c;GS 5000U单台块级性能可达50 GB/s的读、20 GB/s的写&#xff0c;以及1300K的IOPS&#xff1b…

数据透视表(四)

文章目录 可视化数据条与切片器串联所有的数据透视表插入数据透视图创建组合图数据的结构化展示如何设置标签 可视化数据条与切片器 插入切片器-在切片器中点击不同的筛选项让透视表与之联动 如果某一栏没有数据显示&#xff0c;点击透视表切片器工具下选项中的切片器设置&…

Java家政自营单商户系统小程序源码

​&#x1f3e0;家政新风尚&#xff1a;揭秘自营单商户系统的魅力与便捷&#xff01; &#x1f3e1;开篇&#xff1a;家政服务的新篇章 在快节奏的现代生活中&#xff0c;家政服务成为了许多家庭的必需品。而“家政自营单商户系统”的兴起&#xff0c;更是为这个行业带来了前…

C ——— 指针笔试题(最终篇)

指针加减整数和解引用的笔试题 boss题&#xff1a; char* c[] { "ENTER","NEW","POINT","FIRST" }; char** cp[] { c 3,c 2,c 1,c }; char*** cpp cp;printf("%s\n", **cpp); printf("%s\n", *-- * cpp …

Vue项目如何打包失败(图解)

目录 案例分析 打包失败 package.json 修正文件 打包测试 打包成功 案例分析 打包失败 package.json {"name": "diaryui","version": "0.0.0","private": true,"type": "module","scripts&…

树组件 el-tree 数据回显

树组件 el-tree 数据回显 树型结构的数据回显问题&#xff1a; 这里我只放了核心代码&#xff0c;主要是如何获取选中的树节点的id集合和如何根据树节点的id集合回显数据 大家根据需要自行更改&#xff01; <el-tree ref"authorityRef" node-key"id" …

springboot“智慧识堂”微信小程序-计算机毕业设计源码26647

摘 要 基于微信的“智慧识堂”是利用微信中的小程序功能来实现&#xff0c;自2011年微信诞生以来&#xff0c;微信的使用越来越普遍&#xff0c;尤其最近几年微信旗下的微信小程序因其不占内存&#xff0c;用完即走的特点吸引越来越多用户&#xff0c;使用微信小程序设计的系统…