c语言课程设计报告----班级成绩管理系统内容摘要:
名,或者退出删除模块。 通过一个 for 循环来确定数据库到底是否含有此人的信息。 如果含有此人的信息,则通过一个 for 循环,把这个以后的信息依次前推来覆盖这个人的信息,而实现此人信息的删除。 如果不含此人的信息,则打印“查无此人。 ”。 每次删除结束之后通过选择“是”或者“否”来选择是否继续删除学生信息。 程序通过输入一个变量 num 来实现是按学号还是按姓名来查找,或者退出查询。 当输入完学号或者姓名的时候,再通过一个 for 循环来实现此人信息的查找。 当含有这个人的信息的时候,把标识变量 flag 赋值为 1,并立即输出此人信息。 如 果不含这个人的信息的时候,标识变量 flag 仍为 0。 再通过一个 if 语句,如果标识变量 flag 为 0,则打印“查无此人 !!!”。 用 while 循环保证程序在模块中查询。 每次查询结束之后通过选择“是”或者“否”来选择是否继续查询学生信息。 VI.统计模块: 程序通过输入一个变量 t 来选择按哪项内容统计或者退出统计模块。 再通过一个for 循环来实现目标信息的查找。 定义标识变量 flag,在 for 循环查找信息前赋值为零。 当每找到一个目标信息的时,把标识变量 flag 赋值为 1,用变量 num 累加人 数并并把此人信息赋给另一个结构体成员。 如果不含这个人的信息的时,标识变量 flag 仍为 0。 最后输出统计的人数并通过 for 语句输出这些学生的信息,再通过一个 if 语句,如果标识变量 flag 为 0,则打印出“查无此信息 !!!”。 每次统计结束之后可通过选择“是”或者“否”来选择是否继续统计其他学的信息信息。 . . VII.排序模块: 程序运用起泡排序方法(从第一个数开始依次对相邻两数进行比较,如次序对则不进行任何操作;如次序不对则使这两个数交换位置。 第一遍的( N1)次比较后,最大数已放在 最后,第二遍只需考虑( N1)个数,以此类推直到第( N1)遍后就可以完成排序。 )对所有学生按总分进行升序排列,并通过调用 Print 函数输出排序后的数据。 五.程序调试 如果运行程序,将出现如下的界面 ,即程序主菜单: : 输入 1 并按 回车 ,将 显示 出所 有学 生的 所有 信息 ,其 输出 界面 如下. . 如果按任意键将退出,退回主菜单: II.追加程序: 在主菜单下输入 2 并回车,将进入追加程序菜单,其界面如下: . . 输入要追加的条数 并回车,将开始进行追加学生信息: 输入学生信息后,按回车将自动显示出追加的及原来的所有学生信息,并显示出是否继续追加学生信息,其界面如下: . . 按任意键将退出追加程序返回主菜单。 : 在主菜单下输入 3 并回车进入修改程序下菜单: . . 输入 1 并回车,即按学号查找并修改,程序将会提示输入学号: 输入修改信息并回车,将显示出经修改后所有学生的新信息,其界面如下: IV.删除模块: 在主菜单下输入 4 并回车,将进入删除程 序的菜单下,其界面如下: . . 输入 1 并回车,即选择按学号查找并删除,并输入一个学号回车,如输入 202011,将自动显示出删除后新的学生信息,即不在存在学号为 202011 的学生信息: . . : 在主菜单下输入 5 并回车,进入查询程序的选择菜单下,其界面如下 VI.排序模块: 在主菜单下输入 6 并回车进入排序,并按总分进行排序: . . VII.统计模块: 在主菜单下输入 7 并回车,将进入统计模块: . . VIII.退出模块: 在主菜单下输入 8 并回车将显示出退出程序的界面: 继续按任意键将退出整个程序,即退出班级成绩管理系统。 六、体会 : ( 1)该程序实现了对学生成绩的初步管理; ( 2)可应用文件结构体对此程序进行改进处理; ( 3)通过这次课程设计深入了解了结构体和文件及函数的使用; ( 4)此程序可在修改学生方面进行拓展,另外可以应用页面形式使程序使用更加美观; ( 5)深入研究可加入预处理程序 endif, error。 C 程序的研究和开发均需要耗费很大的精力来查资料和编译 及运行 ,应丰富自身的知识才能更好的发展 七、参考文献 : [1]郝玉洁,袁平,常征,易涛编著 .C 语言程序设计 .北京:机械工业出版社, 2020 [2]刘振安,孙忱,刘燕君编著 .C 程序设计课程设计 .北京:机械工业出版社, 2020 [3]谭浩强编著 .C 程序设计 .北京:清华大学出版社, 2020 [4]谭浩强编著 .C 程序设计题解与上机指导 .北京:清华大学出版社, 2020 [5]张基温,唐永炎,谭浩强著 .C 语言程序设计教程 .北京高等教育出版社, 1998 . . 八.附件 include include include int N=0。 struct stu { int xh。 /*学号 */ char name[10]。 /*姓名 */ double yy。 /*英语 */ double mat。 /*数学 */ double jsj。 /*计算机 */ double wl。 /*物理 */ double zf。 /*总分 */ }s[20]。 void Re_file() { FILE *fp。 fp=fopen(,r)。 while( fscanf(fp,%d\n%s\n%lf\n%lf\n%lf\n%lf\n%lf\n,amp。 s[N].xh,s[N].name,amp。 s[N].yy,amp。 s[N].mat,amp。 s[N].jsj,amp。 s[N].wl,amp。 s[N].zf)!=EOF) N++。 fclose(fp)。 } void Wr_file() {int i。 FILE *fp。 fp=fopen(,w)。 for(i=0。 iN。 i++) fprintf(fp,%d\n%s\n%lf\n%lf\n%lf\n%lf\n%lf\n,s[i].xh,s[i].name,s[i].yy,s[i].mat,s[i].jsj,s[i].wl,s[i].zf)。 fclose(fp)。 } void Js() /*计算总分 */ {int i。 for(i=0。 iN。 i++) s[i].zf=s[i].yy+s[i].mat+s[i].jsj+s[i].wl。 } . . void Sort() /*排序模块 */ {int j,k。 double ave[20],t。 struct stu m。 Js()。 for(k=0。 kN。 k++) ave[k]=s[k].zf/4。 /*计算平均分 */ for(k=0。 kN1。 k++) for(j=k+1。 jN。 j++) if(ave[k]ave[j]) { t=ave[k]。 ave[k]=ave[j]。 ave[j]=t。 /*对平均分排序 */ m=s[k]。 s[k]=s[j]。 s[j]=m。 } /*按平均分整体排序 */ } void Disp() /*显示模块 */ {int i。 printf(******************************************************************************\n)。 printf(学号 姓名 英语 数学 计算机 物理 总分 )。 printf(******************************************************************************\n)。 Js()。 for(i=0。 iN。 i++) printf(%13d %10s %3lf %4lf% 11lf% 11lf %13lf,s[i].xh,s[i].name,s[i].yy,s[i].mat,s[i].jsj,s[i].wl,s[i].zf)。 getchar()。 } void Total() /*统计模块 */ {double yyzf=0,yypj,wlzf=0,wlpj,matzf=0,matpj,jsjzf=0,jsjpj。 int i,j=0,n,o。 printf(===============================\n)。 printf( 请问你想看哪一门课的成绩 ?? \n)。 printf(===============================\n)。 printf(\ \ \ \ \n:)。 printf(\t\t\t\t\t)。 scanf(%d,amp。 n)。 switch(n) { case 1: { printf(==========================================================. . =====================\n)。 printf(学号 姓名 英语 数学 计算机 物理 总分 \n)。 printf(===============================================================================\n)。 for(i=0。 iN。 i++) yyzf+=s[i].yy。 yypj=yyzf/i。 for(i=0。 iN。 i++) { if(s[i].yy =yypj) { j++。 printf(%d %s %f %f %f %f %f\n,s[i].xh ,s[i].name ,。c语言课程设计报告----班级成绩管理系统
相关推荐
t:printf(Error\n)。 getch()。 break。 } 11 }while(ch5!=39。 039。 )。 } findbook() /*„„„„查找图书„„„„ */ { FILE *fp。 char bookname[10]。 int ture,i。 fp=fopen(,r)。 printf(Please input ni yao cha zhao de shu
IV.删除模块 程序通过定义一个变量 num,来确定输入到底是学号还是姓名,或者退出删除模块。 通过一个 for 循环来确定数据库到底是否含有此人的信息。 如果含有此人的信息,则通过一个 for 循环,把这个以后的信息依次前推来覆盖这个人的信息,而实现此人信息的删除。 如果不含此人的信息,则打印“查无此人。 ”。 每次删除结束之后通过选择“是”或者“否”来选择是否继续删除学生信息。
mp。 stu,sizeof(struct student),1,fp)。 } } else { if((fp=fopen(e:\\,wb))!=NULL) { 沈 阳 航 院 设 计 用 纸 17 printf(qingshuruyaotianjiadexueshengshuliang163。 172。 anhuichejianqueren163。 186。 )。 scanf(%d,amp。
ceDropSort(stuscore,STUSIZE,0)。 AsceDropSort函数 源程序如下: 在这个函数中,我们 增加了一个形参,根据该形参的值来确定是否按升序还是按降升序排列,然后用条件表达式来判断是执行什么排列。 其他内容不变。 同学们可以思考其他的优化方法。 任务 11:初步实现学生最高、最低等成绩查找 该任务初步实现项目中 查找最高学生成绩函数 SearchMax()
/*电话号码 */ float score。 /*积分 */ int lost。 /*判断丢失 */ }STUDENT。 void input(STUDENT s[])。 void searchoutput(STUDENT s[])。 void score(STUDENT s[])。 float deal(STUDENT s[])。 int lost(STUDENT s[])。 void
膈蚄袈羇膈莃蚁袃芇蒆袆膂芆薈虿肈芅螀袄肄芄蒀螇罿芃薂羃袅节蚅螅膄节莄羁肀芁蒇螄羆莀蕿罿袂 荿蚁螂膁莈蒁薅膇莇薃袀肃莆蚅蚃罿莆莅衿袅莅蒇蚁膃蒄薀袇聿蒃蚂蚀羅蒂莂袅袁蒁薄蚈芀蒀蚆羃膆蒀蝿螆肂葿蒈羂羈肅薁螅袄肄蚃羀膂膄莂螃肈膃蒅羈羄膂蚇螁羀膁蝿蚄艿膀葿衿膅腿薁蚂肁膈蚄袈羇膈莃蚁袃芇蒆袆膂芆薈虿肈芅螀袄肄芄蒀螇罿芃薂羃袅节蚅螅膄节莄羁肀芁蒇螄羆莀 蕿罿袂荿蚁螂