美文网首页
FMDB本地数据库操作实战—学生信息管理系统

FMDB本地数据库操作实战—学生信息管理系统

作者: T92 | 来源:发表于2016-10-11 19:57 被阅读32次

效果:


结构:界面比较少,所以基本都用storyBoard画完了

  • viewController
  • InsertMessageViewController
import UIKit

class InsertMessageViewController: UIViewController{

    //MARK: - 属性
    //姓名
    @IBOutlet weak var nameLabel: UITextField!
    
    //学号
    @IBOutlet weak var studyNumLabel: UITextField!
    
    //年龄
    @IBOutlet weak var ageLabel: UITextField!
    
    //专业
    @IBOutlet weak var majorLabel: UITextField!
    
    //男单选框
    @IBOutlet weak var mailBtn: UIButton!
    
    //女单选框
    @IBOutlet weak var FeMailBtn: UIButton!
    
    //性别
    var sex = "男"
    
    //MARK: - 生命周期
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.mailBtn.selected = true
        
        self.view.backgroundColor = UIColor(red: 0.78, green: 0.74, blue: 0.60, alpha: 1)
        self.navigationSetting()
        
        self.nameLabel.delegate = self
        self.ageLabel.delegate = self
        self.studyNumLabel.delegate = self
        self.majorLabel.delegate = self
        
        self.nameLabel.returnKeyType = .Done
        self.ageLabel.returnKeyType = .Done
        self.studyNumLabel.returnKeyType = .Done
        self.majorLabel.returnKeyType = .Done
        
    }
}

extension InsertMessageViewController{
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        self.view.endEditing(true)
    }
}

//MARK: - 设置navigation
extension InsertMessageViewController{
    func navigationSetting(){
        self.navigationController?.navigationBar.hidden = false
        self.navigationController?.navigationBar.barTintColor = UIColor(red: 0.32, green: 0.75, blue: 0.98, alpha: 1)
    }
}

//MARK: - 复选框
extension InsertMessageViewController{
    @IBAction func mailAction(sender: UIButton) {
        sender.selected = true
        self.FeMailBtn.selected = false
    }
    
    @IBAction func feMailAction(sender: UIButton) {
        sender.selected  = true
        self.mailBtn.selected = false
    }
}

//MARK: - 录入信息
extension InsertMessageViewController{
    ///判断信息是否正确函数
    func isRight() -> Bool{
        if self.nameLabel.text == "" || self.majorLabel.text == ""{
            self.notice("信息错误", type: NoticeType.error, autoClear: true)
            return false
        }
        
        if (Int(self.ageLabel.text!) == nil) || (Int(self.studyNumLabel.text!) == nil){
            self.notice("信息错误", type: NoticeType.error, autoClear: true)
            return false
        }
        
        if self.studyNumLabel.text?.characters.count != 10{
            self.notice("信息错误", type: NoticeType.error, autoClear: true)
            return false
        }
        
        let sqlStr = "SELECT * FROM t_Student WHERE studyNum = ?;"
        if FMDBManager.defaultManager.db.executeQuery(sqlStr, withArgumentsInArray: [self.studyNumLabel.text!]).next(){
            self.notice("学号已存在", type: NoticeType.error, autoClear: true)
            return false
        }
        
        //print("正确")//测试
        return true
    }
    
    @IBAction func insertAction(sender: AnyObject) {
        //确定性别
        self.sex = self.mailBtn.selected ? "男" : "女"
        //print(self.sex)//测试
        
        //数据库插入操作
        if self.isRight(){
            let model = DataModel()
            model.name = self.nameLabel.text!
            model.sex = self.sex
            model.studyNum = self.studyNumLabel.text!
            model.age = self.ageLabel.text!
            model.major = self.majorLabel.text!
            if FMDBManager.defaultManager.insertData(model){
                self.notice("数据插入成功", type: NoticeType.success, autoClear: true)
                self.nameLabel.text = ""
                self.ageLabel.text = ""
                self.studyNumLabel.text = ""
                self.majorLabel.text = ""
            }
            else{
                self.notice("数据插入失败", type: NoticeType.error, autoClear: true)
            }
        }
    }
}

//MARK: - 文本框代理
extension InsertMessageViewController:UITextFieldDelegate{
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return true
    }
}
  • MessageTableViewController
import UIKit

class MessageTableViewController: UITableViewController {

    //数据源数组
    lazy var dataArray:[DataModel] = {
        return FMDBManager.defaultManager.getData()
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor(red: 0.69, green: 0.77, blue: 0.64, alpha: 1)
        self.navigationSetting()
        
        //注册cell
        self.tableView.registerNib(UINib(nibName: "ZGJTableViewCell", bundle: nil), forCellReuseIdentifier: "cell")
        //设置行高
        self.tableView.rowHeight = 166
        
        //分割线
        self.tableView.separatorStyle = .None
        
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        self.dataArray = FMDBManager.defaultManager.getData()
        self.tableView.reloadData()
    }
}


