虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > C/C++编程 > 基于C语言实现学生成绩管理系统

基于C语言实现学生成绩管理系统
类别:C/C++编程   作者:码皇   来源:互联网   点击:

这篇文章主要介绍了基于C语言实现学生成绩管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下

这里只贴代码,具体介绍省略。

    #include <stdio.h>#include <io.h>#include <conio.h>#include <stdlib.h>#include <string.h>#define MAX 200struct student{
    char no[10];
    // 学号 char name[50];
    // 姓名 float score[3];
    // 分数 float math;
    float eng;
    float phy;
    }
    ;
    struct data{
    int count;
    // 当前学生数组中学生的个数 struct student stu[MAX];
    // 学生数组}
    dd;
    // 显示主菜单void menu(){
    system("cls");
    //清屏 printf("nnn");
    printf("ttt *******************************n");
    printf("ttt n");
    printf("ttt 学生成绩管理系统 n");
    printf("ttt n");
    printf("ttt [1] 查看所有学生信息 n");
    printf("ttt [2] 输入学生记录 n");
    printf("ttt [3] 删除学生记录 n");
    printf("ttt [4] 修改学生记录 n");
    printf("ttt [5] 查询学生成绩(学号) n");
    printf("ttt [6] 查询成学生绩(姓名) n");
    printf("ttt [7] 查看成绩排序(学号) n");
    printf("ttt [0] 退出 n");
    printf("ttt n");
    }
    // 等待用户按回车后回到主菜单void to_menu(){
    char c1,c2;
    printf("nnn按回车键返回主菜单...");
    scanf("%c%c",&c1,&c2);
    //第一个字符吸收上次的确认回车键 menu();
    }
    //统计信息void ren(){
    int A=0,B=0,C=0,D=0,E=0,s;
    int i;
    for(i=0;
    i<dd.count;
    i++) {
    s=(int)(dd.stu[i].math/10);
    switch(s) {
    case 10: case 9: A++;
    break;
    case 8: B++;
    break;
    case 7: C++;
    break;
    case 6: D++;
    break;
    default : E++;
    break;
    }
    }
    printf("总人数:%dn",dd.count);
    printf("获得“优秀”的人数:%dn",A);
    printf("获得“良”的人数:%dn",B);
    printf("获得“中”的人数:%dn",C);
    printf("获得“及格”的人数:%dn",D);
    printf("不及格的人数:%dn",E);
    }
    // 查看所有学生信息void view_data(){
    int i;
    printf("学号t姓名t数学t英语t物理");
    printf("n-------------------------------------------------------------------n");
    for(i=0;
    i<dd.count;
    i++) printf("%st%st%-7.1ft%-7.1ft%-7.1fn",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
    printf("n-------------------------------------------------------------------n");
    ren();
    }
    // 将数据从结构体数组保存到文件中void save_data(){
    FILE *fp;
    //文件指针 int i,k;
    k = dd.count;
    //其实k没有什么实际的意义,直接在fwrite里使用&dd.count就可以了。 fp=fopen("D:\data.txt","w");
    //文件存储位置:当前文件夹 fwrite(&k,sizeof(int),1,fp);
    for(i=0;
    i<dd.count;
    i++) fwrite(&dd.stu[i],sizeof(struct student),1,fp);
    fclose(fp);
    }
    // 输入学生记录void add_data(){
    int b;
    int k = dd.count;
    while(k<MAX) {
    printf("请输入学生学号:");
    scanf("%s",dd.stu[k].no);
    printf("请输入学生姓名:");
    scanf("%s",dd.stu[k].name);
    printf("请输入数学成绩:");
    scanf("%f",&dd.stu[k].math);
    printf("请输入英语成绩:");
    scanf("%f",&dd.stu[k].eng);
    printf("请输入物理成绩:");
    scanf("%f",&dd.stu[k].phy);
    dd.count++;
    //需要提前置0,在主函数中。 k = dd.count;
    printf("nn继续添加学生信息[1-yes 0-no]:");
    scanf("%d",&b);
    if(b==0) break;
    }
    save_data();
    }
    // 将数据从文件读到结构体数组中void read_data(){
    FILE *fp;
    int i,k;
    k=0;
    if((fp=fopen("D:\data.txt","r"))==NULL) // 如果文件不存在 {
    dd.count = 0;
    }
    else {
    fread(&k,sizeof(int),1,fp);
    dd.count = k;
    for(i=0;
    i<k;
    i++) {
    fread(&dd.stu[i],sizeof(struct student),1,fp);
    }
    fclose(fp);
    }
    }
    // 删除学生记录void delete_data(){
    int i,k;
    char no[10];
    printf("n请输入要删除学生的学号:");
    scanf("%s",no);
    k = -1;
    for(i=0;
    i<dd.count;
    i++) {
    if(strcmp(dd.stu[i].no,no)==0) {
    k = i;
    break;
    }
    }
    if(k==-1) {
    printf("nn没有找到该学生(学号-%s)!",no);
    }
    else {
    //你没有写删除的操作啊 for(i=k;
    i<dd.count-1;
    i++) //将后面的数据前移一位 dd.stu[i] = dd.stu[i+1];
    memset(&dd.stu[dd.count-1],0,sizeof(struct student));
    //将dd.stu[dd.count-1]数据置0 dd.count--;
    save_data();
    printf("nn删除学生(学号-%s)记录成功!",no);
    }
    }
    // 修改学生记录void edit_data(){
    int i,k;
    char no[10],name[50];
    printf("n请输入要修改学生的学号:");
    scanf("%s",no);
    k=-1;
    for(i=0;
    i<dd.count;
    i++) {
    if(strcmp(dd.stu[i].no,no)==0) {
    k=i;
    break;
    }
    }
    if(k==-1) {
    printf("nn没有找到该学生(学号-%s)!",no);
    }
    else {
    printf("n请输入学生数据:");
    printf("n姓名");
    printf("n--------------------------------------------------------------------n");
    scanf("%s",name);
    strcpy(dd.stu[k].name,name);
    save_data();
    printf("nn修改学生记录(学号-%s)成功!",no);
    }
    }
    // 查询学生成绩(学号)void query_data_no(){
    int i,k;
    char no[10];
    printf("n请输入要查询学生的学号:");
    scanf("%s",no);
    k=-1;
    for(i=0;
    i<dd.count;
    i++) {
    if(strcmp(dd.stu[i].no,no)==0) {
    printf("nn学号t姓名t数学t英语t物理");
    printf("n-----------------------------------------------------------------n");
    k=i;
    printf("%st%st%-7.1ft%-7.1ft%-7.1fn",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
    break;
    // 学号应该是唯一的,找到了一个就代表以后的没有了。 }
    }
    if(k==-1) {
    printf("nn没有找到该学生(学号-%s)!",no);
    }
    }
    // 查询学生成绩(姓名)void query_data_name(){
    int i,k;
    char name[10];
    printf("n请输入要查询学生的姓名:");
    scanf("%s",name);
    k=-1;
    for(i=0;
    i<dd.count;
    i++) {
    if(strcmp(dd.stu[i].name,name)==0) {
    printf("nn学号t姓名t数学t英语t物理");
    printf("n-----------------------------------------------------------------n");
    k=i;
    printf("%st%st%-7.1ft%-7.1ft%-7.1fn",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
    break;
    }
    }
    if(k==-1) {
    printf("nn没有找到该学生(姓名-%s)!",name);
    }
    }
    // 排序(学号)void sort_data_no(struct data Buff){
    int i;
    int j;
    int k;
    int h;
    struct student temp;
    FILE *fp;
    if((fp=fopen("D:\data.txt","w+"))==NULL) {
    printf("cannot open file!n");
    exit(0);
    }
    printf("请输入要查询的科目:1-数学,2-英语,3-物理:");
    scanf("%d",&k);
    switch(k) {
    case 1: for(i=0;
    i<Buff.count-1;
    i++) for(j=i+1;
    j<Buff.count;
    j++) if(Buff.stu[i].math > Buff.stu[j].math) {
    temp=Buff.stu[i];
    Buff.stu[i]=Buff.stu[j];
    Buff.stu[j]=temp;
    }
    printf("名次t学号t 姓名t数学n");
    for(i=0;
    i<Buff.count;
    i++) printf("%dt%st%st%-7.1fn",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].math);
    break;
    case 2: for(i=0;
    i<Buff.count-1;
    i++) for(j=i+1;
    j<Buff.count;
    j++) if(Buff.stu[i].eng > Buff.stu[j].eng) {
    temp=Buff.stu[i];
    Buff.stu[i]=Buff.stu[j];
    Buff.stu[j]=temp;
    }
    printf("名次t学号t 姓名t英语n");
    for(i=0;
    i<Buff.count;
    i++) printf("%dt%st%st%-7.1fn",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].eng);
    break;
    case 3: for(i=0;
    i<Buff.count-1;
    i++) for(j=i+1;
    j<Buff.count;
    j++) if(Buff.stu[i].phy > Buff.stu[j].phy) {
    temp=Buff.stu[i];
    Buff.stu[i]=Buff.stu[j];
    Buff.stu[j]=temp;
    }
    printf("名次t学号t 姓名t物理n");
    for(i=0;
    i<Buff.count;
    i++) printf("%dt%st%st%-7.1fn",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].phy);
    break;
    default : printf("输入错误!");
    exit(0);
    }
    printf("请按任意键继续....");
    getch();
    fclose(fp);
    }
    // 主函数int main(void){
    int fun;
    dd.count = 0;
    read_data();
    menu();
    while(1) {
    printf("请输入功能号[0-7]:");
    //这里不需要什么&fun, scanf("%d",&fun);
    switch(fun) {
    case 1: view_data();
    break;
    // 查看所有学生信息 case 2: add_data();
    break;
    // 输入学生记录 case 3: delete_data();
    break;
    // 删除学生记录 case 4: edit_data();
    break;
    // 修改学生记录 case 5: query_data_no();
    break;
    // 查询学生成绩(学号) case 6: query_data_name();
    break;
    // 查询成学生绩(姓名) case 7: sort_data_no(dd);
    break;
    // 查看成绩排序(学号) //直接将结构体dd发送过去就可以了 case 0: break;
    // 退出 }
    if(fun==0) break;
    to_menu();
    }
    return 0;
    }

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • c语言实现的货物管理系统实例代码(增加删除 查找货物信息等功能)
  • C语言职工管理系统设计
  • C语言设计图书登记系统与停车场管理系统的实例分享
  • C语言学生管理系统源码分享
  • 使用C语言打造通讯录管理系统和教学安排系统的代码示例
  • C语言数据结构之学生信息管理系统课程设计
  • C语言实现简单学生管理系统
  • 学生信息管理系统C语言版
  • C语言利用结构体数组实现学生成绩管理系统
  • C语言超市管理系统设计
相关热词搜索: C语言学生成绩管理系统 C语言管理系统 C语