حسین خسروی

وبلاگ دانشگاهی حسین خسروی، عضو هیات علمی دانشگاه صنعتی شاهرود

حسین خسروی

وبلاگ دانشگاهی حسین خسروی، عضو هیات علمی دانشگاه صنعتی شاهرود

حسین خسروی

باتوجه به محدودیتهای صفحه شخصی موجود در سایت دانشگاه، این بلاگ را راه اندازی کردم.
اطلاعیه های مربوط به دروسی که تدریس می کنم و تمرینها در این وبلاگ قرار خواهد گرفت.
برای آگاهی از مطالب مربوط به هر درس، در قاب زیر (طبقه بندی موضوعی) روی نام درس کلیک کنید.

پیوندهای روزانه

۳ مطلب با کلمه‌ی کلیدی «ساختار در زبان C» ثبت شده است

  • ۰
  • ۰

1.    با استفاده از ساختار، برنامه ‌ای بنویسید که ابتدا یک دستور read یا write از کاربر دریافت کند و کارهای زیر را انجام دهد:
•    اگر دستور write دریافت شد: اطلاعات تعدادی دانشجو شامل: شماره دانشجو، نام و نام خانوادگی، سال تولد و معدل دیپلم را گرفته و در انتهای یک فایل متنی با نام Students.txt ذخیره کند. هرگاه شماره دانشجویی عدد منفی وارد شد، فایل را ببندد و از برنامه خارج شود. دقت کنید که اطلاعات قبلی موجود در فایل نباید پاک شود (به جای wt از at استفاده کنید)
•    اگر دستور read دریافت شد: فایل متنی Students.txt را خوانده و اطلاعات آن را در یک آرایه یا اشاره گر از نوع ساختاری که تولید کرده اید، بارگذاری کند و به صورت جدول به کاربر نشان دهد.
•    استثنائات را مدیریت کنید: مثلا اگر فایل تهی بود، یا معدل خارج از محدوده 0 و 20 بود یا سال تولد بیش از 1380 بود، خطا گزارش کند.

موعد تحویل: 30 آذر

  • حسین خسروی
  • ۰
  • ۰

این ویدیو توضیحات مثال قبلی است که متاسفانه کیفیت صدای آن در برخی لحظات خوب نیست. برخی فریمها هم ناقص ضبط شده اند.

  • حسین خسروی
  • ۰
  • ۰

این مثال دو بخش دارد، یکی ایجاد پایگاه داده از اطلاعات کتابها و نوشتن آنها در فایل باینری book_data.db و بخش دوم شامل خواندن اطلاعات از همین فایل و نمایش آنها. ویدیوی ضبط شده مربوط به این مثال در پست بعدی منتشر می شود.


#include "stdafx.h"
#include <iostream>

struct BookInfo
{
	char name[30];
	char author[30];
	int  nPage;
	float price;
	int year;
};

void CreateDatabase()
{
	printf("To start, enter number of books you want to store in the database\n");
	int n = 0;
	scanf_s("%d", &n);
	printf("Please enter Book information for %d books as follows\n", n);
	printf("Name, Author, Pages, Price, Year of Publication\n");

	BookInfo *books = new BookInfo[n];
	for (int i = 0; i < n; i++)
	{
		std::cin.ignore();
		printf("\n#%d Name: ", i + 1);
		gets_s(books[i].name, 30);
		printf("\n#%d Author: ", i + 1);
		gets_s(books[i].author, 30);
		printf("\n#%d Pages: ", i + 1);
		scanf_s("%d", &books[i].nPage);
		printf("\n#%d Price: ", i + 1);
		scanf_s("%f", &books[i].price);
		printf("\n#%d Year: ", i + 1);
		scanf_s("%d", &books[i].year);
	}
	FILE* fp = 0;
	fopen_s(&fp, "book_data.db", "wb");
	if (!fp)
	{
		printf("File can't be oppened.\n");
		return;
	}

	fwrite(books, sizeof(BookInfo), n, fp);
	fclose(fp);

	printf("Data saved successfully\n");
}

void ReadDatabase()
{
	int n = 2;

	BookInfo *books = new BookInfo[n];

	FILE* fp = 0;
	fopen_s(&fp, "book_data.db", "rb");
	if (!fp)
	{
		printf("File can't be oppened.\n");
		return;
	}

	fread(books, sizeof(BookInfo), n, fp);
	for (int i = 0; i < n; i++)
	{
		printf("\n#%d Name: %s", i + 1, books[i].name);

		printf("\n#%d Author: %s", i + 1, books[i].author);

		printf("\n#%d Pages: %d", i + 1, books[i].nPage);

		printf("\n#%d Price: %.1f", i + 1, books[i].price);

		printf("\n#%d Year: %d", i + 1, books[i].year);

		printf("\n--------------------------------------------");
	}

	fclose(fp);
	delete[] books;
}

int main()
{
	printf("Welcome to Book Database Application:\n");
	bool create_data = false; //change to false for read mode

	if (create_data)
		CreateDatabase();
	else
		ReadDatabase();

	getchar();
    return 0;
}
  • حسین خسروی