虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > C/C++编程 > C语言单链表版学生信息管理系统

C语言单链表版学生信息管理系统
类别:C/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] = {
    ''}
    ;
    char sname[9] = {
    ''}
    ;
    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("╭═══════════════════════════════╮n");
    printf("║t学生总数为:%dtt║n", lengthList(L));
    printf("╰═══════════════════════════════╯nn");
    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("33[5m");
    printf("33[?25l");
    //隐藏光标 printf("nnnnnn");
    printf("╭═══════════════════════════════╮n");
    printf("║t正在退出(%d秒)tt║n", i--);
    printf("╰═══════════════════════════════╯n");
    sleep(1);
    }
    printf("33[0m");
    system("clear");
    return 0;
    break;
    default: i = 2;
    while (i) {
    system("clear");
    printf("╭═══════════════════════════════╮n");
    printf("║操作数无效,正在返回主菜单(%d秒)║n", i--);
    printf("╰═══════════════════════════════╯n");
    sleep(1);
    }
    continue;
    }
    getchar();
    printf("PRESS ENTER TO CONTINUE!");
    while (1) {
    if ('n' == getchar()) {
    break;
    }
    }
    }
    return 0;
    }
    int menue() {
    system("clear");
    //警告音 printf("33[0m");
    //关闭所有属性 printf("33[44;
    37m");
    //47是字背景颜色,33是字体的颜色 printf ("33[5m");
    //闪烁 printf("n^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^nn");
    printf("33[0m");
    //关闭所有属性 printf("33[44;
    37m");
    printf("╭═══════════════════════════════╮n");
    printf("║t学生成绩管理程序t║n");
    printf("║tttt║n");
    printf("║t<1>创建ttt║n");
    printf("║t<2>指定位置后插入t║n");
    printf("║t<3>按位置删除tt║n");
    printf("║t<4>求学生总数tt║n");
    printf("║t<5>按学号查找tt║n");
    printf("║t<6>按位置查找tt║n");
    printf("║t<7>显示所有学生tt║n");
    printf("║t<8>成绩排序tt║n");
    printf("║t<9>退出ttt║n");
    printf("╰═══════════════════════════════╯nn");
    printf ("33[5m");
    printf("^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^nn");
    printf("33[0m");
    //关闭所有属性 time_t rawtime;
    struct tm * timeinfo;
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
    //printf ( "t07%s", asctime (timeinfo) );
    printf ("33[;
    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("33[0m");
    system("clear");
    return a;
    }
    LinkList * inputdata() {
    LinkList *s = NULL;
    char sno[5] = {
    ''}
    ;
    char sname[9] = {
    ''}
    ;
    int score = 0;
    printf("tsnot->");
    scanf("%s", sno);
    if (sno[0] == '#') {
    return s;
    }
    s = (LinkList *)malloc(sizeof(LinkList));
    strcpy(s -> data.sno, sno);
    printf("tsnamet->");
    scanf("%s", sname);
    strcpy(s -> data.sname, sname);
    printf("tscoret->");
    scanf("%d", &score);
    s -> data.score = score;
    printf("n");
    return s;
    }
    void display(LinkList * p) {
    printf("╭═══════════════════════════════════════════════╮n");
    printf("║tsnottsnamettscoret║n");
    printf("║t%stt%stt%-4dt║n", p->data.sno, p->data.sname, p->data.score);
    printf("╰═══════════════════════════════════════════════╯nn");
    }
    void displayAll(LinkList * L) {
    printf("╭═══════════════════════════════════════════════╮n");
    printf("║tsnottsnamettscoret║n");
    LinkList * p = L -> next;
    while(p) {
    printf("║t%stt%stt%-4dt║n", p->data.sno, p->data.sname, p->data.score);
    p = p -> next;
    }
    printf("╰═══════════════════════════════════════════════╯nn");
    }
    LinkList * createTailList() {
    //链表头结点 LinkList * L = (LinkList *)malloc(sizeof(LinkList));
    //结点 LinkList * s = NULL;
    //尾结点 LinkList * r = L;
    printf("╭═══════════════════════════════════════════════╮n");
    printf("║tt尾插法建立ttt║n");
    printf("║t请输入学生信息(当学号为"#"时结束)t║n");
    printf("║tttttt║n");
    printf("║t学号sno (不超过4位)tt║n");
    printf("║t姓名sname (不超过4个汉字)tt║n");
    printf("║t成绩score (int型)ttt║n");
    printf("╰═══════════════════════════════════════════════╯nn");
    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("╭═══════════════════════════════════════════════╮n");
    printf("║tt头插法建立tt║n");
    printf("║t请输入学生信息(当学号为"#"时结束)t║n");
    printf("║tttttt║n");
    printf("║t学号sno (不超过4位)tt║n");
    printf("║t姓名sname (不超过4个汉字)tt║n");
    printf("║t成绩score (int型)ttt║n");
    printf("╰═══════════════════════════════════════════════╯nn");
    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("╭═══════════════════════════════╮n");
    printf("║tDon't find the student!t║n");
    printf("╰═══════════════════════════════╯nn");
    }
    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("╭═══════════════════════════════╮n");
    printf("║tDon't find the student!t║n");
    printf("╰═══════════════════════════════╯nn");
    }
    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("╭═══════════════════════════════╮n");
    printf("║tDon't find the student!t║n");
    printf("╰═══════════════════════════════╯nn");
    }
    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("╭═══════════════════════════════╮n");
    printf("║tDon't find the student!t║n");
    printf("╰═══════════════════════════════╯nn");
    }
    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("╭═══════════════════════════════╮n");
    printf("║tDon't find the student!t║n");
    printf("╰═══════════════════════════════╯nn");
    }
    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("╭═══════════════════════════════╮n");
    printf("║tDon't find the student!t║n");
    printf("╰═══════════════════════════════╯nn");
    }
    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("╭═══════════════════════════════════╮n");
    printf("║tThe student link list is empty!n║n");
    printf("╰═══════════════════════════════════╯nn");
    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语言信息管理系统