学生成绩管理系统课程分析方案

上传人:ET****1 文档编号:108841016 上传时间:2022-06-16 格式:DOCX 页数:17 大小:236.81KB
收藏 版权申诉 举报 下载
学生成绩管理系统课程分析方案_第1页
第1页 / 共17页
学生成绩管理系统课程分析方案_第2页
第2页 / 共17页
学生成绩管理系统课程分析方案_第3页
第3页 / 共17页
资源描述:

《学生成绩管理系统课程分析方案》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程分析方案(17页珍藏版)》请在装配图网上搜索。

1、 数据结构 课程设计报告 课题名称 学生成绩管理系统 姓 名 学 院 系科班级 指导老师 日 期 2018年 1月 17日 目录 3 学生成绩管理系统 3 4 现有学生成绩信息文件 1<1.txt ),内容如下 4 姓名 学号 语文 数学 英语 5 张明明 01 67 78 82

2、1 5 李成友 02 78 91 88 张辉灿 03 68 82 56 2 5 王露 04 56 45 77 3 5 陈东明 05 67 38 47 5 . .. .. .. 学生成绩信息文件 2<2.txt ) , 内容如下 : 12 姓名 学号 语文 数学 英语 15 陈果 31 57 68 82 16 李华明 32 88 90 68 张明东 33 48 42 56

3、 李明国 34 50 45 87 陈道亮 35 47 58 77 . .. .. .. 2/16 试编写一管理系统 , 要求如下 : 1> 实现对两个文件数据进行合并 , 生成新文件 3.txt 2> 抽取出三科成绩中有补考的学生并保存在一个新文件 4.txt 3> 对合并后的文件 3.txt 中的数据按总分降序排序 ( 至少采用两种排序方法实现 > 4> 输入一个学生姓名后 , 能查找到此学生的信息并输出结果 ( 至少

4、采用两种查找方法实现 > 5> 要求使用结构体和数组实现上述要求 . 三、 设计目的 1)培养学生综合程序设计的能力,训练学生灵活应用所学数据结构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。 2)巩固、深化学生的理论知识,提高编程水平,培养严谨的科学态度和良好的学习作风。为今后学习其他计算机课程打下基础。 3)将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高编程序能力和创新意识。 四、 概要设计

5、 3/16 学生成绩管理系统 读 读 取 取 文 文 件 件 1 2 五、 详细设计 1)主要数据结构: struct student { char name[6] 。 int num 。 long int chi 。 long i

6、nt math 。 long int eng 。 long int sum 。 } 。  合 把 并 补 两 考 文 的 件 放 放 在 在 文 文 件 件 4 3  查 找 文 件 中 的 人 信 息  退 出 2

7、)模块功能: 合并模板、提取模板、排序模板、查询模板、模块功能 1、生成文件 3:实现对两个文件数据进行合并,生成新文件 3.txt ; 2、查看文件 3:显示文件 3 里的所有信息; 3、生成文件补考文件 4:抽取出三科成绩中有补考的学生并保存在一个新文件 4.txt ; 4、查看文件 4:显示文件 4 里的所有信息; 5、排序后的文件 3:对合并后的文件 3.txt 中的数据按总分降序排序 < 冒泡、插入); 4/16 6、查找学生信息:按姓名查找学生的信息并输出结果 <顺序、折半); 3)调用关系

8、 主函数可调用其它函数 六、 源程序 #include #include struct student { char name[6] 。 int num 。 long int chi 。 long int math 。 long int eng 。 long int sum 。 } 。 structstudent stu1[100],stu2

9、[100],stu3[100],stu4[100],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",stu1[i].name,&stu1[i].num,&stu1[i]. chi,&stu1[i].math,&stu1[i].eng> 。 printf("\n1.txt 中学生的成绩如下 :\n

10、"> 。 printf(" 姓名 学号 语文 数学 英语 \n"> 。 for(i=1 。i<=5 。 i++> printf("%s %d %ld %ld %ld\n",stu1[i].name,stu1[i].num,stu1 [i].chi,stu1[i].math,stu1[i].eng> 。 } void creat2(> { int i 。 for(j=1  // 对 2.txt 。j<=5 。j++>  的成绩进行读取 fscanf(fp,"%s

