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

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

这篇文章主要为大家详细介绍了C语言学生成绩管理系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

Ps:后加了个链表排序,用冒泡写的。

    /* Title : Student's score management system Author: nyist_xiaod Date : 2012.5.8 */ #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #define Print_Head_Num puts("班级 姓名 语文 数学 英语 总成绩") #define Print_Head_Cla puts("学号 姓名 语文 数学 英语 总成绩") #define Print_Head_All puts("班级 学号 姓名 语文 数学 英语 总成绩") typedef struct Node Node;
    struct Score {
    int chinese,math,english,sum;
    }
    ;
    struct Node {
    char name[20],classs[20],number[20];
    struct Score score;
    struct Node* next;
    }
    *head,*u,*p,*q;
    int n,C,M,E,Cj,Cy,Mj,My,Ej,Ey;
    char num[20];
    void Welcome() {
    printf("tt %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %cn",4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
    printf("tt %c 欢迎您使用学生成绩管理系统 %cn",4,4);
    printf("tt %c %cn",4,4);
    printf("tt %c 1.读取文件 %cn",4,4);
    printf("tt %c %cn",4,4);
    printf("tt %c 2.保存文件 %cn",4,4);
    printf("tt %c %cn",4,4);
    printf("tt %c 3.添加学生成绩 %cn",4,4);
    printf("tt %c %cn",4,4);
    printf("tt %c 4.修改学生成绩 %cn",4,4);
    printf("tt %c %cn",4,4);
    printf("tt %c 5.删除学生成绩 %cn",4,4);
    printf("tt %c %cn",4,4);
    printf("tt %c 6.查询本人成绩 %cn",4,4);
    printf("tt %c %cn",4,4);
    printf("tt %c 7.查询本班成绩 %cn",4,4);
    printf("tt %c %cn",4,4);
    printf("tt %c 8.查询全校成绩 %cn",4,4);
    printf("tt %c %cn",4,4);
    printf("tt %c 9.退出管理系统 %cn",4,4);
    printf("tt %c %cn",4,4);
    printf("tt %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %cnn",4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
    printf("tt 请输入指令:(1-9) ");
    }
    Node* new_node(Node* uu) {
    uu = (Node*)malloc(sizeof(Node));
    uu->next = NULL;
    return uu;
    }
    void Add() {
    u = new_node(u);
    printf("n请输入您要加入的学生的信息:n");
    printf("n姓名: ");
    scanf("%s",u->name);
    printf("n班级: ");
    scanf("%s",u->classs);
    printf("n学号: ");
    scanf("%s",u->number);
    printf("n语文、数学、英语成绩: ");
    scanf("%d%d%d",&u->score.chinese,&u->score.math,&u->score.english);
    u->score.sum = u->score.chinese + u->score.math + u->score.english;
    u->next = head->next;
    head->next = u;
    printf("n--->添加成功!n");
    }
    void Mod() {
    n = 0;
    printf("n请输入您要修改的学号: ");
    scanf("%s",num);
    for(u = head;
    u != NULL;
    u = u->next) {
    if(strcmp(u->number,num) == 0) {
    n = 1;
    printf("n请输入新的语文、数学、英语成绩: ");
    scanf("%d%d%d",&u->score.chinese,&u->score.math,&u->score.english);
    u->score.sum = u->score.chinese + u->score.math + u->score.english;
    printf("n--->修改成功!n");
    break;
    }
    }
    if(!n) printf("n--->没有这个学生的信息!n");
    }
    void Del() {
    n = 0;
    printf("n请输入您要删除的学生的学号: ");
    scanf("%s",num);
    for(u = head;
    u != NULL;
    u = u->next) {
    if(strcmp(u->number,num) == 0) {
    n = 1;
    p->next = u->next;
    free(u);
    printf("n--->删除成功!n");
    break;
    }
    p = u;
    }
    if(!n) printf("n--->没有这个学生的信息!n");
    }
    void Sort() {
    int i,j;
    n = 0;
    for(u = head->next;
    u != NULL;
    u = u->next) n++;
    for(i=1;
    i<=n;
    i++) {
    u = head;
    for(j=0;
    j<n-i;
    j++) {
    p = u->next;
    q = p->next;
    if(strcmp(p->classs,q->classs) > 0 || strcmp(p->classs,q->classs) == 0 && p->score.sum < q->score.sum) {
    u->next = q;
    p->next = q->next;
    q->next = p;
    }
    u = u->next;
    }
    }
    }
    void Que_One() {
    n = 0;
    printf("n请输入您要查询的学生的学号: ");
    scanf("%s",num);
    for(u = head->next;
    u != NULL;
    u = u->next) {
    if(strcmp(u->number,num) == 0) {
    n = 1;
    printf("n");
    Print_Head_Num;
    printf("%-11s%-15s",u->classs,u->name);
    printf("%-6d%-6d%-6d%-6dn",u->score.chinese,u->score.math,u->score.english,u->score.sum);
    break;
    }
    }
    if(!n) printf("n--->没有这个学生的信息!n");
    }
    void Analyze_Sco(Node *uu) {
    C += uu->score.chinese;
    M += uu->score.math;
    E += uu->score.english;
    if(uu->score.chinese >= 60) Cj++;
    if(uu->score.chinese >= 90) Cy++;
    if(uu->score.math >= 60) Mj++;
    if(uu->score.math >= 90) My++;
    if(uu->score.english >= 60) Ej++;
    if(uu->score.english >= 90) Ey++;
    }
    void Print_Sco() {
    printf("语文平均成绩: %-6.2f, 及格率: %%%-6.2f , 优秀率: %%%-6.2f.nn",(float)C/n,(float)100*Cj/n,(float)100*Cy/n);
    printf("数学平均成绩: %-6.2f, 及格率: %%%-6.2f , 优秀率: %%%-6.2f.nn",(float)M/n,(float)100*Mj/n,(float)100*My/n);
    printf("英语平均成绩: %-6.2f, 及格率: %%%-6.2f , 优秀率: %%%-6.2f.nn",(float)E/n,(float)100*Ej/n,(float)100*Ey/n);
    }
    void Que_Cla() {
    Sort();
    n = C = M = E = Cj = Cy = Mj = My = Ej = Ey = 0;
    printf("n请输入您要查询的班级: ");
    scanf("%s",num);
    printf("n");
    for(u = head->next;
    u != NULL;
    u = u->next) {
    if(strcmp(u->classs,num)) continue;
    if(!n) Print_Head_Cla;
    n++;
    printf("%-11s%-15s",u->number,u->name);
    printf("%-6d%-6d%-6d%-dn",u->score.chinese,u->score.math,u->score.english,u->score.sum);
    Analyze_Sco(u);
    }
    if(!n) {
    printf("没有这个班级的学生信息!n");
    return ;
    }
    printf("n该班共有学生 %d 人.nn",n);
    Print_Sco();
    }
    void Que_All() {
    Sort();
    n = C = M = E = Cj = Cy = Mj = My = Ej = Ey = 0;
    printf("n");
    if(head->next == NULL) {
    printf("--->没有学生信息!n");
    return ;
    }
    Print_Head_All;
    for(u = head->next;
    u != NULL;
    u = u->next) {
    n++;
    printf("%-12s%-12s%-15s",u->classs,u->number,u->name);
    printf("%-6d%-6d%-6d%-dn",u->score.chinese,u->score.math,u->score.english,u->score.sum);
    Analyze_Sco(u);
    }
    printf("n全校共有学生 %d 人.nn",n);
    Print_Sco();
    }
    void Save() {
    char c;
    printf("n确认保存?(Y/N): ");
    scanf("%*c%c",&c);
    if(c == 'N') return ;
    FILE *fp;
    if((fp=fopen("C:\data.txt","w"))==NULL) {
    printf("n--->无法打开文件n");
    return ;
    }
    fputs("班级 学号 姓名 语文 数学 英语 总成绩",fp);
    if(head->next != NULL) fputs("n",fp);
    for(u = head->next;
    u != NULL;
    u = u->next) {
    fprintf(fp,"%-11s%-11s%-15s",u->classs,u->number,u->name);
    fprintf(fp,"%-6d%-6d%-6d%-d",u->score.chinese,u->score.math,u->score.english,u->score.sum);
    if(u->next != NULL) fprintf(fp,"n");
    }
    fclose(fp);
    printf("n--->成绩成功存入C:\\data.txt中n");
    }
    void Open() {
    printf("n请把数据放到目录C:\\data.txt中,按任意键确认.n");
    getch();
    FILE *fp;
    if((fp=fopen("C:\data.txt","r"))==NULL) {
    printf("n--->没有找到文件!n");
    return ;
    }
    char tmp[100];
    fgets(tmp,66,fp);
    while(!feof(fp)) {
    u = new_node(u);
    fscanf(fp,"%s%s%s",u->classs,u->number,u->name);
    fscanf(fp,"%d%d%d%d",&u->score.chinese,&u->score.math,&u->score.english,&u->score.sum);
    u->next = head->next;
    head->next = u;
    }
    printf("n--->成绩读入成功!n");
    fclose(fp);
    }
    void Exi() {
    char c;
    printf("n确定退出?(Y/N): ");
    scanf("%*c%c",&c);
    if(c == 'N') return ;
    system("cls");
    printf("nn");
    printf("ttt %c %c %c %c %c %c %c %c %cn",4,4,4,4,4,4,4,4,4);
    printf("ttt %c Made by Xiaod %cn",4,4);
    printf("ttt %c %c %c %c %c %c %c %c %cn",4,4,4,4,4,4,4,4,4);
    printf("ttt Thank you!nnn");
    exit(0);
    }
    int main() {
    int orz;
    system("color 0B");
    head = new_node(head);
    while(1) {
    Welcome();
    scanf("%d",&orz);
    system("cls");
    switch(orz) {
    case 1:Open();
    break;
    case 2:Save();
    break;
    case 3:Add();
    break;
    case 4:Mod();
    break;
    case 5:Del();
    break;
    case 6:Que_One();
    break;
    case 7:Que_Cla();
    break;
    case 8:Que_All();
    break;
    case 9:Exi();
    break;
    default :printf("n--->无效的指令!n");
    }
    printf("n");
    system("pause");
    system("cls");
    }
    return 0;
    }

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

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

您可能感兴趣的文章:

  • C语言实现学生信息管理系统(单链表)
  • C语言学生信息管理系统小项目
  • C语言数组实现学生信息管理系统设计
  • C语言版学生成绩管理系统
  • C语言学生信息管理系统设计与实现
  • 基于C语言实现学生成绩管理系统
  • C语言实现通讯管理系统设计
  • C语言实现简单学生成绩管理系统
  • C语言利用结构体数组实现学生成绩管理系统
  • C语言单链表版学生信息管理系统
相关热词搜索: C语言学生成绩管理系统 C语言成绩管理系统