还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
项目二班级学生成绩统计管理#include stdio.h#include stdlib.h#include string.h#define MAX_STUDENTS100#define MAX_NAME_LEN50#define MAX_SUBJECTS5typedef struct{char id
[20];char name[M AX_NAME_LEN];char gender
[10];float scores[MAX_SUB JECTS];float total;float average;int rank;}Student;Student students[MAX_STUDENTS];int student count=0;students[i].rank=i+1;void display_students{学号姓名性别总分平均分名次;printf\t\t\t\t\t\n”for inti=0;istudent_count;i++{printfC%s\t%s\t%s\t%.2f\t%.2f\t%d\n,students[i].id,students[i].name,students[i].gender,studentsfi].total,students[i].average,students[i].rank;void analyze_scores{float subject_averages[MAX_SUBJECTS]={0};for inti=0;iMAX_SUBJECTS;i++{for intj=0;jstudent_count;j++{subj ect_averages[i]+=students[j].scores[i];subj ect_averages[i]/=student_count;各门课程平均分printf\n;for inti=0;iMAX_SUBJECTS;i++{printf(n%s%.2f\n\subjects]”,subject_averages[i]);(各门课程平均分:)printf\n;()for inti=0;i MAX_SUBJECTS;i++{()printf%s%.2fkn,subjects[i],subject_averages[i];()printf\n;()void menu{int choice;()while1{(学生管理系统菜单)printf”\n\n;(添加学生)printf l.\n”;(查找学生);printf
2.\n(.修改学生信息);printf”3\n”(删除学生);printf
4.\n(计算总分与平均分)printf
5.\n;(排名学生);printf
6.\n”(显示所有学生)printf
7.\n;(分析各科成绩);printf
8.\n(.保存并退出)printf9\n;(请输入您的选择);printfscanfn%dn,choice;switch choice{add_student;break;find_student;break;modify_student;break;delete_student;break;calculate_scores;总分和平均分计算完成!printf\n;break;sort_students;printf学生排名已更新!\nH;break;display_students;break;analyze_scores;break;save_to_file;数据已保存,退出系统printf\n;return;default:无效选择,请重新输入!printf\nt!char username
[20]=admin”;;char password
[20]=1234”void save_to_file;void load_from_file;void add_student;void find_student;void modify_student;void delete_student;void calculate_scores;void sort_students;void display_students;void analyze_scores;void menu;int login;int main{load_from_file;if!login{”用户名或密码错误,系统退出printf\n;return0;menu;return0;int login{char input_username
[20],input_password
[20];”请输入用户名”;printfscanfn%sn,input_username;请输入密码;printfscanfn%sf\input_password;return strcmpinput_username,username==0strcmpinput_password,password==0;void save_to_file{FILE*file=fopenstudents.txt,w;if file{fprintffile,n%d\nf\student_count;for inti=0;istudent_count;i++{fprintffile,n%s%s%s tstudents[i].id,students[i].name,students[i].gender;forintj=0;jMAX.SUBJECTS;j++{fprintffileJ%.2f”,students[i].scores[j];fprintffile,n%.2f%.2f%d\nn,students[i].total,students[i].average,students[i].rank;fclosefile;void load_from_file{FILE*file=fopenCstudents.txt,r;if file{fscanffile,%d\n,student_count;for inti=0;istudent_count;i++{fscanffile,%s%s%s,students[i].id,students[i].name,students[i].gender;for intj=0;jMAX_SUBJECTS;j++{fscanffile,%f,students[i].scores[j];fscanffile,%f%f%d\n,students[i].total,students[i].average,students[i].rank;fclosefile;void add_student{学生数量生达上限!if student.count=MAX_STUDENTS{printf\n;return;Student s;输入学号;printfscanf%s,s.id;输入姓名”;printfscanf%s,s.name;输入性别:;printfscanf%s,s.gender;输入%$成绩,for inti=0;iMAX_SUBJECTS;i++{printf subjects[i];scanf%f,s.scores[i];students[student_count++]=s;calculate_scores;save_to_file;void find_student{char key
[20];输入要查找的学号或姓名”;printfscanf%s,key;for inti=0;istudent_count;i++{if strcmpstudents[i].id,key=0||strcmpstudents[i].name,key=0学号%姓名%性别{printf s\n s\n%s\n,students[i].id,students[i].name,students[i].gender;成绩详情printf\n;for intj=0;jMAX_SUBJECTS;j++{printf%s%.2f\n,subjects[j],students[i].scores[j];总分平均分:printf%.2f%.2f\n,students[i].total,students[i].average;return;未找到学生信息printf\n;void modify_student{char key
[20];输入要修改的学生学号或姓名printfscanf%s,key;for inti=0;istudent_count;i++{if strcmpstudents[i]ad,key==0||strcmpstudents[i].name,key==0输入新的学号;{printfscanf%s,students[i].id;输入新的姓名:;printfscanfH%s,\students[i].name;输入新的性别;printfscanfn%sn,students[i].gender;for intj=0;j MAX_SUBJECTS;j++{输入新的%成绩printf s,subjects[j];scanfn%f\students[i].scores[j];calculate_scores;save_to_file;return;未找到学生信息printf\n;char key
[20];输入要删除的学生学号或姓名”;printfscanf%s,key;for inti=0;istudent_count;i++{if strcmpstudents[i].id,key=0||strcmpstudents[i].name,key=0{for intj=i;jstudent_count-1;j++{students[j]=students[j+1];studentcount—;calculate_scores;save_to_file;删除成功printf\n;return;未找到学生信息printf\n;void calculate_scores{for inti=0;istudent_count;i++{students[i].total=0;for intj=0;jMAX_SUBJECTS;j++{students[i].total+=students[i].scores[j];students[i].average=students[i].total/MAX_SUBJECTS;void sort_students{int choice;按学号排序⑴或按总分排序printf2;scanf%d,choice;for inti=0;istudent_count-1;i++{for intj=0;jstudent_count-i-1;j++{int swap=0;if choice==1strcmpstudents[j].id,students[j+l].id0swap=1;if choice==2students[j].totalstudents[j+1].to taiswap=1;if swap{Student temp=students|j];students[j]=students[j+1];students[j+1]=temp;for inti=0;istudent_count;i++{。
个人认证
优秀文档
获得点赞 0