C语言学生信息管理系统 (单链表版)[无图,未调试](一)

2014-11-23 21:42:09 · 作者: · 浏览: 74
 
//以顺序表作为存储结构,设计和实现课程成绩管理的完整程序。程序包括如下功能。  
//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[MAXSIZE];  
    int last;  
}SeqList;  
//全民目击  
DataType *inputdata(void);  
SeqList *initSeq(void);  
void display(SeqList * L, int i);  
void displayAll(SeqList * L);  
int lengthList(SeqList * L);  
void locateElemByplace(SeqList *L, int i);  
void locateElem(SeqList *L, char ch[5]);  
int insertElem(SeqList *L, int i);  
int deleteElem(SeqList *L, int i);  
void insertSort(SeqList * L);  
int menue();  
  
int main(int argc,char *argv[])  
{  
    SeqList * L;  
    char sno[5] = {'\0'};  
    char sname[9] = {'\0'};  
    int b = 1;  
    int i = 0;  
    int t = 0;  
    while (b) {  
        switch(menue())  
        {  
            case 1:  
                L = initSeq();  
                break;  
            case 2:  
                printf("\t◎输入插入哪个位置前:");  
                scanf("%d", &i);  
                insertElem(L, i);  
                break;  
            case 3:  
                printf("\t◎输入待删除学生的序号:");  
                scanf("%d", &i);  
                deleteElem(L, i);  
                break;  
            case 4:  
                printf("                                 \n");  
                printf(" \t学生总数为:%d\t\t \n", lengthList(L));  
                printf("                                 \n\n");  
                break;  
            case 5:  
                printf("\t◎输入待查找学生的学号:");  
                scanf("%s", sno);  
                locateElem(L, sno);  
                break;  
            case 6:  
                printf("\t◎输入待查学生的位置:");  
                scanf("%d", &i);  
                locateElemByplace(L, i);  
                break;  
            case 7:  
                displayAll(L);  
                break;  
            case 8:  
                insertSort(L);  
                break;  
            case 9:  
                i = 2;  
                while (i)  
                {  
                    system("clear");  
                    printf("\033[5m");  
                    printf("\033[ 25l");        //隐藏光标  
                    printf("\n\n\n\n\n\n");  
                    printf("                                 \n");  
                    printf(" \t正在退出(%d秒)\t\t \n", i--);  
                    printf("                                 \n");  
                      
                    sleep(1);  
                }  
                printf("\033[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;  
}  
  
DataType *inputdata(void)  
{  
    DataType s1;  
    DataType *s = &s1;  
    char sno[5] = {'\0'};  
    char sname[9] = {'\0'};  
    int  score = 0;  
      
    printf("\tsno\t->
"); scanf("%s",sno); if (sno[0] == '#') { return NULL; } strcpy(s->sno, sno); printf("\tsname\t->"); scanf("%s",s->sname); printf("\tscore\t->"); scanf("%d", &s->score); puts(""); return s; } SeqList *initSeq(void) { DataType * s; SeqList L1; SeqList * L = &L1; L->last = -1; printf(" \n"); printf(" 请输入学生信息(当学号为\"#\"时结束) \n"); printf(" \n"); printf(" 学号sno (不超过4位) \n"); printf(" 姓名sname (不超过4个汉字) \n"); printf(" 成绩score (int型) \n"); printf(" \n\n"); while (1) { s = inputdata(); if (!s) { break; } L->last = L->last + 1; L->data[L->last