PDA

View Full Version : سوال: پروِژه پایان ترم



M0TR!X
جمعه 05 خرداد 1391, 20:21 عصر
سلام.

چند تا سوال ساده دارم.ممنون میشم هر کدوم رو که بلد بودین جواب بدین !

اول عکس ضمینه شده رو مشاهده کنید !

میبینید که من چند تا JFrame دارم.

1ـ اول میخوام وقتی F6 (اجرا) رو زدم JFrame که خودم میخوام اجرا بشه.؟

2ـ دوم اینکه چرا متد bj1.Setvisible(false ) کار نمیکنه ؟ اینو میزنم تا فرم بسته بشه درسته دیگه ؟


این دوتا رو فعلا جواب بدین ! بازم میپرسم ! مرسی:قلب:

M0TR!X
شنبه 06 خرداد 1391, 12:49 عصر
یعنی کسی حتی یکیش رو هم نمیدونه ؟ یا جواب نمیدین ؟

yegane8
شنبه 06 خرداد 1391, 15:39 عصر
من در مورد سوال دوم فکر کنم باید اینو بزنید تا فرم بسته شه bj1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

spiderman200700
شنبه 06 خرداد 1391, 21:33 عصر
سلام.
در مورد سوال اولت باید متد main فقط توی اون کلاسی باشه میخوای اجرا بشه. وبقیه ی کلاس ها متد main را نداشته باشن.
در مورد سوال دومت هم ممکنه دلایل زیادی داشته باشه. باید کد رو دید تا بشه نظری داد.


من در مورد سوال دوم فکر کنم باید اینو بزنید تا فرم بسته شه bj1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

این متد برای اینه که تعین کنیم در صورت کلیک بر روی دکمه ی بستن پنجره (دکمه ی ضربدر) چه عملی انجام بشه. یعنی خود متد برای بستن فرم نیست.

M0TR!X
یک شنبه 07 خرداد 1391, 00:50 صبح
سلام.

این کل پروِژه.لطفا این دو مورد رو درست کنید

spiderman200700
یک شنبه 07 خرداد 1391, 01:15 صبح
خدمت شما دوست عزیز

M0TR!X
چهارشنبه 10 خرداد 1391, 15:02 عصر
سلام.


1ـنمیشه اینترفیس رو سراسری تعریف کرد ؟ من statement و connection رو میخوام سراسری تغریف کنم ! ارور میده

2ـ میخوام یه مقدار(شماره دانشجویی) رو بگیرم و داخل دیتابیس سرچ کنم. مقدار رو گرفتم چطوری داخل دیتابیس سرچ کنم ؟

spiderman200700
چهارشنبه 10 خرداد 1391, 15:39 عصر
برای اینکه پنجره در جای دلخواه باز بشه باید با setLocation جاشو تعیین کنی.مثلا اینطوری:
setLocation(400, 450);



نمیشه اینترفیس رو سراسری تعریف کرد ؟

منظورت از اینترفیس چیه؟





من statement و connection رو میخوام سراسری تغریف کنم ! ارور میده

میشه. باید دید Error چیه.

M0TR!X
چهارشنبه 10 خرداد 1391, 15:50 عصر
سلام.

فرق bounds و setlocation چیه ؟ من با bounds درست کردم الان وسط صفحه میوفته !


منظورم از اینترفیس همون stetatment و connection هستن دیگه.میخوام سراسری تعریف کنم هر جا خواستم ازشون استفاده کنم.وقتی تعریف میکنم ارور نمیده.ولی وقتی میخوام استفاده کنم ارور میده میگه تعریف کن

! مثلا :


Statement st;
Connection cnn;

اینجوری سراسری تعریف میکنم.بعد که میخوام اینجوری استفاده کنم :


cnn=DriverManager.getConnection(url,"root", "root");
St=cnn.createStatement()

میگه st و cnn رو به صورت local تعریف کن !

spiderman200700
چهارشنبه 10 خرداد 1391, 16:13 عصر
با setBounds میشه هم size هم Location رو با هم set کرد.
stetatment و connection رو هم میشه سراسری تعریف کرد. حالا برای شما چرا نمیشه نمیدونم.

M0TR!X
چهارشنبه 10 خرداد 1391, 17:06 عصر
سلام.

1ـ الان یه مشکلی دارم اینکه که من چند تا JFrame دارم و توی هر کدوم من باید به دیتابیس وصل بشم ! منطقی نیست توی هر کدوم بیام 3 تا کار تکراری رو انجام بدم من این سه کا رو توی هر کدوم میکنم : درست کردن statement و connection و ایجاد یک متغییر url برای وصل شدن به دیتابیس. یه کار کاملا تکراری.خواستم یه کلاس بنویسم واسش که دیگه هی این تیکه رو تکرار نکنم نتونستم. چطوری یه کلاس واسه این سه تا بنویسم و چطوری استفاده کنم ازشون ؟

