الزيارة التاريخية للمدينة المنورة
أردت وبقوة توثيق هذه الزيارة لأنها لن تتكرر أبداً ومن شدة عجبي من هذه الزيارة أردت مشاركتكم بها لتكون موثقة من الألف إلى الياء. في صباح يوم الإثنين كان لي أن أختار بين شيئين وهما زيارة المدينة المنورة مع بعض من شباب جوالة جامعة الملك فهد للبترول والمعادن وهي رحلة ختامية رسمية من الجامعة تكون نهاية كل ترم غالباً وبين أن أقضي حاجة لا أريد ان أذكر تفاصيلها لكنها مهمة ومقدمة عن الزيارة لكنها لم تتيسر ولهذا بقي الخيار الوحيد وهو الذهاب للمدينة وهكا بدأت الأحداث.
من المفترض أن يكون عندي حجز مؤكد من الدمام إلى جدة الساعة 6 مساء ثم إلى المدينة وذلك يوم الإثنين وعلى هذا الأساس قمت بترتيب أوضاعي واستعديت للسفر وقمت بإلغاء باقي حجوزاتي ومنها حجز مؤكد لجازان.
في ظهر نفس اليوم وبعد ذهاب الشباب على رحلة الساعة 12 ظهراً اكتشفت بأن حجزي في قائمة الإنتظار وحصل بسبب سوء فهم واضطررت للذهاب للمطار مبكراً على أساس أن أجد حجزاً مع ركاب الإنتظار وهيهات أن يحصل ذلك! لكن ذهبت لعلي أكون مخطئاً هذه المرة في تقديري. لكن حصل ما هو متوقع وكان أمامي 55 شخص لم يستطع السفر منهم إلا أربعة أو خمسة فتخلصت من فكرة الإنتظار للرحلة القادمة لأنها مستحيلة!
اضطررت للبحث عن حل عاجل ووجدت حلاً مناسباً غير مضمون وهو أن أكون في قائمة الإنتظار لطيران ناس على رحلة الساعة 8 مساء ولهذا قمت بتغير حجوزات المواصلة من جدة إلى المدينة للتتناسب مع الحل الجديد ولعلمكم كانت إنتظار ولم تتأكد! كنت الرابع في الترتيب على ناس وارتفعت معنوياتي وأوهمت نفسي بأن الذهاب إلى جدة مضمون وإذا وصلت هناك ربي يحلها. لكن على غير العادة ولأول مرة إلتزم الشعب السعودي بالمواعيد واستخرجت بطاقات صعود الطائرة جميعها قاتلاً أي أمل لأي شخص بركوب الطائرة! فما كان لي إلا أن أجلس على كرسي وافتح اللابتوب وأحاول البحث عن حلول أخرى.
كان لي خيارات متعددة وهي محاولة الذهاب إلى المدينة أو الذهاب إلى جازان لأحرم نفسي من متعة زيارة الحرم. اتصلت على شركات الطيران الثلاث محاولاً الحصول على أي أي أمل من أي مدينة كانت ولم أجد سوى حجز انتظار لجازان على درجة رجال الأعمال يوم الجمعة وحجز إنتظار على نفس الدرجة بعد اسبوع للمدينة المنورة. وبهذا أغلقت جميع الأبواب ولم يبقى إلا السفر براً وهذا الشئ الوحيد الذي لن أقوم به!
سيبدأ هنا الحماس! قمت بشراء كوباً من القهوة وبدأت التفكير خارج الصندوق وبتحليل الوضوع وإنطلاقاً من مبدأ أن مطار المدينة هو مطار دولي بدأت في وضع الخطة Y! والتي استخدمت فيها مبدأين أساسيين وهما “أطول الطرق أسرعها” و “أين إذنك يا جحا!”
وجدت حجزاً من البحرين إلى الشارقة ومن الشارقة إلى المدينة بسعر رائع 900 ريال على الخطوط العربية وسأصل إلى المدينة المنورة في وقت قياسي الساعة 4 عصراً من اليوم التالي – الفكرة خرجت للنور الساعة 10:30 م في الدور الثاني من المطار – وبعد إستشارات وجمع المبلغ واستعدادي ذهنياً ونفسياً للحجز، اقفلت رحلة البحرين الشارقة موجهة ضربة قاضية جديدة!
لم أستيقظ من الصدمة إلا بعد ساعة ونصف قضيتها متصوراً إجازة تعيسة لترم منهك حيث أني فقدت الأمل تماماً بالخروج من الشرقية بوسيلة جيدة.
استهديت بالله وصليت ركعتين طالباً فيها الفرج وقمت بإعادة تحليل الوضوع في المصلى ووجدت أني أستطيع تنفيذ الخطة بإيجاد وسيلة أخرى للسفر إلى الإمارات بما أن الرحلة من الشارقة إلى المدينة ما زالت متوفرة ومضمونة لخلوها من الركاب.
بحثت في كل الخيارات المتوفرة ولم أجد رحلة مناسبة إما لتوقيتها الغير مناسب أو لإرتفاع سعر الرحلة وكخيار يائس ذهبت إلى جوجل وكتبت ” الطيران من البحرين إلى دبي” فوجدت موضوعاً في منتدى المسافرون العرب يسأل عن أرخص خطوط طيران للإمارات من البحرين وكان في الرد الرابع مدحاً لشركة تسمى “Fly Dubai” وهي المرة الأولى التي أسمع بها فذهبت على عجل للموقع وبحثت عن الرحلات وكانت المفاجئة التي أعادت لي الحياة! رحلة من البحرين إلى دبي بسعر مناسب جداً وبوقت أنسب من المناسب والحمد لله فحجزت على عجل التذاكر منهم لكي لا أعيد الغلطة بالتأخر واشتريت التذاكر من طيران العربية لرحلة المواصلة وبهذا أصبح خط السير الجديد الظهران – البحرين – دبي – الشارقة – المدينة وقد فزع لي في رحلة الظهران البحرين أخي عمرو فيرق وقام بإيصالي الساعنة 4:30 صباحاً لمطار البحرين وقد قطعنا الجوازات في 7 دقائق ولم نقف في طابور لأول مرة في التاريخ! وهذه هي الخطة Z للرحلة.
وصلت لمطار البحرين وقمت بأخذ بطاقة صعود الطائرة وأقلعت الطائرة على الوقت ولله الحمد ووصلت إلى دبي بعد ساعة ونصف. خرجت من مطار دبي إلى مطار الشارقة باستخدام لوموزين وكان قائد الرحلة أخي معاوية تاج من السودان الشقيق وتبادلنا أحاديث شيقة! ولم تأحد هذه الرحلة إلا 40 دقيقة كلفتني 100 درهم بسبب الزحام.
دخلت مطار الشارقة وأخذت بطاقات صعود الطائرة وذهبت إلى COSTA لأخذ فنجان من القهوة ولأكتب هذه السطور.
أكمل لكم القصة. دخلت إلى صالة المغادرة ووجدتها مليئة بأناس من الجالية الهندية ولم أجد مكاناً مناسباً لأقضي فيه 3 ساعات وأجد فيه مقبس للكهرباء لأشحن بها أجهزتي. وبعد السؤال وجدت قاعة لفئة VIP حيث توفر انترنت وجلسات مريحة ومأكل ومشأرب من كل صنف ونوع وتوصيل خاص للطائرة بمقابل 100 درهم. وبعد التفكير قبلت بالعرض لحاجتي ولراحتي فقد قاسيت الأمرين ولم أنم من يومين.
هأ أنا هنا أكتب هذه السطور وسأضعها في مدونتي وسأدعمها لاحقاً بمقاطع فيديو شيقة ولا تفوت.
إلى لقاء قريب في المدينة المنورة بإذن الله!
تحديث: ملف الفيديو الخاص بالرحلة
زيادة الإنتاجية في إستخدام الحاسوب
الهدف: إيجاد وسيلة لزيادة الإنتاجية أثناء إستخدامي لجهاز الحاسب بحيث أستطيع معرفة الوقت الذي أمضيه في عمل وظائف محددة كمشاهدة عرض تقديمي، إستخدام البريد الإلكتروني ومتابعة الشبكات الإجتماعية.
المطلوب: خدمة ويب مجانية تتيح لي تحقيق هذا الهدف دون تدخل مباشر مني وتوفر لي رسوم بيانية وإحصائيات واضحة عن الوقت الذي أمضيه وتعمل على جميع أنظمة التشغيل التي أستخدمها – ماك وويندوز – مع دعم للبروكسي بحكم أني أعمل معظم الوقت داخل الجامعة.
النتيجة: Rescue Time تطبيق ويب يوفر خدمة مجانية محدودة المميزات بحيث يقوم بجمع معلومات عن نشاطاتك على الحاسوب بتطبيق صغير جداً ويقوم بإرسالها للويب وتحليلها وإظهار النتائج لك بطريقة مناسبة حسب الأيام، الأسابيع، الشهور والسنة.
كمية الإحصائيات والتفاصيل مذهلة وتستطيع منها الحكم على وقتك الذي تمضيه وتستطيع أن تقرر مدى حاجتك لتغير بعض عاداتك الحاسوبية
الترم الدراسي 091

