查看了同学的代码,发现其代码总体写的简洁优美。
优点有:
1.所有常用中文字符都放进了数组,方便之后的运用
2.用一个for循环判断所有登陆情况,十分方便
for(int i=0;i<9;i++) { if(user == userLib[i] && password == passwordLib[i]) { flag = 1; flagNianji = i/3; break; } }
3.小中高每个阶段都完整包含之前的需求
4.切换和输出函数功能完整且简洁
缺点有:
1.可能出现一个数两边有括号
int temp1 = (rand()%100)+1; if(rand()%10 == 0) //左括号 { fout<<"("; flagZuoKuohao++; } fout<<temp1; if(rand()%10 == 1) //右括号 { if(flagZuoKuohao>flagYouKuohao) { fout<<")"; flagYouKuohao++; } }
因为两个rand()值不同,有可能同时取到左右括号。
可以先设一个变量保存rand(),这样能避免一个数同时出现左右括号
2.三角函数没有设定特殊值,现实意思较小
3.输出时间命名文件函数较为繁琐,可以优化
原函数:
string date() { time_t tv; tv = time(NULL);//time(&tv); get current time; //cout << ctime(&tv) << endl;//显示当前时间 tm *local; local = localtime(&tv); //cout << asctime(local) << endl;//显示当前时 char *temp = asctime(local); const char *d = " :"; char *p; p = strtok(temp,d); string date[8]; int dateCount = 0; while(p != NULL) { date[dateCount] = p; dateCount++; p = strtok(NULL,d); } int len = date[dateCount-1].length(); char temp1[5]; for(int i=0;i<len-1;i++) { temp1[i] = date[dateCount-1][i]; } date[dateCount-1] =temp1; for(int i=0;i<13;i++) { if(date[1] == mouth1[i]) { date[1] = mouth2[i]; break; } } string ans = temp1+days[0]+date[1]+days[1]+date[2]+days[2]+date[3]+days[3]+date[4]+days[4]+date[5]+days[5]; string temp2 = ".txt"; ans+=temp2; //cout<<ans<<endl; return ans; }
可以按下面这种方式,更简洁:
CreateDirectory(name.c_str(),NULL);//创建该账户的文件夹 time_t t = time(0); //获取时间戳 char tmp[64]; strftime(tmp,sizeof(tmp),"%Y年-%m月-%d日-%H时-%M分-%S秒.txt",localtime(&t));//将时间戳转换成日期 string path=name+"//"+tmp;//进入name目录下,以时间命名 ofstream file; file.open(path.c_str());