还剩4页未读,继续阅读
文本内容:
项目二班级学生成绩统计管理#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[MAX_NAME_LEN];char gender
[10];float scores[MAX_SUBJECTS];float total;float average;int rank;}Student;Student students[MAX_STUDENTS];int student_count=0;{“语文“,“数学“,英语,“物理,”化学”};const char*subjects[MAX_SUBJECTS]=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];请输入用户名”;print,scanf%s input_username;z请输入密码;printf”scanf%s,input_password;return strcmpinput_username,username==0strcmpinput__password,password==0;void save_to_file{FILE*file=fopenstudents.txt,w;if file{fprintffile,%d\n,student_count;for inti=0;istudent_count;i++{fprintffile,%s%s%s,students[i].id,students[i].name,students[i].gender;for intj=0;jMAX_SUBJECTS;j++{fprintffile,%.2f,students[i].scores[j];fprintffile,%.2f%.2f%d\n,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;输入性别”;printf%,scanf 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==011strcmpstudents[i].name,key==0{printf%s\n姓名:性别%s\n%s\nzstudents[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];输入要修改的学生学号或姓名”;printf,scanf“%s key;for inti=0;istudent_count;i++{输入新的if strcmpstudents[i].id,key==011strcmpstudents[i].name,key==0{printf学号;scanf%s,students[i].id;输入新的姓名;printscanf%s,students[i].name;输入新的性别”;print%scanf”s”,students[i].gender;forintj=0;j MAX_SUBJECTS;j++{输入新的%$成绩,printfd subjects[j];scanf%f,students[i].scores[j];calculate_scores;save_to_file;return;printf未找到学生信息\nH;void delete_student{char key
[20];“输入要删除的学生学号或姓名;printfscanf%s,key;for inti=0;istudent_count;i++{if strcmpstudents[i].id,key==011strcmpstudents[i].name,key==0{for intj=i;jstudent_count-1;j++{students[j]=students[j+1];student_count-;calculate_scores;save_to_file;printf删除成功\nH;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;“按学号排序⑴或按总分排序⑵;printfscanf%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].totalstudentsfj+l].total swap=1;if swap{Student temp=students[j];students[j]=students[j+1];students[j+1]=temp;for inti=0;istudent_count;i++{students[i].rank=i+1;void display_students{学号姓名性别总分平均分名次;printf\t\t\t\t\t\n“for inti=0;istudent_count;i++{printfH%s\t%s\t%s\t%,2f\t%.2f\t%d\n,students[i].id,students[i].name,students[i].gender,students[i].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++{subject_averages[i]+=students[j].scores[i];subject_averages[i]/=student_count;各门课程平均分printf\n;for inti=0;iMAX_SUBJECTS;i++{printf%s%.2f\n,subjects[i],subject_averages[i];“各门课程平均分:printf\n;for inti=0;iMAX_SUBJECTS;i++{printf%s%.2f\n,subjects[i],subject_averages[i];printfCXn1;void menu{int choice;while1{学生管理系统菜单:printf\n\n;添加学生printfl.\n;查找学生printf
2.\n;.修改学生信息;printf”3\n”删除学生;printf
4.\n“计算总分与平均分;printf-
5.\n“排名学生;printf-
6.\n“显示所有学生printf
7.\n“;分析各科成绩;printf
8.\n”.保存并退出printf“9\n;请输入您的选择”;printf scanf%cT,choice;switch choice{add_student;break;find_student;break;modify__student;break;delete_student;break;calculate_scores;总分和平均分计算完成!printf\n;break;sort__students;学生排名已更新!printf\n;break;display__students;break;analyze_scores;break;save_to_file;数据已保存,退出系统printf\n;return;default:无效选择,请重新输入!printf\n;。
个人认证
优秀文档
获得点赞 0