QT编程--用户注册程序的设计与实现

来源:互联网 发布:mac 快捷键 编辑:程序博客网 时间:2024/06/07 19:15

一个用户注册的程序,应用QT编程,完成一个界面简洁、可以记录并判断用户注册信息的程序

功能说明
(1)当用户点击注册后,可以将用户名、姓名、邮箱、性别、出生日期、注册日期时间、个人爱好等写入文件。
(2)可以通过遍历文件中已注册的用户信息,判断用户名是否重复。
(3)可以判断输入的邮箱格式是否正确。
(4)可以判断用户名的长度,若用户名为空或过长则注册失败。
(5)可以判断姓名的长度,若用户名为空或过长则注册失败。
(6)对以上的信息通过弹出对话框显示。
需求分析
1。功能需求分析
实现用户信息的写入和读出,弹出对话框显示程序信息。
2。 数据需求分析
实现对不合法的信息的判断,并弹出对话框显示信息。
3。 行为需求分析
当用户点击注册按钮时提交注册信息,当用户点击选择按钮时记录性别和爱好信息。
4。 其他需求
实现交互的友好性。
源代码

1. 将用户信息和注册时间用QString存储QDateTime datetime;    QString time_str=datetime.currentDateTime().toString("yyyy-MM-dd HH-mm-ss");    QString struser     =  ui->Username->text();    QString strname     =  ui->Name->text();    QString strmail     =  ui->Mail->text();    QString strdate     =  ui->Dateofbirth->text();QString转化为string    string smail = strmail.toStdString();    string suser = struser.toStdString();    string sname = strname.toStdString();创建文本文件    QString fileName = "Register.txt";    QFile file(fileName);    if(!file.open(QIODevice::ReadOnly ))    {        QMessageBox::warning(this,"sdf","can't open",QMessageBox::Yes);    }QTextStream stream(&file);遍历文件检测用户名    QString usertemp;QString user=struser;while (!stream.atEnd())    {        usertemp += stream.readLine().section(":",1,1);    }   if(usertemp.indexOf(user)>=0)    {        QMessageBox *dig=new QMessageBox();        dig->setText("注册失败:用户名"+struser+"已经被使用");        dig->show();        judgeuser++;    }   else judgeuser = 0;   if(suser.length()>8 && suser.length()==0)   {       QMessageBox *dig=new QMessageBox();       dig->setText("注册失败:用户名不能过长且不能为空");       dig->show();       judgeuserlenth++;   }   else       judgeuserlenth = 0;检测姓名长度   if(sname.length()>8 && sname.length()==0)   {       QMessageBox *dig=new QMessageBox();       dig->setText("注册失败:姓名不能过长且不能为空");       dig->show();       judgeuserlenth++;   }   else       judgeuserlenth = 0;检测邮箱合法性   if(IsValidEmail(smail)==false)   {       QMessageBox *dig=new QMessageBox();       dig->setText("注册失败:邮箱格式错误");       dig->show();       judgemail++;   }   else judgemail = 0;弹出对话框显示注册成功    if(judgeuser == 0 && judgemail == 0 && judgeuserlenth == 0)    {        QMessageBox *dig=new QMessageBox();        dig->setText(struser+"用户,您好!恭喜您已经注册成功");        dig->show();    }    file.close();    //QFile file1(fileName);    //if(!file1.open(QIODevice::ReadOnly ))    //{        //QMessageBox::warning(this,"sdf","can't open",QMessageBox::Yes);   // }   // QTextStream stream1(&file1);将用户信息写入文本文件    if(judgeuser == 0 && judgemail == 0 && judgeuserlenth == 0)    {        if(file.open(QIODevice::WriteOnly  | QIODevice::Text|QIODevice::Append))    {        if(ui->Male->isChecked())          stream<<":"+struser+":"+strname+":male:"+strmail+":"+strdate+":"+time_str;        else if (ui->Female->isChecked())          stream<<":"+struser+":"+strname+":female:"+strmail+":"+strdate+":"+time_str;        if(ui->Book->isChecked())            stream<<":read";        if(ui->Ball->isChecked())            stream<<":ball";        if(ui->Internet->isChecked())            stream<<":intertnet";        if(ui->Chess->isChecked())            stream<<":chess";        if(ui->Music->isChecked())            stream<<":music";        stream<<"\n";        file.close();//关闭文件}判断邮箱格式的具体实现bool MainWindow::IsValidChar(char ch){    if( (ch>=97) && (ch<=122) ) //26个小写字母        return true;    if( (ch>=65) && (ch<=90) ) //26个大写字母        return true;    if((ch>=48) && (ch<=57)) //0~9        return true;    if( ch==95 || ch==45 || ch==46 || ch==64 ) //_-.@        return true;    return false;}bool MainWindow::IsValidEmail(string strEmail){    if( strEmail.length()<5 ) //26个小写字母    return false;    char ch = strEmail[0];    if( ((ch>=97) && (ch<=122)) || ((ch>=65) && (ch<=90))  || ((ch>=48) && (ch<=57)))    {        int atCount =0;        int atPos = 0;        int i;        int dotCount = 0;        for(i=1;i<strEmail.length();i++) //0已经判断过了,从1开始        {            ch = strEmail[i];            if(IsValidChar(ch))            {                if(ch==64) //"@"                {                    atCount ++;                    atPos = i;                }                else if( (atCount>0) && (ch==46) )//@符号后的"."号                    dotCount ++;            }            else                return false;        }        //6. 结尾不得是字符“@”或者“.”        if( ch == 46 )            return false;        //2. 必须包含一个并且只有一个符号“@”        //3. @后必须包含至少一个至多三个符号“.”        if( (atCount!=1) || (dotCount<1) || (dotCount>3) )            return false;             //5. 不允许出现“@.”或者.@        int x,y;        x=strEmail.find("@.");        y=strEmail.find(".@");        if( x>0 || y>0 )        {            return false;        }        return true;    }   return false;}    }
原创粉丝点击