PDA

View Full Version : سوال:چگونه در برنامه سی شارپ کد رهگیری تولید کنم؟



haniyehghassami
یک شنبه 10 مهر 1390, 16:43 عصر
سلام من دارم برنامه ای مینویسم که توش لازم دارم که کد رهگیری تولید کنم
کدم توی دیتابیسم به صورت رشته ذخیره شده
حالاتو برنامه چیکار کنم که هر بار یک کد یکتا تولید بشه و تکراری هم نباشه؟
.
.
ممنون میشم کمکم کنین.

nilmil_nil
یک شنبه 10 مهر 1390, 16:56 عصر
سلام
باید از تابع رندوم استفاده کنید
مثلا
یه کد رندم تولید کنید که کد های اسکی اعداد و حروف رو داشته باشه
مثلا
کدهای 65 که A هست تا ...z
و اعداد هم همینطور
بعد به بستگی داره که کد رهگیری ای که میسازی می خوای چند کارکتری باشه
اونوقت همه رو کنار هم بچین
کد رندوم که تولید میشه باید تو رنج کد های اسکی اعداد و حروف باشه

haniyehghassami
یک شنبه 10 مهر 1390, 17:12 عصر
ممنون اما فقط باید عدد باشه و اینکه تا 14 رقم جا داره
اما اگه رندوم باشه هر دفعه موقع درج در بانکم باید کل بانک رو چک کنم که توش نباشه و اگه بود یه کد دیگه درست کنم و این کدم هم نمیخام کلید اصلیم باشه.
نه....این راه خوبی نیست چون سرعت برنامم و کند میکنه اما بهرحال ممنون

Hajivandian
یک شنبه 10 مهر 1390, 17:21 عصر
سلام، تویه لینک زیر یه برنامه نویس یه کد گذاشته که توسط اون اعداد یکتا ( کد رهگیری ) تولید کرده و جالبه بدونی تویه تستی که انجام داده با گرفتن یک میلیون کد حتی یک کد تکراری ایجاد نشده!
به نظر من از تابعی که نوشته استفاده کن، مقالش هم ارزش خوندن داره حتما بخونش

http://www.codeproject.com/KB/aspnet/UniqueKeys.aspx

nilmil_nil
یک شنبه 10 مهر 1390, 17:29 عصر
شما میخواید 14 رقم باشه باشه پس احتمال اینکه کد تکراری داشته باشه به 1 درصد میرسه

haniyehghassami
یک شنبه 10 مهر 1390, 17:34 عصر
ه نظر من از تابعی که نوشته استفاده کن، مقالش هم ارزش خوندن داره حتما بخونش
ممنونم
امتحانش کنم امیدوارم که مفید باشه.
البته برنامه من رو شبکه باید کار کنه........یعنی احتمال ایجاد شدن دو تا کد رهگیری یکسان تو 2 تا کلاینت وجود نداره؟


شما میخواید 14 رقم باشه باشه پس احتمال اینکه کد تکراری داشته باشه به 1 درصد میرسه
وقتی سیستم رو شبکه باشه ب مرور زمان این احتمال بیشتر میشه

GGRRSS_2
یک شنبه 10 مهر 1390, 21:06 عصر
دوست عزيز اگر تكرار 1به ده هزار باشد باز هم خيلي بد است كد رهگيري بايد در هر شرايطي تك باشد شما در بانك خودت يك تيبل درست كنيد يك فيلد داشته باشد يك عدد به آن اضافه كنيد نه جستجو دارد احتمال تكرار فقط به اشتباه شما بر ميگردد

hadisadaghatmehr
دوشنبه 11 مهر 1390, 00:44 صبح
با سلام
دوست عزيز مي توني از كلاس guid خود C# كه در داخل فضاي نام system ‌هست و مخصوص اين كاره استفاده كني
نمونه مثال ندارم ولي خودت يه سرچي بكني مي توني يه چند تا مثال پيدا كني

2ndesigner
دوشنبه 11 مهر 1390, 00:59 صبح
کد رهگیره نباید یه عدد رندوم باشه و این کار اصلا مرسوم نیست ، کد رهگیری رو باید از اطلاعاتی که به این کد مربوط میشه تولید کنی ( مثلا برای یه دفترچه تلفن می تونه ترکیبی از کد اسکی یا ابجد نام و شماره تلفن که یکتاست باشه) ، اگه به سایت ها و یا برنامه هایی که کد رهگیری میدن یه سری بزنی میبینی که چیزی جز این نیست.

f.beigirad
چهارشنبه 08 خرداد 1392, 14:40 عصر
با سلام

میخوام دوتا عدد تولید کنم.اولی رندم باشه. برای تولید عدد دوم میخوام یه عدد 3 رقمی خودم بهش بدم و با عدد اولی تلفیق بشه تا عدد دوم تولید شه.

