您的当前位置:首页正文

学生成绩管理系统源代码

2022-05-13 来源:好走旅游网


学生成绩管理系统源代码

(总15页)

本页仅作为文档封面,使用时可以删除

This page is only the cover as a document 2021year

cprintf(\"\\n\\r 8.保存学生成绩信息 在这里你可以将学生你信息保存到内存中.\\n\");

3

cprintf(\"\\n\\r 9.帮助学生成绩信息 在这里你可以获得帮助信息.\\n\");

cprintf(\"\\n\\r 0.退出系统 在这里选择是否保存后,你可以安全的退出本系统.\\n\\n\\r \"); }

void menu() {

cprintf(\"\\n\\r\\xc9\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcb\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xbb\");

cprintf(\"\\r\\xba 学生信息导入 \\xba 学生信息处理 \\xba\");

cprintf(\"\\r\\xba____________________________________\\xba__________________________________________\\xba\");

cprintf(\"\\r\\xba 1-->输入学生成绩信息 \\xba 6-->学生成绩信息统计 \\xba\");

cprintf(\"\\r\\xba 2-->注销学生成绩信息 \\xba 7-->显示学生成绩信息 \\xba\");

cprintf(\"\\r\\xba 3-->查询学生成绩信息 \\xba 8-->保存学生成绩信息 \\xba\");

cprintf(\"\\r\\xba 4-->修改学生成绩信息 \\xba 9-->帮助学生成绩信息 \\xba\");

cprintf(\"\\r\\xba 5-->学生成绩信息排序 \\xba 0-->退出系统 \\xba\");

cprintf(\"\\r\\xc8\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xca\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xcd\\xbc\"); }

void wrong() {

cprintf(\"\\n\\r输入错误!请验证后重新输入.\\n\"); }

void notfind() {

cprintf(\"\\n\\r该学生信息不存在!请验证后重新输入.\\n\"); }

void printc() /* 此函数用于输出中文格式 */

3

{

cprintf(\"\\r学号 姓名 班级 英语 数学 C语言 总分 平均分\\n \"); }

void printe(Node *p) /* 此函数用于输出英文格式 */ {

cprintf(\"\\r%-4s%-4s%4s%5d%5d%8d%5d%7d\\n\\r\>data.cla,p->data.score3,p->data.score2,p->data.score1,p->data.total,p->data.ave); }

Node* Locate(L l,char findinfo[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */ {

Node *r;

if(strcmp(nameornum,\"num\")==0) /* 按学号查询 */ {

r=l->next;

while(r!=NULL) {

if(strcmp(r->data.num,findinfo)==0) return r; r=r->next; } }

else if(strcmp(nameornum,\"name\")==0) /* 按姓名查询 */ {

r=l->next;

while(r!=NULL) {

if(strcmp(r->data.name,findinfo)==0) return r; r=r->next; } }

return 0; }

void input(L l) /* 增加学生 */ {

Node *p,*r,*s; char num[10]; r=l;

4

s=l->next;

while(r->next!=NULL)

5

r=r->next; /* 将指针置于最末尾 */ while(1)

{ cprintf(\"\\r如果输入完毕,请按任意键返回主菜单\\n\"); cprintf(\"\\r如果你还想输入,请按y(yes)继续\\n\\r\"); scanf(\"%s\

if(strcmp(num,\"y\")==0) { cprintf(\"请你输入学号:\"); scanf(\"%s\while(s) {

if(strcmp(s->data.num,num)==0) {

printf(\"\学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\\n\print1(); printc(); printe(s); print1(); printf(\"\\n\"); getch(); return; }

s=s->next; }

p=(Node *)malloc(sizeof(Node)); strcpy(p->data.num,num); cprintf(\"\\r请你输入姓名:\"); scanf(\"%s\getchar();

cprintf(\"\\r请你输入班级:\"); scanf(\"%s\getchar();

cprintf(\"\\r请你输入c语言成绩(0-100):\"); scanf(\"%d\getchar();

cprintf(\"\\r请你输入数学成绩(0-100):\"); scanf(\"%d\getchar();

cprintf(\"\\r请你输入英语成绩(0-100):\"); scanf(\"%d\getchar();

p->data.total=p->data.score3+p->data.score1+p->data.score2;

p->data.ave=p->data.total / 3; /* 信息输入已经完成 */

p->next=NULL;

5

r->next=p;

r=p;shoudsave=1; } }

void query(L l) /* 查询学生信息 */ {

int select;

char findinfo[20]; Node *p; if(!l->next) {

cprintf(\"\\n 没有信息可以查询!\\n\"); return; }

cprintf(\"\\n1==>按学号查找\\n\\r2==>按姓名查找\\n\\r\"); scanf(\"%d\if(select==1) /* 学号 */ {

cprintf(\"\\r请你输入要查找的学号:\"); scanf(\"%s\

p=Locate(l,findinfo,\"num\"); if(p) {

cprintf(\" 查找结果\\n\\r\"); print1(); printc(); printe(p); print1(); } else

notfind(); }

else if(select==2) /* 姓名 */ {

cprintf(\"\\r请你输入要查找的姓名:\"); scanf(\"%s\

p=Locate(l,findinfo,\"name\"); if(p) {

cprintf(\" 查找结果\\n\\r\"); print1(); printc(); printe(p);

6

print1(); } else

notfind(); } else wrong(); }

void Delete(L l) /* 删除学生信息 */ {

int select; Node *p,*r;

char findinfo[20]; if(!l->next) {

cprintf(\"\\n 没有信息可以删除!\\n\"); return; }

cprintf(\"\\n1==>按学号删除\\n\\r2==>按姓名删除\\n\\r\"); scanf(\"%d\if(select==1) {

cprintf(\"\\r请你输入要删除的学号:\"); scanf(\"%s\

p=Locate(l,findinfo,\"num\"); if(p) { r=l;

while(r->next!=p) r=r->next;

r->next=p->next; free(p);

cprintf(\"\\n\\r该学生已经成功删除!\\n\"); shoudsave=1; } else

notfind(); }

else if(select==2) {

cprintf(\"\\r请你输入要删除的姓名:\"); scanf(\"%s\

p=Locate(l,findinfo,\"name\"); if(p)

7

{ r=l;

while(r->next!=p) r=r->next;

r->next=p->next; free(p);

cprintf(\"\\n\\r该学生已经成功删除!\\n\"); shoudsave=1; } else

notfind(); }

else wrong(); }

void modify(L l) /*修改学生信息*/ {

Node *p;

char findinfo[20]; if(!l->next) {

cprintf(\"\\n\\r没有信息可以修改!\\n\"); return; }

cprintf(\"\\r请你输入要修改的学生学号:\"); scanf(\"%s\

p=Locate(l,findinfo,\"num\"); if(p) {

cprintf(\"\\r请你输入新学号(原来是%s):\scanf(\"%s\

cprintf(\"\\r请你输入新姓名(原来是%s):\scanf(\"%s\getchar();

cprintf(\"\\r请你输入新班级(原来是%s):\scanf(\"%s\

cprintf(\"\\r请你输入新的c语言成绩(原来是%d分):\scanf(\"%d\getchar();

cprintf(\"\\r请你输入新的数学成绩(原来是%d分):\scanf(\"%d\getchar();

cprintf(\"\\r请你输入新的英语成绩(原来是%d分):\scanf(\"%d\

8

p->data.total=p->data.score3+p->data.score1+p->data.score2; p->data.ave=p->data.total/3; cprintf(\"\\n\\r信息修改成功!\\n\"); shoudsave=1; } else

notfind(); }

void display(L l)

{ /*显示全部学生信息*/ int count=0; Node *p; p=l->next; if(!p) {

cprintf(\"\\n\\r 没有信息可以显示!\\n\"); return; }

cprintf(\" 显示结果 \"); print1(); printc(); while(p)

{ if(count%5==0) getch(); printe(p); p=p->next; count++; }

print1(); cprintf(\"\\n\"); }

void Statistic(L l) /*统计学生信息*/ {

Node *pm_max,*pe_max,*pc_max,*pt_max,*pa_max; /* 用于指向分数最高的接点 */

Node *pm_min,*pe_min,*pc_min,*pt_min,*pa_min; Node *r=l->next; if(!r) {

cprintf(\"\\n\\r 没有信息可以统计!\\n\"); return ; }

pm_max=pe_max=pc_max=pt_max=pa_max=pm_min=pe_min=pc_min=pt_min=pa_min=r;

9

while(r!=NULL) {

if(r->data.score1>=pc_max->data.score1) pc_max=r;

if(r->data.score1<=pc_min->data.score1) pc_min=r;

if(r->data.score2>=pm_max->data.score2) pm_max=r;

if(r->data.score2<=pm_min->data.score2) pm_min=r;

if(r->data.score3>=pe_max->data.score3) pe_max=r;

if(r->data.score3<=pe_min->data.score3) pe_min=r;

if(r->data.total>=pt_max->data.total) pt_max=r;

if(r->data.total<=pt_min->data.total) pt_min=r;

if(r->data.ave>=pa_max->data.ave) pa_max=r;

if(r->data.ave<=pa_min->data.ave) pa_min=r; r=r->next; }

cprintf(\"====================================统计结果====================================\\n\");

cprintf(\"\\r总分最高者: %-16s %d分\\n\cprintf(\"\\r平均分最高者: %-16s %d分\\n\>data.ave);

cprintf(\"\\r英语最高者: %-16s %d分\\n\>data.score3);

cprintf(\"\\r数学最高者: %-16s %d分\\n\>data.score2);

cprintf(\"\\rc语言最高者: %-16s %d分\\n\\r\>data.score1);

cprintf(\"\\r总分最低者: %-16s %d分\\n\cprintf(\"\\r平均分最低者: %-16s %d分\\n\cprintf(\"\\r英语最低者: %-16s %d分\\n\>data.score3);

cprintf(\"\\r数学最低者: %-16s %d分\\n\>data.score2);

10

cprintf(\"\\rc语言最低者: %-16s %d分\\n\\r\>data.score1); print1();

11

}

void Sort(L l) { L ll;

Node *p,*rr,*s;

ll=(L)malloc(sizeof(Node)); /* 用于做新的连表 */ ll->next=NULL; if(l->next==NULL) {

cprintf(\"\\n\\r 没有信息可以排序!\\n\"); return ; }

p=l->next; while(p) {

s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息 */ s->data=p->data; s->next=NULL; rr=ll;

while(rr->next!=NULL && rr->next->data.total>=p->data.total) rr=rr->next;

if(rr->next==NULL) rr->next=s; else {

s->next=rr->next; rr->next=s; }

p=p->next; }

free(l);

l->next=ll->next;

cprintf(\"\\n\\r 排序已经完成!\\n\"); }

void Save(L l) /* */ {

FILE* fp; Node *p;

int flag=1,count=0;

fp=fopen(\"c:\\\\student\if(fp==NULL) {

11

cprintf(\"\\n\\r 重新打开文件时发生错误!\\n\"); exit(1); }

p=l->next; while(p) {

if(fwrite(p,sizeof(Node),1,fp)==1) {

p=p->next; count++; } else {

flag=0; break; } }

if(flag) {

cprintf(\"\\n\\r 文件保存成功.(有%d条信息已经保存.)\\n\\r\shoudsave=0; }

fclose(fp); }

void main() /* */ {

L l; /* 链表 */

FILE *fp; /* 文件指针 */

int count=0 ,i,menu_select; /*菜单选择 */ char ch ,creat; Node *p,*r; time_t it; clrscr();

textmode(C80); window(1,1,80,25);

textbackground(1); clrscr(); textcolor(10);

printf(\"\\r 学生成绩管理系统 \");

printf(\"\\r -------扬州大学信息工程学院软件0902班 \") ;

printf(\"\\r 设计人员:李天鹏 \"); l=(Node*)malloc(sizeof(Node));

12

l->next=NULL;r=l;

fp=fopen(\"c:\\\\student\if(fp==NULL) {

cprintf(\"\\n\\r 该文件还未存在,是否需要创建(y/n,Y/N)\\n\\r\"); scanf(\"%c\if(creat=='y'||creat=='Y') {

fp=fopen(\"c:\\\\student\} else exit(0); }

gotoxy(9,11); textcolor(12);

cprintf(\"\\n\\r 文件已经打开,系统正在导入信息\"); for(i=0;i<6;i++) { cprintf(\".\"); sleep(1); }textcolor(10);

gotoxy(9,11); cprintf(\"\\n \"); while(!feof(fp)) {

p=(Node*)malloc(sizeof(Node));

if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中 */ {

p->next=NULL; r->next=p;

r=p; /* 将该接点挂入连中 */ count++; } }

fclose(fp); /* 关闭文件 */ gotoxy(1,3);

cprintf(\"\\n\\r信息导入完毕,系统共导入%d条信息 \sleep(1); while(1) { menu(); textcolor(12);

cprintf(\"\\r现在时间: \"); it=time(NULL);cprintf(ctime(&it)); cprintf(\"\\r左边数字对应功能选择,请按0--9选择操作:\\n\\r\"); textcolor(10) ;

scanf(\"%d\

13

if(menu_select==0) {

if(shoudsave==1)

{ getchar(); textcolor(128+12);

cprintf(\"\\n\\r 信息已经改动,是否将改动保存到文件中(y/n Y/N)\\n\\r\"); scanf(\"%c\if(ch=='y'||ch=='Y') Save(l); }

cprintf(\"\\n\\r 你已经成功退出学生成绩信息系统,欢迎下次继续使用!\\n\"); break; }

switch(menu_select)

{case 1: clrscr(); input(l); clrscr(); break; /* 输入学生 */ case 2: clrscr(); Delete(l); PRINT1 /* 删除学生 */ case 3: clrscr(); query(l); PRINT1 /* 查询学生 */ case 4: clrscr(); modify(l); PRINT1 /* 修改学生 */ case 5: clrscr(); Sort(l); PRINT1 case 6: clrscr(); Statistic(l); PRINT1 case 7: clrscr(); display(l); PRINT1

case 8: clrscr(); Save(l); PRINT1 /* 保存学生 */

case 9: clrscr(); cprintf(\" ==========帮助信息==========\\n\"); print2(); PRINT1 ; default: wrong(); getchar(); break;} } }

14

因篇幅问题不能全部显示,请点此查看更多更全内容