欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据库第一章实验.doc

    • 资源ID:78905338       资源大小:76.50KB        全文页数:11页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据库第一章实验.doc

    针对每一项功能,有着相应的实现方法。第一项功能,实现对两个文件数据进行合并,生成新文件3.txt。调用函数Unitedfile()来实现,函数以读的方式打开1.txt文件,以写的方式打开3.txt文件,从1.txt读入一个数据并写入3.txt文件,直到遇到1.txt文件结束。关闭1.txt文件,再以读的方式打开2.txt文件,用上述方式直到遇到2.txt文件结束。关闭2.txt,3.txt文件。实现对于文件的合并。void Unitedfile()/合并1.txt和2.txt为3.txtFILE *fp,*p;Student studd;fp=fopen("1.txt","r");/以读的方式打开1.txtp=fopen("3.txt","w");/以写的方式打开3.txtwhile(fscanf(fp,"%s%s%d%d%d",studd.name,studd.id,&studd.chinese,&studd.math,&studd.english )!=EOF)fprintf(p,"%-6s %-6s %-6d %-6d %-6dn",studd.name,studd.id,studd.chinese,studd.math,studd.english );/读取1.txt的数据进入结构体中,写入3.txt,继续读取直结束fclose(fp);/关闭文件1.txtfp=fopen("2.txt","r");/以写的方式打开2.txtwhile(fscanf(fp,"%s%s%d%d%d",studd.name,studd.id,&studd.chinese,&studd.math,&studd.english )!=EOF)fprintf(p,"%-6s %-6s %-6d %-6d %-6dn",studd.name,studd.id,studd.chinese,studd.math,studd.english );fclose(fp);fclose(p);第二项功能,抽取出三科成绩中有补考的学生并保存在一个新文件4.txt。调用函数findout()来实现。函数以读的方式打开3.txt文件,以写的方式打开4.txt文件。读入3.txt文件的一个数据到结构体studd中,判断学生信息中语、数和英语中是否具有不及格的,如果有,则将数据写入4.txt中,直至遇到3.txt文件结束。void findout()/抽取出三科成绩中有补考的学生并保存在一个新文件4.txtFILE *fp,*p;Student studd;fp=fopen("3.txt","r");p=fopen("4.txt","w");/从3.txt中读入学生数据进结构体,判断是否有不及格的课程,如果有,则写入文件4.txt中while(fscanf(fp,"%s%s%d%d%d",studd.name,studd.id,&studd.chinese,&studd.math,&studd.english )!=EOF)if(studd.chinese<60|studd.english<60|studd.math<60)fprintf(p,"%-6s %-6s %-6d %-6d %-6dn",studd.name,studd.id,studd.chinese,studd.math,studd.english );fclose(fp);fclose(p);第三项功能,对合并后的文件3.txt中的数据按总分降序排序。调用函数sortfile()来实现。函数提供了两种排序方法,通过调用函数kuaisu()来实现快速排序,通过调用函数xuanze()来实现选择排序。void sortfile()/提供两种排序方法char c;cout<<"请选择排序方法:"<<endl;cout<<"1.选择排序"<<endl;cout<<"2.快速排序"<<endl;cin>>c;switch(c)case'1':xuanze();/选择排序break;case'2':kuaisu();/快速排序break;选择排序void xuanze() /对合并后的文件3.txt中的数据按总分降序排序int j,k,max1,sum1,sum2,q;i=0;Student temp;FILE *fp;fp=fopen("3.txt","r");i=0;while(fscanf(fp,"%s%s%d%d%d",studi.name,studi.id,&studi.chinese,&studi.math,&studi.english )!=EOF)i+;/从3.txt中读入数据进结构体数组stud中fclose(fp);for(j=0;j<i-1;j+)/对结构体数组中的数据进行选择排序max1=j;sum1=studj.math+studj.english+studj.chinese;for(k=j+1;k<i;k+)sum2=studk.math+studk.english+studk.chinese;if(sum1<sum2)max1=k;sum1=sum2;if(max1!=j)temp=studmax1;studmax1=studj;studj=temp;studj.sum=sum1;fp=fopen("3.txt","w");/将排序后的数据写入3.txt中for(q=0;q<i;q+)fprintf(fp,"%-8s %-8s %-8d %-8d %-8d %-8dn",studq.name,studq.id,studq.chinese,studq.math,studq.english,studq.sum );fclose(fp);快速排序int Partition(int low,int high)int pivotkey;Student temp;temp=studlow;pivotkey=studlow.sum;while(low<high)while(low<high&&studhigh.sum<=pivotkey)-high;studlow=studhigh;while(low<high&&studlow.sum>=pivotkey)+low;studhigh=studlow;studlow=temp;return low;void QSort(int low,int high)/快速排序int privotloc;if(low<high)privotloc=Partition(low,high);QSort(low,privotloc-1);QSort(privotloc+1,high);void kuaisu()/读取文件,快速排序,将结果写入3.txtint i,low,high;FILE *fp;fp=fopen("3.txt","r");i=0;while(fscanf(fp,"%s%s%d%d%d",studi.name,studi.id,&studi.chinese,&studi.math,&studi.english )!=EOF)studi.sum=studi.english+studi.chinese+studi.math;i+;/从文件3.txt中读入数据进结构体数组stud中fclose(fp);low=0;high=i-1;QSort(low,high);/快速排序fp=fopen("3.txt","w");/将排序后的数据写入3.txt中for(int j=0;j<i;j+)fprintf(fp,"%-8s %-8s %-8d %-8d %-8d %-8dn",studj.name,studj.id,studj.chinese,studj.math,studj.english,studj.sum );fclose(fp);第四项功能,输入一个学生姓名后,能查找到此学生的信息并输出结果。调用函数findoutstudent()来实现。函数也提供了两种查找方法,通过调用函数derectfindoutstudent()实现从文件从3.txt中逐个读入数据,再进行查找判断,如果找到所需要的数据,则查找结束,否则继续查找直至文件结束。autofindoutstudent()在进行第三步的过程中,已经把3.txt中的学生数据读入了结构体数组当中,调用函数autofindoutstudent()直接从结构体中进行查找。void derectfindoutstudent()/输入一个学生姓名,查找到此学生的信息并输出结果char NAME30;int flag=0;FILE *fp;fp=fopen("3.txt","r");cin>>NAME;while(fscanf(fp,"%s%s%d%d%d%d",stud1.name,stud1.id,&stud1.chinese,&stud1.math,&stud1.english,&stud1.sum )!=EOF)if(strcmp(stud1.name,NAME)=0)flag=1;cout<<"-姓名-学号-语文-数学-英语-总分-"<<endl;cout<<" "<<stud1.name<<" "<<stud1.id<<" "cout<<stud1.chinese<<" "<<stud1.math<<" "<<stud1.english<<" "<<stud1.sum<<endl;break;if(flag=0)cout<<"无此学生相关信息"<<endl;fclose(fp);void autofindoutstudent()/从结构体数组中查找int n,flag=0,k;char Name30;n=i-1;cin>>Name;for(k=1;k<=n;k+)if(strcmp(studk.name,Name)=0)flag=1;cout<<"-姓名-学号-语文-数学-英语-总分-"<<endl;cout<<" "<<studk.name<<" "<<studk.id<<" "cout<<studk.chinese<<" "<<studk.math<<" "<<studk.english<<" "<<studk.sum<<endl;break; if(flag=0)cout<<"无此学生相关信息"<<endl;void findoutstudent()/提供两种查找方法char c;cout<<"请选择查找方法"<<endl;cout<<"1.从文件3中直接查找"<<endl;cout<<"2.在运行第三步的基础上查找"<<endl;cin>>c;cout<<"请输入学生姓名:"if(sign1=0&&c='2')cout<<"请执行操作3后再执行此项操作!"<<endl;return;switch(c)case'1':derectfindoutstudent();/从文件3中直接查找break;case'2':autofindoutstudent();/从结构体数据中直接查找break;第五项功能,通过调用函数exit()退出。main()Unitedfile()findoutstudent()sortfile()derectfindoutstudent()findout()exit(0)autofindoutstudent()xuanze()kuaisu()系统函数调用关系示意图:4 调试问题在调用derectfindoutstudent()实现查找的功能时,出现错误信息:原因,文件名使用错误:void derectfindoutstudent()/输入一个学生姓名,查找到此学生的信息并输出结果char NAME30;int flag=0;FILE *fp;fp=fopen("31.txt","r");cin>>NAME;while(fscanf(fp,"%s%s%d%d%d%d",stud1.name,stud1.id,&stud1.chinese,&stud1.math,&stud1.english,&stud1.sum )!=EOF)if(strcmp(stud1.name,NAME)=0)flag=1;cout<<"-姓名-学号-语文-数学-英语-总分-"<<endl;cout<<" "<<stud1.name<<" "<<stud1.id<<" "cout<<stud1.chinese<<" "<<stud1.math<<" "<<stud1.english<<" "<<stud1.sum<<endl;break;if(flag=0)cout<<"无此学生相关信息"<<endl;fclose(fp);中的31.txt文件应改为3.txt。原因,31.txt文件不存在。错误分析,手误。

    注意事项

    本文(数据库第一章实验.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开