@SuHongjun
2020-05-27T01:52:03.000000Z
字数 3501
阅读 416
C语言
2020春季学期
size_t fread(void *buffer, size_t size, size_t count, FILE * stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
参数:
ptr -- 这是指向要被写入的元素数组的指针。
size -- 这是要被写入的每个元素的大小,以字节为单位。
nmemb -- 这是元素的个数,每个元素的大小为 size 字节。
stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。
#include "stdio.h"
main()
{
int a[5]={1,2,3,4,5}, iRet;
FILE *fp;
fp = fopen("I:\\二进制int.dat","wb");
if(fp != NULL)
{
iRet = fwrite(a, sizeof(int), 5, fp); //fwrite()应用示例
fclose(fp);
}
}
#include "stdio.h"
main()
{
int a[5]={1,2,3,4,5}, iRet, i;
int b[5]={0};
FILE *fp;
fp = fopen("I:\\二进制int.dat","wb"); //写二进制文件
if(fp != NULL)
{
iRet = fwrite(a, sizeof(int), 5, fp);
fclose(fp);
}
fp = fopen("I:\\二进制int.dat","rb"); //读二进制文件
if(fp != NULL)
{
iRet = fread(b, sizeof(int), 5, fp);
fclose(fp);
for(i=0; i<5; i++)
printf("%d\t", b[i]);
}
}
#include "stdio.h"
struct BOOK //结构体类型定义,BOOK是类型名,定义的新类型是:struct BOOK类型
{
char ISBN[50]; //结构体的成员
char bookName[100];
char author[100];
float price;
int soldCount;
};
void InputBookInfo(struct BOOK *b);
void outPutToScreen(struct BOOK *b);
void outPutToTxt(struct BOOK *b);
void outPutToDB(struct BOOK *b);
void GetBookInfoFromDB(struct BOOK *b);
main()
{
struct BOOK b[100]; //b是一个结构体数组,数组元素的类型是:struct BOOK
GetBookInfoFromDB(b);
//InputBookInfo(b);
outPutToScreen(b);
outPutToTxt(b);
outPutToDB(b);
}
void GetBookInfoFromDB(struct BOOK *b)
{
FILE *fp;
int i;
fp = fopen("I:\\books.db","rb");
fread(b,sizeof(struct BOOK),3,fp);
fclose(fp);
}
void InputBookInfo(struct BOOK *b)
{
int i;
char buff[100];
printf("请录入图书信息:\n");
for(i=0; i<3; i++)
{
printf("第%d本书--ISBN:",i+1);
gets(b[i].ISBN); //b[i].ISBN 是数组名
printf("第%d本书--书名:",i+1);
gets(b[i].bookName); //b[i].bookName 是数组名
printf("第%d本书--作者:",i+1);
gets(b[i].author); //b[i].author 是数组名
printf("第%d本书--售价:",i+1);
scanf("%f",&b[i].price); //b[i].price 是float型
printf("第%d本书--售出数量:",i+1);
scanf("%d",&b[i].soldCount); //b[i].soldCount 是int型
gets(buff);
}
}
void outPutToScreen(struct BOOK *b)
{
int i;
printf("已录入的图书信息:\n");
printf("===============================================================\n");
printf(" ISBN\t\t书名\t作者\t售价\t售出数量\n");
printf("---------------------------------------------------------------\n");
for(i=0; i<3; i++)
printf(" %s\t%s\t%s\t%.2f\t%5d\n",
b[i].ISBN,
b[i].bookName,
b[i].author,
b[i].price,
b[i].soldCount);
printf("===============================================================\n");
}
void outPutToDB(struct BOOK *b)
{
FILE *fp;
int i;
fp = fopen("I:\\books.db","wb");
fwrite(b,sizeof(struct BOOK) ,3,fp);
fclose(fp);
}
void outPutToTxt(struct BOOK *b)
{
FILE *fp;
int i;
fp = fopen("I:\\books.txt","wt");
fprintf(fp,"已录入的图书信息:\n");
fprintf(fp,"===============================================================\n");
fprintf(fp," ISBN\t\t书名\t作者\t售价\t售出数量\n");
fprintf(fp,"---------------------------------------------------------------\n");
for(i=0; i<3; i++)
fprintf(fp," %s\t%s\t%s\t%.2f\t%5d\n",
b[i].ISBN,
b[i].bookName,
b[i].author,
b[i].price,
b[i].soldCount);
fprintf(fp,"===============================================================\n");
fclose(fp);
}
分组:每组不超过3个人
"书友俱乐部" 管理系统
俱乐部的书由大家捐赠,捐书的人就获得会员资格,会员可以借阅俱乐部的书,可借数量:min(10,捐赠数量)
总体原则:基本符合实际、在一些细节上做合理假设和简化,避免过于复杂
会员信息:
会员号、姓名、手机、email、QQ、微信, 可借数量(动态计算), 捐赠列表(动态查询),当前借阅列表(动态查询), 借阅历史(可选)
捐赠信息(总捐赠列表):
会员号 -- 书号,捐赠日期
上述信息的录入、保存、读取、查询显示、修改
#include "stdio.h"
struct DATE
{
int year;
int month;
int day;
};
struct BOOK
{
char sh[30];
char bookName[200];
char author[200];
struct DATE publishDate;
float price;
char No[30];
int status; //0:在馆、1:借出、-1:报废
};
//.........???????
main()
{
//.........???????
}