成绩管理系统链表实现
2013-03-26 08:27
429 查看
#include<stdio.h> #include<malloc.h> #include<string.h> #include<stdlib.h> #include<conio.h> typedef struct L { char Name[30]; long long Num; float English; float C_language; struct L *Next; }*Node; void Menu(); //功能菜单 void Search(Node p); //查找 void Name_Search(Node p); //按姓名查找 void Num_Search(Node p); //按学号查找 void Initialization(Node p); //初始化表 void Add(Node p); // 添加 void Insert(Node p); //插入 void Delet(Node p); //删除 void Show(Node p); //显示 void Sort(Node p); //排序 void C_Sort(Node p); //c成绩排序 void En_Sort(Node p); //英语成绩排序 void Num_Sort(Node p); // 学号排序 void All_Sort(Node p); //总成绩排序 void Most(Node p); //最大值 void DelName(Node p); //按姓名删除 void DelNum(Node p); //按学号删除 void Modify(Node p); //修改 void Num_Modify(Node p); //按学号修改 void Name_Modify(Node p); //按姓名修改 int main() { int n; Node p=new struct L; system("color 1a"); Initialization(p); Menu(); printf("\t选择:\n"); printf("\t"); while(scanf("%d",&n)!=EOF) { switch(n) { case 1: Add(p);fflush(stdin);break; case 2: Show(p);fflush(stdin);break; case 3: Insert(p);fflush(stdin);break; case 4: Sort(p);fflush(stdin);break; case 5: Delet(p);fflush(stdin);break; case 6: Search(p);fflush(stdin);break; case 7: Modify(p);fflush(stdin);break; case 8:fflush(stdin); return 0; default :fflush(stdin); printf("\t没有该选项:\n"); } getch(); printf("\t"); system("cls"); Menu(); printf("\t选择:\n"); printf("\t"); } return 0; } void Menu() { printf("\n"); printf("\t 成绩管理系统 \3\n"); printf(" --------------------------------------\n"); printf("\t|\t1:添加\t |\t2:输出\t |\n"); printf(" --------------------------------------\n"); printf("\t|\t3:插入\t |\t4:排序\t |\n"); printf(" --------------------------------------\n"); printf("\t|\t5:删除\t |\t6:查询\t |\n"); printf(" --------------------------------------\n"); printf("\t|\t7:修改\t |\t8:退出\t |\n"); printf(" --------------------------------------\n"); printf("\n"); printf("\t提示:每一步操作结束后请按1-2次回车\n"); printf("\t"); printf("\n"); } void Initialization(Node p) { p->Next=NULL; p->Num=0; } void Add(Node p) { p->Num++; while(p->Next!=NULL) { p=p->Next; } Node q=(Node)malloc(sizeof(struct L)); printf("\t输入姓名:\n"); printf("\t"); scanf("%s",&q->Name); printf("\t输入学号:\n"); printf("\t"); scanf("%lld",&q->Num); printf("\t输入英语成绩:\n"); printf("\t"); scanf("%f",&q->English); printf("\t输入C语言成绩:\n"); printf("\t"); scanf("%f",&q->C_language); p->Next=q; q->Next=NULL; printf("\t添加成功!\n"); getch(); } void Insert(Node p) { p->Num++; printf("\t输入插入位置:\n"); int n; printf("\t"); scanf("%d",&n); if(n<=0) { printf("位置错误!\n"); return; } n-=1; while(n--) { p=p->Next; } Node q=(Node)malloc(sizeof(struct L)); printf("\t输入姓名:\n"); scanf("%s",&q->Name); printf("\t输入学号:\n"); scanf("%lld",&q->Num); printf("\t输入英语成绩:\n"); scanf("%f",&q->English); printf("\t输入C语言成绩:\n"); scanf("%f",&q->C_language); q->Next=p->Next; p->Next=q; printf("\t插入成功!\n"); getch(); } void Delet(Node p) { if(p->Num==0) { printf("\t没有可删除的数据!\n"); return; } p->Num--; printf("\t选择:\n"); printf("\t1:按姓名删除:\n"); printf("\t2:按学号删除:\n"); int n; printf("\t"); scanf("%d",&n); switch(n) { case 1:DelName(p);break; case 2:DelNum(p);break; default:printf("\t无此选择!\n");break; } printf("\t删除成功!\n"); getch(); } void DelName(Node p) { char s[30]; printf("\t输入姓名:\n"); printf("\t"); scanf("%s",&s); Node q=p; for(q=q->Next;q->Next!=NULL;q=q->Next,p=p->Next) { if(!strcmp(q->Name,s)) { p->Next=p->Next->Next; } } getch(); } void DelNum(Node p) { long long n; printf("\t输入学号:\n"); printf("\t"); scanf("%lld",&n); Node q=p; for(q=q->Next;q->Next!=NULL;q=q->Next,p=p->Next) { if(q->Num==n) { p->Next=p->Next->Next; } } getch(); } void Show(Node p) { if(p->Num==0) { printf("\t没有可显示的数据!\n"); return; } int len=p->Num; p=p->Next; for(int i=0;i<len;++i) { printf(" -------------------------------------------------\n"); printf("\t|\t姓名:\t\t|\t%s\n",p->Name); printf(" -------------------------------------------------\n"); printf("\t|\t学号:\t\t|\t%lld\n",p->Num); printf(" -------------------------------------------------\n"); printf("\t|\t英语:\t\t|\t%.2f\n",p->English); printf(" -------------------------------------------------\n"); printf("\t|\tC语言:\t\t|\t%.2f\n",p->C_language); printf(" -------------------------------------------------\n"); printf("\t|\t总分:\t\t|\t%.2f\n",p->English+p->C_language); printf(" -------------------------------------------------\n"); printf("\n"); p=p->Next; } printf("\t显示完!\n"); getch(); } void C_Sort(Node p) { Node x,y; int len=p->Num; for(int i=0;i<len;++i) { p=p->Next; x=p; y=p->Next; for(int j=i+1;j<len;++j) { if(x->C_language>y->C_language) { x=y; } y=y->Next; } float a,b; long long w; char s[30]; w=x->Num; x->Num=p->Num; p->Num=w; strcpy(s,x->Name); strcpy(x->Name,p->Name); strcpy(p->Name,s); a=x->C_language; x->C_language=p->C_language; p->C_language=a; b=x->English; x->English=p->English; p->English=b; } printf("\t排序成功!\n"); getch(); } void Sort(Node p) { if(p->Num==0) { printf("\t没有可排序的数据!\n"); return; } printf(" \t选择:\n"); printf(" \t1:C语言成绩从小到大排序:\n"); printf(" \t2:英语成绩从小到大排序:\n"); printf(" \t3:总成绩从小到大排序:\n"); printf(" \t4:学号从小到大排序:\n"); int n; printf("\t"); scanf("%d",&n); switch(n) { case 1:C_Sort(p);break; case 2:En_Sort(p);break; case 3:All_Sort(p);break; case 4:Num_Sort(p);break; default:printf("\t无此选择!\n");break; } getch(); } void En_Sort(Node p) { Node x,y; int len=p->Num; for(int i=0;i<len;++i) { p=p->Next; x=p; y=p->Next; for(int j=i+1;j<len;++j) { if(x->English>y->English) { x=y; } y=y->Next; } float a,b; char s[30]; long long w; w=x->Num; x->Num=p->Num; p->Num=w; strcpy(s,x->Name); strcpy(x->Name,p->Name); strcpy(p->Name,s); a=x->C_language; x->C_language=p->C_language; p->C_language=a; b=x->English; x->English=p->English; p->English=b; } printf("\t排序成功!\n"); getch(); } void Search(Node p) { if(p->Num==0) { printf("\t没有可查找的数据!\n"); return; } printf(" \t选择:\n"); printf(" \t1:按姓名查询:\n"); printf(" \t2:按学号查询:\n"); int n; printf("\t"); scanf("%d",&n); switch(n) { case 1:Name_Search(p);break; case 2:Num_Search(p);break; default:printf("\t无此选择!\n");break; } getch(); } void Name_Search(Node p) { char ap[30]; printf("\t输入姓名:\n"); printf("\t"); scanf("%s",&ap); int len=p->Num; p=p->Next; int i; for(i=0;i<len;++i) { if(!strcmp(ap,p->Name)) { printf(" -------------------------------------------------\n"); printf("\t|\t姓名:\t\t|\t%s\n",p->Name); printf(" -------------------------------------------------\n"); printf("\t|\t学号:\t\t|\t%lld\n",p->Num); printf(" -------------------------------------------------\n"); printf("\t|\t英语:\t\t|\t%.2f\n",p->English); printf(" -------------------------------------------------\n"); printf("\t|\tC语言:\t\t|\t%.2f\n",p->C_language); printf(" -------------------------------------------------\n"); printf("\t|\t总分:\t\t|\t%.2f\n",p->English+p->C_language); printf(" -------------------------------------------------\n"); break; } p=p->Next; } if(i>=len) { printf("\t没有找到该学生!\n"); } getch(); } void Num_Search(Node p) { long long sd; printf("\t输入学号:\n"); printf("\t"); scanf("%lld",&sd); int len=p->Num; p=p->Next; int i; for(i=0;i<len;++i) { if(sd==p->Num) { printf(" -------------------------------------------------\n"); printf("\t|\t姓名:\t\t|\t%s\n",p->Name); printf(" -------------------------------------------------\n"); printf("\t|\t学号:\t\t|\t%lld\n",p->Num); printf(" -------------------------------------------------\n"); printf("\t|\t英语:\t\t|\t%.2f\n",p->English); printf(" -------------------------------------------------\n"); printf("\t|\tC语言:\t\t|\t%.2f\n",p->C_language); printf(" -------------------------------------------------\n"); printf("\t|\t总分:\t\t|\t%.2f\n",p->English+p->C_language); printf(" -------------------------------------------------\n"); break; } p=p->Next; } if(i>=len) { printf("\t没有找到该学生!\n"); } getch(); } void Modify(Node p) { if(p->Num==0) { printf("\t没有可修改的数据!\n"); return; } printf(" \t选择:\n"); printf(" \t1:输入姓名修改:\n"); printf(" \t2:输入学号修改:\n"); int n; printf("\t"); scanf("%d",&n); switch(n) { case 1:Name_Modify(p);break; case 2:Num_Modify(p);break; default:printf("\t无此选择!\n");break; } getch(); } void Num_Modify(Node p) { long long sd; printf("\t输入学号:\n"); printf("\t"); scanf("%lld",&sd); int len=p->Num; p=p->Next; int i; for(i=0;i<len;++i) { if(sd==p->Num) { printf(" -------------------------------------------------\n"); printf("\t|\t姓名:\t\t|\t%s\n",p->Name); printf(" -------------------------------------------------\n"); printf("\t|\t学号:\t\t|\t%lld\n",p->Num); printf(" -------------------------------------------------\n"); printf("\t|\t英语:\t\t|\t%.2f\n",p->English); printf(" -------------------------------------------------\n"); printf("\t|\tC语言:\t\t|\t%.2f\n",p->C_language); printf(" -------------------------------------------------\n"); printf("\t这是之前的数据!\n"); printf("\t现在请更改!\n"); printf("\t输入姓名:\n"); printf("\t"); scanf("%s",&p->Name); printf("\t输入学号:\n"); printf("\t"); scanf("%lld",&p->Num); printf("\t输入英语成绩:\n"); printf("\t"); scanf("%f",&p->English); printf("\t输入C语言成绩:\n"); printf("\t"); scanf("%f",&p->C_language); printf("\t修改成功!\n"); getch(); break; } p=p->Next; } if(i>=len) { printf("\t没有找到该学生!\n"); } getch(); } void Name_Modify(Node p) { char ap[30]; printf("\t输入姓名:\n"); printf("\t"); scanf("%s",&ap); int len=p->Num; p=p->Next; int i; for(i=0;i<len;++i) { if(!strcmp(ap,p->Name)) { printf(" -------------------------------------------------\n"); printf("\t|\t姓名:\t\t|\t%s\n",p->Name); printf(" -------------------------------------------------\n"); printf("\t|\t学号:\t\t|\t%lld\n",p->Num); printf(" -------------------------------------------------\n"); printf("\t|\t英语:\t\t|\t%.2f\n",p->English); printf(" -------------------------------------------------\n"); printf("\t|\tC语言:\t\t|\t%.2f\n",p->C_language); printf(" -------------------------------------------------\n"); printf("\t这是之前的数据!\n"); printf("\t现在请更改!\n"); printf("\t输入姓名:\n"); printf("\t"); scanf("%s",&p->Name); printf("\t输入学号:\n"); printf("\t"); scanf("%lld",&p->Num); printf("\t输入英语成绩:\n"); printf("\t"); scanf("%f",&p->English); printf("\t输入C语言成绩:\n"); printf("\t"); scanf("%f",&p->C_language); printf("\t修改成功!\n"); getch(); break; } p=p->Next; } if(i>=len) { printf("\t没有找到该学生!\n"); } getch(); } void All_Sort(Node p) { Node x,y; int len=p->Num; for(int i=0;i<len;++i) { p=p->Next; x=p; y=p->Next; for(int j=i+1;j<len;++j) { if((x->English+x->C_language)>(y->English+y->C_language)) { x=y; } y=y->Next; } float a,b; char s[30]; long long w; w=x->Num; x->Num=p->Num; p->Num=w; strcpy(s,x->Name); strcpy(x->Name,p->Name); strcpy(p->Name,s); a=x->C_language; x->C_language=p->C_language; p->C_language=a; b=x->English; x->English=p->English; p->English=b; } printf("\t排序成功!\n"); getch(); } void Num_Sort(Node p) { Node x,y; int len=p->Num; for(int i=0;i<len;++i) { p=p->Next; x=p; y=p->Next; for(int j=i+1;j<len;++j) { if(x->Num>y->Num) { x=y; } y=y->Next; } float a,b; char s[30]; long long w; w=x->Num; x->Num=p->Num; p->Num=w; strcpy(s,x->Name); strcpy(x->Name,p->Name); strcpy(p->Name,s); a=x->C_language; x->C_language=p->C_language; p->C_language=a; b=x->English; x->English=p->English; p->English=b; } printf("\t排序成功!\n"); getch(); }
成绩管理系统改良版:点击打开;
相关文章推荐
- c用链表实现学生成绩管理系统 MIS
- 用链表写的学生管理系统 成绩的录入与查询都已经是实现了
- 学生成绩管理系统(链表的实现)
- 学生成绩管理系统链表实现
- 链表《5》使用链表实现学生成绩管理系统
- c++链表实现学生成绩管理系统(简易版)
- 用链表写的学生管理系统 成绩的录入与查询都已经是实现了
- 学生成绩管理系统课程设计(C语言,链表实现)
- 使用C++结合文件操作和链表实现学生成绩管理系统
- 链表实现学生成绩管理系统
- C语言链表实现的简易学生成绩管理系统
- 数据结构——学生成绩管理系统的链表实现
- 简单学生成绩管理系统(Java实现)
- 基于链表的学生成绩管理系统
- 数据结构:单链表:学生成绩管理系统
- C---仓储管理系统实现(嵌套链表or二维链表)
- C语言实现---学生成绩管理系统
- Python简单实现学生成绩管理系统
- 成绩管理系统的C++实现
- C语言实现学生成绩管理系统