程序笔记   发布时间:2022-06-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C语言单链表版学生信息管理系统大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例为大家分享了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语言版
  • C语言实现简单学生学籍管理系统
  • C语言学生学籍管理系统课程设计
  • C语言实现学生学籍管理系统
  • C语言实现图书管理系统
  • C语言实现歌曲信息管理系统
  • C语言职工信息管理系统源码
  • C语言银行系统课程设计
  • C语言银行储蓄系统源码

大佬总结

以上是大佬教程为你收集整理的C语言单链表版学生信息管理系统全部内容,希望文章能够帮你解决C语言单链表版学生信息管理系统所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。