c语言课程设计 之 成绩管理系统

本文介绍了一个使用C语言编写的课程设计项目——成绩管理系统。该系统利用链表实现,具备学生成绩录入、查询、编辑、删除、筛选、排序、文件导入导出等功能。此外,还提供了系统帮助和密码管理,支持多用户操作。源代码包括主菜单、数据读写、排序等关键模块的实现。
摘要由CSDN通过智能技术生成
c语言课程设计 之 成绩管理系统


一:
第一次发博客,请支持!
这个是自己弄的 c语言课程设计,用的链表,因为刚学用了一个月,错误在所难免,请多多指教。
所用为高考成绩的数据。


有以下功能:
1、  录入学生的成绩信息:学号、班级、姓名、性别、各科成绩。
2、  输入信息,支持学号的容错性。
3、  显示所有学生成绩的基本信息。
4、  导入数据文件,文本文件。
5、  导出数据文件,文本文件。
6、  按学号、班级、姓名、性别、各科成绩 进行筛选,对筛选数据进行删除和另存。
7、  按学号和姓名进行查询学生信息。
8、  对学生成绩信息进行可选性修改。
9、  按学号删除学生信息,按随机编号多个删除。
10、按班级、学号、性别、各科成绩、总分等对学生进行排序。
11、系统操作帮助功能。
12、系统信息显示。
13、密码修改,启用或关闭密码功能。
14、退出系统。
二:
答辩结束之后,又想到了密码可以完全放在链表数据中,这样也可以增加管理员账户和普通账户的密码功 能。时间能力问题,也只能这样吧。学完的C语言同学有兴趣 可以实现更强大的功能。另此处代码仅做讨论 使用。


三:
另 可在网盘下载相关的运行数据附件  http://pan.baidu.com/s/1sjDJVC5   
由 南阳理工学院,计算机科学与技术专业 学生制作。
四:
代码如下:




<span style="color:#6600cc;">#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <windows.h>    //Sleep()
#include <time.h>   //time

struct stu
{
    char b[3];      //班级
    char num[15];      //姓名
    char nam[8];      //学号
    char sex[6];      //性别
    char sx[4];      //数学
    char yw[4];      //语文
    char en[4];      //英语
    char zh[4];      //综合
    struct stu *ps;
};

//**********************
//主菜单 ***********  22
char  emue(int sec,int x,int y)
{
    system("cls");
    char ch[20],t='m';
    printf("\n\n\n\n");
    printf("\t*******************成绩管理系统*********************\n"),Sleep(30);
    printf("\t*||==============================================||*\n"),Sleep(30);
    printf("\t*||----------------------------------------------||*\n"),Sleep(30);
    printf("\t*||    文件    |       编辑         |   系统     ||*\n"),Sleep(30);
    printf("\t*||------------|--------------------|------------||*\n"),Sleep(30);
    printf("\t*||   查看(c)  |  新增(n)  删除(d)  |  帮助(h)   ||*\n"),Sleep(30);
    printf("\t*||   打开(o)  |  查找(f)  筛选(x)  |  系统(t)   ||*\n"),Sleep(30);
    printf("\t*||   保存(s)  |  修改(r)  排序(p)  |  退出(q)   ||*\n"),Sleep(30);
    printf("\t*||----------------------------------------------||*\n"),Sleep(30);
    printf("\t*==================================================*\n"),Sleep(30);
    int hour,min;
    hour=sec/3600;
    min=(sec%3600)/60;
    sec=(sec%3600)%60;
    if(hour>0)
        printf("\t 已登陆%3d 时%3d 分%3d 秒,",hour,min,sec);
    else if(min>0)
        printf("\t 已登陆:%3d 分:%3d 秒,",min,sec);
    else if(sec>=0)
        printf("\t 已登陆:%3d 秒,",sec);
    printf("已操作%3d 次,距上次保存%3d 次。\n",x-1,y-1),Sleep(30);
    printf("\t    请输入命令:_____\b\b\b\b\b");
    gets(ch);
    if(strlen(ch)>1)
        return t;
    else return t=ch[0];
    return t=ch[0];
}

//**********************
//输出显示数据 *****  58
void pri(struct stu *ph)
{
    struct stu *pt;
    pt=ph;
    int k=1;
    double sum;
    printf("\n 编号: 班级:   学号:        姓名:    性别: 数学: 语文: 英语: 综合: 总分:\n");
    if(pt==NULL)
    {
        printf("\n\t无数据显示!\n\t请按 enter 键继续:___\b\b\b");
        getchar();
    }
    else
    {
        while(pt!=NULL)
        {
            sum=atof(pt->sx)+atof(pt->yw)+atof(pt->en)+atof(pt->zh);
            printf("%4d:   %3s%15s%8s  %4s   %4s  %4s  %4s  %4s  %4.2f\n",k++,pt->b,pt->num,pt->nam,pt->sex,pt->sx,pt->yw,pt->en,pt->zh,sum);
            if(k%200==0)
            {
                char ch;
                printf("\t按Q/q 退回主菜单:\n\t按enter键显示下一页;\n\t_____\b\b\b\b\b");
                ch=getchar();
                if(ch=='q'||ch=='Q')
                    break;
                system("cls");
            }
            pt=pt->ps;
        }
        if(pt==NULL)
            printf("\n\t数据显示完毕!\n");
    }
}

//**********************
//打开 text.dat ****  94
struct stu *ope()
{
    FILE *fp;
    long long a;
    struct stu *pn,*pb,*ph;
    if((fp=fopen("text.dat","rb"))==NULL)
    {
        printf("\t打开文件失败!");
        ph=NULL;
        return(ph);
    }
    else
        printf("\n\n\t\t文件成功打开!\n");
    int k=0;
    pn=(struct stu *)malloc(sizeof(struct stu));
    fread(&a,sizeof(long long int),1,fp);
    while(1)
    {
        k++;
        if((fread(pn,sizeof(struct stu),1,fp))!=1)
        {
            if(k==1)
                ph=NULL;
            break;
        }

        if(k==1)
            ph=pn;
        else
            pb->ps=pn;
        pb=pn;
        pb->ps=NULL;
        pn=(struct stu *)malloc(sizeof(struct stu));
    }
    fclose(fp);
    printf("\t\t数据成功读入!\n");
    return(ph);
};

//**********************
//读入text x.txt *** 135
struct stu *rea(char s[])
{
    system("cls");      // 清屏;
    FILE *fp;
    struct stu *pn,*pb,*ph;
    ph=NULL;
    if((fp=fopen(s,"r"))==NULL)
    {
        fclose(fp);
        printf("\n\t打开文件失败!");
        return(ph);
    }
    else
        printf("\n\n\t\t文件成功打开!\n");
    int k=0;
    pn=(struct stu *)malloc(sizeof(struct stu));
    while(1)
    {
        k++;
        //判断文件是否有数据
        if(fscanf(fp,"%s",pn->b
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值