学生管理系统
学生管理系统中主要是用的是也是协议传值,在这之后也学习了通知传值,以及属性传值。
登陆注册
登录注册部分与3G share的登录注册部分被有太大的区别,主要是用的也是协议传值。
主界面
主界面包括:初始的学生数据信息,还有一些功能按钮。
添加按钮
添加界面要的判断是否会出现重复的学生。
并且判断班级和成绩的输入是否正确,如果不正确要给出提示,并且可以出现同名不同班的学生。
添加学生的方法如下:
- (void)addNode {
if (self.textField0.text.length == 0 || self.textField1.text.length == 0 || self.textField2.text.length == 0) {
[self unBlank];
} else {
if ([self.textField2.text intValue] < 0 || [self.textField2.text intValue] > 100) {
UIAlertController* alertView = [UIAlertController alertControllerWithTitle: nil
message:@"成绩错误"
preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController: alertView animated:YES
completion:nil];
[self performSelector: @selector(dismiss:) withObject: alertView afterDelay: 1.5];
return;
}
if ([self.textField1.text isEqualToString:@"a班"] || [self.textField1.text isEqualToString:@"b班"] || [self.textField1.text isEqualToString:@"c班"] || [self.textField1.text isEqualToString:@"d班"]) {
NSString* str = [NSString stringWithFormat: @"%@%@", self.textField0.text, self.textField1.text];
if ([self.dictionary objectForKey: str] != nil) {
UIAlertController* alertView = [UIAlertController alertControllerWithTitle: nil
message:@"信息重复"
preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController: alertView animated:YES
completion:nil];
// [self performSelector: @selector(dismiss:) withObject: alertView afterDelay: 1.5];
} else {
Student* student = [[Student alloc] init];
student.clas = self.textField1.text;
student.nums = self.textField2.text;
student.name = self.textField0.text;
[self.dictionary setObject: student forKey: str];
UIAlertController* alertView = [UIAlertController alertControllerWithTitle: nil
message:@"添加成功"
preferredStyle:UIAlertControllerStyleAlert];
[self.tableView reloadData];
[self presentViewController: alertView animated:YES
completion:nil];
[self performSelector: @selector(dismiss:) withObject: alertView afterDelay: 1.5];
}
} else {
UIAlertController* alertView = [UIAlertController alertControllerWithTitle: nil
message:@"班级错误"
preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController: alertView animated:YES
completion:nil];
[self performSelector: @selector(dismiss:) withObject: alertView afterDelay: 1.5];
return;
}
}
// self.textField0.text = nil;
// self.textField1.text = nil;
// self.textField2.text = nil;
}
搜索按钮
因为存在同名不同班的同学所以通过学生的姓名以及学生的班级两个限制条件进行搜索。
已可以通过只搜索学生的姓名,把那些同名的学生都找出来。
如果没有存储该学生就会提示你查无此人。
搜索代码如下:
- (void)searchNode {
if (self.textField0.text.length == 0 || self.textField1.text.length == 0) {
[self unBlank];
} else {
NSString* str = [NSString stringWithFormat: @"%@%@", self.textField0.text, self.textField1.text];
if ([self.dictionary objectForKey: str] == nil) {
UIAlertController* alertView = [UIAlertController alertControllerWithTitle: nil
message:@"查无此人"
preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController: alertView animated:YES
completion:nil];
[self performSelector: @selector(dismiss:) withObject: alertView afterDelay: 1.5];
} else {
Student* student = [self.dictionary objectForKey: str];
if (self.textField2.text.length != 0 && ![student.nums isEqualToString: self.textField2.text]) {
UIAlertController* alertView = [UIAlertController alertControllerWithTitle: nil
message:@"查无此人"
preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController: alertView animated:YES
completion:nil];
[self performSelector: @selector(dismiss:) withObject: alertView afterDelay: 1.5];
} else {
NSString* ans = [NSString stringWithFormat: @"姓名:%@\n班级:%@\n成绩:%@", str, student.clas, student.nums];
UIAlertController* alertView = [UIAlertController alertControllerWithTitle: nil
message: ans
preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController: alertView animated:YES
completion:nil];
[self performSelector: @selector(dismiss:) withObject: alertView afterDelay: 3];
}
student.nums = self.textField2.text;
[self.dictionary setObject: student forKey: str];
}
}
// self.textField0.text = nil;
// self.textField1.text = nil;
//self.textField2.text = nil;
}
修改按钮
修改的实现首先的找到目标学生,对于目标学生,则需要先通过搜索来找到对应的学生,然后选择改变该学生的信息。
修改代码如下:
- (void)revisedNode {
NSString* str = [NSString stringWithFormat: @"%@%@", self.textField0.text, self.textField1.text];
if (![tmp isEqualToString: str] && [self.dictionary objectForKey: str] != nil) {
UIAlertController* alertView = [UIAlertController alertControllerWithTitle: nil
message:@"信息重复" preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController: alertView animated:YES
completion:nil];
[self performSelector: @selector(dismiss:) withObject: alertView afterDelay: 1.5];
return;
}
if ([self.textField2.text intValue] < 0 || [self.textField2.text intValue] > 100) {
UIAlertController* alertView = [UIAlertController alertControllerWithTitle: nil
message:@"成绩错误" preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController: alertView animated:YES
completion:nil];
[self performSelector: @selector(dismiss:) withObject: alertView afterDelay: 1.5];
return;
}
[self.dictionary removeObjectForKey: tmp];
Student* student = [[Student alloc] init];
student.clas = self.textField1.text;
student.nums = self.textField2.text;
student.name = self.textField0.text;
[self.dictionary setObject: student forKey: str];
UIAlertController* alertView = [UIAlertController alertControllerWithTitle: nil
message:@"修改成功" preferredStyle:UIAlertControllerStyleAlert];
[self.tableView reloadData];
[self presentViewController: alertView animated:YES
completion:nil];
// [self performSelector: @selector(dismiss:) withObject: alertView afterDelay: 1.5];
}
排序按钮
主体思想是把数据全都存到字典中,然后使用c语言的冒泡排序进行排序。
上图就是排序完成后的数据。