学生成绩管理系统--课程设计报告_第1页
学生成绩管理系统--课程设计报告_第2页
学生成绩管理系统--课程设计报告_第3页
学生成绩管理系统--课程设计报告_第4页
学生成绩管理系统--课程设计报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、数 据 结 构课 程 设 计 报 告课题名称学生成绩管理系统 姓名 学院 系科班级 指导老师 日期2013年1月17日 目录一、问题描述 3二、基本要求 3三、设计目的4四、概念设计4五、详细设计 5n 1主要数据结构 5n 2模块功能 5n 3调用关系 5六、源程序5七、测试结果12八、心得体会15九、参考文献16学生成绩管理系统一、 问题描述现有学生成绩信息文件1(1.txt),内容如下姓名    学号   语文  数学   英语     张明明  01

2、0;    67    78      82李成友  02     78    91      88张辉灿  03     68    82      56王露   04   &#

3、160; 56    45      77陈东明  05     67    38      47.      .      .     .       学生成绩信息文件2(2.txt),内

4、容如下:姓名    学号   语文  数学   英语     陈果   31     57    68     82李华明  32     88    90      68张明东  33  

5、   48    42      56李明国  34     50    45      87陈道亮  35     47    58      77.      .  

6、    .     .       二、 基本要求试编写一管理系统,要求如下:1) 实现对两个文件数据进行合并,生成新文件3.txt2) 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt3) 对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4) 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5) 要求使用结构体和数组实现上述要求.三、 设计目的1)培养学生综合程序设计的能力,训练学生灵活应用所学数据结

7、构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。2)巩固、深化学生的理论知识,提高编程水平,培养严谨的科学态度和良好的学习作风。为今后学习其他计算机课程打下基础。3)将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高编程序能力和创新意识。四、 概要设计学生成绩管理系统读取文件1读取文件2合并两文件放在文件3把补考的放在文件4退出查找文件中的人信息五、 详细设计1)主要数据结构:struct student char name6;int num;long int chi;long int math;long in

8、t eng;long int sum;2)模块功能:合并模板、提取模板、排序模板、查询模板、模块功能1、生成文件3:实现对两个文件数据进行合并,生成新文件3.txt;2、查看文件3:显示文件3里的所有信息;3、生成文件补考文件4:抽取出三科成绩中有补考的学生并保存在一个新文件4.txt; 4、查看文件4:显示文件4里的所有信息;5、排序后的文件3:对合并后的文件3.txt中的数据按总分降序排序(冒泡、插入); 6、查找学生信息:按姓名查找学生的信息并输出结果(顺序、折半);3)调用关系主函数可调用其它函数六、 源程序#include<stdio.h>#include<stdl

9、ib.h>struct student char name6;int num;long int chi;long int math;long int eng;long int sum;struct student stu1100,stu2100,stu3100,stu4100,t,tmp;FILE *fp;int i,j;void creat1() /对1.txt的成绩进行读取 int i; for(i=1;i<=5;i+) fscanf(fp,"%s %d %ld %ld %ld",,&stu1i.num,&stu1i.ch

10、i,&stu1i.math,&stu1i.eng); printf("n1.txt中学生的成绩如下:n");printf("姓名 学号 语文 数学 英语n");for(i=1;i<=5;i+) printf("%s %d %ld %ld %ldn",,stu1i.num,stu1i.chi,stu1i.math,stu1i.eng);void creat2() /对2.txt的成绩进行读取 int i; for(j=1;j<=5;j+) fscanf(fp,"%s %d %ld

11、 %ld %ld",,&stu2j.num,&stu2j.chi,&stu2j.math,&stu2j.eng); printf("n2.txt中学生的成绩如下:n"); printf("姓名 学号 语文 数学 英语n"); for(j=1;j<=5;j+) printf("%s %d %ld %ld %ldn",,stu2j.num,stu2j.chi,stu2j.math,stu2j.eng);void hb() /把合并后的成绩赋值到新的结构

12、体数组stu3a中 int i;for(i=1;i<=5;i+) stu3i=stu1i;for(i=6;i<=6+j;i+) stu3i=stu2i-5; printf("n3.txt中所有学生的成绩名单:n");printf("姓名 学号 语文 数学 英语 总分n"); for(i=1;i<=10;i+) stu3i.sum=stu3i.math+stu3i.eng+stu3i.chi; printf("%s %d %ld %ld %ld %ldn",,stu3i.num,stu3i.chi,

13、stu3i.math,stu3i.eng,stu3i.sum); fprintf(fp,"%s %d %ld %ld %ld %ldn",,stu3i.num,stu3i.chi,stu3i.math,stu3i.eng,stu3i.sum); int extract() /把成绩中需要补考的学生成绩保存在数组stu4j中 int j; j=1;for(i=1;i<=10;i+)if(stu3i.math<60|stu3i.eng<60|stu3i.chi<60)stu4j=stu3i;j+;printf("n补考学生成

14、绩名单如下:n");printf("姓名 学号 语文 数学 英语n"); for(i=1;i<j;i+) fprintf(fp,"%5s %3d %4d %4d %4n",,stu4i.num,stu4i.chi,stu4i.math,stu4i.eng); printf("%5s %3d %4d %4d %4dn",,stu4i.num,stu4i.chi,stu4i.math,stu4i.eng);void sort1() /冒泡排序 for(i=1;i<=10;i+)

15、for(j=i+1;j<=10;j+) if(stu3j.sum>stu3i.sum) t=stu3j; stu3j=stu3i; stu3i=t; printf("n按总分由高到低排序(冒泡)后的成绩如下:n"); printf("姓名 学号 语文 数学 英语 总分n"); for(i=1;i<=10;i+)printf("%s %d %ld %ld %ld %ldn",,stu3i.num,stu3i.chi,stu3i.math,stu3i.eng,stu3i.sum);void sort2

16、() /插入排序 for(i=2;i<=10;i+) if(stu3i.sum>stu3i-1.sum)tmp=stu3i;stu3i=stu3i-1;for(j=i-1;j>0&&tmp.sum>stu3j.sum;j-)stu3j+1=stu3j;stu3j+1=tmp;printf("n按总分由高到低排序(插入)后的成绩如下:n"); printf("姓名 学号 语文 数学 英语 总分n"); for(i=1;i<=10;i+)printf("%s %d %ld %ld %ld %ldn&qu

17、ot;,,stu3i.num,stu3i.chi,stu3i.math,stu3i.eng,stu3i.sum);void search1() /名字查找方式(顺序查找) char fname6; printf("n请输入要查找学生的姓名:"); scanf("%s",&fname); for(i=1;i<=10;i+) if(!strcmp(,fname) printf("n你所查找(名字顺序)的学生成绩如下:n"); printf("姓名 学号 语文 数学 英语 总分

18、n"); printf("%s %d %ld %ld %ld %ldn",,stu3i.num,stu3i.chi,stu3i.math,stu3i.eng,stu3i.sum); void search2() / 名字查找方式(折半查找) char fname6; int mid,low=1; int high=10; printf("n请输入要查找的学生的姓名:"); scanf("%s",&fname); while(low<=high) mid=(low+high)/2; if(st

19、rcmp(,fname)=0) break; else if(strcmp(fname,)>0) high=mid; else low=mid; printf("n你所查找(名字折半)的学生成绩如下:n"); printf("姓名 学号 语文 数学 英语 总分n"); printf("%s %d %ld %ld %ld %ldn",,stu3mid.num,stu3mid.chi,stu3mid.math,stu3mid.eng,stu3mid.sum);v

20、oid main() char digit;printf("*系统功能菜单* n");printf(" - - n");printf(" * n");printf(" *1. 读取3.txt的成绩(合并) * *2. 读取4.txt的成绩(补考) * n");printf(" * n"); printf(" *3. 按总分排序(冒泡) * *4. 按总分排序(插入) * n");printf(" * n");printf(" *5. 按名字查找

21、(顺序) * *6. 按名字查找(折半) * n");printf(" * n");printf(" *7. 退出系统 * n");printf(" * n");printf(" - - n");printf("请选择菜单编号:");scanf("%c",&digit);switch(digit) case '1': fp=fopen("d:1.txt","r+"); creat1(); fclose(

22、fp); fp=fopen("d:2.txt","r+"); creat2(); fclose(fp); fp=fopen("d:3.txt","w"); hb(); fclose(fp); break;case '2': fp=fopen("d:1.txt","r+"); creat1(); fclose(fp); fp=fopen("d:2.txt","r+"); creat2(); fclose(fp); fp=f

23、open("d:3.txt","w"); hb(); fclose(fp); fp=fopen("d:4.txt","w"); extract(); fclose(fp); break;case '3': fp=fopen("d:1.txt","r+"); creat1(); fclose(fp); fp=fopen("d:2.txt","r+"); creat2(); fclose(fp); fp=fopen(&quo

24、t;d:3.txt","w"); hb(); fclose(fp); sort1(); break;case '4': fp=fopen("d:1.txt","r+"); creat1(); fclose(fp); fp=fopen("d:2.txt","r+"); creat2(); fclose(fp); fp=fopen("d:3.txt","w"); hb(); fclose(fp); sort2(); break;case '5': fp=fopen("d:1.txt","r+"); creat1(); fclose(fp); fp=fopen("d:2.txt","r+"); creat2(); fclose(fp); fp=fopen("d:3.txt&qu

温馨提示

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

评论

0/150

提交评论