学生基本信息录入系统

一.搭建主界面

  • 在storyboard中搭建主界面
  • 给主界面添加导航栏控制器用来推送界面
  • 关联对象
  • 关联事件

二.封装关于文件的操作类(SqliteOperation)

  • 单例,管理当前这个类的一个对象 让这个对象一直存在
+ (SqliteOperation *)sharedOperaion;
static SqliteOperation *instance = nil;@implementation SqliteOperation+ (SqliteOperation *)sharedOperaion{static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{instance = [SqliteOperation new];});return instance;
}@end
  • 打开一个数据库,如果可以打开则创建表
- (BOOL)openSql;
- (BOOL)openSql{NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"stu.sql"];NSLog(@"%@",path);if (sqlite3_open([path UTF8String], &_sql) == SQLITE_OK) {NSLog(@"打开数据库成功");//创建表NSString *createTableSql = @"create table if not exists stu(id integer primary key autoincrement, name text, age text, icon blob)";return [self executeSql:createTableSql];}else{return NO;}
}//创建表的执行语句
- (BOOL)executeSql:(NSString *)sql{if(sqlite3_exec(_sql, sql.UTF8String, NULL, NULL, NULL) == SQLITE_OK){NSLog(@"执行语句成功:%@",sql);return YES;}else{NSLog(@"执行语句失败:%@",sql);return NO;}
}
  • 要把数据保存起来,先将学生的所有信息都封装成一个模型
@interface StudentModel : NSObject/** 图片 */
@property(nonatomic, strong) UIImage *icon;
/** 姓名 */
@property(nonatomic, strong) NSString *name;
/** 年龄 */
@property(nonatomic, assign) NSString *age;@end
  • 写一个函数用来保存学生model,将model中的信息存入数据库中
- (void)save:(StudentModel *)model{NSString *insertSql = @"insert into stu(name,age,icon) values(?,?,?)";sqlite3_stmt *stmt = NULL;if(sqlite3_prepare(_sql, insertSql.UTF8String, -1, &stmt, NULL) != SQLITE_OK){NSLog(@"预处理失败");return;}NSData *data = UIImagePNGRepresentation(model.icon);sqlite3_bind_text(stmt, 1, model.name.UTF8String, -1, NULL);sqlite3_bind_text(stmt, 2, model.age.UTF8String, -1, NULL);sqlite3_bind_blob(stmt, 3, data.bytes, (int)data.length, NULL);sqlite3_step(stmt);sqlite3_finalize(stmt);
}
  • 写一个加载函数用来读取数据库中的学生信息用来显示到cell上,这个函数返回一个模型数组
@property (nonatomic, strong) NSMutableArray *dataArray;
- (NSMutableArray *)dataArray{if (_dataArray == nil) {self.dataArray = [NSMutableArray array];}return _dataArray;
}
- (NSArray *)loadData{NSString *selectSql = [NSString stringWithFormat:@"select * from stu limit %ld,2", self.dataArray.count];sqlite3_stmt *stmt = NULL;if(sqlite3_prepare(_sql, selectSql.UTF8String, -1, &stmt, NULL) != SQLITE_OK){return nil;}//id name age iconwhile (sqlite3_step(stmt) == SQLITE_ROW) {StudentModel *model = [StudentModel new];model.name = [NSString stringWithCString:(const char *)sqlite3_column_text(stmt, 1) encoding:NSUTF8StringEncoding];model.age = [NSString stringWithCString:(const char *)sqlite3_column_text(stmt, 2) encoding:NSUTF8StringEncoding];NSData *imageData = [NSData dataWithBytes:sqlite3_column_blob(stmt, 3) length:sqlite3_column_bytes(stmt, 3)];model.icon = [UIImage imageWithData:imageData];[self.dataArray addObject:model];}return self.dataArray;
}

三.信息展示类和cell的自定义

1.ViewController类中

  • 设置信息输入框的提示文字
_nameTextField.placeholder = @"Name";
_ageTextFeild.placeholder = @"Age";
  • 点击+按钮完成从系统中读取一张照片的功能
  • 服从UIImagePickerController的代理
@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
  • 实现两个代理方法
  • 点击submit按钮,将数据封装成模型再将模型数据保存到数据库
  • 点击show按钮,进入展示界面,展示数据库中的学生信息

2.ShowViewController类(继承于UIViewController)

  • 定义一个tableview属性变量
@property(nonatomic, strong) UITableView *tableView;

  • 服从代理协议
@interface ShowViewController ()<UITableViewDataSource,UITableViewDelegate>
  • 用一个数据接收从数据库中读取的模型数据
@property(nonatomic, strong) NSArray *dataArray;
  • 下拉刷新,从数据库读取模型数据
  • 实现代理方法

