首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

c语言学生成绩管理系统源码

后端 40.69KB 34 需要积分: 1
立即下载

资源介绍:

c语言学生成绩管理系统源码
#include "stdio.h" /*标准输入输出函数库*/ #include "stdlib.h" /*标准函数库*/ #include "string.h" /*字符串函数库*/ #include "conio.h" /*屏幕操作函数库*/ #define HEADER1 " ----------------------------STUDENT---------------------------------- \n" #define HEADER2 " | number | name |Comp|Math|Eng | sum | ave |mici | \n" #define HEADER3 " |---------------|---------------|----|----|----|--------|-------|-----| " #define FORMAT " | %-10s |%-15s|%4d|%4d|%4d| %4d | %.2f |%4d |\n" #define DATA p->data.num,p->data.name,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.total,p->data.ave,p->data.mingci #define END " --------------------------------------------------------------------- \n" /* 【自学去】网站收集 http://www.zixue7.com */ int saveflag=0; /*是否需要存盘的标志变量*/ /*定义与学生有关的数据结构*/ typedef struct student /*标记为student*/ { char num[10]; /*学号*/ char name[15]; /*姓名*/ int cgrade; /*C语言成绩*/ int mgrade; /*数学成绩*/ int egrade; /*英语成绩*/ int total; /*总分*/ float ave; /*平均分*/ int mingci; /*名次*/ }; /*定义每条记录或结点的数据结构,标记为:node*/ typedef struct node { struct student data; /*数据域*/ struct node *next; /*指针域*/ }Node,*Link; /*Node为node类型的结构变量,*Link为node类型的指针变量*/ void menu() /*主菜单*/ { system("cls"); /*调用DOS命令,清屏.与clrscr()功能相同*/ textcolor(10); /*在文本模式中选择新的字符颜色*/ gotoxy(10,5); /*在文本窗口中设置光标*/ cprintf(" The Students' Grade Management System \n"); gotoxy(10,8); cprintf(" *************************Menu********************************\n"); gotoxy(10,9); cprintf(" * 1 input record 2 delete record *\n"); gotoxy(10,10); cprintf(" * 3 search record 4 modify record *\n"); gotoxy(10,11); cprintf(" * 5 insert record 6 count record *\n"); gotoxy(10,12); cprintf(" * 7 sort reord 8 save record *\n"); gotoxy(10,13); cprintf(" * 9 display record 0 quit system *\n"); gotoxy(10,14); cprintf(" *************************************************************\n"); /*cprintf()送格式化输出至文本窗口屏幕中*/ } void printheader() /*格式化输出表头*/ { printf(HEADER1); printf(HEADER2); printf(HEADER3); } void printdata(Node *pp) /*格式化输出表中数据*/ { Node* p; p=pp; printf(FORMAT,DATA); } void Wrong() /*输出按键错误信息*/ { printf("\n\n\n\n\n***********Error:input has wrong! press any key to continue**********\n"); getchar(); } void Nofind() /*输出未查找此学生的信息*/ { printf("\n=====>Not find this student!\n"); } void Disp(Link l) /*显示单链表l中存储的学生记录,内容为student结构中定义的内容*/ { Node *p; p=l->next; /*l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息*/ if(!p) /*p==NULL,NUll在stdlib中定义为0*/ { printf("\n=====>Not student record!\n"); getchar(); return; } printf("\n\n"); printheader(); /*输出表格头部*/ while(p) /*逐条输出链表中存储的学生信息*/ { printdata(p); p=p->next; /*移动至下一个结点*/ printf(HEADER3); } getchar(); } /************************************************************* 作用:用于定位链表中符合要求的节点,并返回指向该节点的指针 参数:findmess[]保存要查找的具体内容; nameornum[]保存按什么查找; 在单链表l中查找; **************************************************************/ Node* Locate(Link l,char findmess[],char nameornum[]) { Node *r; if(strcmp(nameornum,"num")==0) /*按学号查询*/ { r=l->next; while(r) { if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的学号*/ return r; r=r->next; } } else if(strcmp(nameornum,"name")==0) /*按姓名查询*/ { r=l->next; while(r) { if(strcmp(r->data.name,findmess)==0) /*若找到findmess值的学生姓名*/ return r; r=r->next; } } return 0; /*若未找到,返回一个空指针*/ } /*输入字符串,并进行长度验证(长度lens)printf("\n exceed the required length! \n"); /*进行长度校验,超过lens值重新输入*/ }while(strlen(n)>lens); strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/ } /*输入分数,0<=分数<=100)*/ int numberinput(char *notice) { int t=0; do{ printf(notice); /*显示提示信息*/ scanf("%d",&t); /*输入分数*/ if(t>100 || t<0) printf("\n score must in [0,100]! \n"); /*进行分数校验*/ }while(t>100 || t<0); return t; } /*增加学生记录*/ void Add(Link l) { Node *p,*r,*s; /*实现添加操作的临时的结构体指针变量*/ char ch,flag=0,num[10]; r=l; s=l->next; system("cls"); Disp(l); /*先打印出已有的学生信息*/ while(r->next!=NULL) r=r->next; /*将指针移至于链表最末尾,准备添加记录*/ while(1) /*一次可输入多条记录,直至输入学号为0的记录结点添加操作*/ { while(1) /*输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录操作*/ { stringinput(num,10,"input number(press '0'return menu):"); /*格式化输入学号并检验*/ flag=0; if(strcmp(num,"0")==0) /*输入为0,则退出添加操作,返回主界面*/ {return;} s=l->next; while(s) /*查询该学号是否已经存在,若存在则要求重新输入一个未被占用的学号*/ { if(strcmp(s->data.num,num)==0) { flag=1; break; } s=s->next; } if(flag==1) /*提示用户是否重新输入*/ { getchar(); printf("=====>The number %s is not existing,try again?(y/n):",num); scanf("%c",&ch); if(ch=='y'||ch=='Y') continue; else return; } else {break;} } p=(Node *)malloc(sizeof(Node)); /*申请内存空间*/ if(!p) { printf("\n allocate memory failure "); /*如没有申请到,打印提示信息*/ return ; /*返回主界面*/ } strcpy(p->data.num,num); /*将字符串num拷贝到p->data.num中*/ stringinput(p->data.name,15,"Name:"); p->data.cgrade=numberinput("C language Score[0-100]:"); /*输入并检验分数,分数必须在0-100之间*/ p->data.mgrade=numberinput("Math Score[0-100]:"); /*输入并检验分数,分数必须在0-100之间*/ p->data.egrade=numberinput("English Score[0-100]:"); /*输入并检验分数,分数必须在0-100之间*/ p->data.total=p->data.egrade+p->data.cgrade+p->data.mgrade; /*计算总分*/ p->data.ave=(float)(p->data.total/3); /*计算平均分*/ p->data.mingci=0; p->next=NULL; /*表明这是链表的尾部结点*/ r->next=p; /*将新建的结点加入链表尾部中*/ r=p; saveflag=1; } return ; } void Qur(Link l) /*按学号或姓名,查询学生记录*/ { int select; /*1:按学号查,2:按姓名查,其他:返回主界面(菜单)*/ char searchinput[20]; /*保存用户输入的查询内容*/ Node *p; if(!l->next) /*若链表为空*/ { system("cls"); printf("\n=====>No student record!\n"); getchar(); return; } system("cls"); printf("\n =====>1 Search by number =====>2 Search by name\n"); printf(" please choice[1,2]:"); scanf("%d",&select); if(select==1) /*按学号查询*/ { stringinput(searchinput,10,"input the existing student number:"); p=Locate(l,searchinput,"num");/*在l中查找学号为searchinput值的节点,并返回节点的指针*/ if(p) /*若p!=NULL*/ { printheader(); printdata(p); printf(END); printf("press any key to return"); getchar(); } else Nofind(); getchar(); } else if(select==2) /*按姓名查询*/ { stringinput(searchinput,15,"input the existing student name:"); p=Locate(l,searchinput,"name"); if(p) { printheader(); printdata(p); printf(END); printf("press any key to return"); getchar(); } else Nofind(); getchar(); } else Wrong(); getchar(); } /*删除学生记录:先找到

