ورود

View Full Version : برنامه فایلها در c++ ... اگه میشه راهنمایی



arta_20ir
پنج شنبه 07 دی 1385, 16:18 عصر
در این برنامه ، با فایلی سرو کار دارید که کلمه رمز دانشجویان را درون خود ذخیره کرده است . هدف از این برنامه پیاده سازی ساختار شاخص دار است .
برنامه ای بنویسید که یک فایل شاخص را بر حسب شماره دانشجویی ایجاد کند .
برنامه شما باید ابتدا تمام رکوردهای دانشجو را خوانده و شماره دانشجویی و آدرس رکورد را در آرایه قرار دهد . سپس در حافظه اصلی شماره های دانشجویی را مرتب کرده و لیست مرتب شده را در فایلی همنام با فایل اصلی و با پسوند ( .ind ) ذخیره کند .
نام فایل ورودی توسط کاربر وارد خواهد شد . بنابر این از تعیین نام خاص برای فایل ورودی خودداری کنید . هم فایل ورودی که توسط شما خوانده میشود و هم فایل شاخص که توسط شما ایجاد می شود از نوع متنی هستند . رکوردهای موجود در فایل شاخص دارای طول متغیر هستند و برای جدا کردن فیلدها از کاراکتر ( | ) استفاده شده است . نمونه ای از فتیا دانشجویان را برای آزامایش از این آدرس دریافت کنید .



نام فلید ---------------------------------- تعداد کاراکتر -----------------------------توضیحات
شماره دانشجویی : ---------------------------8 کاراکتر ----------------------------------منحصر بفرد
کلمه رمز : --------------------------------------متغییر --------------------------------------حداکثر پانزده کاراکتر
نام و نام خانوادگی دانشجو : ------------------متغییر ---------------------------------------حدااکثر بیست و پنج کاراکتر


( خط تیره ها وجود نداشت برا اینکه مثل جدول بشه تیره کشیدم )
بعد از هر رکورد یک کاراکتر " \n " نیز وجود داراد تا فایل مربوطه برای انسان نیز خوانا باشد .
بنابر این برنامه شما باید کارهای زیر را انجام دهید :
1 . نام فایل ورودی را از کاربر گرفته و در صورت وجود آن را باز کند و در غیر اینصورت با چاپ پیام مناسب نام فایل را دوباره بخواهد .
2 . فایل ورودی را رکورد به رکورد خوانده و شماره دانشجویی و آدرس بایتی آنها را در آرایه ای قرار دهد . فرض کنید حداکثر تعداد دانشجویان 100 نفر است .
3. شماره دانشجویی را به صورت صعودی مرتب کند .
4. فهرست مرتب شده را به صورت رکوردهایی با طول ثابت در فایل شاخص بنویسد .
5. فایلها را بسته و یک منو شامل دو بخش جستجو و خروج نمایش دهد .
6. در صورت انتخاب گزینه ی جستجو یک شماره دانشجویی را از کار بر بخواهد و با جستجوی دودویی در فایل شاخص در صورتی که شماره دانشجویی مربوط در فایل شاخص وجود داشته باشد نام و نام خانوادگی شخص و رمز وی را از فایل اصلی به کمک آدرس ثبت شده در فایل شاخص خوانده و در صفحه نمایش دهد .
7. با فشار دادن یک کلید به منوی اصلی برگردد .
8. در صورتی که شماره دانشجویی مروبطه وجود نداشته باشد پیغام مناسبی چاپ کند .
دوباره منو را نمایش دهد .
در صورت انتخاب گزینه ی خروج از منو به اجرای برنامه خاتمه دهد .

arta_20ir
پنج شنبه 07 دی 1385, 16:20 عصر
#include<iostream.h>
#include<conio.h>
#include<fstream.h>
#include<math.h>
int stn(int g)
{
int temp,i;
fstream file;
long int std[8];
//char *name,*family,*password;
for(i=0;i<=g;i++)
{
file<<"std[i]:";
file>>std[i];
}
for(i=0;i<=g;i++)
{
if((std[8]>83331000)&&(std[8]<83339999))
{
if(std[i]>std[i+1])
temp=std[i];
std[i]=std[i+1];
std[i+1]=temp;
}
file<<"std[i]"<<std[8];
}
file.close();
return 0;
}
void main()
{
clrscr();
char k,*name,*password,*family,false;
int *std,T;
fstream file;
cout<<"Please enter number of student:";
cin>>T;
l1: cout<<"Please enter filename:";
cin>>k;
if(k)
{
file.open("k.txt",ios::in);
for(int i=0;i<=T;i++)
{
file<<"name[i]"<<name[i];
file<<"family[i]"<<family[i];
file<<"password[i]"<<password[i];
file<<"std[i]"<<std[i];
}
stn(T);
}
else{
cout<<"This file does not exist";
file.unsetf(ios::skipws);
goto l1;
}

/*void BinarySearch()
{
int low=0;
int high=file.stn()-1;
while(low<=high)
{
int guess=(high+low)/2;
file.ReadByRRN(obj,guess);
if(obj.key()==key)
return 1;
if(obj.key()>key)high=guess-1;
else
low=guess+1;
}*/
file.open("name.txt",ios::in|ios::out);
//if(BinarySearch)
//if(FixedRecordFile().file)
file<<name<<endl;
file<<password;
file.close();
//delete(y);
}

Mohammadi_A
چهارشنبه 27 دی 1385, 11:07 صبح
اولین اشکال برای فایل ورودی نام ثابت k.txt استفاده شده است
دومین اشکال kفقط یک حرف میگیرد