3.自定义cell,ShowTableViewCell类(继承于UITableViewCell)

  • xib自定义如下
  • 关联类
  • 设置cellID
  • 关联对象
  • .h文件中添加一个成员属性变量model
  • 设置model的值

数据库篇——学生基本信息录入系统相关推荐

  1. 利用C语言结构体实现学生成绩录入系统

    利用C语言结构体实现学生成绩录入系统 ##功能介绍 密码功能嵌入于主函数中,初始密码为:123456(可根据需要修改) 输入1可以调用add函数对学生的基本信息以及成绩进行输入 输入2则调用print ...

  2. java录入学生信息_java实现学生成绩录入系统

    本文为大家分享了java实现学生成绩录入系统,供大家参考,具体内容如下 1.学生类,包括学生的姓名和各科成绩 public class Score { public String name; publ ...

  3. 学生信息录入系统java代码

    学生信息录入系统可以实现学生本身账号密码登陆,然后录入自己关键信息(其中,带*的为必填)最后 会在电脑f盘生成一个自己信息录入完成的文件,并且可以提交信息,进而将文件中的信息展示出来.我觉得这部分的难 ...

  4. 8-1 学生基本信息录入界面 (100 分)

    8-1 学生基本信息录入界面 (100 分) 设计实现一个学生信息录入界面,包括:学号.姓名.出生日期.性别.专业班级.个人信息说明. 提供两个按钮:确定.取消,点击确定后弹出新的窗口,显示学生录入的 ...

  5. eclipse和数据库实现学生成绩查询系统web界面

    学生成绩查询系统(eclipse+SQLserver+tomact) 开发环境 系统实现 总结+参考 开发环境 比较懒. 如果要做这种类似的系统大概都知道这些软件吧.所以这个部分比较粗糙 Java环境 ...

  6. android实现学生信息录入系统

    /* 设计如下四个界面,界面分别为"开始界面"(MainActivity)."基本信息界面"(BasicInfoActivity)."院系专业界面&q ...

  7. jQuery实现一个学生成绩单录入系统

    使用jQuery实现了数据的增删改查 <!DOCTYPE html> <html><head><title>学生成绩表成绩录入查询系统</titl ...

  8. 基于JavaEE的学生信息录入系统的设计与实现

    该项目采用JavaWeb进行开发,在功能上实现了管理员的登录,在系统界面中 系统管理员可以对学生信息进行录入,对学生信息进行查询,并能够对学生的信息 进行修改和删除等.下载地址:http://www. ...

  9. 学生成绩录入系统与查询

    package zhang; import java.math.BigDecimal; import java.util.Scanner; public class str { public stat ...

  10. 简单的学生成绩录入查询系统

    import java.util.Scanner; public class Main {public static void avgst(double ui[],String st) {//函数av ...

最新文章

  1. 将BST转换为有序的双向链表!
  2. 5.matlab 中的sort
  3. 怎么样修改PuTTY的默认字体和字符集
  4. Leetcode-Maximum Subarray
  5. AtCoder Beginner Contest 137 解题报告(A ~ E)
  6. 难以置信:遇到一位 a=0 也不会写的程序员
  7. 8uftp连接服务器设置
  8. 通过VNC远程连接ubuntu桌面(多种客户端连接方式)
  9. 世界上最会“算计”的公司争相布局区块链,普华永道等四大会计师事务所的变革之路...
  10. Vue路由对象属性 .meta $route.matched
  11. 将计算机设置成交换机主机名,分享:如何配置学校机房项目交换机?
  12. 使用Google Analytics(分析)进行用户体验研究的5种方法
  13. [法国][无法触碰/触不可及][BD-RMVB.720p.中字][2011最新/法国票房冠军]
  14. 强化学习与Deep Q-Network(DQN)
  15. Linux防火墙firewall只允许特定IP访问
  16. 【历史上的今天】7 月 8 日:PostgreSQL 发布;SUSE 收购 K8s 最大服务商;动视暴雪合并
  17. 数学分析里面的蕴含(⇒)到底是什么意思
  18. 上海羽毛球场预定app_羽毛球预约管家
  19. MATLAB绘制平面填充图入门详解
  20. python基于PHP+MySQL的连锁商店仓库管理系统

热门文章

  1. Node.js详细安装教程
  2. flash 反编译资料
  3. 单片机C语言程序设计实训100例:基于AVR+proteus仿真pdf
  4. 计算机网络 Kurose 第二章 应用层 2.5 P2P文件分发 2.6 视频流和内容分发网
  5. pmp学习资料下载-pmp备考
  6. .mmap文件用什么软件可以打开?
  7. Java使用POI导出Excel文件
  8. java 表头固定_固定表头在快逸报表中的设定
  9. 新软件--AutoReply(自动回复),还能自动接听,做答录机
  10. 基于热传递方程和目标规划的高温服装设计