11、 %d %ld %ld %ld",stu2[j].name,&stu2[j].num,&stu2[j]. chi,&stu2[j].math,&stu2[j].eng> 。 printf("\n2.txt 中学生的成绩如下 :\n"> 。 5/16 printf(" 姓名 学号 语文 数学 英语 \n"> 。 for(j=1 。 j<=5 。j++> printf("%s %d %ld %ld %ld\n",stu2[j].name,stu2[j].num,stu2 [j].chi,stu2[j].math,stu2[j].en

12、g> 。 } void hb(> // 把合并后的成绩赋值到新的结构体数组 stu3[a] 中 { int i 。 for(i=1 。i<=5 。 i++> { stu3[i]=stu1[i] 。 } for(i=6 。i<=6+j 。i++> { stu3[i]=stu2[i-5] 。 } printf("\n3.txt 中所有学生的成绩名单 :\n"> 。 printf(" 姓名 学号 语文 数学 英语 总分 \n"> 。 for(i=1 。 i<=10 。i++> { stu

13、3[i].sum=stu3[i].math+stu3[i].eng+stu3[i].chi 。 printf("%s %d %ld %ld %ld %ld\n",stu3[i].name,stu3[i].num ,stu3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum> 。 fprintf(fp,"%s %d %ld %ld %ld %ld\n",stu3[i].name,stu3[i] .num,stu3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum> 。 } }

14、 int extract(> // 把成绩中需要补考的学生成绩保存在数组 stu4[j] 中 { int j 。 j=1 。 for(i=1 。i<=10 。i++> { if(stu3[i].math<60||stu3[i].eng<60||stu3[i].chi<60> { stu4[j]=stu3[i] 。 j++ 。 } 6/16 } printf("\n 补考学生成绩名单如下 :\n"> 。 printf(" 姓名 学号 语文 数学 英语 \n"> 。

15、 for(i=1 。i { fprintf(fp,"%5s %3d %4d %4d %4\n",stu4[i].name,stu4[i].num,st u4[i].chi,stu4[i].math,stu4[i].eng> 。 printf("%5s %3d %4d %4d %4d\n",stu4[i].name,stu4[i].num,stu4[ i].chi,stu4[i].math,stu4[i].eng> 。 } } void sort1(> // 冒泡排序 { for(i=1 。i<=10

16、 。i++> { for(j=i+1 。j<=10 。 j++> { if(stu3[j].sum>stu3[i].sum> { t=stu3[j] 。 stu3[j]=stu3[i] 。 stu3[i]=t 。 } } } printf("\n 按总分由高到低排序 ( 冒泡 >后的成绩如下 :\n"> 。 printf(" 姓名 学号 语文 数学 英语 总分 \n"> 。 for(i=1 。i<=10 。i++> printf("%s %d %ld %ld %ld %ld\n",stu3[i].nam

17、e,stu3[i].num ,stu3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum> 。 } void sort2(> // 插入排序 { for(i=2 。i<=10 。i++> { if(stu3[i].sum>stu3[i-1].sum> { tmp=stu3[i] 。 stu3[i]=stu3[i-1] 。 for(j=i-1 。j>0&&tmp.sum>stu3[j].sum 。j--> 7/16 stu3[j+1]=stu3[j]

18、 。 stu3[j+1]=tmp 。 } } printf("\n 按总分由高到低排序 ( 插入 >后的成绩如下 :\n"> 。 printf(" 姓名 学号 语文 数学 英语 总分 \n"> 。 for(i=1 。i<=10 。i++> printf("%s %d %ld %ld %ld %ld\n",stu3[i].name,stu3[i].num ,stu3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum> 。 } void search1(> // 名字查找方式 <顺序查找)

19、 { char fname[6] 。 printf("\n 请输入要查找学生的姓名 :"> 。 scanf("%s",&fname> 。 for(i=1 。 i<=10 。i++> { if(!strcmp(stu3[i].name,fname>> { printf("\n 你所查找 ( 名字顺序 >的学生成绩如下 :\n"> 。 printf(" 姓名 学号 语文 数学 英语 总分 \n"> 。 printf("%s %d %ld %ld %ld %ld\n",stu3[i].name,stu3[i].num ,st

20、u3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum> 。 } } } void search2(> // 名字查找方式 <折半查找) { char fname[6] 。 int mid,low=1 。 int high=10 。 printf("\n 请输入要查找的学生的姓名 :"> 。 scanf("%s",&fname> 。 while(low<=high> { mid=(low+high>/2 。 { if(strcmp(stu3[mid].name,

21、fname>==0> break 。 else if(strcmp(fname,stu3[mid].name>>0> high=mid 。 else low=mid 。 8/16 } } printf("\n 你所查找 ( 名字折半 >的学生成绩如下 :\n"> 。 printf(" 姓名 学号 语文 数学 英语 总分 \n"> 。 printf("%s %d %ld %ld %ld %ld\n",stu3[mid].name,stu3[mid] .num,stu3[mid].chi,stu3[mid].

22、math,stu3[mid].eng,stu3[mid].sum> 。 } void main(> { char digit 。 printf("*************************** 系 统 功 能 菜 单 ******************************* \n"> 。 printf(" ----------------------------- -------------------- -------- \n"> 。 printf(" ************************

23、************************************ \n"> 。 printf(" *1. 读取 3.txt 的成绩 ( 合并 > * *2. 读取 4.txt 的成 绩( 补考 > * \n"> 。 printf(" ************************************************************ \n"> 。 printf(" *3. 按总分排序 ( 冒泡 > * *4. 按总分排序 ( 插入 > * \n"> 。 printf(" *******************

24、***************************************** \n"> 。 printf(" *5. 按名字查找 ( 顺序 > * *6. 按名字查找 ( 折半 > * \n"> 。 printf(" ************************************************************ \n"> 。 printf(" *7. 退 出 系 统 * \n"> 。 printf(" ****************************************************

25、******** \n"> 。 printf(" ------------------------------ ------------------- -------- \n"> 。 printf(" 请选择菜单编号 :"> 。 scanf("%c",&digit> 。 9/16 switch(digit> { case '1': fp=fopen("d:\\1.txt","r+"> 。 creat1(> 。 fclose(fp> 。 fp=fopen("d:\\2.txt","r+"

26、> 。 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=fopen("d:\\3.txt","w"> 。 hb(> 。 fclose(fp> 。 f

27、p=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("d:\\3.txt","w"> 。 hb(> 。 fclose(fp> 。 sort1(> 。 break 。 case '4':

28、 fp=fopen("d:\\1.txt","r+"> 。 creat1(> 。 fclose(fp> 。 10/16 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> 。

29、 fp=fopen("d:\\2.txt","r+"> 。 creat2(> 。 fclose(fp> 。 fp=fopen("d:\\3.txt","w"> 。 hb(> 。 fclose(fp> 。 search1(> 。 break 。 case '6': fp=fopen("d:\\1.txt","r+"> 。 creat1(> 。 fclose(fp> 。 fp=fopen("d:\\2.txt","r+"> 。 creat2(> 。 fclose(fp> 。 fp=fopen("d:\\3.tx

30、t","w"> 。 hb(> 。 fclose(fp> 。 search2(> 。 break 。 case '7': break 。 } } 七、 测试结果 1)合并: 11/16

31、 2)排序: 冒泡排序: 12/16 插入排序:

32、 13/16 3)抽 出 补 考 学 生 : 4)按姓名查找: 顺序查找:

33、 14/16 折半查找: 八、 心得体会 本系统设计是为了合并两个信息表,然后对信息表进行排序,从信息 中查询信息。 由于 C 语言学的不扎实,编程时遇到了很多困难,开始调试的时候经常出现很多的错误,经常容易烦躁,但是经过一段的时间的锻炼使得我能够一步一步的去解决

34、问题。在程序设计方面,逐渐感觉到模块化设计的重要性,应该分析出功能模块,然后对其细节中的共性和特性作分析。 这次的设计,让我大大地感觉到,成功的程序设计是要建立在熟悉语 言的基础之上的。每一次程序设计能大大地增加对语言的熟悉和感知,能 使理论与实际应用相结合,提高了自己组织数据及编写程序的能力。培养 了基本的、良好的程序设计技能以及合作能力。在上机操作的过程中,培 养了我实际分析问题、编程和动手能力,使我掌握了程序设计的基本技能, 提高了我适应实际和实践编程的能力。 15/16 总的来说

35、,这次课程设计让我获益匪浅,对数据结构也有了进一步的 理解和认识。 九、 参考文献: 1. 数据结构

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

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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