c语言学生成绩管理系统源码
资源内容介绍
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"int saveflag=0; typedef struct student {char num[10]; char name[15]; int cgrade; int mgrade; int egrade; int total; float ave; int mingci; };typedef struct node{struct student data; struct node *next; }Node,*Link; /*Node为node类型的结构变量,*Link为node类型的指针变量*/void menu() {system("cls"); 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");}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) {Node *p;p=l->next; if(!p) { 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) return r; r=r->next; }}else if(strcmp(nameornum,"name")==0) { r=l->next; while(r) { if(strcmp(r->data.name,findmess)==0) return r; r=r->next; }}return 0; }void stringinput(char *t,int lens,char *notice){ char n[255]; do{ printf(notice); scanf("%s",n); if(strlen(n)>lens)printf("\n exceed the required length! \n"); }while(strlen(n)>lens); strcpy(t,n); }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) { while(1) { stringinput(num,10,"input number(press '0'return menu):"); flag=0; if(strcmp(num,"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); stringinput(p->data.name,15,"Name:"); p->data.cgrade=numberinput("C language Score[0-100]:"); p->data.mgrade=numberinput("Math Score[0-100]:"); p->data.egrade=numberinput("English Score[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; 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"); if(p) { 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(); }/*删除学生记录:先找到