用C语言开发小型数据库管理系统代码文库教学文稿_第1页
用C语言开发小型数据库管理系统代码文库教学文稿_第2页
用C语言开发小型数据库管理系统代码文库教学文稿_第3页
用C语言开发小型数据库管理系统代码文库教学文稿_第4页
用C语言开发小型数据库管理系统代码文库教学文稿_第5页
已阅读5页,还剩13页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用C语言开发小型数据库管理系统代码文库.txt如果有未生,要做一棵树,站成永恒,没有

悲伤的姿势。一半在土里安详,一半在风里飞扬,一半洒落阴凉,一半沐浴阳光,非常沉默

非常骄傲,从不依靠从不寻找。^include<stdio.h>

#include<string.h>

typedefstructcount{/*保存记录条数结构体*/

charname[10;;

intnum;

(count;

typedefstructst{

charname[10];

longNumber;

intMath;

intC;

intAmount;

}st;

strecord[8];

countnum[1];

charfilename[10]={*0*};

charfiloname2[10]={,,0/,};

intInputnum[8];

voidMainMenuO{/*主菜单*/

printf("\n\t\t\t\t**********\n");

prinlf('\l\t\l\l*主菜单*\n");

.printf(/z\t\t\t\t.1.创建新文.

.printf(z,\t\t\t\t.2.添加记..*\n");

.printf(z,\t\t\t\t.3.删除记..*\n");

.printfC,\t\t\t\t.4.排....*\n");

.printf(z,\t\t\t\t.5.查询记..*\n");

.printf(z,\t\t\t\t.6.退.…*\n");

printf(*\t\t\t\t**********\n")

voidDelMenuO{/*删除菜单*/

printfC\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");

)

voidRankingMenuO{/*排序菜单*/

printf(^\n\t\t\t\t************\n〃);

printf("\t\t\t\t*排序菜单

.printf("\t\t\t\t.1.数学成绩排..*\n");

.printf('\t\t\t\t.2.C语言成绩排..*\n");

.printf(z,\t\t\t\t.3.总分排....*\n");

.printfC\t\t\t\t.4.返回到上级菜.*\n");

printf***********\n");

}

voidInquireMenu(){/*查讯菜单*/

printf(*\n\t\t\t\t************\n");

printfr\t\t\t\t*查讯菜单*\n〃);

.printf(y,\t\t\t\t.1.学号查....*\n*);

.printf(*\t\t\t\t.2.姓名查....*\n");

.printf('\t\t\t\t.3.数学成绩查..*\n");

.printf(z,\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〃);

)

charInputfilename0{/*输入文件名同时产生

付本文件名*/

charstr2□:{"B"};

printf("**请输入文件名**:

scanf(,,%s,/,fi1ename);

getchar();

strcpy(filename2,filename);

strcat(filename?,str2);

)

FILE*readfile(){/*读取文档*/

FILE*fpl;

if((fpl=fopen(filenane,"rb"))==NULL)

{printfC\n文件读取错误!!\n");

fclose(fpl);

)

return(fpl);

)

FILE*foundfile(){/*新建文档*/

FILE*fpl;

if((fpl=fopen(fileneme,*wb*))—NULL)

{printf(*\n文件创建错误!!\n");

fclose(fpl);

return(fpl);

)

FILE*savefile(){/*追加文档*/

FILE*fpl;

if((fpl二fopen(filename,"ab"))=NULL)

{printf(*\n文件追加错误!!\n");

fclose(fpl);

)

return(fpl);

)

intInputSciveO{/*添加数据*/

inti=0,j;

charch=,y';

while(ch!=,w')

printf(*Xn**请输入姓名(字符型)**:");

scanf(,,%s,/,record[iJ.name);

Loop1:printf(*\n**请输入学号(长整型)**:〃);

scanf&record[i].Number);

if(i!=l)

for(j=l;j<i;j++)

if(record]i].Number==record[j].Number)

)prirtf(^\n\t警告!输入了二个同样的学号!第刎条和第%d学号相

问!\n”,i,j);

prir.tf(*\n\t请重新输入!\n");

gotoLoopl;

)

Loop2:printf(*\n**请输入数学成绩(整型)**

scanf(〃%d”,&record[i].Math);

if(record[i].Math>100|record[i].Math<0)

{printfC\n\t输入的分数不服合实际要求!请重新录入!\n〃);

gotoLoop2:

)

Loop3:printfC\n**请输入C语言成绩(整型)**:");

scanf(飞d”,&record[i].C);

if(record[i].C>10011record[i].C<0)

{printfC\n\t输入的分数不服合实际要求!请重新录入!\n〃);

gotoLoop3;

)

record[i].Amount=rccord[i].Math+record[i].C;

printf(*\n'w':结束录入‘s'=重新录入此条记录'n'二下一条:〃);

getcharO;/*吃掉上一个

回车符*/

if((ch=getchar())=='s')

i=i-l;

)

return(i);

}

/*

voidReadComputer(inti,FILE*fpl){(文

本方式)数据写入机器

intj;

for(j=l;j<i+l;j++)

fscanf(fpl,*%s,%ld,%d,%d,%d,z,record[j].name,&rccord[j].Number,&rccord[j].Math,&r

ecord[j].C,&record[j].Amount);

}

voidSaveFile(inti,FILE*fpl){(文

本方式)数据写到文件中

intj;

for(j=l;j<i+l;j++)

fprintf(fpl,^s,%ld,%d,%d,%d”,record[j].name,record[j].Number,record[j].Math,rec

ord[j].C,record[j].Amotnl);

)

*/

voidReadComputer2(inti.FILE

*fpl){/*(2方式)数据写入机器*/

intj;

for(j=l;j<i+l;j++)

if((fread(Srecord[j],sizeof(structst),1,fpl))!=1)

{printf(〃\n主文件数据读取错误!\n〃);

fclose(fpl);

)

)

voidSaveFile2(inti.FILE

*fpl){/*(2方式)数据写到文件中*/

intj;

for(j=l;j<i+l;j++)

if((f\vrite(&rocord[j]»sizeof(structst),1,fpl))!=1)

{printf("\n主文件数据写入错误!\n〃);

fclose(fpl);

)

)

/*r^w»JCr^C5JC*^Cr^C5^Cr^Cr^CJ^Cr^C5j%r^CijCr^Cr^C»^C*JCJ§Crj*jJCr^C5jC*^Cr^C5jCrJCr^Ci}Crj*r^Cr^CJ^Cr^CJ§Cr^CjJjr^C5j**^Cr^C^Cr^Crj*?5C

************************************************************/

FILE*readfile2()(/*读文件付本

*/

FILE*fpl;

ir((fpl=fopen(filename2,"rb"))=二NULL)

(printf(z,\n付本文件读取错误!\n");

fclose(fpl);

)

return(fpl);

)

FILE*foundfile2(){/*新建文件付

本*/

FILE*fpl;

if((fpl=fopen(filenc.me2,^wb/"))==NULL)

{printfC\n付本文件创建错误!\n");

fclose(fpl);

}

return(fpl);

}

FILE*savefile2(){/*追加文件

付本*/

FILE*fpl;

if((fpl=fopcn(filen£me2,,,ab,/))==NULL)

{printf(^Xn付本文件追加错误!\n");

fclose(fpl);

)

return(fpl);

)

/*

voidAdditive2(inti,FILE*fpl){数据与人付本

文件(文本方式)

intj;

charstr2:{"0"};

if(strcmp(fi1enameF,str2)!=0)

strcpy(num[0].name,filenameF);

else

strcpy(num[0].name,filenameA);

num[O].num=i;

fprintf(fpl,*%s,%dz,,num[O].name,num[O].num);

)

intRoadComputer2(FILE*fpl){读出付本中

的数据(文本方式)

intj,k;

fscanf(fpl,rum[O].name,&num[O].num);

k=numfO].num;

return(k);

}

*/

voidAdditive2Two(inti,FILE*Tpl){/*数据写入

付本文件(二进制方式)*/

charsti*2[]=(*0*);

if(strcmp(filename2,str2)!=0)

strcpy(num[0].name,filenamc2);

else

strcpy(num[0].name,filcnamo2);

num[0].num=i;

if((fwrite(&num[0],sizeof(structcount),1,fpl))!=1)

{printf(〃\n付本文件数据写入错误!\n〃);

fclose(fpl);

)

)

intReadComputer2Two(FILE*fpl){/*读出付

本中的数据(二进制方式)*/

intj;

if((fread(&num[0],sizeof(structcount),1,fpl))!=1)

{printf(〃\n付本文件数据读取错误!\n〃);

fclose(fpl);

)

j=num[0].num;

return(j);

)

/*****************************株******************************

************************************************************/

voidNuminquire(){/*学号查

询*/

intnum,j,time;

FILE*fpl,*fp2;

fpl=readfile();/*读取文

档*/

fp2=readfile2();/*(开打方

式'读'**'引用读文件名')读文件付本*/

time=RcadComputci'2Two(fp2);/*读出付本

中的数据(二进制方式)*/

RcadComputer2(time,fpl);/*(2方式)

数据写入机器*/

fclose(fpl);fclose(fp2);

printf("输入学号

scanf(,/%ld,,»&num);

/♦getchar();*/

for(j=l;j<time+l:j++)

{if(record[j].Ntmbcr==nuni)

printfC\nNenie:%-10sNum:%31dMath:%3dC:%3d

Amount:%3d\n,/,record[j].name,record[j].Number,record[j].Math,record[j].C,record[

j].Amount);

)

)

voidNamcinquircO(/*姓名查

询*/

intj,time;

charName[10];

FILE*fpl,*fp2;

fpl=roadfile();

fp2=readfile20;/*(开打方

式'读'**'引用读文件名’)读文件付本*/

time=ReadComputer2Two(fp2);/*读出付本

中的数据(二进制方式)*/

ReadComputer2(time,fp1);/*(2方式)

数据写入机器*/

fclose(fpl);fclose(fp2);

printf("输入姓名姓);

scanfName);

/♦getchar0;*/

for(j=l;j<timc+l;j++)

{if(strcmp(Name,record[j].name)==0)

printf("\nName:%TOsNum:%31dMath:%3dC:%3d

Amount:%3d\n,z,record。],name,record[j].Number,record[j].Math,record[j].C,record[

j].Amount);

)

)

voidMath_inquire(){/*数学查

询*/

intMath,j,time;

FILE*fpl,*fp2:

fpl=readfile();

fp2=readfile2();/*(开打方

式'读'**'引用读文件名’)读文件付本*/

time=ReadComputer2Two(fp2);/*读出付木

中的数据(二进制方式)*/

ReadComputer2(time,fp1);/*(2方式)

数据写入机器*/

fclose(fpl);fclose(fp2);

printf(〃输入数学成绩:“);

scanfOath);

/*getchar0;*/

for(j=l;j<time+l;j++)

{if(record[j].Mdth>=Math)

printf(,z\nName:%-lGsNum:%31dMath:%3dC:%3d

,,

Amount:%3d\n,record[j].name,record[j].Number,record[j].Math,record[j].C,record[

j].Amount);

}

)

voidC_inquire(){/*C查询

*/

intC,j,time;

FILE*fpl,*fp2;

fpl=readfile();

fp2=readfile2();/*(开打方

式'读'**'引用读文件名’)读文件付本*/

time=ReadComputer2Two(fp2);/*读出付本

中的数据(二进制方式)*/

ReadComputer2(time,fpl);/*(2方式)

数据写入机器*/

fclose(fpl)jfclose(fp2);

printf("输入C语言成绩:”);

scanf&C);

,/*getchar();*/

for(j=l;j<time+l;j++)

{if(record[j].C>=C)

printf("\nNamo:%TOsNum:%31dMath:%3dC:%3d

Amount:%3d\n,z,record[j].name,record[j].Number,record[j].Math,record[j].C,record[

j].Amount);

}

)

voidAmountinquireO{/*总分查

询*/

intAmount,j,time;

FILE*fpl,*fp2;

fpl=readfile();

fp2=readfile2();/*(开打方

式'读'**'引用读文件名’)读文件付本*/

time=ReadComputer2Two(fp2);/*读出付本

中的数据(二进制方式)*/

ReadCompuler2(time,fpl);/*(2方式)

数据写入机器*/

fclose(fpl);fclose(fp2);

printf("输入总分:“);

scanf&Amount);

/*getchar();*/

for(j=l;j<time+l;j++)

{if(record[j].Amount〉二Amount)

printf('\nName:%TOsNum:531dMath:%3dC:%3d

Amount:%3d\n,,»record[j].name,record[j].Number,record[j].Math,record[j].C,record[

j].Amount);

)

)

25cJJC

voidNuminquireDel()\/*学号查询

删除*/

charch;

intnum,j,k,time;

FILE*fpl,*fp2;

fpl=roadfile();/*读取文档

*/

fp2=rcadfile2();/*读文件付

本*/

time=ReadComputer2Two(fp2);/*读出付本中

的数据(二进制方式)*/

ReadComputer2(time,fpl);/*(2方式)

数据写入机器*/

fclose(fpl);fclose(fp2);

printf("输入学号:");

scant("%Id”,&num);

getchar();

for(j=l;j<=time;j+4)

if(record[j].Number==num)

{printf("\nNamc:%TOsNum:%31dMath:%3dC:%3d

Amount:%3d\n,/,record[j].name,record[j].Number,record[j].Math,record[j].C,record[

j].Amount);

k二j;

)

printf("\n\t**删除='y'不删除='n'**:");

if((ch=getchar())='y')

{

if(k==time)

timo=time-l;

elsefor(j=k;j<time;j++)

{record[j]=record[j+l];

time=time1;

)

fpl=foundfile();/*新建文档*/

SaveFile2(time,fpl);/*(2方式)数

据写到文件中*/

fp2=foundfile2();/*新建文件付

本*/

Additive2Two(time,fp2);/*数据与入付

本文件(二进制方式)*/

printfC\n删除成功!目前共有先d条记录!\n",time);

fclose(fpl);fclose(fp2);

)

elseprintfC\n没有执行删除操作!'没);

)

/**|cJJC51c5|c

************************************************************/

voidMath_ranking(inti){/*数学排序函

数*/

intj,k;

sttime;

for(j=l;j<i;j++)

for(k=l;k<=i-j;k++)

if(record[k].Math>record[k+1].Math)

{time=record[k];record[k]=record[k+l];record[k+l]=time;}

printf("\n");

for(j=l;j<i+l;j++)

printf("\nName:%TOsNum:%31dMath:%3dC:%3d

Amount:%3d\n,z,record[j].name,record[j].Number,record[j].Math,record[j].C,record[

j].Amount);

)

voidC_ranking(inti){/*C排序函数

*/

intj,k;

sttime;

for(j=l;j<i;j++)

for(k=l;k<=i-j;k++)

if(record[k].Orecord[k+1].C)

{time二record[k];record[k]=record[k+1];record[k+1]=time;}

printf("\n");

for(j=l;j<i+l;j++)

printf("\nNamc:%TOsNum:%31dMath:%3dC:%3d

,,

Amount:%3d\n,record[j].name,record[j].Number,record[j].Math,record[j].C,record[

j].Amount);

)

voidAmount_ranking(inti){"总分

排序函数*/

intj,k;

sttime;

for(j=l;j<i;j++)

for(k=1;k<=i-j;k++)

if(record[k].Amount>record[k+1].Amount)

{time=reccird[k];record[k]=record[k+1];rccordLk+l]=time;}

printf;

for(j=l;j<i+l;j++)

printf("\nName:%TOsNum:%31dMath:%3dC:%3d

Amount:%3d\n,z,record[j].name,record[j].Number,record[j].Math,record[j].C,record[

j].Amount);

}

/*****************************丑******************************

************************************************************/

main(){

FILE*fp,*ffp;

inttemp1=0,temp2=0,temp3;

charch,location;

MainMenu();

location='1';

printf("\n请输入选项1-6(当前在主菜单):”);

while((ch=gctchar())!=,0,)

{if((ch=二'6')&&(location==,T))

(getcharO;

printfC\n\n\t\t\t**'Y'=续继'n'=退出**\n");

printf(/z\r.\n\t\tINPUT:w);

if((ch=getchar())==,n)

{printf(*\n\n\t\t\t谢谢您的使用!”);

exit();

break;

)

else{MainMenuO;location=,T;

prirtf("\n请输入选项1-6(当前在主菜单):”);

)

)

if((ch==,T)&&(location==,T))

(

templ=InputSave();

/*添加数据*/

getcharO;

printf'y'=保存'n'=不保存**:〃);

if((ch=getchar())=='y')

{InputfilenameO;

/*输入文件名同时产生付本文件名*/

fp=four.dfile();

/*新建文档*/

SaveFile2(tempi,fp);

/*(2方式)数据写到文件中*/

fclose(fp);

ffp=foLndfile2();

/*(开打方式'新建')新建文件付本*/

Additive2Two(tempi,ffp);/*新

建付本文件数据(文本方式)*/

fclose(ffp);

printf("保存了,d条记录!\n”,tempi);

)

elseprintf('At没有保存!\n");

templ=0;temp2=0;

MainMenuO;location』1';

printf("\n请输入选项1-6(当前在主菜单):”);

continue;

)

if((ch==,2*)&&(location==,T))

{getcharO;

printfr\n\t**'y=使用当前文件名'n'=输入新文件名**:"j;

if((ch=getcharO)='y')

fp=savefile();/*

追加文档*/

else(Inputfilename();/*输入文件

名同时产生付本文件名*/

fp=savefile();

)

templ=InputScive();/*

添加数据*/

temp3=tempi;

SaveFile2(tempi,fp);/*(2方式)数据写

到文件中*/

fclose(fp);

ffp=readfile2();/*读文件付

本*/

temp2=ReadConiputer2Two(ffp);/*读出付本

中的数据(文本方式)*/

fclose(ffp);

temp1=tempi।temp2;

ffp=foundfile2();/*新建文件

付本*/

Additive2Two(tempi,ffp);/*新建付本

文件数据(文本方式)*/

fclose(ffp);

printf(z,\n添加拉%d条数据!共保存%d条数据!\n”,temp3,tempi);

lempl=0;temp2=0;

MainMenu();location:'1';

printf(〃\n请输入选项1-6(当前在主菜单):”);

contir.ue;

)

if((ch==’3*)&&(location==,T))

{DelMer.u();location=,2';

printf("\n请输入选项1-3(当前在删除菜单):”);

while((ch=getchar())!='O'){

if((ch==*T)&&(location==,2'))

{getcharO;

printfC\n\t\t**现在位置在删除菜单一学号删除**\n〃);

printfC\n\t**'y;使用当前文件名'n'=输入新文件名:

”);

if((ch=getchar())=='y')

{}/*追加文

档*/

elseInputfilonameO;/*输

入文件名同时产生付本文件名*/

NuminquireDel();/*学

号查询删除*/

DelMenuO;location=,2*;

printf(〃\n请输入选项1-3〔当前在删除菜单):〃);

continue;

)

if((ch二二'2')&&(location+2'))

{MainMcnuO;locatic-n=,T;

printf(〃\n请输入选项1-61当前在主菜单):");

break;

)

)

}

if((ch==’4')&&(location==,T))

{RankingMenuO;location=,3';

printf("\n请输入选项1-4(当前在排序菜单):”);

while((ch=getchar())!='()'){

if((ch==,f)&&(location==,3*))

{getcharO;

printf**现在位置在排序菜单-数学排序**\1/');

printfC\n\t**'『=使用当前文件名'n'=输入新文件名:

〃);

if((ch=getchar())=='y*)

{}/*追加文

档*/

elseInputfilenameO;

fp二readfile();

/*读取文档*/

ffp=readfile2();

/*(开打方式'读'**'引用读文件名’)读文件付本*/

temp1=ReadComputer2Two(ffp);

/*读出付本中的数据(二进制方式)*/

fclose(ffp);

ReadComputer2(tempi,fp);

/*(2方式)数据写入机器*/

fclose(fp);

Mathranking(tempi);

/*数学排序函数*/

temp1=0;temp2=0;

RankingMenuO;location='3';

printf("\n请输入选项1-41当前在排序菜单):");

continue;

)

if((ch==,2?)&&(location==,3*))

{getcharO;

printfC\n\t\t**现在位置在排序菜单-C语言排序**\n");

printfC\n\t**'y=使用当前文件名‘n'=输入新文件名**:

〃);

if((ch=getchar())=='y')

{}

/*追加文档*/

elseInputfilename();

fp=readfile();

/*读取文档*/

ffp=readfile2();

/*(开打方式'读'**'引用读文件名’)读文件付本*/

templ=RecidComputer2Two(ffp);

/*读出付本中的数据(二进制方式)*/

fclose(ffp);

ReadComputer2(tempi,fp);

/*(2方式)数据写入机渊*/

fclose(fp);

Cranking(tempi);

/*数学排序函数*/

tcmpl=0;temp2=0;

R^nkingMenuO;location=,3';

printf("\n请输入选项1-4i当前在排序菜单):”);

conlinue;

)

if((ch==,3')&&(localion=='3'))

{getcharO;

printf("\n\t\t**现在位置在排序菜单一总分排序**\n");

printfC\n\t**'y';使用当前文件名'n'=输入新文件名**:

”);

if((ch=getchar())==,y')

()

/*追加文档*/

elseInputfilename();

fp=readfile();

/*读取文档*/

ffp=readfile2();

/*(开打方式'读'**'引用读文件名’)读文件付本*/

templ=ReadComputer2Two(ffp);

/*读出付本中的数据(二进制方式)*/

fclose(ffp);

ReadComputer2(tomp1,fp);

/*(2方式)数据写入机器*/

fclose(fp);

Amount_ranking(temp1);

/*数学排序函数*/

templ=0;temp2=0;

RankingMenu();location=,3';

printf("\n请输入选项1-41当前在排序菜单):");

continue:

)

if((ch==,4?)&&(location==53'))

{MainMenu。;location』1’;

printf("\n请输入选项1-6i当前在主菜单):〃);

break;

)

)

)

if((ch==,5,)&&(!ocation=='1'))

(1nquireMenu();1ocation=,4';

printf("\n请输入选项1-6(当前在查询菜单):”);

while((ch=getchar())!=,01)(

if((ch==,f)&&(location==,4*))

{getcharO;

printf(〃\n\t\t**现在位置在查询菜单一学号查询**\0;

printf("\n\t**'丫'=使用当前文件名'n'=输入新文件名**:

”);

if((ch=getchar())==,y')

{}/*

追加文档*/

elseInputfilcnaraeO;

Num_inquire();/*学号查询

*/

Ir.quireMenu();1ocation=,4;

printf("\n请输入选项1-61当前在查询菜单):");

continue;

)

if((ch==,2')&&(location=='4'))

{getcharO;

printf**现在位置在查询菜单一姓名查询**\n");

printfC\n\t**'y'=使用当前文件名'n'二输入新文件名**:

”);

if((ch=getchar())=='y')

(}

/*追加文档*/

elseInputfilenameO;

NameinquireO;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论