//MARK: - 设置navigation
extension MessageTableViewController{
    func navigationSetting(){
        self.navigationController?.navigationBar.hidden = false
        self.navigationController?.navigationBar.barTintColor = UIColor(red: 0.32, green: 0.75, blue: 0.98, alpha: 1)
    }
}

//MARK: - 显示数据库信息
extension MessageTableViewController{
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.dataArray.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! ZGJTableViewCell
        let model = dataArray[indexPath.row]
        cell.backgroundColor = UIColor.clearColor()
        cell.nameLabel.text = model.name
        cell.sexLabel.text = model.sex
        cell.ageLabel.text = model.age
        cell.studyNumLabel.text = model.studyNum
        cell.majorLabel.text = model.major
        
        cell.selectionStyle = .None
        return cell
    }
    
    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        let story = UIStoryboard.init(name: "DetailStoryboard", bundle: nil)
        let register = story.instantiateInitialViewController() as! DetailViewController
        let model = self.dataArray[indexPath.row]
        register.model = model
        self.navigationController?.pushViewController(register, animated: true)
    }
}
  • 桥接文件
  • cell
  • DetailViewController
import UIKit

class DetailViewController: UIViewController {

    var model:DataModel? = nil
    
    @IBOutlet weak var nameLabel: UITextField!
    
    @IBOutlet weak var sexLabel: UITextField!
    
    @IBOutlet weak var studyNumLabel: UITextField!
    
    @IBOutlet weak var ageLabel: UITextField!
    
    @IBOutlet weak var majorLabel: UITextField!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.showData()
        self.studyNumLabel.delegate = self
        
        self.nameLabel.delegate = self
        self.sexLabel.delegate = self
        self.ageLabel.delegate = self
        self.studyNumLabel.delegate = self
        self.majorLabel.delegate = self
        
        self.nameLabel.returnKeyType = .Done
        self.ageLabel.returnKeyType = .Done
        self.sexLabel.returnKeyType = .Done
        self.studyNumLabel.returnKeyType = .Done
        self.majorLabel.returnKeyType = .Done
    }
}

//显示数据
extension DetailViewController{
    func showData(){
        self.nameLabel.text = self.model?.name
        self.sexLabel.text = self.model?.sex
        self.ageLabel.text = self.model?.age
        self.studyNumLabel.text = self.model?.studyNum
        self.studyNumLabel.tag = 1
        self.majorLabel.text = self.model?.major
    }
}

//点击修改按钮更新数据库
extension DetailViewController{
    
    ///判断信息是否正确函数
    func isRight() -> Bool{
        if self.nameLabel.text == "" || self.majorLabel.text == ""{
            self.notice("信息错误", type: NoticeType.error, autoClear: true)
            return false
        }
        
        if (Int(self.ageLabel.text!) == nil) || (Int(self.studyNumLabel.text!) == nil){
            self.notice("信息错误", type: NoticeType.error, autoClear: true)
            return false
        }
        
        if self.studyNumLabel.text?.characters.count != 10{
            self.notice("信息错误", type: NoticeType.error, autoClear: true)
            return false
        }
        
        //print("正确")//测试
        return true
    }
    
    @IBAction func updateAction(sender: UIButton) {
        if self.isRight(){
            let model = DataModel()
            model.name = self.nameLabel.text!
            model.sex = self.sexLabel.text!
            model.studyNum = self.studyNumLabel.text!
            model.age = self.ageLabel.text!
            model.major = self.majorLabel.text!
            
            if FMDBManager.defaultManager.updateData(model){
                self.notice("数据更新成功", type: NoticeType.success, autoClear: true)
            }
            else{
                self.notice("数据更新失败", type: NoticeType.error, autoClear: true)
            }
        }
    }
}

//MARK: - 删除数据
extension DetailViewController{
    
    @IBAction func deleteAction(sender: UIButton) {
        let studyNum = self.studyNumLabel.text
        if FMDBManager.defaultManager.deleteData(studyNum!){
            self.notice("数据删除成功", type: .success, autoClear: true)
            self.navigationController?.popViewControllerAnimated(true)
        }
        else{
            self.notice("数据删除失败", type: .success, autoClear: true)
        }
    }
}


//MARK: - 代理
extension DetailViewController:UITextFieldDelegate{
    func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
        if textField.tag == 1{
            return false
        }
        return true
    }
    
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return true
    }
}

相关文章

网友评论

      本文标题:FMDB本地数据库操作实战—学生信息管理系统

      本文链接:https://www.haomeiwen.com/subject/obpbyttx.html