设为首页 加入收藏

TOP

C语言学生信息管理系统 (单链表版)[无图,未调试](一)
2014-11-23 21:42:09 来源: 作者: 【 】 浏览:56
Tags:语言 学生 信息 管理系统 单链表 无图 调试
 
//以顺序表作为存储结构,设计和实现课程成绩管理的完整程序。程序包括如下功能。  
//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
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇 c语言的f函数小结 下一篇C语言实验题――数组逆序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: