تارا فایل

پروﮊه کتابفروشی


مقدمه:
بدون شک فراگیری و تسلط بر زبان #C بمنزله کسب یک پتانسیل با ارزش بوده که ثمرات آن برای برنامه نویسان در حال و آینده ای نه چندان دور بیشتر هویدا خواهد شد. استاندارد بودن و وجود کتابخانه ای مملو از کلاس این اطمینان را بوجود خواهد آورد که با فراگیری زبان فوق و کسب، مهارت های لازم، به یک توانائی فرا محیطی جدید دست پیدا خواهیم کرد که امکان استفاده از آن بر روی محیط های متفاوت وجود خواهد داشت. ویژگی ها و قابلیت های بیشمار این زبان از جمله دلایل قانع کننده دیگری است که فراگیری آن را توجیه پذیر و منطقی می کند.
روش یادگیری #C:
یادگیری این زبان برای افرادیکه دارای سابقه آشنائی با یکی از زبانهای برنامه نویسی ++C، C و یا جاوا باشند کار مشکلی نخواهد بود، حتی افرادیکه دارای آشنائی اولیه با جاوااسکریپت و یا دیگر زبانهای برنامه نویسی نظیر ویژوال بیسک می باشند، امکان پذیر و راحت خواهد بود. برخی از برنامه نویسان حرفه ای بر این باور هستند که #C نسبت به VB.NET با اقبال بیشتر و سریعتری مواجه خواهد شد، چراکه #C نسبت به ویژوال بیسک خلاصه تر است. حتی برنامه های بزرگ و پیچیده ای که توسط #C نوشته می شوند خواناتر، کوتاه و زیبا خواهند بود. برخی از ویژگی های ارائه شده در #C نظیر Unsigned Integer، Operator OverLoading و امنیت بیشتر Type ها، در VB.NET وجود نداشته و این امر می تواند دلیلی بر فراگیرتر شدن #C نسبت به VB.NET نزد برنامه نویسان با تجربه باشد.
برای یادگیری هر یک از زبانهای حمایت شده در دات نت، می بایست از BCL (Basic Class Library) مربوط به NET Framework. شروع کرد. #C خود صرفا دارای ۷۷ کلمه کلیدی یا Keyword بوده که برای اکثر برنامه نویسان غریب نخواهند بود. در مقابل BCL، دارای ۴۵۰۰ کلاس و تعداد بیشماری متد و Property است که برنامه نویسان #C، می توانند از آنها برای انجام عملیات دلخواه خود استفاده نمایند. شاید یکی از مسائل قابل توجه جهت یادگیری این زبان برای برخی از برنامه نویسان حرفه ای عدم وجود برخی از ویژگی ها و امکاناتی باشد که در گذشته و از طریق سایر زبانهای استفاده شده، بخدمت گرفته می شدند. مثلا عدم وجود امکاناتی جهت توارث چندگانه (MI) سلسله مراتبی یک شئ.
امکانات لازم برای اجرای پروژه :
1) windows xp sp2
2) microsoft visual studio و بانک اطلاعاتی Access
3) نصب IIS

تعریف کلی از اکسسAccess :
اکسس ابزاری برای تولید بانکهای اطلاعاتی رابطه ای است. بانکهای اطلاعاتی امکان گردآوری انواع اطلاعات را برای ذخیره سازی ،جستجو و بازیابی فراهم می کند.
• ‏‏Table :(جدول ) هر جدول برای نگهداری داده های خام بانک اطلاعاتی است.داده ها را شما در جدول وارد می کنید.جداول سپس این داده ها را به شکل سطرها و ستونهایی سازماندهی میکند.

• Query :هر پرس و جو برای استخراج اطلاعات مورد نظر از یک بانک اطلاعاتی مورد استفاده قرار می گیردهر پرس و جو می تواند گروهی از رکوردها را که شرایط خاص دارا هستند انتخاب کند.پرس و جوها را می توان بر اساس جداول یا پرس و جوهای دیگر اماده نمود. با استفاده از پزس وجوها می توان رکوردهای بانک اطلاعاتی را انتخاب کرد، تغییر داد و یا حذف نمود.
• Form :متداولترین روش استفاده از فرمها،برای ورود و نمایش داده ها است.
• Report :گزارش ها می توانند بر اساس جدول ،پرس وجوها باشند ،قابلیت گزارش چاپ داده ها می باشدگزارشها را می توان بر اساس چند جدول و پرس وجو تهیه نمود تا رابطه بین داده ها را نشان داد.

پایگاه داده ها درacsses:
همان طور که می دانیم برای نوشتن برنامه های به زبان c#.net ما نیاز داریم که از data base استفاده کنیم دلیل اینکه ازdata base استفاده کرده ایم این است که بتوانیم جدول هایی که می خواهیم در برنامه استفاده کنیم ارتباط دهیم .
پایگاه دادهای که ما دراین پروژه استفاده کرده ایم acsses می باشد وجداولی که در acsses طراحی کرده ایم به شکل زیر است.
1- ادبی :
شماره بین المللی کتاب
نام کتاب
مولف
قیمت
تاریخ نشر
تیتراﮊ
مترجم
2- علمی :
شماره بین المللی کتاب
نام کتاب
مولف
قیمت
تاریخ نشر
تیتراﮊ
مترجم
3- مذهبی :
شماره بین المللی کتاب
نام کتاب
مولف
قیمت
تاریخ نشر
تیتراﮊ
مترجم
4- تاریخی :
شماره بین المللی کتاب
نام کتاب
مولف
قیمت
تاریخ نشر
تیتراﮊ
مترجم

همان طوری که دیدیم این پروژه از 4 جدول تشکیل شده است .
پس از اینکه پایگاه داده خود را آماده کردیم به سراغ طراحی برنامه می رویم.
وقتی که ما برنامه Microsoft Visual Studio 2005رااجرا می کنیم صفحه زیر ظاهر می شود

برای اینکه ما بتوانیم یک پروژه راطراحی کنیم ابتدت باید ازمنوی
FILE==>NEW–>PROJECT راانتخاب میکنیم
که در این صورت یک صفحه جدید برای درست کردن پروژه باز می کند
برای اینکه ما بتوانیم فرم های خود راطراحی کنیم ابتدا باید به برنامه خود فرم اضافه کنیم .
برای اضافه کردن فرم از منوی PROJECT گزینه ADD WINDOWS FORMراانتخاب می کنیم که پنجره زیر ظاهر می شود.

ازپنجره باز شده گزینه WINDOWS FORM راانتخاب کرده ویک نام دلخواه وارد می کنیم سپس روی گزینه ADD کلیک می کنیم
به این ترتیب یک فرم جدید به برنامه ما اضافه می شود
اجزای تشکیل دهنده یک فرم:
یک فرم ممکن است که از اجزاوعناصر زیادی تشکیل شود ولی معمولا یک فرم از اجزای زیر تشکیل می شود.
BUTTON: (دکمه):ما کدهای برنامه خودرا درون این کنترل می نویسیم به این ترتیب که با دابل کلیک برروی آن صفحه ای باز می شود که برنا مه خود رادرون آن می نویسیم.
TEXTBOX:توسط این کنترل ما دا ده های خود رااز ورودی می گیریم
LABLE:توسط این کنترل نام دل خواه برای قسمتی از فرم انتخاب می کنیم.
PANEL:پس از اینکه تمام کنترل ها را برروی برنامه قرار دادیم با استفاده از این کنترل یک کادر دورن آن ها رسم می کنیم.
برای اضافه کردن این کنترل ها به برنامه روی گزینه TOOLBOX که در سمت چپ بالای پنجره برنامه وجود دارد کلیک کرده وهر کنترلی که می خواهیم روی فرم خود می کشیم.

که شکل آن به این صورت است.

برای تنظیم کردن رنگ-فونت-سایزو… هرکنترل برروی آن کلیک راست کرده وpropertis را انتخاب می کنیم که پنجره ای به شکل زیرباز می شود.

از پنجره باز شده تنظیمات خود راانجام می دهیم سپس روی فرم کلید می کنیم تغییرات را می بینیم.
اضافه کردن عکس به برنامه:
برای اضافه کردن عکس به برنامه روی toolboxکلیک کرده واز پنجره باز شده کنترل pictureboxرا بر روی فرم خود می کشیم.
سپس روی آن کلیک راست کرده و properties را انتخاب می کنیم از پنجره باز شده اگر روی گزینه backgroundimagکلیک کنیم تصویر مورد نظر به عنوان زمینه درنظر گرفته می شودبدین ترتیب که با کلیک کردن برروی آن پنجره زیرباز می شود.

درپنجره باز شده درقسمت resourse context گزینه localresoyrse راانتخاب کرده وروی گزینه import کلیک کرده واز پنجره باز شده آدرس عکس را پیدا کرده وروی دکمه okکلیک می کنیم به این ترتیب تصویر مورد نظر به فرم ما اضافه می شود.
اضافه کردن تاریخ و ساعت به برنامه:
یکی از کارهای جالبی که ما میتوانیم در برنامه خود انجام دهیم اضافه کردن تاریخ وساعت به پنجره اصلی برنامه است.
برای این کار ابتدا باید از پنجره toolbox کنترل timer رابه فرم خود اضافه می کنیم.
سپس برروی آن کلیک راست کرده واز پنجره باز شده گزینه properties را انتخاب می کنیم.
که پنجره زیر ظاهر می شود.

از پنجره باز شده روی گزینه interval کلیک واز100آنرا به1000 تغییر می دهیم.
سپس برروی آن در فرم دابل کلیک کرده وصفحه برنامه نویسی باز می شود ودر صفحه باز شده کد زیر راوارد می کنیم.
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = DateTime.Now.ToLongTimeString();
label2.Text = DateTime.Now.ToShortDateString();
}
ساختن منو برای برنامه:
همان طور که می دانیم در بسیاری از پروژه ها برای انتخاب اطلاعات از منو استفاده می شود که من هم در این پروژه از منو استفاده کرده ام.
برای ساختن منو ابتدا بر روی texboox کلیک کرده واز پنجره باز شده گزینه menustrip را انتخاب کرده وبر روی فرم خود می کشیم که به صورت اتوماتیک بالای فرم قرار می گیرد.
سپس بر روی هر کدام که کلیک کنیم یک زیرمنوی دیگربازمی شود.
اضا فه کردن کلید میان بر برای برنامه:
برای اضافه کردن کلید میانبر به منوها گزینه مورد نظر را انتخاب و روی آن کلیک راست کرده وpropertis را انتخاب می کنیم از پنجره باز شده روی key.. کلیک کرده وکلید میان بررامشخص می کنیم
فرم های برنامه :
فرم شماره 1 :
این فرم اولین فرم برنا مه ما می باشد وزمانی که برنامه را اجرا می کنیم نمایش داده می شود که فرم آن به صورت زیر است.
همان طور که مشاهده می کنیم این فرم نام کاربر و رمز را از کاربر گرفته ودر صورتی که درست وارد شود وارد برنامه می شود در غیر این صورت وارد نمی شود.
در پایین آن یک دکمه وجود دارد که برای ورود باید روی آن کلیک کنیم که کدنویسی آن به صورت زیر است.
private void button5_Click(object sender, EventArgs e)
{
if ((textBox1.Text == "") && (textBox2.Text == ""))
{
Form2 frm = new Form2();
this.Visible = false;
frm.Show();
}
else
{
textBox1.Clear();
textBox2.Clear();
}
در کنار دکمه ورود دکمه خروج است که در صورت کلیک کردن روی آن ازبرنامه خارج می شود که برنامه آن به صورت زیر است :
private void button1_Click_1(object sender, EventArgs e)
{
Application.Exit();
در صورت کلیک کردن برروی دکمه ورود صفحه اصلی برنامه بازمی شود که به صورت زیر است:
فرم شماره 2 :

همان طور که می بینیم صفحه اصلی مااز تعدادی منو تشکیل شده است که درصورت کلیک کردن برروی هرکدام منویی باز می شود.
هر منو خود دراری چندین زیرمنو می باشد که در همه آن ها عملیات اضافه کردن ، حذف کردن ، ویرایش کردن و… به کار می رود .

در ابتدا همه برنامه ها این دستورات فعال است.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

همان طور که می بینیم برای استفاده از هرکنترلی دربرنامه باید آن را تعریف کنیم به خاطر اینکه ازجدول استفاده کرده ایم باید این دستور را به آن ها اضافه کنیم.
using System.Data.OleDb;

همان طور که می بینیم تمامی دکمه های برنامه رادرون یک کادر که بااستفاده ازpanel آن راایجاد کرده ایم قرارداده ایم.
ابتدا اولین کاری که باید انجام دهیم به صفحه کدنویسی می رویم وبا استفاده ازدستورات زیر مسیر پایگاه داده مورد استفاده وهمچنین اتصال به پایگاه داده وفعال کردن grid veiw را بادستورات زیرفعال می کنیم.
مسیر پایگاه داده مورد استفاده:
public partial class Form3 : Form
{

private const string commandtext = "select * from elmi";
private const string connectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;data source=e:sh.mdb";
DataGrid objdatagrid;
OleDbConnection objconnection;
OleDbDataAdapter objdataadapter;
DataSet objdataset;
DataView objdataview;
CurrencyManager objcurrencymanager;

فعال کردن GRID VIEW :
public Form3()
{
objconnection = new OleDbConnection(connectionstring);
objdataadapter = new OleDbDataAdapter(commandtext, objconnection);
objdatagrid = new DataGrid();
objdatagrid.SetDataBinding(objdataset, "elmi");
objdatagrid.Refresh();
InitializeComponent();

}
private void filldatasetandview()
{
objdataset = new DataSet();

objdataadapter.Fill(objdataset, "elmi");

objdataview = new DataView(objdataset.Tables["elmi"]);
objcurrencymanager = (CurrencyManager)(this.BindingContext[objdataview]);

اضافه کردن کتاب :
برای اضافه کردن کتاب به بانک اطلاعاتی ابتدا باید اطلاعات راازطریق TEXTBOX وارد کرد سپس روی دکمه اضافه کردن کلیک کنیم تا اطلاعات به بانک اضافه شوند .
روی دکمه اضافه کردن دابل کلیک کرده وکدزیرراوارد می کنیم.
private void button1_Click(object sender, EventArgs e)
{
int intpositiion;

OleDbCommand objcommand = new OleDbCommand();
intpositiion = objcurrencymanager.Position;
OleDbCommand maxidcommand = new OleDbCommand("select max(bookname)", objconnection);
objconnection.Open();
objcommand.Connection = objconnection;
objcommand.CommandText = "INSERT INTO elmi (isbn,bookname,moalef,cost,tarikhnashr,titraj,motarjem)" +
"VALUES (@isbn,@bookname,@moalef,@cost,@tarikhnashr,@titraj,@motarjem);";
objcommand.Parameters.AddWithValue("@isbn", textBox1.Text);
objcommand.Parameters.AddWithValue("@bookname", textBox2.Text);
objcommand.Parameters.AddWithValue("@moalef", textBox3.Text);
objcommand.Parameters.AddWithValue("@cost", textBox4.Text);
objcommand.Parameters.AddWithValue("@tarikhnashr", textBox5.Text);
objcommand.Parameters.AddWithValue("@titraj", textBox6.Text);
objcommand.Parameters.AddWithValue("@motarjem", textBox7.Text);

try
{
objcommand.ExecuteNonQuery();
}
catch (OleDbException oledbexceptionerr)

همچنین برای اینکه زمانی که داده های ما درون بانک قرار می گیرند یک پیغام به ما بدهد ازدستورزیر ادامه آن استفاده می کنیم.
{
MessageBox.Show(oledbexceptionerr.Message);
}
objconnection.Close();
filldatasetandview();
bindfields();
objcurrencymanager.Position = intpositiion;
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
textBox6.Clear();
textBox7.Clear();
objdataset = new DataSet();
objdataadapter.Fill(objdataset, "elmi");
dataGrid1.SetDataBinding(objdataset, "elmi");
dataGrid1.Refresh();
filldatasetandview();
bindfields();
MessageBox.Show("داده ثبت شد", "insert");
}

ویرایش کردن کتاب :
برای اینکه مابتوانیم داده های درون بانک رابه روزرسانی کنیم از این قسمت استفاده می کنیم
روی دکمه ویرایش دابل کلیک کرده وکدزیررا وارد می کنیم.
private void button3_Click(object sender, EventArgs e)
{
int intpositiion;
OleDbDataAdapter objda = new OleDbDataAdapter();
OleDbCommand objcommand = new OleDbCommand();
intpositiion = objcurrencymanager.Position;
objcommand.Connection = objconnection;
objcommand.CommandText = ("UPDATE elmi SET isbn=@isbn,bookname=@bookname,moalef=@moalef,cost=@cost,tarikhnashr=@tarikhnashr,titraj=@titraj,motarjem=@motarjem where isbn=@isbn;");
objcommand.CommandType = CommandType.Text;
objcommand.Parameters.AddWithValue("@isbn", textBox1.Text);
objcommand.Parameters.AddWithValue("@bookname", textBox2.Text);
objcommand.Parameters.AddWithValue("@moalef", textBox3.Text);
objcommand.Parameters.AddWithValue("@cost", textBox4.Text);
objcommand.Parameters.AddWithValue("@tarikhnashr", textBox5.Text);
objcommand.Parameters.AddWithValue("@titraj", textBox6.Text);
objcommand.Parameters.AddWithValue("@motarjem", textBox7.Text);

try
{
objconnection.Open();
objcommand.ExecuteNonQuery();
objconnection.Close();
}
catch (OleDbException oledbexceptionerr)
{
MessageBox.Show(oledbexceptionerr.Message);
}
filldatasetandview();
bindfields();
objcurrencymanager.Position = intpositiion;
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
textBox6.Clear();
textBox7.Clear();
objdataset = new DataSet();
objdataadapter.Fill(objdataset, "elmi");
dataGrid1.SetDataBinding(objdataset, "elmi");
dataGrid1.Refresh();
filldatasetandview();
bindfields();
MessageBox.Show("به روز رسانی با موفقیت انجام شد", "update");
}

حذف کردن کتاب :
برای پاک کردن دادهای بانک از این قسمت استفاده می کنیم.
در این قسمت هم حذف کردن براساس شماره بین المللی کتاب صورت می گیرد.
روی دکمه حذف دابل کلیک کرده وکد زیررا می نویسیم.

private void button2_Click(object sender, EventArgs e)
{
int inta;
OleDbCommand objcommand = new OleDbCommand();
inta = this.BindingContext[objdataview].Position – 1;
if (inta < 0)
inta = 0;
objcommand.Connection = objconnection;
objcommand.CommandText = "DELETE *FROM elmi WHERE [isbn]=@isbn;";

objcommand.Parameters.AddWithValue("@isbn", textBox1.Text);
objconnection.Open();
objcommand.ExecuteNonQuery();
objconnection.Close();
filldatasetandview();
bindfields();
this.BindingContext[objdataview].Position = inta;

textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
textBox6.Clear();
textBox7.Clear();
objdataset = new DataSet();
objdataadapter.Fill(objdataset, "elmi");
dataGrid1.SetDataBinding(objdataset, "elmi");
dataGrid1.Refresh();
filldatasetandview();
bindfields();
MessageBox.Show("حذف با موفقیت انجام شد", "delet");
}

بازیابی جدول:
از این قسمت به این دلیل استفاده می کنیم که پس از انجام هر عملیات دوباره جدول ما بازیابی شود.
مثال:زمانی که ما یک داده راازجدول پاک می کنیم تغییرات نمایش داده نمی شود برای نمایش باید برروی نمایش جدول کلیک کنیم.
روی دکمه نمایش کلیک کرده وکدزیررامی نویسیم.
private void button5_Click(object sender, EventArgs e)
{
objdataset = new DataSet();
objdataadapter.Fill(objdataset, "elmi");
dataGrid1.SetDataBinding(objdataset, "elmi");
dataGrid1.Refresh();
filldatasetandview();
bindfields();
}
ودرنهایت برای بازگشت به صفحه اصلی بر روی دکمه خروج کلیک می کنیم که کدآن به صورت زیر است.
private void button6_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
this.Visible = false;
frm.Show();
}
دکمه جست وجو براساس نام کتاب:
در صورت کلیک کردن برروی این قسمت داده مورد نظر جست وجومی شود .
روی دکمه جستجو دابل کلیک کرده وکدزیررا می نویسیم.
private void button7_Click(object sender, EventArgs e)
{
string commandtext = "select * from elmi ";
if (textBox2.Text != string.Empty)
commandtext += "where bookname like " + "'" + textBox2.Text + "'";
DataSet objds = new DataSet();
OleDbConnection objconnection = new OleDbConnection(connectionstring);
OleDbDataAdapter objdataadapter = new OleDbDataAdapter(commandtext, objconnection);
objdataadapter.SelectCommand.CommandText = commandtext;
objdataadapter.Fill(objds);
dataGrid1.DataSource = objds.Tables[0];
MessageBox.Show("جستجو با موفقیت انجام شد", "SEARCH");
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
textBox6.Clear();
textBox7.Clear();
}

دکمه جست وجو براساس نام مولف :
در صورت کلیک کردن برروی این قسمت داده مورد نظر جست وجومی شود .
روی دکمه جستجو دابل کلیک کرده وکدزیررا می نویسیم.

private void button8_Click(object sender, EventArgs e)
{
string commandtext = "select * from elmi ";
if (textBox3.Text != string.Empty)
commandtext += "where moalef like " + "'" + textBox3.Text + "'";
DataSet objds = new DataSet();
OleDbConnection objconnection = new OleDbConnection(connectionstring);
OleDbDataAdapter objdataadapter = new OleDbDataAdapter(commandtext, objconnection);
objdataadapter.SelectCommand.CommandText = commandtext;
objdataadapter.Fill(objds);
dataGrid1.DataSource = objds.Tables[0];
MessageBox.Show("جستجو با موفقیت انجام شد", "SEARCH");
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
textBox6.Clear();
textBox7.Clear();
}

2


تعداد صفحات : 20 | فرمت فایل : WORD

بلافاصله بعد از پرداخت لینک دانلود فعال می شود