一个关于登陆验证得问题

bryan_0916 2007-11-25 11:23:26
我做得是个类似网络考试系统的小练习,但基础不好,有两个问题一直没想明白。

系统需要简单的用户登陆及验证功能,不要求图形界面,所以我用得文字界面实现。我得想法是,系统要求用户登陆,输入用户名密码,用户以:“用户名,密码”得格式输入,然后系统获取这个信息,到服务器上得user.txt文件上进行验证,user.txt得存储格式是:“用户名,密码”,也就是每行一个用户信息,用户名密码用“,”隔开。关于验证这块,我是想干脆就拿用户输入得信息和user.txt内得信息,一行一行得比,但总觉得不对劲,麻烦请各位给我个思路,最好能提供个简单得代码示例,谢谢啦。
...全文
185 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
imA 2007-11-26
  • 打赏
  • 举报
回复
在server端的界面上(也就是老师端的界面上)要现实所有的题目列表和所有登录的学生列表(就是客户端的列表,也就是所有登录名的列表),然后,老师可以指定题目和客户端(同学),当老师指定了题目和回答的同学后,服务端通过socket将题目的详细信息发送给指定的同学,在同学的客户端界面上现实老师指定的题目的题面信息和备选答案,在同学答题完成后,提交答案给服务端,服务端根据同学的答案到文件(或者数据库)中和标准答案比较,并记录回答结果。


大致流程就是这样。我感觉说的已经很详细了。剩下的就是具体的代码实现了,这个对你来说应该不难。
bryan_0916 2007-11-26
  • 打赏
  • 举报
回复
非常感谢楼上的朋友!请问关于老师指定题目那个应该怎么实现?
imA 2007-11-26
  • 打赏
  • 举报
回复
验证用户是否合法:
public class Login {
/**
* 验证客户输入的用户名、密码是否合法
* @param username 用户名
* @param password 密码
* @return 0:合法 1:用户名存在但是密码错误 2:用户名不存在
*/
public static int validateUser(String username,String password){
java.io.File file=new java.io.File("d://users.txt");
try{
java.io.BufferedReader reader=new java.io.BufferedReader(new java.io.FileReader(file));//建立存到用户信息文件的缓冲读取流
String auser=reader.readLine();//读取第一行
while(auser!=null){
if(username.equals(auser.substring(0,auser.indexOf(",")))){//对读取的用户信息数据首先判断是用户名是否匹配
if(password.equals(auser.substring(auser.indexOf(",")+1)))//判断密码是否匹配,如果匹配就返回0
return 0;
return 1;//如果用户名匹配,但是密码不匹配就返回1
}
auser=reader.readLine();
}
}catch(java.io.FileNotFoundException e){
System.err.println("文件没找到");
}catch(java.io.IOException e){
System.out.println("文件读取异常");
}
return 2;//如果读取到文件尾也找到匹配的用户名,就返回2
}
public static void main(String[] args){
String username="Json";
String password="hello tom";
int result=validateUser(username,password);
if(result==0)
System.out.println("合法用户");
else if(result==1)
System.out.println("密码错误");
else if(result==2)
System.out.println("用户不存在");
}
}
bryan_0916 2007-11-26
  • 打赏
  • 举报
回复
非常感谢!结贴!
bryan_0916 2007-11-26
  • 打赏
  • 举报
回复
我把我做得这个小练习简单的描述一下,也请各位能帮我修正下设计思路,我刚结束JAVA网络编程,前面得基础学的也不太好,所以做起来非常费力,谢谢大家了。系统需求大概如下:

1.建立client与server的连接,使用socket技术。
2.提供用户登陆验证功能,使server端可以识别客户端。
3.系统需要提供日志功能,记录一些必要得事件,比如某用户连接到服务器,某用户断开连接。
4.老师可以选择某个或多个题目,要求某个特定得客户端答。
5.服务器要对答案做出反应,可以统计某个题目被答对得次数。

需求大概就是这样得。我得设计是,

1.客户端这边有两个类,一个是处理连接得client类,一个是IOHandler类,IOHandler这个类主要是处理客户端得输入输出,因为客户端功能比较简单,就是登陆是输入用户名密码,登陆后显示题目,和输入答案,提交答案后自动退出就好了。

2.服务器端这边有。。。个类,一个是server类,只要是起服务器用得,ClientHandler只要是处理客户端连接用的,UserIdentification主要是验证用户用得,UserQuizManager主要是处理用户答题用得,比如找到用户所被要求得题目,发送给客户端,得到用户得答案与正确答案进行匹配。Log类是用户处理系统日志的。QuizManager是给服务器端的老师指定题目给某个学生用的。

上面得设计应该很不够完善,很多方面估计没考虑全面,麻烦各位能帮忙指正,谢谢各位了


bryan_0916 2007-11-26
  • 打赏
  • 举报
回复
谢谢楼上得两位,一楼得那个方法我也想到了,但是我基础不是很好,所以不知道如何实现,比如逐行读取,以及匹配逗号前得信息,可否给出应该去看那个方法?问题比较弱智,不好意思


第二个问题当时没想好怎么表达,现在给出。这个系统允许老师指定某个学生回答某个问题,可以选多个题目。然后还要记录每个问题有多少个学生答对了,比如第一题有三个学生答对了,倒是没必要记录谁答对了。现在有三点不太明白。

1.问题也是写在txt文件中,假如每个问题一行,然后用“;”把问题和答案隔开,也就是“问题;答案"的格式.这样是否对于答案得验证方便一些?或者是问题和答案寸在两个文件里?

2.老师可以指定某个学生答哪个问题,这个应该怎么解决?

3.记录每个问题有多少个学生答对了该怎么解决?

谢谢回帖得两位,也谢谢准备回帖得各位。。。
seaforce 2007-11-26
  • 打赏
  • 举报
回复
不是有两个问题么?还有一个呢?
imA 2007-11-26
  • 打赏
  • 举报
回复
就逐行读取文件,然后匹配每行逗号前部分和用户输入的,如果匹配就在匹配逗号后面的部分和用户输入的密码;否则继续读取下一行;如果读取到行尾,还没发现,就不存在这个用户。给出一个提示信息就可以了。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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