学东西我觉得最好不要向别人索求代码,自己先思考,遇到难度或者不懂的时候才去问,像你这个通讯系统,你就要想,逻辑是怎样的,最起码要画好流程图吧,是否要具备前后台,有没权限区分等等,刚刚你的那第一要求,不得少于500行,其实要完成你这个系统,500行包不包括HTML界面代码呢?如果不包括的话500行也是可以完成的.如果包含的话那肯定没办法了,一个表格输入都有几十行的代码了/ 另外一个就是功能的实现在数据库中如何表现呢,就好像你说的,通讯录要有姓名,性别,电话号码,住址等等,固然是越多功能越好),你就规划下数据库,就好像你刚才这些都可以划归到一个数据表,这个数据名专门存储这些人员信息,当然你的信息越复杂就不能建在同一个表上了,这会造成维护上的麻烦!一个姓名就是一个字段,性别跟电话号码也是... 现在做系统的很少人会用ASP来开发的了,ASP为什么还没这么快淘汰呢?是因为之前许多的企业许多人的用ASP开发了项目,这些项目要转到另外一个平台上面去,是很费心机和成本的,所以才会让ASP没这么快的消失在市场上,但往后的发展可以看到,ASP基本上没什么市场的了,除非你用的是ASP.NET.ASP.NET跟ASP只是名字上的相似而已,两者差别是巨大的,ASP是解释型的,而ASP.net是编译型的,做WEB系统的话还是推荐使用ASP.net+SQLSERVER或者PHP+MYSQL又或者JSP+oracle这些组合工具
jsp做个人通讯录管理系统
你需要学习一些jsp相关基础知识。
jsp的运行,需要有服务器支持,而这些服务器通常是tomcat,apache等。当这些服务开启了以后,并且一些设置文件正确设置好了以后才能浏览jsp文件。
可以去apache官方网站www.apache.org找找这些下载。
jsp设计通讯录中用户是否设计为一个类?
其实你通过生活中的思路在封装类,这是一个比较简单的方式。
从通讯录的功能来考虑,可以列出所有用户的电话,可以点击某个用户查看这个用户的记录,那么就是一个用户集合的功能,这样来看,用户就可以设置成一个类,这个类的属性有:姓名、电话、手机、email、地址等一些常用数据。这些数据里面除了姓名是唯一的,电话、手机、email、地址这几个参数都可能是多条数据,存储的时候可以按照数组来存储。
那么这个通讯录的雏形就是一个用户表,包括以上数据,提供的功能就是:查看全部用户列表,输入用户名或电话号码查看用户列表,点击具体用户查看用户具体信息或修改用户信息,批量删除用户信息。
那就是说:每注册一个用户,就有一个实例,对吧。那管理员算一个用户吗?还是说他是“用户名和密码是特定的用户”?这点我有点不明白,还有用户名和密码是存放在数据库?验证的时,是不是先通过JS,再传入数据库核对,然后才返回结果?
1.注册一个用户是一个动作,这个动作可以作为一个统一的实例进行用户注册操作;
2.管理员和用户在我们生活里面来看是两类人,管理员可以通过输入用户名和密码来查看他的通讯录的用户信息,那么肯定在程序设计的时候也是分两个对象来设计类;
3.管理员类的属性基本值包括:管理员登录名,管理员登录密码,这里我们考虑单机的,不考虑管理员权限,因为考虑了权限问题,这里就会再引入三张基本表:权限表、角色表、机构表,来处理更为复杂的业务;
4.数据的存放在MVC的结构里面都叫做‘模型’,这个模型在业务应用系统里面比较常见的是存放在数据库中,你也可以存放在文本文件中;
5.在验证的时候,我们也可以通过MVC的设计模式,js一般是面向用户输入的视图层,这一层验证的业务只做到输入的过滤,比如长度、非法字符等;
6.验证的业务逻辑是写在MVC的控制层,控制层将界面传入的值传给模型层的数据库进行SQL的查询,返回的结果再由控制层进行逻辑判断,来控制最终用户界面所显示的信息。
java通讯录管理
大致写了一下,你可以看看:
packagenoteBook;
importjava.awt.*;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileReader;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.ArrayList;
importjava.util.StringTokenizer;
importjava.util.Vector;
importjavax.swing.*;
importjavax.swing.table.DefaultTableModel;
classguiViewextendsJFrameimplementsActionListener{
JMenuBarjmb;
JMenutext;
JMenuedit;
JMenuhelp;
JMenuItemsave;
JMenuItemchange;
JMenuItemguide;
JLabelname;
JLabeladdress;
JLabelpost;
JLabelmobilePhone;
JLabelemail;
JTextFieldJT_name;
JTextFieldJT_address;
JTextFieldJT_post;
JTextFieldJT_mobilePhone;
JTextFieldJT_email;
JButtonjOk;
JButtonjCancel;
JTabletable;
staticDefaultTableModeldtm;
Vector<String>head;
introw=0;//用于标记当前行的位置
publicguiView(){
super("通讯录管理程序");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600,700);
setVisible(true);
Containercon=this.getContentPane();
jmb=newJMenuBar();
this.setJMenuBar(jmb);
text=newJMenu("文件",true);
edit=newJMenu("编辑",true);
help=newJMenu("帮助",true);
save=newJMenuItem("保存");
change=newJMenuItem("修改");
guide=newJMenuItem("指导");
save.addActionListener(this);save.setActionCommand("save");
change.addActionListener(this);change.setActionCommand("change");
guide.addActionListener(this);guide.setActionCommand("guide");
text.add(save);edit.add(change);help.add(guide);
jmb.add(text);jmb.add(edit);jmb.add(help);
name=newJLabel("姓名:",Label.RIGHT);
address=newJLabel("通信地址:",Label.RIGHT);
post=newJLabel("邮编:",Label.RIGHT);
mobilePhone=newJLabel("移动电话:",Label.RIGHT);
email=newJLabel("电子邮件:",Label.RIGHT);
JT_name=newJTextField(12);
JT_address=newJTextField(28);
JT_post=newJTextField(12);
JT_mobilePhone=newJTextField(12);
JT_email=newJTextField(12);
jOk=newJButton("确定");
jCancel=newJButton("取消");
jOk.addActionListener(this);
jOk.setActionCommand("ok");
jCancel.addActionListener(this);
jCancel.setActionCommand("cancel");
JPanelpanelSOUTH=newJPanel();
JPanelpanelCENTER=newJPanel();
JPanelpanelCENTERSouth=newJPanel();
JPanelpanelCENTERCenter=newJPanel();
JPanelpanelCENTERNorth=newJPanel();
JPanelpanelNorth=newJPanel();
JPanelpanelNorthSouth=newJPanel();
head=newVector<String>();
head.addElement("姓名");
head.addElement("通信地址");
head.addElement("邮编");
head.addElement("移动电话");
head.addElement("电子邮件");
dtm=newDefaultTableModel(null,head);
showData();
table=newJTable(dtm);
table.addMouseListener(newMouseListener(){
publicvoidmouseClicked(MouseEvente){
row=table.getSelectedRow();
System.out.println(row);
getData(row);
}
publicvoidmouseEntered(MouseEvente){
}
publicvoidmouseExited(MouseEvente){
}
publicvoidmousePressed(MouseEvente){
}
publicvoidmouseReleased(MouseEvente){
}
});
JScrollPanejsp=newJScrollPane(table);
panelNorthSouth.setLayout(newGridLayout(1,5));
panelNorthSouth.add(name);
panelNorthSouth.add(address);
panelNorthSouth.add(post);
panelNorthSouth.add(mobilePhone);
panelNorthSouth.add(email);
panelNorth.setLayout(newBorderLayout());
panelNorth.add(jsp,BorderLayout.CENTER);
panelNorth.add(panelNorthSouth,BorderLayout.SOUTH);
panelCENTERNorth.add(name);
panelCENTERNorth.add(JT_name);
panelCENTERNorth.add(email);
panelCENTERNorth.add(JT_email);
panelCENTERCenter.add(post);
panelCENTERCenter.add(JT_post);
panelCENTERCenter.add(mobilePhone);
panelCENTERCenter.add(JT_mobilePhone);
panelCENTERSouth.add(address);
panelCENTERSouth.add(JT_address);
panelCENTER.add(panelCENTERNorth,BorderLayout.NORTH);
panelCENTER.add(panelCENTERCenter,BorderLayout.CENTER);
panelCENTER.add(panelCENTERSouth,BorderLayout.SOUTH);
panelSOUTH.add(jOk);
panelSOUTH.add(jCancel);
con.add(panelNorth,BorderLayout.NORTH);
con.add(panelCENTER,BorderLayout.CENTER);
con.add(panelSOUTH,BorderLayout.SOUTH);
}
//对点击首行,上一行,下一行,最后一行按钮触发的操作进行事件响应处理
publicvoidactionPerformed(ActionEvente){
Stringcommand=e.getActionCommand();
if(command.equals("ok")){
Stringname=this.JT_name.getText();
Stringaddress=this.JT_address.getText();
Stringpost=this.JT_post.getText();
StringmobilePhone=this.JT_mobilePhone.getText();
Stringemail=this.JT_email.getText();
saveData(name,address,post,mobilePhone,email);
showData();
table.setModel(dtm);
this.JT_name.setText("");
this.JT_address.setText("");
this.JT_post.setText("");
this.JT_mobilePhone.setText("");
this.JT_email.setText("");
}
elseif(command.equals("cancel")){
this.JT_name.setText("");
this.JT_address.setText("");
this.JT_post.setText("");
this.JT_mobilePhone.setText("");
this.JT_email.setText("");
}
elseif(command.equals("save")){
//savealldatainthetable
}
elseif(command.equals("change")){
//tableallowtochangesomedata
}
elseif(command.equals("guide")){
//maybeshowhowtouseit
}
else{
System.err.println("error!");
System.exit(-1);
}
}
privatevoidshowData(){
dtm=newDefaultTableModel(null,head);
Filefile=newFile("F:/java/data.txt");
Stringstr=null;
BufferedReaderbr=null;
try{
br=newBufferedReader(newFileReader(file));
str=br.readLine();
while(str!=null){
if(str==null){
System.err.println("nodata!");
break;
}else{
StringTokenizerst=newStringTokenizer(str,",");//每行信息的6个字段分别用空格隔开的
Vector<String>v=newVector<String>();
v.addElement(st.nextToken());
v.addElement(st.nextToken());
v.addElement(st.nextToken());
v.addElement(st.nextToken());
v.addElement(st.nextToken());
dtm.addRow(v);
}
str=br.readLine();
}
br.close();//一定要关闭资源
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
privatevoidsaveData(Stringname,Stringaddress,Stringpost,
StringmobilePhone,Stringemail){
Filefile=newFile("F:/java/data.txt");
ArrayListlist=null;
try{
BufferedReaderbr=newBufferedReader(newFileReader(file));
list=newArrayList();
Stringss="";
while((ss=br.readLine())!=null)
list.add(ss);
br.close();
}catch(Exceptione){
e.printStackTrace();
}
list.set(row,name+","+address+","+post+","+mobilePhone
+","+email);
try{
PrintWriterpw=newPrintWriter(file);
for(inti=0;i<list.size();i++){
pw.println(list.get(i));
}
list.clear();
list=null;
pw.close();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}
}
//通过flag标记当前读到了文件的第几行。然后循环读至该行
privatevoidgetData(introw){
Filefile=newFile("F:/java/data.txt");
Stringstr=null;
StringTokenizerst;
BufferedReaderbr=null;
try{
br=newBufferedReader(newFileReader(file));
for(inti=0;i<=row;i++){
str=br.readLine();
}
if(str==null){
System.err.println("nodata!");
}else{
st=newStringTokenizer(str,",");//每行信息的6个字段分别用空格隔开的
this.JT_name.setText(st.nextToken());
this.JT_address.setText(st.nextToken());
this.JT_post.setText(st.nextToken());
this.JT_mobilePhone.setText(st.nextToken());
this.JT_email.setText(st.nextToken());
}
br.close();//一定要关闭资源
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]s){
guiViewc=newguiView();
c.setVisible(true);
}
}
用jsp做通讯录,要有登录界面身份验证,要连SQL server数据库,麻烦高手帮我解决下,最好能有代码和注释
首先你要建立一个工程项目,JAVAPROJECT,在包里面建立class类,取个名字,为了代码清爽,JAVA一般把方法写在class里面,比C++好用多了,再建立一个HTML。
先在HTML中建立好框架,如果你会用struct2,那界面会漂亮一点。这些拖放操作我就不一一做介绍。要点在连接数据库,读取数据。连接class举例:
//建立class名为linkpublicclasslink
{
Connectionconn=null;//定义一个连接对象
Statementstmt=null;//定义一个连接方法
publicResultSetrs=null;//定义数据集合
//创建连接
publicvoidcreatC(){
Stringstrurl="jdbc:odbc:driver={SQLServer};Server=数据库IP地址;UID=数据库用户名;PWD=数据库密码;DataBase=数据库名";//连接字符串
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//驱动名称
conn=DriverManager.getConnection(strurl);//打开连接
stmt=conn.createStatement();//创建连接内容
}catch(Exceptione){
//在这里写连接异常消息
}
}
//关闭数据库连接,释放资源
publicvoiddestroy(){
try{
conn.close();
}catch(Exceptione){
//这里关闭连接失败消息
}
}
publicvoidquery(Stringsql){
this.creatC();//创建连接方法应用
try{
rs=stmt.executeQuery(sql);
//这里写控件的使用方法
}catch(Exceptione){
//这里写操作异常消息
}
this.destroy();//销毁连接状态方法应用
}
然后在HTML中就可以在按钮事件中直接用,假设有一个加载通讯录显示按钮
privatevoidbutton1ActionPerformed(...){StringSQL="Select*from通讯录where组='"+网页文本控件值+"'";
newlink().query(SQL);//应用方法使rs有数据
while(rs.next()){
//遍历数据集合
//使用数据的方法
}
}
登陆按钮你修改一下SQL语句就OK了,判断有没有数据就好了,有数据就跳转,没数据就报异常
求java(jsp,sql)编写的通讯录管理
http://www.eshuba.com/sort/211_1.htm
自己去看一下
jsp 如何限制表单,实现只能填写特定的数据。
login后,将登陆的用户信息放入session;通过session保存登陆的相关信息,比如用户名;
点击update button时,通过session获取登陆用户的信息。显示给用户。让用户只能修改自己的信息;
伪代码:
public void login(HttpServletReqeust request){
requets.getSession.setAttribute("user" ,user)//user为登陆系统的对象。
}
在update.jsp中
获取user对象,即当前的登陆用户即可做相应的操作
User user =(User)session.getAttribute("user");
转载请注明出处51数据库 » jsp通讯录word jsp通讯录管理系统
文氓兄弟