资源文件列表:

c语言学生成绩管理系统源码.zip 大约有10个文件
  1. c语言学生成绩管理系统源码/
  2. c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/
  3. c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/
  4. c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/CJGL.c 18.37KB
  5. c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/CJGL.EXE 36.31KB
  6. c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/CJGL.OBJ 10.46KB
  7. c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/c语言学生成绩管理系统源码/EGAVGA.BGI 5.42KB
  8. c语言学生成绩管理系统源码/新建文件夹/
  9. c语言学生成绩管理系统源码/新建文件夹 (2)/
  10. c语言学生成绩管理系统源码/新建文件夹 (3)/
0评论
提交 加载更多评论
其他资源 c语言学生信息系统.zip
c语言学生信息系统.zip
LiteLoaderQQNT.zip
LiteLoaderQQNT.zip
文件上传后端后端node
文件上传后端后端node
文件上传前端前端html
文件上传前端前端html
149624498888431CCF-qikan-paiming.zip
149624498888431CCF-qikan-paiming.zip
中科大EPC 英语考试阅读资料
中科大EPC 英语考试阅读资料
中科大EPC 英语考试阅读资料 中科大EPC 英语考试阅读资料 中科大EPC 英语考试阅读资料
中科大EPC英语考试听力音频与答案
中科大EPC英语考试听力音频与答案
中科大EPC英语考试听力音频与答案 中科大EPC英语考试听力音频与答案
sm2算法sm2算法sm2算法sm2算法
sm2算法sm2算法sm2算法sm2算法