C语言程序设计报告
经过上次的飞机游戏制作,使我感觉到C语言程序设计,更加的有趣,也使我对这门课程有了更深的理解和认识。这次我们学习了学习C语言操作文件永久保存数据和基于函数的结构化大型程序的编写方法。这次的学习也比较上次来说显得有些复杂。
这次要做的是一个关于书本的管理系统。可以让我们更加方便的去利用程序查找书本存放的位置和一些基本的信息。
首先建立基本的函数公式:
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
#define PAGE 3
#define MAX 1000
#define N 5
int k=0;
/*结构体类型*/
然后定义我们所要设计和查找的变量:
typedef struct
{ int num;/*书号*/
char name[50];/*名称*/
char type[40];/*类型*/
int time;/*出版时间*/
char place[50];/*位置*/
char writer[50];/*作者*/
}STUDENTS;
这两步对于制作数据库来说十分的重要,也是整个程序的基础和地基,所以这两步绝对不能出错否则后面也将无法进行。从这之后便真正开始数据库的制作。
int read_file(STUDENTS stu[])
{FILE *fp;
int i=0;
if((fp=fopen("stu.txt","rt"))==NULL)
{printf("\n\n*****库存文件不存在!请创");
return 0;
}
while(feof(fp)!=1)
{
fread(&stu[i],sizeof(STUDENTS),1,fp);
if(stu[i].num==0)
break;
else
i++;
}
fclose(fp);
return i;
}
void save_file(STUDENTS stu[],int sum)
{FILE*fp;
int i;
if((fp=fopen("stu.txt","wb"))==NULL)
{printf("写文件错误!\n");
return;
}
for(i=0;i
if(fwrite(&stu[i],sizeof(STUDENTS),1,fp)!=1)
printf("写文件错误!\n");
fclose(fp);
}
这一步是当数据库中并没有数据存储的情况下而让程序自己转到输入数据界面的程序,如若有数据存储那么再打开以后便不会转到存储界面。
接着上面如若没有数据转移到输入数据的界面,所以我们为了使输入界面更加简洁开始编辑界面环境:
int input(STUDENTS stu[])
{ int i,x;
for(i=0;i<1000;i++)
{
system("cls");
printf("\n\n 录入书本信息\n",MAX);
printf(" ----------------------------\n");
printf("\n 第%d本书",k+1);
printf("\n 请输入书本的编号:");
scanf("%d",&stu[k].num);
printf("\n 请输入书本的名称:");
scanf("%s",stu[k].name);
printf("\n 请输入书本的类型:");
scanf("%s",stu[k].type);
printf("\n 请输入书本的出版时间:");
scanf("%d",&stu[k].time);
printf("\n 请输入书本的位置:");
scanf("%s",stu[k].place);
printf("\n 请输入书本的作者:");
scanf("%s",stu[k].writer);
printf("\n 请按1键返回菜单或按0键继续创建");
scanf("%d",&x);
if(x)
break;
}
return k;
}
这样我们就可以按照我们所需要的将书本的信息一步一步的输入近数据库中,并且还能够随时返回初始界面。但是,说到创建数据就不得不提到删除数据,所以接下来制作删除数据的程序便是我们先要解决的:
void deletel(STUDENTS stu[])
{ system("cls");
char Stuname2[20];
int i,j;
printf("请输入书本名称:");
scanf("%s",Stuname2);
printf("\n");
for(i=0;i
if(strcmp(stu[i].name,Stuname2)==0)
for(j=0;j<20;j++)
stu[i].name[j]=stu[i+1].name[j];
k--;
printf("删除成功\n");
printf("按任意键加回车返回主菜单!");
scanf("%d",&i);
getchar();
}
这个完成之后我们的数据库就算是基本上完成了。但日后要查找数据可能不仅仅是查找那么简单,有可能需要进行打印之类的工作。为了方便使用。我们也将编入打印所需的程序,是这个程序变得更方便。
void output(STUDENTS stu[])
{ system("cls");
int i;
for(i=0;i
printf("编号:%d,名称:%s,类型:%s,出版时间:%d,位置:%s,作家: %s\n",stu[i].num,stu[i].name,
stu[i].type,stu[i].time,stu[i].place,stu[i].writer);
printf("按任意键加回车返回主菜单!");
scanf("%d",&i);
getchar();
}
输入、删除、打印都完成了,接下来便是最关键的一步:查找。这一步相对于之前的几步来说算是最简单的了只需要把存入库中的数据输出即可:
void inquire(STUDENTS stu[])
{ int i;
int num;