1、学生成绩管理系统源代码知识讲解学生成绩管理系统源代码#include #include #include #include struct student /结构体定义 int num; char name10; char birthday10; int Cyuyan; int shujujiegou; struct student *next; struct student *creat_by_input(); struct student *get_last_student(struct student *head); struct student *Print_menu_main() /主
2、菜单 printf( *n); printf( | 1.输入学生信息 | n); printf( | 2.输出学生信息 | n); printf( | 3.查找学生信息 | n); printf( | 4.修改学生信息 | n); printf( | 5.插入学生信息 | n); printf( | 6.删除学生信息 | n); printf( | 7.排序学生信息 | n); printf( | 0.退出系统 | n); printf( |_ _ _ _ _ _ _ _ _ _ _ _ _ | n); struct student *print_table_head() printf(+-+
3、-+-+-+-+n); printf(| 学号 | 姓名 | 出生日期 | c成绩 |数据结构成绩 |n); printf(+-+-+-+-+-+n); struct student *print_table_row(struct student *p) printf(|%10d|%10s|%10s|%10d|%10d|n,p-num,p-name,p-birthday,p-Cyuyan,p-shujujiegou); void print_table_bottom() printf(+-+-+-+-+-+n); struct student * Creat_stu_record() /建立链
4、表 struct student *plaststu=NULL,*pnewstu; char continue_input=N; struct student *head=NULL; while(1) if(head=NULL) head=creat_by_input(); print_table_head(); print_table_row(head); print_table_bottom(); else pnewstu=creat_by_input(); print_table_head(); print_table_row(pnewstu); print_table_bottom()
5、; plaststu=get_last_student(head); plaststu-next=pnewstu; printf(是否继续输入学生信息?(Y 继续,N 返回菜单)n); getchar(); continue_input=getchar(); if(continue_input=n|continue_input=N) system(cls); Print_menu_main(); break; return head; struct student *creat_by_input() struct student *pnewstu=(struct student *)mallo
6、c(sizeof(struct student); printf(请输入学生信息n); printf(学号:);scanf(%d,&pnewstu-num); printf(姓名:);scanf(%s,pnewstu-name); printf(出生年月:);scanf(%s,pnewstu-birthday); printf(请输入学生成绩n); printf(C语言:);scanf(%d,&(pnewstu-Cyuyan); printf(数据结构:);scanf(%d,&(pnewstu-shujujiegou); pnewstu-next=NULL; return pnewstu; s
7、truct student *get_last_student(struct student *p ) if(p-next=NULL) return p; else return get_last_student(p-next);void Print_Stu_Doc(struct student *head) struct student *p; char r; print_table_head(); if(head=NULL) printf(n No Recordsn); for(p=head;p;p=p-next) printf(|%10d|%10s|%10s|%10d|%10d|n,p-
8、num,p-name,p-birthday,p-Cyuyan,p-shujujiegou); printf(+-+-+-+-+-+n); printf(按Enter键返回主菜单)n); getchar(); r=getchar(); if(r!=1) system(cls); Print_menu_main(); else system(cls); Print_menu_main(); struct student *search_by_name(struct student *head)/按姓名查找 char name10; struct student *p=head; char cont
9、inue_input; /*int isfound=0;*/ printf(请输入要查找的姓名:); scanf(%s,name); printf(查找%sn,name); print_table_head(); while(p!=NULL) if(strcmp(p-name,name)=0) print_table_row(p); p=p-next; /* isfound=1; */ break; p=p-next; print_table_bottom(); printf(是否继续查找?(Y 继续;N 返回主菜单)n); getchar(); continue_input=getchar(
10、); if(continue_input=n|continue_input=N) system(cls); Print_menu_main(); else search_by_name(head);struct student * search_by_id(struct student *head)/按学号查找 int id; struct student *p=head; char continue_input; /*int isfound=0;*/ printf(请输入要查找的学号:); scanf(%d,&id); printf(查找%dn,id); print_table_head()
11、; while(p!=NULL) if(p-num=id) print_table_row(p); p=p-next; /*isfound=1;*/ break; p=p-next; print_table_bottom(); printf(是否继续查找?(Y 继续;N 返回主菜单)n); getchar(); continue_input=getchar(); if(continue_input=n|continue_input=N) system(cls); Print_menu_main(); else search_by_id(head); return head; struct st
12、udent*modify_record_by_id(struct student*head)/按学号修改 struct student *p=head; int id; char continue_input; printf(请输入要修改的学生的学号:n); scanf(%d,&id); while(p!=NULL) if(p-num=id) break; p=p-next; if(p=NULL) printf(抱歉,没有学号为%d的学生n,id); else printf(请输入学生信息:n); printf(学号:);scanf(%d,&(p-num); printf(姓名:);scanf
13、(%s,&(p-name); printf(出生年月:);scanf(%s,&(p-birthday); printf(请输入学生成绩:n); printf(C语言:);scanf(%d,&(p-Cyuyan); printf(数据结构:);scanf(%d,&(p-shujujiegou); print_table_head();print_table_row(p);print_table_bottom(); printf(继续修改学生信息吗?Y 继续;N 返回主菜单n); getchar(); continue_input=getchar(); if(continue_input=y|co
14、ntinue_input=Y) creat_by_input(); else system(cls); Print_menu_main(); return head;struct student*modify_record_by_name(struct student*head)/按姓名修改 struct student*p=head; char name10; char continue_input; printf(请输入要修改的学生的姓名:n); scanf(%s,name); while(p!=NULL) if(strcmp(p-name,name)=0) break; p=p-next
15、; if(p=NULL) printf(抱歉,没有姓名为%s的学生n,name); else printf(请输入学生信息:n); printf(学号:);scanf(%d,&(p-num); printf(姓名:);scanf(%s,&(p-name); printf(出生年月:);scanf(%s,&(p-birthday); printf(请输入学生成绩:n); printf(C语言:);scanf(%d,&(p-Cyuyan); printf(数据结构:);scanf(%d,&(p-shujujiegou); print_table_head();print_table_row(p);
16、print_table_bottom(); printf(继续修改学生信息吗?Y 继续;N 返回主菜单n); getchar(); continue_input=getchar(); if(continue_input=y|continue_input=Y) creat_by_input(); else system(cls); Print_menu_main(); return head;struct student *insert_record(struct student *head)/插入 struct student *ptr1; struct student *ptr,*stud;
17、 struct student *ptr2=head; char continue_input=N; int id; printf(请输入一个学号,在此之前插入学生信息:); scanf(%d,&id); stud=creat_by_input(); ptr=stud; if(head=NULL) head=ptr;head-next=NULL; else if(head-num=id) ptr-next=head; head=ptr; else while(ptr2!=NULL) ptr1=ptr2; ptr2=ptr1-next; if(ptr2-num=id) ptr1-next=ptr
18、; ptr-next=ptr2; break; print_table_head(); print_table_row(ptr); print_table_bottom(); printf(是否继续插入学生信息?(Y 继续 N 返回主菜单)n); getchar(); continue_input=getchar(); if(continue_input=y|continue_input=Y) return insert_record(head); else system(cls); Print_menu_main(); return head; struct student *Delete_
19、record_by_id( struct student *head)/按学号删除 struct student *p=head,*ppre=NULL; int id; char continue_input; printf(请输入要删除的学号:); scanf(%d,&id); while(p!=NULL) if(p-num=id) break; p=p-next; if(p=NULL) printf(抱歉,没有该学号的学生信息!n); else printf(确定要删除学号为%d的学生的信息吗?(Y 确定;N 返回主菜单)n,p-num); getchar(); continue_inpu
20、t=getchar(); if(continue_input=y|continue_input=Y) ppre=head; if(ppre=p) head=p-next; printf( n); free(p); else while(ppre!=NULL) if(ppre-next=p) ppre-next=p-next; free(p); break; ppre=ppre-next; printf(删除成功!); / Print_menu_main(); printf(继续删除学生信息吗?(Y 继续;N 返回主菜单); getchar(); continue_input=getchar()
21、; if(continue_input=y|continue_input=Y) Delete_record_by_id(head); else system(cls); Print_menu_main(); return head; return 0; struct student *Delete_record_by_name( struct student *head)/ 按姓名删除 struct student *p=head,*ppre=NULL; char name10; char continue_input; printf(请输入要删除的姓名:); scanf(%s,name);
22、while(p!=NULL) if(strcmp(p-name,name)=0) break; p=p-next; if(p=NULL) printf(抱歉,没有该姓名的学生信息!n); goto end; else printf(确定要删除姓名为%s的学生的信息吗?(Y 确定;N 返回主菜单),p-name); printf(n); getchar(); continue_input=getchar(); if(continue_input=y|continue_input=Y) ppre=head; if(ppre=p) head=p-next; free(p); else while(p
23、pre!=NULL) if(ppre-next=p) ppre-next=p-next; free(p); break; ppre=ppre-next; printf(删除成功!); /else Print_menu_main();end: printf(继续删除学生信息吗?(Y 继续;N 返回主菜单); printf(n); getchar(); continue_input=getchar(); if(continue_input=Y|continue_input=y) Delete_record_by_name(head); else system(cls); Print_menu_ma
24、in();return head; return 0; struct student * Sorting_record_by_id(struct student *head)/按学号排序 int i=0,j,k,r; struct student *pt1,*pt2,*pt,m; if(head=NULL) printf(现在无同学记录n); printf(按Enter键返回主菜单)n); getchar(); r=getchar(); if(r!=1) system(cls); Print_menu_main(); else system(cls); Print_menu_main(); else pt1=head; pt2=head-next; for(pt=head;pt;pt=pt-next) i+; for(j=1;jnext; for(k=1;knumpt2-num) m=*pt1; *pt1=*pt2; *pt2=m; pt2-next=pt1-next; pt1-next=pt2; pt1=pt2; pt2=pt1-next; print_table_head(); for(pt=head;pt;pt=pt-next) pr
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1