2022年C语言课设报告——学分管理程序.pdf
C 程序课程设计报告(学分管理程序)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 20 页 - - - - - - - - - - 学分管理程序一: 【题目描述】请设计一个学生的学分管理程序。假设每位学生必须完成基础课50 学分、专业课50 学分、选修课24 学分、人文类课程8 学分、实验性课程20 学分才能够毕业。因此在管理学分时,要考虑每个学分所属于的课程类别。该程序应该具有下列功能:(1) 通过键盘输入某位学生的学分;(2) 给定学号,显示某位学生的学分完成情况;(3) 给定某个班级的班号,显示该班所有学生学分完成情况;(4) 给定某位学生的学号,修改该学生的学分信息;(5) 按照某类课程的学分高低进行排序;(6) 提供一些统计各类信息的功能。【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 学分信息应该包括学号、姓名、课程类别、学分等;(3) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。【输入要求】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示)。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。二:软件的总体结构图。开始显示主菜单精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 20 页 - - - - - - - - - - 建立两个班级结构,其中包括,班中每一名学生的学号,名字,基础科学分,专业课学分,选修课学分,人文课学分,实验课学分,分别以数组的形式存储。在针对每个数族元素进行赋值,修改,运算。三,程序主流程图fanhui ()(班级、学号、姓名、成绩)输入学生基本信息输入学号显示个人信息输入班级显示该班所有学生信息输入学号修改学生基本信息统计printf 按任意键返回菜单 Caidan ();输入相应课程学分排序 began精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 20 页 - - - - - - - - - - shuru1();breakxianshi1();brexianshi2();brexiugai();breakexit(0)paixu();break;tongji ();break;目录函数 caidan ()a,A q,Qb,B d,D e,E f,Fc,C 输入学生学分 shuru()paixu();break;begin char i;printf 显示菜单i=getch();switch(i)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 20 页 - - - - - - - - - - 输入学号,显示该学生各学科学分完成情况xianshi1 ()begin提示输入班级printf ,scanf输入学生个人信息返回菜单printf 按任意键返回菜单精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 20 页 - - - - - - - - - - 输入班号,显示班级所有学生的学分情况xianshi2 () beganint a,b;char s ;显示该学生各学科学分情况case y :运行xianshi1程case n :返回菜单printf(“Enter the number of class(1-2)”);printf(“Enter the number of student(1-5)”);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 20 页 - - - - - - - - - - 修改该学生的学分信息xiugai()Beganint a,i ;char s ;根据输入的班号,显示该班内所有学生学分完成情况case y :运行xianshi2程case n :返回菜单printf(“Enter the number of class(1-2)”);beginint a,b,choice;printf(tEnter the number of class(1-2):); scanf(%d,a);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 20 页 - - - - - - - - - - case 1 :修改基础课学分switch (choice )case 2 :修改专业课学分case 3 :修改选修课学分case 4 :修改人文课学分case 5 :修改实验课学分printf(tEnter the choice(1-5):);printf(tEnter the number of student(1-5):); scanf(%d,b);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 20 页 - - - - - - - - - - 按照单科成绩由高到底排序paixu ()case y :运行xiu gai 程序case n :返回菜单显示修改后的学生学分成绩beganinta , b, i , j , index , temp,x; char n100;char s;输入数组 nindex=0 i=1精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 20 页 - - - - - - - - - - index=ii=i+1aiaindexin输入最大值aindex和下标 index 交换 aindex和 a0输出数组 a输出排序后学生学号,姓名,学分精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 20 页 - - - - - - - - - - 按学科统计各班总分,平均分tongji()case y :运行pai xu程序case n :返回菜单精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 20 页 - - - - - - - - - - beganint a,b,i,total;double average;total=0switch(b)case 1: 统计基础课总学分,及平均case 3:统计选修课总学分,及平均case 2:统计专业课总学分,及平均case 4: 统计人文课总学分,及平均case 5: 统计实验课总学分,及平均输出总学分,平均分case y: tongji() case n: caidan()switch(s提示输入班级,学科精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 20 页 - - - - - - - - - - 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 20 页 - - - - - - - - - - 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 20 页 - - - - - - - - - - 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 20 页 - - - - - - - - - - 学分高低排序调用copyfs(XF *a,XF *b)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 20 页 - - - - - - - - - - int i,j,k,n; FILE *fp;clrscr()printf(nnttt此文件无法打开 !);exit,rb)=NULL)fread(&stui,sizeof(XF),1,i=0iNi+fclose(fp)begin按照一类课程的学分高低进行排序paixu()真假假真精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 17 页,共 20 页 - - - - - - - - - - scanf(%d,&k);按学分高低进行排序i=0iN-1i+clrscr()fanhui();begincaidan () ;假真 printf输出学生信息主函数 main()精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 18 页,共 20 页 - - - - - - - - - - 四小组最终程序报告(1)内容描述。这是一个学生的学分管理程序。假设每位学生必须完成基础课、专业课、选修课、人文类课程、实验性课程的一定学分才能够毕业。因此在管理学分时,要考虑每个学分所属于的课程类别。(2)程序主要功能应用程序运行后, 在屏幕上显示一个菜单。 用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。(3)程序所含功能如下:(1) 通过键盘输入某位学生的学分;(2) 输入学号,显示该同学的学分完成情况(3) 给定某个班级的班号,显示该班所有学生学分完成情(4) 给定某位学生的学号,修改该学生的学分信息;(5) 按照某类课程的学分高低进行排序;(6) 提供一些统计各类信息的功能。(4) 主要思想:首先,建立菜单,运用switch case语句。通过使用者的精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 19 页,共 20 页 - - - - - - - - - - 输入,进入相应不同的运行程序。再建立返回程序goto,在出错或结束程序时返回菜单。在第一个输入学分的程序中,建立学生信息结构并建立文件(FILE*fp ) ,通过用户输入学生的信息(班号,学号,姓名,以及个课程学分),储存在各自的一维数组中。 一并存储在所建立的文件中。输入完毕后,返回主菜单。在第二个输入学号, 显示学生学分程序中。 通过输入学号,打开( fread )文件,运用 for 循环在数组中进行脚码的比较,实现寻找获得正确的地址。显示该学生结构中的各项信息。第三个程序,给出班号,显示全班学生学分完成情况。输入班号,运用 for循环比较。比较正确后,打开文件,读入到内存中。输出该班级的所有学生信息。返回主菜单。第四个,修改学分程序。输入学号。运用循环找出对应地址,读文件到内存中, 打开学生结构。输出学生信息。用 fwrite重新写入到文件中,进行修改。输出修改完毕,返回主菜单。第五个,按课程学分高低排序。输入课程类别,读出文件,针对每个学生的结构中相应的学分地址中的数据进行比较,运用指针,冒泡排序的方法排出顺序,并输出。返回主菜单。第六个,提供一些统计各类信息的功能。计算总分功能。计算平均分。返回主菜单。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 20 页,共 20 页 - - - - - - - - - -