2ـ یه بخش دارم شماره دانشجوی رو میزنه و فر مورد نظر حذف میشه میخوام یه پیغام بزارم که ایا مطمعا هستید ؟ اگه بله رو زد خذف بشه ! aباید از کدوم کلاس و کدوم متد استفاده کنم ؟ JOptionpane ؟؟

spiderman200700
چهارشنبه 10 خرداد 1391, 17:30 عصر
در مورد سوال اولت به روش ها مختلفی میتونی این کار رو بکنی.
مثلا میتونی یه کلاس بنویسی که برای هر کدام از کار های درج و حذف و بروزرسانی یه متد داشته باشه به این طریق که query رو به صورت String بگیره و خودش اتصال رو انجام بده کار مورد نظر رو انجام بده و اتصال رو ببنده.

در مورد سوال دوم ، هم میتونی از JOptionpane استفاده کنی، هم میتونی خودت یه JDialog بنویسی که این کار رو انجام بده.

M0TR!X
چهارشنبه 10 خرداد 1391, 18:41 عصر
JOptionPane استفاده میکنم ولی ارور میده . به این صورت استفاده میکنم !

JOptionPane.showConfirmDialog(rootPane,"hi",JOptionPane.YES_NO_OPTION);


درسته ؟ میزنم ارور میده !

spiderman200700
چهارشنبه 10 خرداد 1391, 18:54 عصر
اینطوری بنویس:
JOptionPane.showConfirmDialog( null , "Yes or No ?", "Hi", JOptionPane.YES_NO_OPTION);

M0TR!X
پنج شنبه 11 خرداد 1391, 16:52 عصر
سلام.

تو بخش ادیت به مشکل خوردم ! کاربر شماره دانشجویی رو وارد میکنه که متغییر value_edit نگه میداره و برنامه میاد از دیتابیس سرچ میکنه(ستون stucode) نتیجه رو توی jtextfind نشون میده.کدی که نوشتم براش :


ResultSet rs=st.executeQuery("select * from record where stucode LIKE 'value_edit'");
rs.last();
int row=rs.getRow();
rs.beforeFirst();
String[][] data=new String[row][6];
int i=0;
while(rs.next()){
data[0][0]=rs.getString("name");
data[0][1]=rs.getString("lastname");
data[0][2]=rs.getString("fathersname");
data[0][3]=rs.getString("idcard");
data[0][4]=rs.getString("email");
data[0][5]=rs.getString("stucode");
i++;
}
txtname.setText(data[0][0]);


اخرین خط رو نگا کنید خواستم یه خونه از ارایه رو بریزم توی Jtextfild ولی ارور میده که :

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0

مشکل چیه ؟ارایه سر ریز میکنه چرا

spiderman200700
پنج شنبه 11 خرداد 1391, 19:51 عصر
اینطوری بنویسی فکر کنم مشکل حل میشه:
ResultSet rs = st.executeQuery("select count(*) from record where stucode LIKE 'value_edit'");
rs.next();
String[][] data = new String[rs.getInt(1)][6];
ResultSet rs = st.executeQuery("select * from record where stucode LIKE 'value_edit'");
int i = 0;
while (rs.next()) {
data[0][0] = rs.getString("name");
data[0][1] = rs.getString("lastname");
data[0][2] = rs.getString("fathersname");
data[0][3] = rs.getString("idcard");
data[0][4] = rs.getString("email");
data[0][5] = rs.getString("stucode");
i++;
}
txtname.setText(data[0][0]);

M0TR!X
دوشنبه 15 خرداد 1391, 16:50 عصر
سلام.

بلاخره پروژه تموم شد !!! ولی خدا وکیلی پروژه خلی تاثیر داره تو یادگیری !

الان پروژه من کامل جواب میده و کار میکنه.

فقط میخوام یکم مهندسی تر بکنمش ! کدهاش رو :d

این سوال رو یه بار هم پرسیدم جواب دادی.ولی نتونستم بنویسم

یه مشکلی که هنوز حل نشده اینه که برای اتصال به دیتابیس خواستم یه کلاس بنویسم هر کاری کردم نشد ! مجبورا توی هر JFrame یه بار کدهای مربوط به وصل شدن رو نوشتم ! یعنی 4 خط کد توی چهار جا تکرار شده اینو چطوری توی یه کلاس بنویسم و هر جا که نیاز بود ابجکت سازی کنم ؟

spiderman200700
دوشنبه 15 خرداد 1391, 19:08 عصر
خداقوت :لبخندساده:
کلا تو هر کاری درگیری واقعی با ان کار بهترین روش یادگیریه.
حالا کدهایی که مربوط به اتصال و استفاده از دیتا بیس هست رو اینجا بذار تا بگم چیکارش کنی. منظورم اوناییه که میگی تکرار شده.

