@SuHongjun
2020-05-27T01:52:03.000000Z
字数 3501
阅读 456
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 BOOKGetBookInfoFromDB(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(){//.........???????}