1、先输入学生学号,若系统中有此学生的信息,则删除该学生的所有信息;否则提示系统中无此学生的信息。 6).实现修改功能:先输入要修改的学生的学号,如果该学生存在,则根据需要修改学生信息; 7).计算每个学生的加权平均分并根据其是否大于60分别写入两个文本。 课程设计题目功能1.系统功能模块框图设计本程序将用到结构体数组和对文件的操作。程序运行后先要录入学生的信息(班级、学号、姓名、四门课的成绩),用结构体数组保存分类信息。另外在程序中要实现查询显示等功能则需要菜单选择来调用实现各个功能的子函数。由此可以将本系统分为如下几个部分:读取学生信息,按姓名查询,按性别查询,计算总成绩,按姓名排序,按总成绩
2、排序,录入新的学生信息,删除学生信息,修改学生信息,计算加权平均分等。其中个函数通过菜单函数实现。退出计算每个学生的加权平均分修改学生信息删除学生信息录入新的学生信息按姓名排序计算每位同学的总成绩显示菜单(menu)主函数(main)按总成绩排序按性别查询学生信息按姓名查询学生信息读取学生信息以下为系统功能模块框图:2.数据结构说明及详细设计 1.定义一个结构体来保存原始数据。 struct student/-学生信息结构体 long num;/-学号 char name7;/-姓名 char sex3;/-性别 char date13;/-出生日期 int scoreN;/-各科成绩 int
3、 sum;/-总成绩 double ave;/-加权平均分stM; 2.菜单函数Menu输出菜单。 printf(*n); printf(| 学生成绩管理系统 |n| 1.读取学生信息 |n| 2.按姓名查询 |n| 3.按性别查询 |n| 4.计算每位同学的总成绩 |n| 5.按姓名排序 |n| 6.按总成绩排序 |n| 7.录入新的学生信息 |n| 8.按学号删除 |n| 9.修改学生信息 |n| 10.计算每个学生的加权平均分 |n| 0.退出 |n*n 通过printf函数输出菜单 3. ReadDat函数读取学生信息。 if(fp=fopen(tx0126.txt,r) = NULL
4、) printf(文件打开错误!n return; 通过指针打开tx0126文本文件 fgets(str1,100,fp);%s,str1); fgets函数读取tx0126文件的表头并输出 for(i=0;iM;i+) fscanf(fp,%d%s%s%s,&sti.num,sti.name,sti.sex, sti.date);%d%7s%5s%13s,sti.num,sti.name,sti.sex,sti.date); for(j=0;j 0) t=stui; stui=stuj; stuj=t; 用if函数比较每位同学姓名的ASIC码,再通过两个for循环将所有学生行重新排序,最后用
5、printf函数将排好序的学生信息输出在屏幕上。 流程图:排序 输入排序标准(姓名、总成绩)For循环与if结构对各项进行比较并交换顺序输出 8SortBySore按总成绩排序。 struct student stuM; int i,j,sum1=0,sum2=0,n; 重新建立一个student副本 for(n=0;nn+) sum1=sum1+stui.scoren; for(n=0; sum2=sum2+stuj.scoren; if(sum1sum2) t=stui; stui=stuj; stuj=t; 通过两个for循环计算出每位同学的总成绩并通过if函数比较每位学生的总成绩进行排
6、序,最后用print函数将排好序的学生信息输出在屏幕上流程图同模块7! 9. AddStudent函数录入新的学生信息。 if(number=stuj.num)nn该学生已存在,请重新输入! goto loop; 判断要添加的学生是否存在;若存在,通过goto函数loop处重新输入;若不存在, 执行后面的添加项;打开失败n 用指针打开tx0126文件 for(j=0;M+1; printf(%d%73ss%5s%1%9d%9d%9d%9dn,stj.num,stj.name,stj.sex,stj.date, stj.score0, stj.score1,stj.score2,stj.score3 );fprintf(fp,%d%7s%5s%13s%9d%9d%9d%9dnstj.name,stj.sex,stj.date, stj.score0, stj.score1,stj.sco
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1