M0TR!X
سه شنبه 16 خرداد 1391, 00:17 صبح
سلام.

دمت گرم.



String url="jdbc:mysql://localhost:3306/information_record";
Connection cnn;
cnn = DriverManager.getConnection(url,"root","root");
Statement st=cnn.createStatement();

spiderman200700
سه شنبه 16 خرداد 1391, 14:01 عصر
این کلاس رو به پروژت اضافه کن:

import java.sql.*;

public class DBModel {

private final static String url = "jdbc:mysql://localhost:3306/information_record";

public static ResultSet executeQuery(String query) {
ResultSet rs = null;
Connection cnn = null;
try {
cnn = DriverManager.getConnection(url, "root", "root");
Statement st = cnn.createStatement();
rs = st.executeQuery(query);
} catch (SQLException ex) {
ex.printStackTrace();
return null;
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
}

if (cnn != null) {
if (cnn != null) {
try {
cnn.close();
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
}
}
}
return rs;
}

public static boolean execute(String query) {
Connection cnn = null;
Statement st = null;
boolean result = false;
try {
cnn = DriverManager.getConnection(url, "root", "root");
st = cnn.createStatement();
result = st.execute(query);
} catch (SQLException ex) {
ex.printStackTrace();
return false;
} finally {
if (cnn != null) {
if (cnn != null) {
try {
cnn.close();
} catch (SQLException ex) {
ex.printStackTrace();
return false;
}
}
}
}
return result;
}
}

بعدش هر جا که خواستی روی دیتابیس insert و update و delete انجام بدی، از متد execute و هر جا که خواستی روی دیتابیس select انجام بدی، از متد executeQuery استفاده کن.
همونطور که خودت میدونی چون متد ها startic هستن ، دیگه نیازی نیست از کلاس شی بسازی. مثلا اینطوری:

boolean r=DBModel.execute("insert into table(id,name) values(1,'jamshid')");
ResultSet rs=DBModel.executeQuery("select * from table");

yegane8
سه شنبه 16 خرداد 1391, 18:11 عصر
سلام.

دمت گرم.



String url="jdbc:mysql://localhost:3306/information_record";
Connection cnn;
cnn = DriverManager.getConnection(url,"root","root");
Statement st=cnn.createStatement();

سلام

من برای این مشکل این کارو کردم این ۴ تا خط رو تو کلاس main نوشتم بعد کلاس‌های دیگه برنامه رو subclass کلاس main کردم جواب داد

M0TR!X
سه شنبه 16 خرداد 1391, 23:11 عصر
سلام.

من الان این پروژه رو bulid کنم ببرم پیش استاد باید انجا یه دیتابیس و جدول و ستونهایی که توی برنامه استفاده کردم رو بسازم دیگه ؟

javadmaxx
چهارشنبه 17 خرداد 1391, 00:38 صبح
سلام . منم پروژه دارم 5 شنبه ساعت 9 صبحم باید ارائه بدم ارورای زیادی می ده هر کاری ام می کنم رفع نمیشه . البته خیلی مبتدیم و زیاد بلد نیستم . اگه کسی بتونه تا فردا کمکم کنه ممنون می شم . برنامه رو برام C++‎ نوشتن اگه کسی بتونه از رو اون برگردونه که خوبه . جاواشم هست ولی ارور زیاد داره . تو رو خدا کمک کنید

spiderman200700
چهارشنبه 17 خرداد 1391, 01:02 صبح
سلام.

من الان این پروژه رو bulid کنم ببرم پیش استاد باید انجا یه دیتابیس و جدول و ستونهایی که توی برنامه استفاده کردم رو بسازم دیگه ؟

اگه داخل پروژت برای ساخت جدول ها کد ننوشته باشی، بله. باید اونجا اول دیتابیس و جدول رو ایجاد کنی بعد پروژه رو Run کنی.

spiderman200700
چهارشنبه 17 خرداد 1391, 01:06 صبح
سلام . منم پروژه دارم 5 شنبه ساعت 9 صبحم باید ارائه بدم ارورای زیادی می ده هر کاری ام می کنم رفع نمیشه . البته خیلی مبتدیم و زیاد بلد نیستم . اگه کسی بتونه تا فردا کمکم کنه ممنون می شم . برنامه رو برام C++‎ نوشتن اگه کسی بتونه از رو اون برگردونه که خوبه . جاواشم هست ولی ارور زیاد داره . تو رو خدا کمک کنید


