欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FTP文件管理项目 项目日报(四)

程序员文章站 2022-07-14 08:26:15
...

项目日报(四)

1.预期进度

1.网络连接
2.数据库单例类添加,数据库各功能代码测试
3.完成登录,注册发包解包

2.实际进度

1.网络连接
2.数据库单利类添加,数据库各功能代码测试

网络连接
//网络连接套接字
QTcpSocket *tcpclient;      
//网络连接操作
    tcpclient=new QTcpSocket(this);
    tcpclient->abort();     //取消已有的链接
    tcpclient->connectToHost("XXX.XXX.XXX.XXX",XXXX);  //目标IP地址和端口号   
单例类数据库的加入
/*********info_csdb.h**********/
class userinfo_csdb
{
public:
    static userinfo_csdb *getDatabase(const QString &filename);
    ~userinfo_csdb();

    void CloseCSDB();       //关闭数据库
    bool CreateTable();         //建表
    //增
 	void Insertuser(int id,int pwd,QString tel,int dir_id);		//新增用户
    //删
	void deluser(int id);		//删除用户
    //查
    void fuzzysearch(QString str);  //模糊查询
    //改
   bool cpwd(int user_id, int old_pwd, int new_pwd);		//修改用户密码

    QSqlDatabase mydatabase;
private:
    userinfo_csdb(const QString &filename);
    static userinfo_csdb *database;
};

/*********info_csdb.c**********/
userinfo_csdb::userinfo_csdb(const QString &filename)
{
    //创建数据库
    mydatabase = QSqlDatabase::addDatabase("QSQLITE");
    mydatabase.setDatabaseName(filename);

    if(mydatabase.open())
    {
        qDebug()<<"数据库打开成功!!";
    }
    else
    {
        qDebug()<<"数据库打开失败!!";
    }
}

userinfo_csdb * userinfo_csdb::getDatabase(const QString &filename)
{
    if(database == NULL)
    {
        database=new userinfo_csdb(filename);
    }
    return database;
}

//创建数据表
bool userinfo_csdb::CreateTable()
{
    QSqlQuery sql_query;        //此处只用了一个sql的容器来执行接下来的数据库指令
    QString sql = "create table if not exists UserMsg(id int primary key,pwd int,tel text,dir_id int)";
    sql_query.prepare(sql);
    sql_query.clear();

    //创建文件信息表(无创建结果判断)
    QString sql1="create table if not exists FileMsg(file_name text primary key,owner_id int,mode int,dir_id int,file_id int,share int)";
    sql_query.prepare(sql1);     //query容器准备执行语句
    sql_query.exec();       //执行sql语句
    sql_query.clear();      //清除容器中内容

    QString sql2="create table if not exists DirMsg(dir_id int primary key,dir_name text,grade int,owner_id int)";
    sql_query.prepare(sql2);
    sql_query.exec();
    sql_query.clear();

    QString sql3="insert into UserMsg values(100000,123456,'18039027069',1)";
    sql_query.prepare(sql3);
    sql_query.exec();
    sql_query.clear();
}

//插入用户
bool userinfo_csdb::Insertuser(int id, int pwd, QString tel, int dir_id)
{
    QSqlQuery sql_query;

    QString insert_sql = QString("insert into UserMsg values(?,?,?,?)");
    sql_query.prepare(insert_sql);
    sql_query.addBindValue(id);
    sql_query.addBindValue(pwd);
    sql_query.addBindValue(tel);
    sql_query.addBindValue(dir_id);
    if(sql_query.exec())
    {
        qDebug()<<"inserted success!";
        sql_query.clear();
        return 1;
    }
    else
    {
        qDebug()<<sql_query.lastError();
        sql_query.clear();
        return 0;
    }
}

//删除用户
bool userinfo_csdb::deluser(int id)
{
    QSqlQuery sql_query;

    QString insert_sql = QString("delete from UserMsg where id = %1").arg(id);
    sql_query.prepare(insert_sql);
    if(sql_query.exec())
    {
        qDebug()<<"delete success!";
        sql_query.clear();
        return 1;
    }
    else
    {
        qDebug()<<sql_query.lastError();
        sql_query.clear();
        return 0;
    }
}

//修改密码
bool userinfo_csdb::cpwd(int id, int old_pwd, int new_pwd)
{
    QSqlQuery sql_query;
    QString changepwd_sql = QString("update UserMsg set pwd = %1 where id = %2 and pwd = %3").arg(new_pwd).arg(id).arg(old_pwd);
    sql_query.prepare(changepwd_sql);
    if(sql_query.exec())
    {
        qDebug()<<"change success!";
    }
    else
    {
        qDebug()<<sql_query.lastError();
    }
    sql_query.clear();
}
正则表达式控制输入
//正则表达式限制输入格式
    QRegExp exp("^[0-9]+$");
    QValidator *validator=new QRegExpValidator(exp,id_edit);
    id_edit->setValidator(validator);

    QRegExp exp1("^[0-9]+$");
    QValidator *validator1=new QRegExpValidator(exp1,pwd_edit);
    pwd_edit->setValidator(validator1);
不定长数据打包

还是有问题,之前试了下出错了,然后最近又忙,说实话就不想再搞不定长,想等他们做出来了,再问下。
FTP文件管理项目 项目日报(四)

遇到问题:
在查找数据表中用户名是否重名时,查看返回的个数会显示-1.这个问题之前遇到过,忘了怎么解决的,之后再查下。
解决:
打算使用回调函数查看返回具体内容。