用C语言开发小型数据库管理系统代码
文库.txt如果有来生,要做一棵树,站成永恒,没有悲伤的姿势。一半在土里安详,一半在风里飞扬,一半洒落阴凉,一半沐浴阳光,非常沉默非常骄傲,从不依靠从不寻找。#include
#include
typedef structcount{
char name[10];
int num;
}count;
typedef structst{
char name[10];
long Number;
int Math;
int C;
int Amount;
}st;
st record[8];
count num[1];
charfilename[10]={"0"};
charfilename2[10]={"0"};
int Inputnum[8];
void MainMenu(){
printf("\n\t\t\t\t**** * * * ***\n");
printf("\t\t\t\t*主菜单*\n");
printf("\t\t\t\t*1.创建新文件*\n");
printf("\t\t\t\t*2.添加记录*\n");
printf("\t\t\t\t*3.删除记录*\n");
printf("\t\t\t\t*4.排序*\n");
printf("\t\t\t\t*5.查询记录*\n");
printf("\t\t\t\t*6.退出*\n");
printf("\t\t\t\t** * * * * ****\n");
}
void DelMenu(){
printf("\n\t\t\t\t**** * * * *****\n");
printf("\t\t\t\t*删除菜单*\n");
printf("\t\t\t\t*1.学号查询删除*\n");
printf("\t\t\t\t*2.返回到上级菜单*\n");
printf("\t\t\t\t** * * * * ******\n");
}
voidRankingMenu(){
printf("\n\t\t\t\t**** * * * *****\n");/*保存记录条数结构体*//*主菜单*/ /*删除菜单*//*排序菜单*/
printf("\t\t\t\t*排序菜单*\n");
printf("\t\t\t\t*1.数学成绩排序*\n"); printf("\t\t\t\t*2. C语言成绩排序*\n"); printf("\t\t\t\t*3.总分排序*\n");
printf("\t\t\t\t*4.返回到上级菜单*\n"); printf("\t\t\t\t** * * * * ******\n");} voidInquireMenu(){
printf("\n\t\t\t\t**** * * * *****\n"); printf("\t\t\t\t*查讯菜单*\n");
printf("\t\t\t\t*1.学号查讯*\n");
printf("\t\t\t\t*2.姓名查讯*\n");
printf("\t\t\t\t*3.数学成绩查讯*\n"); printf("\t\t\t\t*4. C语言成绩查讯*\n"); printf("\t\t\t\t*5.总分查讯*\n");
printf("\t\t\t\t*6.返回到上级菜单*\n"); printf("\t\t\t\t** * * * * ******\n");
}
charInputfilename(){
xx文件名*/
char str2[]={"B"};
printf("**请输入文件名** :");
scanf("%s",filename);
strcpy(filename2,filename);
strcat(filename2,str2);
}
FILE *readfile(){
FILE *fp1;
if((fp1=fopen(filename,"rb"))==NULL)
{printf("\n文件读取错误!!\n");
fclose(fp1);
}
return(fp1);
}
FILE *foundfile(){
FILE *fp1;
if((fp1=fopen(filename,"wb"))==NULL)
{printf("\n文件创建错误!!\n");
fclose(fp1);/*查讯菜单*//*输入文件名同时产生/*读取文档*//*xx文档*/}
return(fp1);
}
FILE *savefile(){
if((fp1=fopen(filename,"ab"))==NULL)
{printf("\n文件追加错误!!\n");
fclose(fp1);
}
return(fp1);
}
int InputSave(){
int i=0,j;
char ch='y';
while(ch!='w')
{i=i+1;
printf("\n**请输入姓名(字符型)**:");
scanf("%s",record[i].name);
Loop1:printf("\n**请输入学号(长整型)**:");
scanf("%ld",&record[i].Number);
if(i!=1)
for(j=1;j
if(record[i].Number==record[j].Number)
{printf("\n\t警告!输入了二个同样的学号!第%d条和第%d学号相同!\n",i,j); printf("\n\t请重新输入!\n");
}
Loop2:printf("\n**请输入数学成绩(整型)**:");
scanf("%d",&record[i].Math);
if(record[i].Math>100||record[i].Math<0)
{printf("\n\t输入的分数不服合实际要求!请重新录入!\n"); goto Loop2;
}
Loop3:printf("\n**请输入C语言成绩(整型)**:");
scanf("%d",&record[i].C);
if(record[i].C>100||record[i].C<0)
{printf("\n\t输入的分数不服合实际要求!请重新录入!\n"); goto Loop3;
}
record[i].Amount=record[i].Math+record[i].C;
printf(" \n'w'=结束录入's'=重新录入此条记录'n'=下一条: "); /*添加数据*//*追加文档*/getchar();
回车符*/
if((ch=getchar())=='s')
i=i-1;
}
return(i);
}
/*
voidReadComputer(inti,FILE
*fp1){本方式)数据写入机器
int j;
for(j=1;j
(文
fscanf(fp1,"%s,%ld,%d,%d,%d",record[j].name,&record[j].Number,&record[j].Math,& record[j].C,&record[j].Amount);
}
voidSaveFile(int
*fp1){ (文本方式)数据写到文件中
int j;
for(j=1;j
fprintf(fp1,"%s,%ld,%d,%d,%d",record[j].name,record[j].Number,record[j].Math, record[j].C,record[j].Amount);
}
*/
voidReadComputer2(int
*fp1){ /*(2方式)数据写入机器*/i,FILE
i,FILE
int j;
for(j=1;j
if((fread(&record[j],sizeof(structst),1,fp1))!=1)
{printf("\n主文件数据读取错误!\n");
fclose(fp1);
}
}
voidSaveFile2(int
*fp1){ /*(2方式)数据写到文件中*/i,FILE
int j;
for(j=1;j
if((fwrite(&record[j],sizeof(structst),1,fp1))!=1)
{printf("\n主文件数据写入错误!\n");
fclose(fp1);
}
}
/***************************************************************** ********************************************************/
FILE *readfile2(){
*/
FILE *fp1;
if((fp1=fopen(filename2,"rb"))==NULL)
{printf("\n付本文件读取错误!\n"); fclose(fp1);
}
return(fp1);
}
FILE*foundfile2(){
本*/
FILE *fp1;
if((fp1=fopen(filename2,"wb"))==NULL) {printf("\n付本文件创建错误!\n"); fclose(fp1);
}
return(fp1);
}
FILE *savefile2(){
xx*/
FILE *fp1;
if((fp1=fopen(filename2,"ab"))==NULL) {printf("\n付本文件追加错误!\n"); fclose(fp1);
}
return(fp1);
}
/*
void Additive2(inti,FILE*fp1){
文件(文本方式)
int j;
char str2={"0"};
if(strcmp(filenameF,str2)!=0)
strcpy(num[0].name,filenameF);
else
strcpy(num[0].name,filenameA);/*读文件付本/*新建文件付/*追加文件数据与入付本num[0].num=i;
fprintf(fp1,"%s,%d",num[0].name,num[0].num);
}
intReadComputer2(FILE*fp1){
的数据(文本方式)
int j,k;
fscanf(fp1,"%s,%d",num[0].name,&num[0].num);
k=num[0].num;
return(k);
}
*/
void Additive2Two(int i,FILE *fp1){
入付本文件(二进制方式)*/
char str2[]={"0"};
if(strcmp(filename2,str2)!=0)
strcpy(num[0].name,filename2);
else
strcpy(num[0].name,filename2);
num[0].num=i;
if((fwrite(&num[0],sizeof(struct count),1,fp1))!=1) {printf("\n付本文件数据写入错误!\n");
fclose(fp1);
}
}
int ReadComputer2Two(FILE *fp1){
付本中的数据(二进制方式)*/
int j;
if((fread(&num[0],sizeof(struct count),1,fp1))!=1) {printf("\n付本文件数据读取错误!\n");
fclose(fp1);
}
j=num[0].num;
return(j);
}
/***************************************************************** ********************************************************/
voidNum_inquire(){/*学号查询*/
int num,j,time;/*读出/*数据写读出付本中FILE *fp1,*fp2;
fp1=readfile();
档*/
fp2=readfile2();
式'读'**'引用读文件名')读文件付本*/
time=ReadComputer2Two(fp2);
中的数据(二进制方式)*/
ReadComputer2(time,fp1);
数据写入机器*/
fclose(fp1);fclose(fp2);
printf("输入学号:");
scanf("%ld",&num);/*读取文/*(开打方/*读出付本/*(2方式)/*getchar();*/
for(j=1;j