اليوم سيكون آخر يوم في الترم الدراسي 091 وسينتهي بحلوه ومره وسنبدأ الإختبارات النهائية صباح السبت القادم بإذن الله.
تخلل هذا الترم بعض الفعاليات التي حضرتها في كل من دبي والرياص حيث أني حضرت معرص جايتكس في دبي وحضرت الندوة الثانية للحاسب واللغة العربية في الرياض وكلها كانت في شهر أكتوبر.
كتبت جريدة اليوم مقالُ عني والشكر موصول لعاصم الغامدي “معدن”.
عملت في هذا الترم الدراسي مع فريق رائع في مادة SWE205 وقمنا بتسليم المشروع النهائي في الوقت وبجودة عالية وسأتحدث عن ذلك في موضوع منفصل لاحقاً.
إنضممت هذا الترم إلى مجموعة PSD Groups وموقع المجموعة يحتوي على كل ما تريدون معرفته
الترم القادم غير واضح المعالم بعد لكن أحاول أن أجعله ترماُ ملياُ بالإنجازات وعلى أصعدة مختلفة جديدة.
آآه نسيت! فقد فقدت جهاز الماك بسبب حادث في التكيف! والتفاصيل طويلة ولا أريد الخوض فيها وقد تبعه الهارد دسك الذي يحتوي على النسخ الإحتياطية الوحيدة وبهذا فقدت كل ما أملكه من ملفات وعدت إلى نقطة الصفر. لذلك بدأت أستخدم Drop Box كحل مثالي لعمل نسخ إحتياطية لملفاتي ومزامنتها مع باقي أجهزتي دون تدخل مباشر مني:) وأنصح الجميع بتجربته.
هذا ما دار في جعبتي. أراكم لا حقاً
تشغيل المواقع الفلاشية كاليوتيوب عن طريق فايرفوكس دون الحاجة لتنصيب مشغل الفلاش