این برای سوال اول:
import java.util.Scanner;
public class LinearSearch {

public static void main(String args[]) {
int n, j=-1;
int array[] = {5, 10, 22, 32, 99, 101, 45, 86, 103, 12, 11};
Scanner sc = new Scanner(System.in);
System.out.println("عدد مورد نظر برای جستجو را وارد کنید");
n = sc.nextInt();
for(int i=0;i<array.length;i++){
if(array[i]==n){
j=i;
}
}
if (j > -1) {
System.out.println("اندیس ارایه مورد نظر:" + j);
} else {
System.out.println("عدد مورد نظر در ارایه وجود ندارد");
}
}


}

اینم برای سوال دوم :
import java.util.Scanner;
public class LinearSearch {

public static void main(String args[]) {
int i, n, j;
int array[] = {5, 10, 22, 32, 99, 101, 45, 86, 103, 12, 11};
Scanner sc = new Scanner(System.in);
System.out.println("عدد مورد نظر برای جستجو را وارد کنید");
n = sc.nextInt();
j = linearSearch(array, n);
if (j > -1) {
System.out.println("اندیس ارایه مورد نظر:" + j);
} else {
System.out.println("عدد مورد نظر در ارایه وجود ندارد");
}
}

public static int linearSearch(int list[], int k) {

for(int i=0;i<list.length;i++){
if(list[i]==k){
return i;
}
}
return -1;
}
}

javadmaxx
چهارشنبه 17 خرداد 1391, 01:47 صبح
می گم امکانش هست که برنامه رو یه توضیخ بدین ؟ می تونید بیاین تیم اسپیک یا یاهو یا ... یه جا که بشه حرف زد که توضیح بدین یه چندتا سوال ام دارم . خیلی ممنون می شم اگه بتونید یه 5 مین وقت بذارین . اگه ام نه که ممنونم که همینا هم با این سرعت بهم جواب دادین . دمتون گرم

yegane8
پنج شنبه 18 خرداد 1391, 15:48 عصر
اگه داخل پروژت برای ساخت جدول ها کد ننوشته باشی، بله. باید اونجا اول دیتابیس و جدول رو ایجاد کنی بعد پروژه رو Run کنی.

سلام

چطوری می‌شه این کار رو انجام داد چون اطلاعات تو database من خیلی‌ زیاده و امکانش نیست که پیش استاد اون هارو ایجاد کنم

spiderman200700
پنج شنبه 18 خرداد 1391, 17:04 عصر
همونطور که با متد Execute کارهایی مثل select, insert , update , delete رو انجام میدی. با همین متد هم میتونی دستورات مختلف sql برای ایجاد دیتابیس ، ایجاد جدول ، ایجاد تریگر ، پروسیجر و ... رو انجام بدی.
فقط باید sql رو خوب بلد باشی.
البته فکر نمیکنم در پروژه هایی که شما دارین انجام میدین ، جز ایجاد دیتابیس و جدول ، نیاز به کار دیگه ای داشته باشید. کدهای این کارا رو هم که معمولا همه بلدن. پس حتما شما هم بلدید.

مثلا برای ایجاد یه جدول توی دیتابیس با یه فیلد id و یه فیلد name باید اینو بنویسید:
st.execute("create table queue(id int primary key ,name nvarchar(255))");

باید کد هات رو توی متد سازنده بنویسی که با اجرای پروژه اول دیتابیس و جدول ها رو انجام بده.

yegane8
پنج شنبه 18 خرداد 1391, 21:54 عصر
همونطور که با متد Execute کارهایی مثل select, insert , update , delete رو انجام میدی. با همین متد هم میتونی دستورات مختلف sql برای ایجاد دیتابیس ، ایجاد جدول ، ایجاد تریگر ، پروسیجر و ... رو انجام بدی.
فقط باید sql رو خوب بلد باشی.
البته فکر نمیکنم در پروژه هایی که شما دارین انجام میدین ، جز ایجاد دیتابیس و جدول ، نیاز به کار دیگه ای داشته باشید. کدهای این کارا رو هم که معمولا همه بلدن. پس حتما شما هم بلدید.

مثلا برای ایجاد یه جدول توی دیتابیس با یه فیلد id و یه فیلد name باید اینو بنویسید:
st.execute("create table queue(id int primary key ,name nvarchar(255))");

باید کد هات رو توی متد سازنده بنویسی که با اجرای پروژه اول دیتابیس و جدول ها رو انجام بده.

نه من هنوز بلد نیستم چون این درس مال ترم های بالاتره و خودم تصمیم گرفتم که پروژه ام رو با database بنویسم
من با access کار میکنم امکان ایجاد جدول در این database هم وجود دارد؟

spiderman200700
پنج شنبه 18 خرداد 1391, 23:33 عصر
بله. با همین روشی که گفتم میتونید درست کنید.
فقط باید یه کمی از دستورات sql رو یاد بگیرید.