送上来找人骂的程序

hexuhui 2003-10-16 06:24:46
下午贴了一个,被各位高手骂了一通,小弟感激不尽。
请各位高手继续批评下面的用户注册程序,主要从:
1.编程风格
2.程序结构
3.有无错误
两个方面
#include <stdio.h>
#include <string.h>
struct stu_info
{
char UID[20];
int age;
char PWD[20];
};

int showMainMenu()
{
/* 显示主菜单并且返回用户的选择 */
int s;
printf("您要?\n");
printf("1.注册新用户\n");
printf("2.使用已经注册的用户名登陆\n");
while (s!=49 && s!=50)
{
s=getchar();
}
return s-48;
}

int checkUID(const char *UID)
{
/* 检查用户名的长度 将来会增加更多的检查条件 */
if (strlen(UID)<4 || strlen(UID)>10)
{
return 1;
}
else
{
return 0;
}
}

int checkPWD(const char *PWD, const char * confirmPWD)
{

/* 密码必须和确认密码箱等,这里没有直接返回strcmp的值是因为还要增加更多的密码验证条件 */

if (strcmp(PWD,confirmPWD)==0)
{
return 0;
}
else
{
return 1;
}
}


int regist()
{
struct stu_info newStudent;
char confirmPWD[20];
strcpy(newStudent.PWD,"");
newStudent.age=0;
strcpy(newStudent.UID,"");

while(checkUID(newStudent.UID)!=0)
{
printf("\n请输入您的姓名:");
scanf("%20s",newStudent.UID);
}


while (newStudent.age<5 || newStudent.age>100)
{
printf("\n请输入您的年龄:");
scanf("%d",&newStudent.age);
}


while (checkPWD(newStudent.PWD,confirmPWD)!=0)
{
printf("\n请输入您的密码:");
scanf("%s",&newStudent.PWD);
printf("请再次输入您的密码:");
scanf("%s",confirmPWD);
}
printf("\n注册已经完成...\n");
return 0;
}



void main()
{
int select=0;
select=showMainMenu(); /* 调用showMain函数显示菜单并返回用户的选择 */

switch (select)
{
case 1:
regist();
break;
default:
printf("Found error");

}
}
...全文
45 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Meyer 2003-10-18
  • 打赏
  • 举报
回复
不要要求太高,做个稍大点的东西
大概 2-3k的程序,你就会发现自己组织代码的水平了.
Meyer 2003-10-18
  • 打赏
  • 举报
回复
>>跨平台、不同的编译器会发生什么情况等等
呵呵,如果你要提到跨平台这么高的水准那你的 showMainMenu()
也就没法用了,
毕竟不是所有平台都是使用的ASC编码
bbgbianbaogui 2003-10-17
  • 打赏
  • 举报
回复
继续
hexuhui 2003-10-17
  • 打赏
  • 举报
回复
大哥们 数据存储那块我是要加进去的 现在还没做。
希望大家苛刻的给我的程序挑毛病(跨平台、不同的编译器会发生什么情况等等)

谢谢了!
rockypan 2003-10-17
  • 打赏
  • 举报
回复
写得不错,如果有更多的人贴代码出来就好了:D
(我是新手)
Andy84920 2003-10-17
  • 打赏
  • 举报
回复
首先我认为程序的正确性是最重要的.
如果一个程序在怎么完美,它是错误的.那什么也不要谈!
这是程序的第一个要保证的东西!
liuhelh 2003-10-17
  • 打赏
  • 举报
回复
楼上说的很对
你这个注册程序并不能保存信息 难道你打算一直把注册内容保存在内存中吗?
所以需要一个文件来保存信息。
sevencat 2003-10-17
  • 打赏
  • 举报
回复
不过说老实话你这个程序很难看出你的功底。
因为功能太简单了。
你可以尝试一下
一开始从某文件中读入所有的密码和用户名:
加入一个列表中。
登录的时候进行检查。

或者你可以用数据库存放用户名和密码再进行查询。(比如说Mysql数据库中读出来)


毕竟简单的东西很难说你怎么样就像我写一段
#include <iostream>
int main()
{
char chartemp;
std::cin>>chartemp;
return 0;
}
然后拿出来问人家:
我这段程序写的怎么样?
请从下面几点来分析:
meijing 2003-10-17
  • 打赏
  • 举报
回复
在C++可以用常量,比用宏好像要好些
sharkhuang 2003-10-17
  • 打赏
  • 举报
回复
我给你体提的意见是不要用太多的数字!这些都喜都可以用宏代替!!!
sevencat 2003-10-17
  • 打赏
  • 举报
回复
不错了。
比我以前写得好多了 。


从这个开始慢慢来,
打好基础。
很快你就会是高手了
ionlic 2003-10-17
  • 打赏
  • 举报
回复
to TianGuangZao(天光早)

你也太激动了吧? 不觉得有些臆断吗?

我看不出楼主写的c吗? 我仅仅想问一下。

------------------------
to:楼主。我觉得你写的格式不错。 仅仅有一个问题想说:就是注释。

c的注释是/* */。 因为在有些时候编程,你可能想注释掉一段代码,进而写另一段代码。这样就可能出现注释符号的嵌套,这样在编程时会给你带来写麻烦。如果你是在c++的一些编译环境下写程序的话,用//注释符号会比较好些。当然可能通用性不好。
iceandfire 2003-10-17
  • 打赏
  • 举报
回复
同意TianGuangZao的看法!
我也提几个看法:
如果习惯使用tab键,那么将tab设为4最好,每行最大字符为80个为合适,这样在打印纸上可完全打出。
还有一点和zoohoo是一样的,不要有多个return出口,如果return 1后面有return 2之类的,那么最好将1或2赋与变量x,再return x。这是种好的习惯。
还有,你的程序所有存储都在内存中,可否考虑将数据脱机存储?
zoohoo 2003-10-17
  • 打赏
  • 举报
回复
不错不错,提3点小意见
1 不要使用tab,用空格代替
2 函数最好只有一个出口
3 main函数最好写成这样,int main(int argc, char *argv[]),在同unix保持兼容。
TianGuangZao 2003-10-17
  • 打赏
  • 举报
回复
to ionlic(ionlic):
明明是 c 程序,干嘛一定非得和 c++ 扯上边。
难道 c 程序员非得懂 c++ 不可?
难道不懂 c++ 就写不出优秀的 c 代码吗?
gyhs 2003-10-17
  • 打赏
  • 举报
回复
可以
oyd 2003-10-17
  • 打赏
  • 举报
回复
很不错,结构清晰易懂
换个复杂的程序再来给我们看看
ionlic 2003-10-17
  • 打赏
  • 举报
回复
学过c++吗?

若学过
建议你看看effective c++的第一部分 呵呵。

好象还有本什么design pattern 都是有关这些方面的

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