فايرفوكس Firefox هو واحد من المتصفحات التي أعشقها ولا أتخلى عن استعمالها أبداً. وقد قامت كلية الحاسب الآلي بجامعة الملك فهد للبترول والمعادن – أخيراً – بتنصيب الفايرفوكس على أجهزتها. وكما هو معروف بالجامعة فإن الدخول للأجهزة يتم عن طريق حساب معطى لكل طالب ولا توجد له صلاحيات المدير ليسمح له بتنصيب البرامج وهذا يشمل إضافات الفايرفوكس ومنهاإصافة تشغيل الملفات الفلاشية. وبعد البحث في جوجل وجدت طريقة تعمل من فايرفوكس 2 وأعلى وتعمل أيضاً علي الفايرفوكس المتنقل المعروف بـ Firefox, Portable Edition
الطريقة كالتالي:
- قم بتحميل هذه الملف flashplayer-win وقم بفك الضغط باستخدام أي برنامج لفك ضغط الملفات كـ Winrar أو Winzip وستجد الملف flashplayer.xpt والملف NPSWF32.dl
- فم بغتح مجلد يسمى %APPDATA% عن طريق إبدأ > تشغيل أو عن طريق الضغط على زري إبدأ و R ثم قم بكتابة %APPDATA% وسيظهر لك بعض المجلدات منها مجلد تحت الاسم Mozilla
- إذا لم تجد مجلد يسمى Plugins داخل المجلد Mozilla فقم بإنشائه وانسخ الملف flashplayer.xpt والملف NPSWF32.dl إلى Plugins
- قم بإعادة تشفيل الفايرفوكس.
- قم بالدخول على أي موقع يحتوي على فلاشات كاليوتيوب وستعمل الملفات معك
ICS 201 Final Project
عملت على هذا المشروع مدة 3 ساعات وقد كان في الأسبوع الأخير من الترم الصيفي 083
Design and implement a memory game. In this game you show the user a sequence of random integer numbers in the range of 0 to 99, and then ask him to type these umbers. Display how many he has remembered as a score. The level of game depends on how many numbers are there in the sequence. The duration of the display for the sequence is the speed. The user can adjust the level and the speed.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
public class project extends JFrame
{
Random generator = new Random();
int ran = 0;
int count = 1;
int score = 0;
String input = "";
String rand = "";
String theLevel = "Beginner";
String Speed = "3 Seconds";
int theSpeed = 3000;
Timer t;
JButton button = new JButton("Play");
JButton button1 = new JButton("Reset");
JLabel num = new JLabel("Press the button \"Play\" to play");
JLabel s = new JLabel("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
public project()
{
super("The Memory Game");
setSize(500,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout( ));
JMenu level = new JMenu("Level");
JMenuItem beginner = new JMenuItem("Beginner");
beginner.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
theLevel = "Beginner";
s.setText("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
}
});
level.add(beginner);
JMenuItem average = new JMenuItem("Average");
average.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
theLevel = "Average";
s.setText("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
}
});
level.add(average);
JMenuItem professional = new JMenuItem("Professional");
professional.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
theLevel = "Professional";
s.setText("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
}
});
level.add(professional);
JMenu speed = new JMenu("Speed");
JMenuItem three_sec = new JMenuItem("3 Seconds");
three_sec.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
theSpeed = 3000;
Speed = "3 Seconds";
s.setText("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
}
});
speed.add(three_sec);
JMenuItem six_sec = new JMenuItem("6 Seconds");
six_sec.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
theSpeed = 6000;
Speed = "6 Seconds";
s.setText("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
}
});
speed.add(six_sec);
JMenuItem ten_sec = new JMenuItem("10 Seconds");
ten_sec.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
theSpeed = 10000;
Speed = "10 Seconds";
s.setText("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
}
});
speed.add(ten_sec);
JMenu about = new JMenu("About");
JMenuItem aboutme = new JMenuItem("About");
aboutme.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
JOptionPane.showMessageDialog(null, "This program developed by:\nEmad Daghreri\nemad.daghreri@gmail.com","alert" , JOptionPane.ERROR_MESSAGE);
}
});
about.add(aboutme);
JMenuBar bar = new JMenuBar( );
bar.add(level);
bar.add(speed);
bar.add(about);
setJMenuBar(bar);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout (4,1));
add(mainPanel,BorderLayout.CENTER);
mainPanel.setBackground(Color.WHITE);
mainPanel.add(num);
mainPanel.add(s);
mainPanel.add(button);
mainPanel.add(button1);
setVisible(true);
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
if (theLevel.equals("Beginner"))
{
for(int i = 0; i<2;i++)
{
button.setVisible(false);
button1.setVisible(false);
rand = rand + generator.nextInt(99);
num.setText("The number is: "+rand);
}
t = new Timer(theSpeed, new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
num.setText("");
input=JOptionPane.showInputDialog("Pleas enter the number: ");
if(input.equalsIgnoreCase(rand))
{
score ++;
s.setText("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
num.setText("Nice !");
} else num.setText("Sorry, try again!");
button.setVisible(!false);
button1.setVisible(!false);
rand = "";
t.stop();
}
});
t.start();
}
if (theLevel.equals("Average"))
{
for(int i = 0; i<3;i++)
{
button.setVisible(false);
button1.setVisible(false);
rand = rand + generator.nextInt(99);
num.setText("The number is: "+rand);
}
t = new Timer(theSpeed, new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
num.setText("");
input=JOptionPane.showInputDialog("Pleas enter the number: ");
if(input.equalsIgnoreCase(rand))
{
score ++;
s.setText("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
num.setText("Nice !");
} else num.setText("Sorry, try again!");
button.setVisible(!false);
button1.setVisible(!false);
rand = "";
t.stop();
}
});
t.start();
}
if (theLevel.equals("Professional"))
{
for(int i = 0; i<4;i++)
{
button.setVisible(false);
button1.setVisible(false);
rand = rand + generator.nextInt(99);
num.setText("The number is: "+rand);
}
t = new Timer(theSpeed, new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
num.setText("");
input=JOptionPane.showInputDialog("Pleas enter the number: ");
if(input.equalsIgnoreCase(rand))
{
score ++;
s.setText("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
num.setText("Nice !");
} else num.setText("Sorry, try again!");
button.setVisible(!false);
button1.setVisible(!false);
rand = "";
t.stop();
}
});
t.start();
}
}
});
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
num.setText("Press the button \"Play\" to play");
score = 0;
theLevel = "Beginner";
Speed = "3 Seconds";
theSpeed = 3000;
s.setText("You score is: " + score + "| Your Level is: " + theLevel + "| your Speed is: " + Speed);
}
});
}
public static void main(String[]args)
{
new project();
}
}
ICS102 Final Project
ICS102Project.java
/*||| About The Code |||
* version 9.09 2009/6/7
************************/
/*|||||||||||||||| INDEX ||||||||||||||||
*Imports.
* Scanner.
* PrintWriter.
* JOptionPane.
*Public Class.
* Main Method.
* Accounts checker.
* Commands dialog.
* Dan Method.
* Ret Method.
* Add Method.
* Ava Method.
* Res Method.
******************************************/
// Imports.
import java.util.Scanner;
import java.io.*;
import javax.swing.*;
// End: Imports.
public class ICS102Project {
// Main Method.
public static void main(String[] args)throws Exception{
// Accounts checker.
Scanner Accounts=new Scanner(new File("DATA/account.txt")); //The file(account) contains users and passwords
String[] account=new String[100];
int g=0;
while(Accounts.hasNextLine()){
account[g]=Accounts.nextLine(); //Filling the array with the accounts, each cell will have user&password separated by (:)
g++;
}
Accounts.close();
//A welcome dialog
JOptionPane.showMessageDialog(null,"Welcome to the Airline Reservation System\nA project");
String input=null,read=null,user=null;
int check=0;
// The do-while will check if the user and password are available & comform
do{
int userCheck=0;
input=JOptionPane.showInputDialog("Administrator Control Panel\n\nPleas enter the username: ");
for(int i=0; i<g; i++){
read=account[i];
user=read.substring(0,read.indexOf(":")); //because the user and the password are in one line and separated by (:)
if(user.equals(input)){
userCheck=1;
break;
}
}
if(userCheck==1){
input=JOptionPane.showInputDialog("Administrator Control Panel\n\nEnter Your Password: ");
if((read.substring(read.indexOf(":")+1)).equals(input))
break;
else{
JOptionPane.showMessageDialog(null,"Sorry\nWrong Password !");
check++;
}
}
else{
JOptionPane.showMessageDialog(null,"Sorry\nWrong Username !");
check++;
}
// As a seafty, the system will close after three wrong inputs or three wrong matches...
}while(check!=3);
if(check==3){
JOptionPane.showMessageDialog(null,"You've exeeded the limit!\nPlease contact our support team!");
System.exit(0);
}
// Emd: Accounts checker.
// Commands & commands dialog.
String danInfo=null;
input=JOptionPane.showInputDialog("Administrator Control Panel\n\nEnter a command: ");
String command=null;
String data=null;
// the command ( q! ) will end the program
while(!(input.equals("q!"))){
// To avoid getting wrong input less than 3 digits
if(input.length()>3)
{
command=input.substring(0,3);
data=input.substring(4);
if(command.equalsIgnoreCase("dan")){
// airport information
danInfo=dan(data);
JOptionPane.showMessageDialog(null,"Administrator Control Panel\n\nAirport Code: "+danInfo);
}
else if(command.equalsIgnoreCase("ret")){
// return a reservation information
ret(data);
}
else if(command.equalsIgnoreCase("add")){
// add a new flight or flights
add(input);
}
else if(command.equalsIgnoreCase("ava")){
// check for availability of a flight
ava(data);
}
else if(command.equalsIgnoreCase("res")){
// making new reservation...
res(data);
}
else if(command.equalsIgnoreCase("tkt")){
// printing a tkt data...
Ticket.getTKT(data);
}
else if(command.equalsIgnoreCase("hlp")){
// printing a tkt data...
JOptionPane.showMessageDialog(null,"Enter the command like\ndan jed\n3 leaters for the command then space rhen the data\n:)");
}
else
JOptionPane.showMessageDialog(null,"Administrator Control Panel\n\nNot valid command !\nEnter \"hlp me\" for Help");
}
else
JOptionPane.showMessageDialog(null,"Administrator Control Panel\n\nNot valid command !\nEnter \"hlp me\" for Help");
input=JOptionPane.showInputDialog("Administrator Control Panel\n\nEnter a command: ");
}
JOptionPane.showMessageDialog(null,"Administrator Control Panel\n\nYou loged of !\nThank You
");
// End: Commands & commands dialog.
}
// End: Main Method.
// Dan Method.
public static String dan(String cityName)throws Exception{
// The method dan will lock for an airport information using the code for a city.
String line=null;
Scanner in=new Scanner(new File("DATA/iata-airport-codes.txt"));
while(in.hasNextLine()){
line=in.nextLine();
if((line.toLowerCase()).contains(cityName.toLowerCase())){
in.close();
return line;
}
}
return "City not found, check the spelling!";
}
// End: Dan Method.
// Ret Method.
public static void ret(String fileName)throws Exception{
// Thw method ret will return a valid reservation information using reservation number.
String line=null;
String infoFull="\n";
Scanner out=new Scanner(new File("DATA/booking/"+fileName+".txt"));
while(out.hasNextLine()){
line=out.nextLine();
infoFull = infoFull + line + "\n";
}
JOptionPane.showMessageDialog(null,"Administrator Control Panel\n\nInformation for the reservation "+fileName+" are:"+infoFull);
out.close();
}
// End: Ret Method.
// Add Method.
public static void add(String flight)throws Exception{
// This method will add new flights to the file ( DATA/availability.txt ).
String line=null;
// To mack sure that all the old data in availability.txt saved to a temp. file while adding new flights
Scanner out=new Scanner(new File("DATA/availability.txt"));
PrintWriter in1=new PrintWriter(new File("DATA/copy.txt"));
while(out.hasNextLine()){
line=out.nextLine();
in1.println(line);
}
in1.close();
out.close();
// To return the copied flights to the origin file ( DATA/availability.text ) then to add new flights..
Scanner out1=new Scanner(new File("DATA/copy.txt"));
PrintWriter in=new PrintWriter(new File("DATA/availability.txt"));
while(out1.hasNextLine()){
line=out1.nextLine();
in.println(line);
}
String month=(flight.substring(12,13)).toUpperCase()+(flight.substring(13,15)).toLowerCase();
String dep=(flight.substring(4,7)).toUpperCase();
String des=(flight.substring(7,10)).toUpperCase();
String fClass=(flight.substring(15,19)).toUpperCase();
String jClass=(flight.substring(19,23)).toUpperCase();
String yClass=(flight.substring(23)).toUpperCase();
if((flight.substring(10,12)).equals("**"))
// ** means the whole month ( 30 days = 30 flights ).
{
for(int i=1; i<=30; i++){
// To add a digit to the numbers less than 10..
if(i<10)
in.print("0");
in.println(i+" "+month+" "+dep+" "+des+" "+fClass+" "+jClass+" "+yClass);
}
}
else
in.println(flight.substring(10,12)+" "+month+" "+dep+" "+des+" "+fClass+" "+jClass+" "+yClass);
JOptionPane.showMessageDialog(null,"Administrator Control Panel\n\nThe Flight:\n" +flight.substring(10,12)+" "+month+" "+dep+" "+des+" "+fClass+" "+jClass+" "+yClass + "\n" + "Added to DATA");
out1.close();
in.close();
}
// End: Add Method.
// Ava Method.
public static String ava(String check)throws Exception{
// To check the availability of a flight.
Scanner in=new Scanner(new File("DATA/availability.txt"));
int count=1;
String line=null;
check=check.substring(0,2)+" "+check.substring(2,5)+" "+check.substring(5,8)+" "+check.substring(8);
while(in.hasNextLine()){
line=((in.nextLine()).toLowerCase());
if(line.contains(check.toLowerCase())){
JOptionPane.showMessageDialog(null,"Administrator Control Panel\n\nSearch Result:\n" + line.toUpperCase());
return line.toUpperCase();
}
}
JOptionPane.showMessageDialog(null,"Administrator Control Panel\n\nSorry, There is no available flight for\n" + check);
return "";
}
// End: Ava Method.
// Res Method.
public static void res(String flight)throws Exception{
// To book a new reservation.. and add a passengers & make tickets for them...
String lastName=null;
String givenName=null;
int seat=Integer.parseInt(flight.substring(12,13));
// To check the availability of seats number
String classType=(flight.substring(13,14)).toUpperCase();
String comFlight=flight.substring(15)+"/";
String com2Flight=null;
String deleteFlight=ava(flight.substring(6,11)+flight.substring(0,6));
com2Flight=deleteFlight.substring(15);
int seats=Integer.parseInt(com2Flight.substring(com2Flight.indexOf(classType)-3,com2Flight.indexOf(classType)));
if(seats<seat){
JOptionPane.showMessageDialog(null,"Administrator Control Panel\n\nSorry, There is no seats available");
return;
}
seats-=seat;
String sseats=null;
if(seats<10)
sseats="00"+seats;
else if(seats<100)
sseats="0"+seats;
else
sseats=""+seats;
String newFlight=""+deleteFlight.substring(0,com2Flight.indexOf(classType)+12)+sseats+deleteFlight.substring(com2Flight.indexOf(classType)+15);
Scanner out=new Scanner(new File("DATA/availability.txt")); // After booking a new reservation,, here the file availability will be updated and seats of the flight will decrease..
PrintWriter in1=new PrintWriter(new File("DATA/copy.txt"));
String line=null;
while(out.hasNextLine()){
line=out.nextLine();
in1.println(line);
}
in1.close();
out.close();
Scanner out1=new Scanner(new File("DATA/copy.txt"));
PrintWriter in=new PrintWriter(new File("DATA/availability.txt"));
while(out1.hasNextLine()){
line=out1.nextLine();
if(line.equalsIgnoreCase(deleteFlight))
in.println(newFlight);
else
in.println(line);
}
in.close();
out1.close();
Scanner out2=new Scanner(new File("DATA/res_num.txt")); // To generate a new reservation number...
int num=out2.nextInt();
num++;
out2.close();
PrintWriter in2=new PrintWriter(new File("DATA/res_num.txt"));
in2.print(num);
in2.close();
String fileName=""+num;
PrintWriter in3=new PrintWriter(new File("DATA/booking/"+fileName+".txt"));
int price=Integer.parseInt(JOptionPane.showInputDialog("Administrator Control Panel\n\nEnter The Price of one ticket"));
in3.println("Departure city: "+(flight.substring(0,3)).toUpperCase());
in3.println("Destination city: "+(flight.substring(3,6)).toUpperCase());
in3.println("Day: "+flight.substring(6,8));
in3.println("Months: "+flight.substring(8,11));
in3.println("Year: 2010");// The program will be valid in 2010 because Saudi aielines will use my program for one year in 2010....<< nice comment
in3.println("Class: "+classType);
in3.println("Number of seats: "+seat);
String mobile=null;
String tktNum=null;
for(int i=1; i<=seat; i++){// to print the passengers one by one .. depends on seats number....
lastName=comFlight.substring(0,comFlight.indexOf(";"));
givenName=comFlight.substring(comFlight.indexOf(";")+1,comFlight.indexOf("/"));
mobile=JOptionPane.showInputDialog("Administrator Control Panel\n\nEnter passenger No."+i+" phone number: ");
tktNum="065210"+fileName+i+i;
Ticket p_data=new Ticket(givenName,mobile,fileName,tktNum,flight.substring(0,3).toUpperCase(),flight.substring(3,6).toUpperCase(),price);
Scanner ticketsInformation=new Scanner(new File("DATA/tkt.txt"));
String test1 = "";
String test2 = "";
while(ticketsInformation.hasNextLine()){
test1=ticketsInformation.nextLine();
if(test1.contains(tktNum)){
test2 = test2 + test1;
while(ticketsInformation.hasNextLine()){
test2 = test2 + "\n" + ticketsInformation.nextLine();
}
JOptionPane.showMessageDialog(null,"Administrator Control Panel\n\nTicket information\n" + test2);
in.close();
}
}
comFlight=comFlight.substring(comFlight.indexOf("/")+1);
in3.println("Passenger "+i+":");
in3.println("Last Name: "+lastName);
in3.println("Given Name: "+givenName);
}
in3.close();
}
// End: Res Method.
}
Ticket.java
/*||| About The Code |||
* version 5.07 2009/6/8
************************/
// Imports.
import java.util.Scanner;
import java.io.*;
import javax.swing.*;
// End: Imports.
public class Ticket {
// The attributes
private String passengerName;
private String mobile;
private String reservationNumber;
private String tktNumber;
private String departure;
private String destination;
private int price;
// the setters and the getters
public void setPassengerName(String passengerName){
this.passengerName=passengerName;
}
public String getPassengerName(){
return passengerName;
}
public void setMobile(String mobil){
this.mobile=mobile;
}
public String getMobile(){
return mobile;
}
public void setReservationNumber(String reservationNumber){
this.reservationNumber=reservationNumber;
}
public String getReservationNumber(){
return reservationNumber;
}
public void setTktNumber(String tktNumber){
this.tktNumber=tktNumber;
}
public String getTktNumber(){
return tktNumber;
}
public void setDeparture(String departure){
this.departure=departure;
}
public String getDeparture(){
return departure;
}
public void setDestination(String destination){
this.destination=destination;
}
public String getDestination(){
return destination;
}
public void setPrice(int price){
this.price=price;
}
public int getPrice(){
return price;
}
// This is the constructor which will take the attributes from the main method
public Ticket(String name,String phone,String resNum,String tktNum,String dep,String des,int pr)throws Exception{
passengerName=name;
mobile=phone;
reservationNumber=resNum;
tktNumber=tktNum;
departure=dep;
destination=des;
price=pr;
storeTKT();
// Calling the method to store it in the file ( DATA/tkt.txt)
}
// This method will store the attributes in a file
public void storeTKT()throws Exception{
// We need to print every thing in DATA/tkt.txt file into a copy then returning the data again.. this is how to update the file without deleting the old data..
Scanner out=new Scanner(new File("DATA/tkt.txt"));
PrintWriter in=new PrintWriter(new File("DATA/copyTKT.txt"));
String line=null;
while(out.hasNextLine()){
line=out.nextLine();
in.println(line);
}
in.close();
out.close();
Scanner out1=new Scanner(new File("DATA/copyTKT.txt"));
PrintWriter in1=new PrintWriter(new File("DATA/tkt.txt"));
while(out1.hasNextLine()){
line=out1.nextLine();
in1.println(line);
}
in1.println("eTKT Number: "+tktNumber);
in1.println("reservation Number: "+reservationNumber);
in1.println("Passenger Name: "+passengerName);
in1.println("Phone Number: "+mobile);
in1.println("Departure City: "+departure);
in1.println("Destination City: "+destination);
in1.println("Price: "+price+" SR");
in1.println("&&&&&&&&");//this will give us an easy way to separate the tkt's ...
in1.close();
out1.close();
}
// this method will take number of the tkt and give it to other method to print it..
public static void getTKT(String tktNum)throws Exception{
int check=0;
Scanner out=new Scanner(new File("DATA/tkt.txt"));
String line=null;
while(out.hasNextLine()){
line=out.nextLine();
if(line.contains(tktNum)){
check=1;
break;
}
}
if(check==0){
JOptionPane.showMessageDialog(null,"No tkt Number available...");
return;
}
while(!(line.equals("&&&&&&&&"))){
printTKT(line);
line=out.nextLine();
}
out.close();
}
// this method will print tkt data
public static void printTKT(String line){
System.out.println(line);
}
}
أثري المحتوى العربي مع جوجل نول
رسالة من أحد عضوات منتديات جامعة الملك سعود للمشاركة في مسابقة إثراء المحتوى العربي لأعضاء هيئة التدريس في جامعة الملك سعود:
للمشاركة في المنافسة وكتابة مقالاتك اضغط هنا, و آخر موعد للمشاركة هو 15 مايو 2009
شروط المسابقة
- أن يكون المشارك طالبًا بأحد كليات جامعة الملك سعود أو طالبًا في الدراسات العليا أو عضو هيئة تدريس بها.
- أن تكون المقالة مكتوبة باللغة العربية وفي مجال تخصص المشارك
- أن تكون المقالة أصلية، غير منقولة وأن يتم ذكر المصادر المستخدمة في حالة الإقتباس.
- أن تتم المشاركة فقط عن طريق موقع المنافسة المحدد.معايير إختيار الفائزين
- تقييم لجنة التحكيم المكونة من نخبة من اساتذة الكليات المختلفة بالإضافة لعدد من الطلاب
- تقييم القراء من مستخدمي شبكة الإنترنت لجودة المقالات عن طريق التعليقات، بالإضافة لعدد الزوار والتفاعل من قبل كاتب المقال وتزداد الفرصة بالفوز كلما كان النشر مُبكرًا
عن الجوائز المسابقة المقدمة تجدها هنا (مغرية الصراحة
)
كانت نفس هذه المسابقة قد أقيمت منذ فترة قريبة بالتعاون مع جامعة الملك فهد أيضا. جميل أن تجد هذه المبادرات لدعم المحتوى العربي, و إن كانت تدعم جوجل نول كذلك أيضا, لكنها في نهاية الأمر إن كانت ويكيبيديا أو جوجل نول, فإننا بحاجة ماسة لمحتوى عربي مفيد و جديد و هذا هو الأهم.
و هنا دعوة أوجهها مرة أخرى للقراء بدعم المحتوى العربي و تعويد النفس على الكتابة, سواء بفتح مدونة شخصية أو الكتابة بويكيبيديا العربية أو جوجل نول. أيا كان, انشر و شارك معرفتك مع الآخرين و أثري محتوانا العربي.
الخبر عن المسابقة في موقع عالم التقنية, و وصلة الحدث في الفيسبوك.
إعدادات البروكسي داخل الشبكات لأجهزة الماكنتوش
شرح بسيط لكيفية وضع إعدادات البروكسي لأجهزة الماكنتوش. وقد خصصت هذا الشرح لإعدادات الشبكة داخل جامعة الملك فهد للبترول والمعادن.