به نظرتون چطور میتونم این کارو انجام بدم که کسی که 10 تا از این جفت عدد هارو دید به الگوریتمی که پیاده کزدم پی نبره.

لازم به ذکره امکان داره اون عدد 3 رقمی که بهش میدم تکراری باشه.

با تشکر

danialafshari
چهارشنبه 08 خرداد 1392, 14:48 عصر
سلام
اگر الگوریتم شما سخت باشد و اون اعداد بین اعداد رندوم قرار گیرند مشکلی پیش نمیاد.
من خودم برنامه ای با این موضون ساختم ببینید میتونی یک آرایه 6 خونه ای ایجاد کنی و 3 رقمی که از زندوم به دست میاد رو ر مثلا خونه های 1 - 3 - 6 قرار بدید و 3 رقمی که از الگوریتمتون بدست میاد رو در خونه های 2 - 4 - 5 قرار بدید و به ترتیب چاپشون کنید
لازم به ذکره که هر چی طول کد بیشتر باشه امکان کشفش کمتره !
موفق باشی

rahmat1359
سه شنبه 01 مرداد 1392, 17:41 عصر
سلام
اگر الگوریتم شما سخت باشد و اون اعداد بین اعداد رندوم قرار گیرند مشکلی پیش نمیاد.
من خودم برنامه ای با این موضون ساختم ببینید میتونی یک آرایه 6 خونه ای ایجاد کنی و 3 رقمی که از زندوم به دست میاد رو ر مثلا خونه های 1 - 3 - 6 قرار بدید و 3 رقمی که از الگوریتمتون بدست میاد رو در خونه های 2 - 4 - 5 قرار بدید و به ترتیب چاپشون کنید
لازم به ذکره که هر چی طول کد بیشتر باشه امکان کشفش کمتره !
موفق باشی


سلام بسیار متشکرم
سوال اول: فرض کنید جدولی در دیتا بیس داریم که آی دی از توع اینت باشه. دکمه ثبت در فرم را میزنیم میخوام بلافاصله بعد از ثبت شماره پیگیری یا مثلا دانشجویی بده البته از آی دی دیتا بیس که از توع اینت هست
سوال دوم: مشخصات تکراری در هنگام ثبت نام رو گیر بده
لطفا به کد زیر اضافه کنید و اگر توضیحی بود بقرمایید ممنون میشم
دیتا از نوع linq


private void btnSave_Click(object sender, EventArgs e)
{

var db = new MydatelinqDataContext();
db.Insert_user(tbxFname.Text, tbxLname.Text, tbxTel.Text, tbxAddr.Text);


// MessageBox.Show("شماره شما :" + tbxTel.Text);

Empty();
tbxFname.Focus();
dataGridView1.DataSource = db.Tbl_users;
}

hojjatshariffam
سه شنبه 01 مرداد 1392, 18:03 عصر
سلام بسیار متشکرم
سوال اول: فرض کنید جدولی در دیتا بیس داریم که آی دی از توع اینت باشه. دکمه ثبت در فرم را میزنیم میخوام بلافاصله بعد از ثبت شماره پیگیری یا مثلا دانشجویی بده البته از آی دی دیتا بیس که از توع اینت هست
سوال دوم: مشخصات تکراری در هنگام ثبت نام رو گیر بده
لطفا به کد زیر اضافه کنید و اگر توضیحی بود بقرمایید ممنون میشم
دیتا از نوع linq


private void btnSave_Click(object sender, EventArgs e)
{

var db = new MydatelinqDataContext();
db.Insert_user(tbxFname.Text, tbxLname.Text, tbxTel.Text, tbxAddr.Text);


// MessageBox.Show("شماره شما :" + tbxTel.Text);

Empty();
tbxFname.Focus();
dataGridView1.DataSource = db.Tbl_users;
}
من از این روش استفاده نمی کنم
هیچ وقت نمی زارم که یه فیلد به طور اتوماتیک مقدار دهی بشه
خودم ماکزیمم یه فیلد رو که کلید هست رو می گیرم و به اضافه یک می کنم و بعد ثبت می کنم ، اونوقت دیگه کد ردیف رو هم گم نمی کنم
حالا با توحه به این کلید می تونی دوباره(اگه مثلا اون کد دانشجوئیت همون کلید جدول هم نباشه) اطلاعات رودیف رو سلکت دلیت یا آدیت کنی (کد پیگیری رو هم می تونی بگیری)
اینو هم بگم که این کد یه اشکالی داره (البته خود اس کیو ال هم فکر کنم در این مورد اشکال داشته باشه)اگه کسی یه ردیف با آب دی خیلی بزرگر و تو جدول ثبت بکنه ، ردیف بعدی عددی به اضافه اون عدد ماکزیمم هستش که جدول قبول نخواهد کرد ، در این مورد می تونید یه گزینه بازسازی در برنامتون بزارید که این کد ها رو مرتب کنه (زمانبر هستش ولی امکانپذیر)