大佬教程收集整理的这篇文章主要介绍了C语言单链表版学生信息管理系统,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例为大家分享了C语言学生信息管理系统的具体代码,供大家参考,具体内容如下
//以单链表作为存储结构,设计和实现课程成绩管理的完整程序。 //程序包括如下功能。 //1.建立学生成绩表,包含学生的学号、姓名和成绩。 //2.可以显示所有学生成绩。 //3.可以计算学生的总数。 //4.可以按学号和序号查找学生。 //5.可以在指定位置插入学生成绩数据。 //6.可以删除指定位置的学生数据。 //7.可以把学生成绩按从高到低的顺序排序。 //作者: yinlinqvan //操作系统:Mac OS X //编译器:gcc #include "String.h" #include "sys/malloc.h" #include "stdlib.h" #include "stdio.h" #include "time.h" #include "sys/types.h" #define MAXSIZE 100 typedef struct student { char sname[9]; char sno[5]; int score; }DataType; typedef struct { DataType data; struct Node *next; }linkList; linkList * inputdata(); voID display(linkList * p); //遍历链表 voID displayAll(linkList * L); //插入 linkList * createTailList();//尾插 linkList * createheadList();//头插 //查询 voID getElem(linkList * L,int i);//按序号 voID locateElemBysno(linkList * L,char ch[]);//按值 voID locateElemBysname(linkList * L,char ch[]); int lengthList(linkList * L); //插入 voID insertElem(linkList * L,int i);//在第i个结点前进行插入 voID insertElemBysno(linkList * L,char ch[5]);//按学号 voID deleteElem(linkList * L,char ch[]); //排序 voID insertSort(linkList * L); int menue(); int main(int argc,char *argv[]) { linkList *L; char sno[5] = {'\0'}; char sname[9] = {'\0'}; int b = 1; int i = 1; while (b) { switch(menue()) { case 1: L = createTailList(); //L = createheadList(); break; case 2: //displayAll(L); printf("\t◎输入插入哪个位置前:"); scanf("%d",&i); insertElem(L,i); //scanf("%s",sno); //insertElemBysno(L,sno); break; case 3: printf("\t◎输入待删除学生的学号:"); scanf("%s",sno); deleteElem(L,sno); break; case 4: printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\t学生总数为:%d\t\tU\n",lengthList(L)); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); break; case 5: printf("\t◎输入待查找学生的学号:"); scanf("%s",sno); locateElemBysno(L,sno); break; case 6: printf("\t◎输入待查学生的位置:"); scanf("%d",&i); getElem(L,i); break; case 7: displayAll(L); break; case 8: insertSort(L); break; case 9: i = 2; while (i) { system("clear"); printf("\033[5R_909_11845@"); printf("\033[?25l"); //隐藏光标 printf("\n\n\n\n\n\n"); printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\t正在退出(%d秒)\t\tU\n",i--); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n"); sleep(1); } printf("\033[0m"); system("clear"); return 0; break; default: i = 2; while (i) { system("clear"); printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U操作数无效,正在返回主菜单(%d秒)U\n",i--); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n"); sleep(1); } conTinue; } getchar(); printf("PRESS ENTER TO CONTinUE!"); while (1) { if ('\n' == getchar()) { break; } } } return 0; } int menue() { system("clear"); //警告音 printf("\033[0m"); //关闭所有属性 printf("\033[44;37m"); //47是字背景颜色,33是字体的颜色 printf ("\033[5R_909_11845@"); //闪烁 printf("\n^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^\n\n"); printf("\033[0m"); //关闭所有属性 printf("\033[44;37m"); printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\t学生成绩管理程序\tU\n"); printf("U\t\t\t\tU\n"); printf("U\t<1>创建\t\t\tU\n"); printf("U\t<2>指定位置后插入\tU\n"); printf("U\t<3>按位置删除\t\tU\n"); printf("U\t<4>求学生总数\t\tU\n"); printf("U\t<5>按学号查找\t\tU\n"); printf("U\t<6>按位置查找\t\tU\n"); printf("U\t<7>显示所有学生\t\tU\n"); printf("U\t<8>成绩排序\t\tU\n"); printf("U\t<9>退出\t\t\tU\n"); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); printf ("\033[5R_909_11845@"); printf("^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^\n\n"); printf("\033[0m"); //关闭所有属性 time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); //printf ( "\t\007%s",asctime (timeinfo) ); printf ("\033[;34m"); printf ("\t[%4d-%02d-%02d %02d:%02d:%02d]\n",1900+timeinfo->tm_year,1+timeinfo->tm_mon,timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec); char colorname[3][20] = {{"RED"},{"BLUE"},{"YELLLOW"}}; srand(time(&rawtimE)); //时间触发 //textcolor(colorname[rand()%3]); //printf("\t[textcolor is %s]\n",colorname[rand()%3]); //颜色码和控制码 我的参考链接 http://wenku.baIDu.com/vIEw/a38f77ff910ef12d2af9e70b.HTML printf("\t◎输入功能项:"); int a = 0; scanf("%d",&a); printf("\033[0m"); system("clear"); return a; } linkList * inputdata() { linkList *s = NulL; char sno[5] = {'\0'}; char sname[9] = {'\0'}; int score = 0; printf("\tsno\t->"); scanf("%s",sno); if (sno[0] == '#') { return s; } s = (linkList *)malloc(sizeof(linkList)); strcpy(s -> data.sno,sno); printf("\tsname\t->"); scanf("%s",sName); strcpy(s -> data.sname,sName); printf("\tscore\t->"); scanf("%d",&score); s -> data.score = score; printf("\n"); return s; } voID display(linkList * p) { printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\tsno\t\tsname\t\tscore\tU\n"); printf("U\t%s\t\t%s\t\t%-4d\tU\n",p->data.sno,p->data.sname,p->data.score); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n");} voID displayAll(linkList * L) { printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\tsno\t\tsname\t\tscore\tU\n"); linkList * p = L -> next; while(p) { printf("U\t%s\t\t%s\t\t%-4d\tU\n",p->data.score); p = p -> next; } printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); } linkList * createTailList() { //链表头结点 linkList * L = (linkList *)malloc(sizeof(linkList)); //结点 linkList * s = NulL; //尾结点 linkList * r = L; printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\t\t尾插法建立\t\t\tU\n"); printf("U\t请输入学生信息(当学号为\"#\"时结束)\tU\n"); printf("U\t\t\t\t\t\tU\n"); printf("U\t学号sno (不超过4位)\t\tU\n"); printf("U\t姓名sname (不超过4个汉字)\t\tU\n"); printf("U\t成绩score (int型)\t\t\tU\n"); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); while (1) { s = inputdata(); if (!s) { break; } r->next = s; r = s; } r->next = NulL; return L; } linkList * createheadList() { //链表头结点 linkList * L = (linkList *)malloc(sizeof(linkList)); //结点 linkList * s = NulL; printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\t\t头插法建立\t\tU\n"); printf("U\t请输入学生信息(当学号为\"#\"时结束)\tU\n"); printf("U\t\t\t\t\t\tU\n"); printf("U\t学号sno (不超过4位)\t\tU\n"); printf("U\t姓名sname (不超过4个汉字)\t\tU\n"); printf("U\t成绩score (int型)\t\t\tU\n"); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); while (1) { s = inputdata(); if (!s) { break; } s->next = L->next; L->next = s; } return L; } voID getElem(linkList * L,int i) { linkList * p = L; int j = 0; while (p && j<i) { p = p->next; j++; } if (!p) { printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\tDon't find the student!\tU\n"); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); } else { display(p); } } voID locateElemBysno(linkList * L,char ch[5]) { linkList * p = L->next; while (p && (0 != strcmp(p->data.sno,ch))) { p = p -> next; } if (!p) { printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\tDon't find the student!\tU\n"); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); } else { display(p); } } voID locateElemBysname(linkList * L,char ch[9]) { linkList * p = L->next; while (p && (0 != strcmp(p->data.sname,ch))) { p = p -> next; } if (!p) { printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\tDon't find the student!\tU\n"); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); } else { display(p); } } int lengthList(linkList * L) { linkList * p = L->next; int j = 0; while (p) { p = p->next; j ++; } return j; } voID insertElem(linkList * L,int i) { linkList * s = inputdata(); linkList * p = L; int j = 0; while (p && j<i-1) { p = p->next; j++; } if (p && p->next) { s->next = p->next; p->next = s; } else { printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\tDon't find the student!\tU\n"); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); } displayAll(L); } voID insertElemBysno(linkList * L,char ch[5]) { linkList * p = L; linkList * s = NulL; while (p && (0 != strcmp(p->data.sno,ch))) { p = p->next; } if (!p) { printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\tDon't find the student!\tU\n"); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); } else { s = inputdata(); s->next = p->next; p->next = s; } } voID deleteElem(linkList * L,char ch[5]) { linkList *p,*q; p = L->next; q=L; while (p && (strcmp(p->data.sno,ch) != 0)) { q = p; p = p->next; } if (!p) { printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\tDon't find the student!\tU\n"); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); } else { display(p); q->next = p->next; free(p); } } voID insertSort(linkList * L) { linkList * L1; linkList * p; linkList * q; linkList * s; int len; len = lengthList(L); L1 = (linkList *)malloc(sizeof(linkList)); if (L->next) { s = (linkList *)malloc(sizeof(linkList)); strcpy(s->data.sno,L->data.sno); strcpy(s->data.sname,L->data.sName); s->data.score = L->data.score; s->next = NulL; L1->next = s; q = L->next; } else { printf("qTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTr\n"); printf("U\tThe student link List is empty!\nU\n"); printf("tTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTs\n\n"); return; } while (q) { p = L1->next; while (p &&(p->data.score >= q->data.score)) { p = p->next; } s = (linkList *)malloc(sizeof(linkList)); strcpy(s->data.sno,q->data.sno); strcpy(s->data.sname,q->data.sName); s->data.score = q->data.score; if (!p) { s->next = NulL; p->next = s; } else { s->next = p->next; p->next = s; } q = q->next; } displayAll(L1); }
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是大佬教程为你收集整理的C语言单链表版学生信息管理系统全部内容,希望文章能够帮你解决C语言单链表版学生信息管理系统所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。