精华内容
下载资源
问答
  • C++ 学生信息管理系统课程设计报告

    千次阅读 2020-06-13 11:22:27
    《面向对象课程设计》报告学生信息管理系统设计一、问题描述二、需求分析和概要设计三、功能模块描述和设计思路四、具体实现过程五、收获与展望 一、问题描述 学生信息管理系统设计 学生信息包括:学号,姓名,年龄...

    一、问题描述

    学生信息管理系统设计
    学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计学生信息管理系统,使之能提供以下功能:
    系统以菜单方式工作
    1、学生信息录入功能(学生信息用文件保存)输入
    2、学生信息浏览功能—输出
    3、查询、排序功能—算法
    按学号查询
    按姓名查询
    4、学生信息的删除与修改

    二、需求分析和概要设计

    题目要求之做一个学生信息管理系统,并且一菜单的形式完成,

    CAboutDlg是“关于”界面的设计;
    CAddDlg是学生信息录入功能界面的设计,并且实现学生消息添加;
    CChangeDlg是学生信息的修改功能界面的设计;
    CDisplayView和CSelectDlg在主窗口上个的两个静态拆分窗口;
    CInfoDlg是学生信息浏览功能界面的实现设计;
    CInfoFile是存放学生信息的类,里面有学生属性,还有一些调用函数;
    CLoginDlg登录窗口界面的设计;
    CMainFrame是主窗口的设计;
    CSearchDlg是学生信息查询界面的设计;
    CSortDlg是学生信息排序界面的设计;
    CstuinfoApp是应用程序类;
    CUserDlg是个人信息界面的设计。

    三、功能模块描述和设计思路

    首先就是学生信息的录入,要求将信息用文件保存,在这里我设计了一个类CInfoFile,构建了一个结构体msg里面有8个成员变量分别是id,name,age,sex,birthday,place,phone,mail,分别表示学号,姓名,年龄,性别,出生年月,地址,电话,E-mail,除了id(自加,且唯一),age是int类型,其他都是string类型,同时CInfoFile里面还有成员函数ReadDocline、WirteDocline分别向程序里面读数据和写入数据,还有负责添一条数据的成员函数Addline()可以添加一条信息,同时我将学生的信息有list容器存放。这个添加信息的界面我设计了一个CCAddDlg类,继承CFormView类,里面不需要填加学号,只需要输入其他七个变量即可,通过编辑框来接收用户输入的信息。

    其次是学生的浏览,我设计了一个CInfoDlg类,它是有CFormView类继承而来的,通过重写OnInitialUpdate();函数来实现界面的初始化,我是用一个List Control控件来显示信息的,当然就要引用CInfoFile的头文件,将文本信息读入,然后在展示出来,大体思路就是这样。

    然后我是先做查询的,因为这有做了查询才能删除和修改,查询我也是按照学号查询和姓名查询,在这里我设计了一个CSearchDlg类,它是有CFormView类继承而来的,也要应用CInfoFile类完成对文件的读写,同时在这个选择方式上,我用了一个下拉框,Combo Box控件来实现选择,查询出来的信息在右边的实例编辑框中展示出来,然后对编辑框进行一些属性的调整,例如可下滑(当文本长度过长时可下滑)、可换行、只读,然后学号和姓名都设置可输入编辑框,只有当对应查询方式有效时才能进行查询,无效会有消息框弹出提示,若有效会进行查询将对应结果输出,无输出结果会有对应的提示框弹出,用MessageBox实现。还有一点需要注意的是按照名字查询的时候可能会出现同名的要将其输出。

    然后我做了删除和修改,这是用按照学号查询的方法来查询的,分别设计了CDelDlg类和CChangeDlg类,都是有CFormView类继承而来的,CDelDlg类的设计类似查询,也是左边输入搜索,右边输出数据,还有一点就是,点击删除按钮后会弹出二次确认,只有当选择确认时才会删除信息,防止误删。

    CChangDlg类的界面类似添加信息界面,但是多了一个学号的选项,这个学号的选项我是用Combo Box做的,原理类似查询的查讯方式选择框,这样就不会弹出未查询到该学号的报错了。在选择学号的时候,会有对应学号信息的提示,以便于对照信息增加可读性。

    最后我写的是排序,这里我新建了一个CSortDlg类,我是用一个List Control控件来完成这个功能的,我写了一个列表表头触发事件OnLvnColumnclickList1()函数、同时写了一个静态函数MyCompareProc()函数用来定义排序的方式,比如某列按照int类型排序,而有的按照CString类型排序。

    然后,我还自己写了一个登陆窗口,用CLoginDlg来实现的,它的父类是CDialogEx,在应用程序类CstuinfoApp的InitInstance()里面的APP创建之前创建登陆对话框只有登陆成功才能进入到主界面,在登录界面还有记录密码的功能,配有提示如密码错误,用户名不存在。还有就是登录到主窗口是会显示个人信息界面,这个我使用CUserDlg来实现的,里面包括修改密码的功能,确定密码。主窗口的设计CMainFrame类的设计,它是CFrameWnd的子类,在这里我还设计了一个右键菜单和快捷键的设计,还有就是关键的两个列CSelectView类和CDisplayView类,CSelectView继承于CTreeView,CDispalyView继承于CFormView,CSelectView类中初始化树视图,获取数的控件,添加树节点,透视对应的结点添加控制事件,OnTvnSelchanged(),来获得自定义消息,在主窗口界面挂载信息。

    四、具体实现过程

    1. 新建项目
      1.1. 根据向导创建项目
      首先,新建MFC项目(stuinfo),基于单文档,MFC标准项目。
      1.2. 添加预处理
      由于微软在VS2013中不建议再使用C/C++的传统库函数scanf,strcpy,sprintf等。
      VS建议采用带_s的函数,如scanf_s、strcpy_s,但这些并不是标准C/C++函数。要想继续使用此函数,需要添加 _CRT_SECURE_NO_WARNINGS这个预定义。
      在项目->属性->C/C+±>预处 ->预处理器定中添加 _CRT_SECURE_NO_WARNINGS,防止报错。
      1.3. 设置主窗口属性
      在CMainFrame的 OnCreate()中添加如下代码:
      在这里插入图片描述
      IDI_ICON_WIN 是自己导入图标。
      在这里插入图片描述
      可以在这里修改左侧标题
    2. 文件处理
      2.1. 文件内容处理和设计文件处理类
      Login.ini中登录用户的信息

    学生信息在stock.txt中

    添加CInfoFile.cpp和CInfoFile.h
    设计结构体格式

    设计类

    1. 登录窗口的设计
      添加控件

    添加类CLoginDlg :public CDialogEx

    重写OnInitDialog函数,判断登录情况进行初始化,通过rem.txt里面的内容来判断是否记住密码,如果是就初始化记住密码

    还有就是登录按钮的实现

    同时这里还有注意两个bug,1是直接点击输入框然后回车会进入主界面,2是直接点x会进入主界面。这里通过重写函数解决。

    这是取消按钮的代码:

    1. 静态拆分窗口
      自定义两个类:CSelectView和CDispalyView(它的基类必须是CFormView类)。
      CSelectView继承于CTreeView,CDispalyView继承于CFormView。
      1)CMainFrame类中,声明CSplitterWnd类型的对象:

    2. 树视图功能的添加
      加载图标,

    在CSelectView类中声明相应变量,

    然后重写CSelectView的OnInitUpdate函数

    在功能节点相应信息的处理:

    1)在CMainFrame 框架类中,添加自定义消息宏

    2)在CMainFrame框架类中添加自定义消息处理函数:
    //自定义消息处理函数

    afx_msg LRESULT OnMyChange(WPARAM wParam, LPARAM lParam);
    3)对应的.cpp定义其函数
    LRESULT CMainFrame::OnMyChange(WPARAM wParam, LPARAM lParam)
    {
    }
    

    4)在CMainFrame框架类BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加自定义消息入口,与自定义消息处理函数绑定。

    5)发送自定义信号:
    在CSelectView的OnTvnSelchanged函数中,发送自定义信号:

    在CMainFrame框架类OnMyChange函数中处理相应消息:

    运行结果:

    因为此时并没有挂载个人信息界面,所有不会有右边界面的内容,应该是未定义的初始化内容。
    6. 个人信息管理界面窗口的实现
    6.1. 界面设计

    设计界面,添加控件,并给控件添加变量

    重写函数

    1. 学生信息浏览窗口的实现
      7.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    7.2. 功能的实现

    1. 学生信息添加窗口的实现
      8.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    8.2. 功能实现

    1. 学生信息查询界面
      9.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    9.2. 功能实现

    1. 学生信息删除界面
      10.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    10.2. 功能实现

    1. 学生信息修改界面
      11.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    11.2. 功能实现

    1. 学生信息排序界面
      12.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    12.2. 功能实现

    1. 菜单栏的制作
      13.1. 菜单栏界面的设计

    2)右键菜单栏项,添加事件处理程序,选择COMMAND 消息类型,添加至CMainFrame框架类中
    添加函数
    在这里插入图片描述
    13.2. 右键菜单
    在这里插入图片描述

    五、收获与展望

    还有些图片不想放了,上传到资料了
    一会放链接
    最后的成品展示在

    链接: 视频录制的不好不介意.

    展开全文
  • C语言学生成绩信息管理系统课程设计报告

    万次阅读 多人点赞 2016-10-07 22:19:22
    C语言课程设计报告 一 .设计目的 学生成绩管理系统 主要功能: (1)能按学期、按班级完成对学生成绩的录入、 修改,删除 (2)能按班级统计学生的成绩,求学生的总分及 平均分,并能根据学生的...

    C语言课程设计报告

     

    一 .设计目的

      学生成绩管理系统

     主要功能:

     

    (1)能按学期、按班级完成对学生成绩的录入、

     

    修改,删除

     

    (2)能按班级统计学生的成绩,求学生的总分及

     

    平均分,并能根据学生的平均成绩进行排序

     

     

    (3)能查询学生成绩,不及格科目及学生名单

     

     

    (4)能按班级输出学生的成绩单

     

     

     

     

     

    二 .总体设计

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    此流程图是整体上对程序需要哪些函数而设计的,这些都是核心函数,先将这些函数实现以后再通过main()主函数对每一个核心函数进行调用,主函数里面可以用到while循环和switch语句

    三.详细设计

    void Pass_File(); //创建密码文件

    int Name_Password(); //登陆密码验证

    void User_Amadeus();/* 密码修改 */

    /***********************************************/

     

    void in();/*录入学生成绩信息*/

    void show();/*显示学生信息*/

    void order();/*按总分排序*/

    void del();/*删除学生成绩信息*/

    void modify();/*修改学生成绩信息*/

    void menu();/*主菜单*/

    void insert();/*插入学生信息*/

    void total();/*计算总人数*/

    void search();/*查找学生信息*/

    void ShowClassS();      // 显示某班学生信息

    void ShowFailS();       // 显示不及格学生信息

    void main()/*主函数,实现对每个函数的调用,main函数里面,通过对输入序号的值对应的调用函数,这需要用到switch()语句*/

    每个函数都相对是独立的,入口参数就是输入学生的成绩信息

     

     

    四.调试与测试

    五.源程序清单和执行结果
    
    1 . 定义结构体及宏定义
    
    #include<stdio.h>
    
    #include<stdlib.h>
    
    #include<conio.h>
    
    #include<dos.h>
    
    #include<string.h>
    
    #define LEN sizeof(struct student)
    
    #define FORMAT "  %2s   %2s   %s   %s     %4.1lf     %4.1lf     %4.1lf  %4.1lf   %4.2lf  \n"
    
    #define DATA stu[i].Term,stu[i].Class,stu[i].name,stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave
    
    char Name[15]; //用户名存储
    
    char Pass[15]; //用户密码存储
    
    #define R 3
    
    struct student/*定义学生成绩结构体*/
    
    {
    
    char Class[15];        //专业班级
    
        char Term[5];          // 学期
    
    char num[15];              /*学号*/
    
    char name[15];         /*姓名*/
    
    double score[3];        //学科成绩
    
    double sum;          /*总分*/
    
    double ave;          /*平均分*/
    
    };
    
    struct student stu[100];/*定义结构体数组*/
    
    
    
    /******用户输入用户名与登陆密码*******/
    
    struct NamePass
    
    {
    
    char name[15];
    
    char pass[15];
    
    };
    
    
    
    2.函数声明
    
    /**********密码登陆模块************************/
    
    void Pass_File(); //创建密码文件
    
    int Name_Password(); //登陆密码验证
    
    void User_Amadeus();/* 密码修改 */
    
    /***********************************************/
    
    
    
    void in();/*录入学生成绩信息*/
    
    void show();/*显示学生信息*/
    
    void order();/*按总分排序*/
    
    void del();/*删除学生成绩信息*/
    
    void modify();/*修改学生成绩信息*/
    
    void menu();/*主菜单*/
    
    void insert();/*插入学生信息*/
    
    void total();/*计算总人数*/
    
    void search();/*查找学生信息*/
    
    void ShowClassS();      // 显示某班学生信息
    
    void ShowFailS();       // 显示不及格学生信息
    
    
    
    3.主函数 main()
    
    利用while循环和swithch()语句进行菜单选择来实现各函数的调用,系统根据输入的数字选项来调用相应的函数,输入0时,结束退出。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!
    
    /*******************************************************************************************************************
    
                                                     程序的开始部分
    
    ********************************************************************************************************************/
    
    void main()/*主函数*/
    
    {
    
    int n;
    
        Pass_File();
    
        Name_Password();
    
    system("pause");
    
    system("cls");
    
    printf("\t\t******************************************************************\n");
    
    printf("\t\t*                                                                *\n");
    
    printf("\t\t*      欢迎使用由计算机1505班设计的学生成绩管理系统              *\n");
    
    printf("\t\t*                   祝您使用愉快!!!!                         *\n");
    
    printf("\t\t*                                                                *\n");
    
    printf("\t\t*      心灵鸡汤:                                                *\n");
    
    printf("\t\t*                                                                *\n");
    
        printf("\t\t*      相信自己,依靠自己,要尽自己的能力,把每件事情都做得更好,*\n");
    
    printf("\t\t*      让自己活的每一天都有意义。                                *\n");
    
    printf("\t\t*      努力成为你最喜欢的那种人,就算不成功,                    *\n");
    
    printf("\t\t*      至少你会喜欢这样努力的自己。                              *\n");
    
    printf("\t\t*                                                                *\n");
    
    printf("\t\t*      指导老师  :毋小省                                        *\n");
    
    printf("\t\t*      课程设计  :C语言                                         *\n");
    
    printf("\t\t*      姓    名  :张诚华、马莹莹                                *\n");
    
    printf("\t\t*      学    校  :河南理工大学                                  *\n");
    
    printf("\t\t*      学    号  :311509010516,311509010507                    *\n");
    
    printf("\t\t*      专业班级  :计算机1505                                    *\n");
    
    printf("\t\t*                                                                *\n");
    
    printf("\t\t******************************************************************\n");
    
        system("pause");//暂停
    
        system("cls");
    
    menu();
    
    scanf("%d",&n);/*输入选择功能的编号*/
    
    while(n)
    
    {
    
    switch(n)
    
    {
    
    case 1:
    
    in();
    
    break;
    
    case 2:
    
    search();
    
    break;
    
    case 3:
    
    del();
    
    break;
    
    case 4:
    
    modify();
    
    break;
    
    case 5:
    
    insert();
    
    break;
    
    case 6:
    
    order();
    
    break;
    
    case 7:
    
    total();
    
    break;
    
    case 8:
    
                User_Amadeus();
    
                break;
    
    case 9:
    
    ShowClassS();
    
                break;
    
    case 10:
    
    show();
    
                break;
    
    case 11:
    
                ShowFailS();
    
                break;
    
    default:break;
    
    }
    
    getch();
    
    menu();/*执行完功能再次显示菜单界面*/
    
    scanf("%d",&n);
    
    }
    
    }
    
    
    
    4.创建密码文件函数
    
    /****************创建密码文件*************/
    
    void Pass_File()
    
    {
    
    FILE *  PassFile;
    
    PassFile = fopen("c:\\CLP\\password.bat", "ab+");
    
    if(NULL == PassFile)
    
    {
    
    printf("创建密码文件失败!\n");
    
    exit(0);
    
    }
    
    fprintf(PassFile ,"amadeus\n");
    
    fwrite("amadeus" , sizeof("amadeus"), 1, PassFile);
    
    
    
    fclose(PassFile);
    
    }
    
    5.登录密码验证函数 
    
    /******************登 陆 密 码 验 证 ***********************/
    
    int Name_Password()
    
    {
    
    struct NamePass PassW1;
    
    
    
    int num = 0;
    
    
    
    FILE * PassFile;
    
    
    
    PassFile = fopen("c:\\CLP\\password.bat", "rb");//以只读的方式打开二进制文件password.bat
    
    if(NULL == PassFile)
    
    {
    
    Pass_File();
    
    }
    
    
    
    fscanf(PassFile, "%s", Name );//设置初始用户名
    
    fscanf(PassFile, "%s", Pass);//设置初始密码
    
    
    
    while(1)
    
    {
    
    system("cls");
    
    printf("\n\n\t\t\t  欢迎使用学生成绩管理系统\n\n");
    
    printf("\t\t\t\t密码和学号一样\n\n\n");
    
    printf("  请输入学号: ");
    
    scanf("%s", &PassW1.name);
    
    printf("\n");
    
    printf("  请输入密码: ");
    
    scanf("%s", &PassW1.pass);
    
    if(0 == strcmp(Name,PassW1.name) && 0 == strcmp(Pass,PassW1.pass))
    
    {
    
    printf("\n\n\n\t\t\t密 码 核 对 正 确 ! \1 \n");
    
    printf("\n\n\n\t\t 欢 迎 您 使 用 学 生 管 理 系 统 ! \2\n");
    
    break;
    
    }
    
    else
    
    {
    
    printf("\n\n\t\t\t对不起,您输入的用户名或密码有误!\n\n");
    
    printf("\n\n\t\t      请  按  任  意  键  重  新  输  入 !\n\n\n\n\n\n\n\n\n");
    
    getch();
    
    num++;
    
    if(3 == num)
    
    {   
    
    system("cls");
    
    printf("\n\n\t\t\t  欢迎使用学生成绩管理系统\n\n\n");
    
    printf("\n\n\n\t\t 对 不 起\n\n\n");
    
    printf("\n\t\t\t  你 已 经 三 次 输 入 错 误\n\n");
    
    printf("\n\t\t\t\t\t\t\t再 见 ! \n\n\n\n\n\n");
    
    getch();
    
    fclose(PassFile);
    
    return 0;
    
    }
    
    }
    
    }
    
    printf("\n\n\n");
    
    
    
    fclose(PassFile);
    
    return 1;
    
    }
    
    6.密码修改函数 
    
    /*******************密码修改****************/
    
    void User_Amadeus()
    
    {
    
    FILE * PassFile;
    
    int a = 1;
    
    char name1[15];
    
    char passw1[15];
    
    char passw2[15];
    
    char passw3[15];
    
    
    
    system("cls");
    
    PassFile = fopen("c:\\CLP\\password.bat", "wb");
    
    if(NULL == PassFile)
    
    {
    
    printf("修改密码文件失败!\n");
    
    exit(0);
    
    }
    
    printf("\t\t\t\t  用 户 修 改 \n");
    
    while(1)
    
    {
    
    printf("请输入原密码:");               
    
    scanf("%s", passw1);
    
    if(0 == strcmp(Pass, passw1))
    
    {
    
    printf("\n请输入新用户名:");
    
    scanf("%s", name1);
    
    while(1)
    
    {
    
    while(1)
    
    {
    
    printf("\n请输入新密码:");
    
    scanf("%s", passw2);
    
    if(0 == strcmp(Pass, passw2))
    
    {
    
    printf("\n新密码不能与旧密码相同!\n");
    
    }
    
    else
    
    break;
    
    }
    
    printf("\n请确认新密码:");
    
    scanf("%s", passw3);
    
    if(0 == strcmp(passw2, passw3))
    
    {
    
    strcpy(Pass , passw2);
    
    printf("\n\n\t\t\t密 码 修 改 成 功 \1 请 重 新 登 陆 !\n\n");
    
    fprintf(PassFile, "%s\r\n", name1);
    
    fprintf(PassFile, "%s\r\n", passw2);
    
    break;
    
    }
    
    else
    
    printf("\n您输入的密码不一致, 请重新输入!\n");
    
    }
    
    break;
    
    }
    
    else
    
    {
    
    if(a != 3)
    
    {
    
    printf("\n密码错误,请重新输入!\n\n");
    
    a++;
    
    }
    
    else
    
    {
    
    printf("你已三次输入密码错误 !\n\n");
    
    printf("再见!\n");
    
    exit(0);
    
    }
    
    }
    
    }
    
    fclose(PassFile);
    
    system("pause");
    
    }
    
    7.按学期、按班级录入学生成绩函数
    
    /*********************录入学生信息********************/
    
    void in()
    
    {
    
    int i,m=0;/*m是记录的条数*/
    
    char ch[2];
    
    FILE *fp;/*定义文件指针*/
    
    if((fp=fopen("data","ab+"))==NULL)/*打开指定文件*/
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))
    
    {
    
    if(fread(&stu[m] ,LEN,1,fp)==1)
    
    m++;/*统计当前记录条数*/
    
    }
    
    fclose(fp);
    
    if(m==0)
    
    printf("No record!\n");
    
    else
    
    {
    
    system("cls");
    
    show();/*调用show函数,显示原有信息*/
    
    }
    
    if((fp=fopen("data","wb"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    printf("please input(Y/N):");
    
    scanf("%s",ch);
    
    while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要录入新信息*/
    
    {
    
    printf("输入学期:");
    
    scanf("%s",stu[m].Term);
    
    printf("输入专业班级:");
    
    scanf("%s",stu[m].Class);
    
    printf("输入学生姓名:");
    
    scanf("%s",stu[m].name);/*输入学生姓名*/
    
    printf("学号:");
    
    scanf("%s",stu[m].num);/*输入学生学号*/
    
    
    
    printf("输入工科数学成绩:");
    
    scanf("%lf",&stu[m].score[0]);/*输入工科数学成绩*/
    
    printf("输入大学英语成绩:");
    
    scanf("%lf",&stu[m].score[1]);/*输入大学英语成绩*/
    
    printf("输入C语言成绩:");
    
    scanf("%lf",&stu[m].score[2]);/*输入C语言成绩*/
    
    stu[m].sum=stu[m].score[0]+stu[m].score[1]+stu[m].score[2];/*计算出总成绩*/
    
    stu[m].ave=stu[m].sum/3.0;/*计算出平均分*/
    
    if(fwrite(&stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/
    
    {
    
    printf("不能保存!");
    
    getch();
    
    }
    
    else
    
    {
    
    printf("%s 保存成功!\n",stu[m].name);
    
    m++;
    
    }
    
    printf("是否继续?(Y/N):");/*询问是否继续*/
    
    scanf("%s",ch);
    
    }
    
    fclose(fp);
    
    printf("OK!\n");
    
    }
    
    8.显示学生成绩函数
    
    /**************************显示学生成绩*************************/
    
    void show()
    
    {
    
    FILE *fp;
    
    int i,m=0;
    
    fp=fopen("data","ab+");
    
    while(!feof(fp))
    
    {
    
    if(fread(&stu[m] ,LEN,1,fp)==1)
    
    m++;
    
    }  
    
    fclose(fp);
    
    printf(" 学期   专业班级      姓名       学号      工科数学  大学英语  C语言  总分  平均分 \n");
    
    for(i=0;i<m;i++)
    
    {
    
    printf(FORMAT,DATA);/*将信息按指定格式打印*/
    
    }
    
    }
    
    
    
    9.将学生成绩进行排序函数
    
    /*******************自定义排序函数***********************/
    
    void order()
    
    {
    
    FILE *fp;
    
    struct student t;
    
    int i=0,j=0,m=0;
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {
    
    printf("can not open the file!\n");
    
    return;
    
    }
    
    while(!feof(fp))
    
    if(fread(&stu[m] ,LEN,1,fp)==1)
    
    m++;
    
    fclose(fp);
    
    if(m==0)
    
    {
    
    printf("no record!\n");
    
    return;
    
    }
    
    for(i=0;i<m-1;i++)
    
    for(j=i+1;j<m;j++)/*双重循环实现成绩比较并交换*/
    
    if(stu[i].sum<stu[j].sum)
    
    {
    
    t=stu[i];
    
    stu[i]=stu[j];
    
    stu[j]=t;
    
    }
    
                    printf(" 学期   专业班级      姓名       学号      工科数学  大学英语  C语言  总分  平均分 \n");
    
                    for(i=0;i<m;i++)
    
    {
    
           printf(FORMAT,DATA);/*将信息按指定格式打印*/
    
    }
    
    if((fp=fopen("data","a"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    for(i=0;i<m;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/
    
    if(fwrite(&stu[i] ,LEN,1,fp)!=1)
    
    {
    
    printf("%s 没有保存成功!\n");
    
    getch();
    
    }
    
    fclose(fp);
    
    printf("保存成功!已将成绩名次存入data中\n");
    
    }
    
    
    
    10.删除学生成绩函数
    
    /********************自定义删除函数********************/
    
    void del()
    
    {
    
    FILE *fp;
    
    int i,j,m=0;
    
    char snum[15];
    
    char ch[2];
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))  
    
    if(fread(&stu[m],LEN,1,fp)==1)
    
    m++;
    
    fclose(fp);
    
    if(m==0)
    
    {
    
    printf("没有该学号!\n");
    
    return;
    
    }
    
    printf("请输入学号:");
    
    scanf("%s",snum);
    
    for(i=0;i<m;i++)
    
    if(strcmp(snum,stu[i].num))
    
    break;
    
     if(i==m)
    
    {
    
    printf("没有找到该学生的成绩");
    
    getchar();
    
    return;
    
    }
    
    printf("找到该学生的成绩,是否删除?(Y/N)");
    
    scanf("%s",ch);
    
    if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/
    
    {
    
    for(j=i;j<m;j++)
    
    stu[j]=stu[j+1];/*将后一个记录移到前一个记录的位置*/
    
    m--;/*记录的总个数减1*/
    
    printf("删除成功!\n");
    
    }
    
    if((fp=fopen("data","wb"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    for(j=0;j<m;j++)/*将更改后的记录重新写入指定的磁盘文件中*/
    
    if(fwrite(&stu[j] ,LEN,1,fp)!=1)
    
    {
    
    printf("保存失败!\n");
    
    getch();
    
    }
    
    fclose(fp);
    
    
    
    }
    
    
    
    11.修改学生成绩函数
    
    /*********************自定义修改函数********************/
    
    void modify()
    
    {
    
    FILE *fp;
    
    int i,j,m=0;
    
    char snum[15];
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))  
    
    if(fread(&stu[m],LEN,1,fp)==1)
    
    m++;
    
    if(m==0)
    
    {
    
    printf("没有记录!\n");
    
    fclose(fp);
    
    return;
    
    }
    
    printf("请输入你要修改的成绩的学生的学号!\n");
    
    scanf("%s",snum);
    
    for(i=0;i<m;i++)
    
    if(strcmp(snum,stu[i].num))/*检索记录中是否有要修改的信息*/
    
    break;
    
    if(i<m)
    
    {
    
    printf("找到该学生的成绩!你可以修改该成绩!\n");
    
    printf("姓名:");
    
    scanf("%s",stu[i].name);/*输入名字*/
    
    scanf("%lf",&stu[m].score[0]);/*输入工科数学成绩*/
    
        printf("输入大学英语成绩:");
    
        scanf("%lf",&stu[m].score[1]);/*输入大学英语成绩*/
    
        printf("输入C语言成绩:");
    
        scanf("%lf",&stu[m].score[2]);/*输入C语言成绩*/
    
    stu[m].sum=stu[m].score[0]+stu[m].score[1]+stu[m].score[2];/*计算出总成绩*/
    
    stu[i].ave=stu[i].sum/3.0;
    
    }
    
    else
    
    {
    
    printf("没有找到该学生的成绩!");
    
    getchar();
    
    return;
    
    }
    
    if((fp=fopen("data","wb"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    for(j=0;j<m;j++)/*将新修改的信息写入指定的磁盘文件中*/
    
    if(fwrite(&stu[j] ,LEN,1,fp)!=1)
    
    {
    
    printf("保存失败!");
    
    getch();
    
    }
    
    fclose(fp);
    
    }
    
    
    
    12.功能主菜单函数
    
    /******************自定义函数实现菜单功能*************************/
    
    void menu()
    
    {
    
    system("cls");
    
    printf("\n\n\n\n\n");
    
    printf("\t\t\t|-------------------学生成绩管理系统------------|\n");
    
    printf("\t\t\t|\t\t *0  退出                       |\n");
    
    printf("\t\t\t|\t\t *1  按学期、班级录入学生成绩   |\n");
    
    printf("\t\t\t|\t\t *2  查找学生成绩               |\n");
    
    printf("\t\t\t|\t\t *3  删除学生成绩               |\n");
    
    printf("\t\t\t|\t\t *4  修改学生成绩               |\n");
    
    printf("\t\t\t|\t\t *5  插入学生成绩               |\n");
    
    printf("\t\t\t|\t\t *6  学生成绩名次               |\n");
    
    printf("\t\t\t|\t\t *7  统计保存的学生人数         |\n");
    
        printf("\t\t\t|\t\t *8  用户密码修改               |\n");
    
    printf("\t\t\t|\t\t *9  按班级输出学生成绩         |\n");
    
    printf("\t\t\t|\t\t *10 显示学生成绩信息           |\n");
    
    printf("\t\t\t|\t\t *11 输出不及格学生成绩         |\n");
    
    printf("\t\t\t|-----------------------------------------------|\n\n");
    
    printf("\t\t\t请选择(0-10):");
    
    }
    
    
    
    13.插入学生成绩函数
    
    
    
    /****************自定义插入函数*****************/
    
    void insert()
    
    {
    
    FILE *fp;
    
    int i,j,k,m=0;
    
    char snum[15];
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))  
    
    if(fread(&stu[m],LEN,1,fp)==1)
    
    m++;
    
    if(m==0)
    
    {
    
    printf("没有记录!\n");
    
    fclose(fp);
    
    return;
    
    }
    
    printf("请输入你要插入的位置!(请输入学号)\n");
    
    scanf("%s",snum);/*输入要插入的位置*/
    
    for(i=0;i<m;i++)
    
    if(strcmp(snum,stu[i].num))
    
    break;
    
    for(j=m-1;j>i;j--)
    
    stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/
    
    printf("现在请输入新的信息.\n");
    
    printf("学号:");
    
    scanf("%s",stu[i+1].num);
    
    for(k=0;k<m;k++)
    
    if(stu[k].num==stu[i+1].num&&k!=i+1)
    
    {
    
    printf("the number is existing,press any to continue!");
    
    getch();
    
    fclose(fp);
    
    return;
    
    }
    
    printf("姓名:\n");
    
    scanf("%s",stu[i+1].name);
    
    printf("\n工科数学成绩:");
    
    scanf("%lf",&stu[i+1].score[0]);
    
    printf("\n大学英语成绩:");
    
    scanf("%lf",&stu[i+1].score[1]);
    
    printf("\nC语言成绩:");
    
    scanf("%lf",&stu[i+1].score[2]);
    
    stu[i+1].sum=stu[i+1].score[0]+stu[i+1].score[1]+stu[i+1].score[2];/*计算出总成绩*/
    
    stu[i+1].ave=stu[i+1].sum/3.0;
    
    if((fp=fopen("data","wb"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    for(k=0;k<=m;k++)
    
    if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
    
    {
    
    printf("保存失败!");
    
    getch();
    
    }
    
    fclose(fp);
    
    }
    
    
    
    14.统计学生人数
    
    
    
    /*************统计学生人数************/
    
    void total()
    
    {
    
    FILE *fp;
    
    int m=0;
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {         
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))  
    
    if(fread(&stu[m],LEN,1,fp)==1)
    
    m++;/*统计记录个数即学生个数*/
    
    if(m==0)
    
    {
    
    printf("没有记录!\n");
    
    fclose(fp);
    
    return;
    
    }
    
    printf("该年级有 %d 个学生!\n",m);/*将统计的个数输出*/
    
    fclose(fp);
    
    }
    
    
    
    15.查找学生成绩函数
    
    
    
    /**********************自定义查找函数*********************/
    
    void search()
    
    {
    
    FILE *fp;
    
    int i,m=0;
    
    char snum[15];
    
    char ch[2];
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))
    
    if(fread(&stu[m],LEN,1,fp)==1)
    
    m++;
    
    fclose(fp);
    
    if(m==0)
    
    {
    
    printf("没有记录!\n");
    
    return;
    
    }
    
    printf("请输入学号:");
    
    scanf("%s",snum);
    
    for(i=0;i<m;i++)
    
    if(strcmp(snum,stu[i].num))/*查找输入的学号是否在记录中*/
    
    {
    
    printf("找到该学生成绩,是否显示?(y/n)");
    
    scanf("%s",ch);
    
    if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
    
    {
    
    printf(" 学期    专业班级    姓名       学号       工科数学  大学英语  C语言  总分  平均分 \n");
    
    printf(FORMAT,DATA);/*将查找出的结果按指定格式输出*/
    
    break;
    
    }
    
    else
    
    return;
    
    }   
    
    if(i==m)
    
    printf("没有找到该学生的成绩!\n");/*未找到要查找的信息*/
    
    }
    
    
    
    16.显示某班学生成绩信息函数
    
    
    
    /*****************按班级输出学生成绩****************/
    
    void ShowClassS()
    
    {
    
    int i,j;
    
    char k[15];
    
    printf("请输入班级:\n");
    
    scanf("%s",k);
    
        printf(" 学期    专业班级    姓名       学号       工科数学  大学英语  C语言  总分  平均分 \n");
    
    for(i=0;i<R;i++)
    
    {
    
      if(strcmp(k,stu[i].Class))
    
      {
    
      stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
    
    stu[i].ave=stu[i].sum/3.0;
    
            printf(FORMAT,DATA);//按班级输出学生成绩
    
      }
    
    }
    
    
    
    system("pause");
    
    system("cls");
    
    }
    
    
    
    17.输出不及格学生成绩单
    
    /***********输出不及格学生成绩****************/
    
    void ShowFailS()
    
    {
    
    int i,j;
    
    printf("不及格学生名单及成绩:\n\n");
    
    printf(" 学期    专业班级    姓名       学号       工科数学  大学英语  C语言  总分  平均分 \n");
    
    for(i=0;i<R;i++)
    
    {for(j=0;j<3;j++)
    
      {
    
      if(stu[i].score[j]<60)                              
    
              printf(FORMAT,DATA); /*输出不及格学生名单及成绩*/
    
      break;
    
      }
    
    }
    
    }

     

    展开全文
  • java学生信息管理系统(附源码)

    万次阅读 多人点赞 2016-07-14 16:36:30
     学生管理系统就完成了  其中的登陆界面是 我借鉴别人的  文中难免有不足之处,恳请批评指正  2016-7-14 再此上传不了附件 所以我给链接去在云盘下载  首次上传 (2017_6_12更新)链接: ...

    一:   介绍

          

      1:实现登录界面

        2:实现主界面

               有两种操作 一种是按钮操作  另外一种是SQL语句。

        3:连接SQL server 2008 数据库,后续我更新了,加了一个MySql 版本。在我的下载链接里面都有,里面也有使用说明。另外*myeclipse和eclipse,            jcreator什么的都是IDE,使用都一样,基本没什么区别,只不过myeclipse更商业化不开源,也就意味着收费,里面集成的插件比较多而已。

               *****************************************************************************************************

               用到的软件及环境SQLserver2008,eclipse,sqljdbc4.jar(数据库驱动包)

               *****************************************************************************************************

               另外一个Mysql 5.7.15.  Myeclipse2015,mysql-connector-java-5.1.34.jar

                 **********************************************************************************************************************

     

               java的JDK环境 (自行安装配置)

                切记:

                另外要新建数据库wtf 和新建学生表student(也可以用你自己创建的数据库及表,不过你得在源代码中进行修改):

                还要导入sqljdbc4.jar

            

        4:实现增删改查  (另有退出和刷新)

    二:    使用

      1:首先导入rjgc包

     

    然后点开browse  找到rjgc  

    最后点击finish

    得到    下图

    加载出来以后可能有的java文件前面有错,因为还没有导入sqljdbc4.jar

    (*******************************************************************************************************************************                    注意,方式一导入jdbc的图是之前我做的时候比较麻烦的一种方式,但是也能达到效果,在后期的我更新的链接资源中,如果导入任意版本源码包的话,都会自动加载lib包以及下面不同版本对应的jdbc连接驱动。这时候你只需要在那个lib文件夹下的.jar 文件上右键点击-->build path--->add to build path,导入jdbc结束。

    方式二导入:贴一张图

    上面这张图是方式二导入的,

    **************************************************************************************************************************)

     

    接下来继续,方式一导入  看下图:

     

     

     

    这时候应该就差不多可以运行了,不过还得把SQLserver2008的(MSSQLSERVER)服务开启了。

    上图

    再回到eclipse界面 打开rjgc

    最后双击LoginIn.java打开代码文本

    运行  就可以出现登录界面  

    在LoginIn.java代码文本里面找到登录用户 和密码后就可以登录了 

    比如admin 123  和wangtangfu 123456      (注意不要多加空格)

    其实用户权限都一样  如果你想加用户权限  可以写两个不同的Qframe.java。要做到主窗口里面的功能不同   ,可以屏蔽一些按钮

    比如修改  增加  等功能。然后在不同用户登陆的时候调用不同的Qframe.java,这样应该可以实现权限问题。。。

     

    2:

    还有程序里面应运了一些图片,它们的位置路径位置可能不一样 ,自行参照代码理解修改(很容易的哟);

     

    三:程序运行截图

       登陆窗口

     主窗口

    SQL语句执行  比如select * from student  

    刷新按钮:

    增加按钮:

                                                                                                                                                         添加成功之后刷新即可:

    删除按钮:

    修改按钮:

    查询按钮

     

     

    至此  

          学生管理系统就完成了   

               其中的登陆界面是 我借鉴别人的  

                   文中难免有不足之处,恳请批评指正

                                                                                                                                       2016-7-14

    再此上传不了附件 所以我给链接去在云盘下载 


    首次上传

    (2017_6_12更新)链接: https://pan.baidu.com/s/1aSeKJ8gXxWSElHaTU6_PdA 密码: yqpv

     


    添加myeclipse+mysql 版本:

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k


     


    修改student.sql执行报错 (执行时可以打开偷偷看一眼)

    (2019_04_13更新)链接: https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

    (2019_04_13更新)链接: https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

    (2019_04_13更新)链接:https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

     

    展开全文
  • 学生成绩管理系统设计》 二、实训目的 (1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。 (2)掌握C++的基本概念和基础知识。 (3)通过训练能够读懂较为复杂的C++语言源程序...

    很多朋友私信要一份C语言学生成绩管理系统设计报告,提供一下获取方法吧

    扫描下方公号,发送 成绩系统 三个字,获取实训报告。

    后续也会把之前搜集到的优质管理系统相关资料分享出来,大家一起学习,下面是作者自己的一份实训报告,希望能帮助到大家

    一、课程设计题目

    《学生成绩管理系统设计》

    二、实训目的

    (1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。

    (2)掌握C++的基本概念和基础知识。

    (3)通过训练能够读懂较为复杂的C++语言源程序并具备基本C++语言程序设计的能力。

    4)通过实训,培养自己编写、调试、分析程序的能力。

    5)培养自己独立解决问题,查找资料的能力。同学之间相互帮助,相互交流,相互合作的团队精神。

    6) 培养自己良好的学习兴趣,独立的编程风格。

    7) 通过实训检查自己学习上的不足,达到熟练掌握C++语言的基本知识和技能。

    三、课程设计报告内容

    3.1功能要求

    该系统运行在DOS环境下,人机界面为命令行文本界面。完成的任务是对若干人的成绩信息进行管理,且数据保存到文件中。

    实现的主要功能是:

    系统以菜单方式进行工作

    学生信息和成绩输入功能

    学生信息和成绩输出功能

    学生信息和成绩浏览功能

    查询学生信息及成绩功能

    修改学生信息及成绩功能

    学生成绩排序

    以稳健的形式进行保存

    3.2 设计环境

    所使用的语言采用标准C,开发工具可选用在DOS环境下的Turbo C

    3.3 数据结构

    本系统是对学生成绩的信息进行管理,学生成绩信息采用C的结构体数据类型描述,定义如下:

    struct students
    {
       int num;          //学号-整型//
       char name[8];    //姓名-字符型//
       char chinese;    //大学语文-字符型//
       char math;       //大学数学-字符型//
       char computer;   //计算机-字符型//
       char sum;        //总成绩-字符型//
       char ave;        //平均分-字符型//
    }

    3.4实现方法及主要算法分析

    (1)主界面的设计:主界面采用文本菜单的形式,各功能调用通过菜单进行选择。采用循环处理,以便执行完某项处理后,仍可选择其他项处理。在循环内先显示提示信息,然后读取用户输入,使用switch语句对用户的输入进行判断,分别调用相应的模块,当某模块结束后再次回到文本菜单,直到用户选择结束程序菜单,才退出循环,从而退出系统。

    (2) 外部文件的类型:文件采用的二进制的文件,对文件的读写采用顺序文件的方式,并使用fread和fwrite等函数对文件进行操作。

    (3)清屏函数:一般由上一级菜单屏幕进入下一级菜单屏幕或由下一级菜单屏幕返回上一级菜单屏幕都需要清除屏幕原来显示的内容。同时在调用程序的过程中,记录需要清屏的位置,然后修改代码,加入clrscr()函数清屏。

    (4)提示信息:一般的输入与输出需有相应的提示信息,以增加用户的交互性,增加输出的可读性,以帮助用户使用程序。

    3.5模块设计

    根据功能要求,本系统为五大主要模块,具体模块如表所示。

    学生信息成绩管理系统的模块

    3.6处理流程

    (1)学生成绩管理系统主界面模块

    2)成绩输入模块 和(3)成绩排序模块

    (4)删除记录

    (5)修改记录

    (6)查找信息

    四、结论

    学生成绩管理系统的编写,看似杂乱无头绪,实际上却并不如此。它的每一个功能都能分成模块,有句话说的好,大事化小,小事化了。C语言编程也正式如此,把一个大的程序分为若干相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,这样不仅降低了难度还使得思路清晰,很容易编写出要做的程序,从而为设计一些较大的软件打下了良好的基础。

    分析问题:

    学生成绩管理系统的整体功能都包括、增加成员、删除成员、查看成员、修改成员、登陆口令五大板块,而查看有包括学号,姓名,大学语文成绩,大学数学成绩,计算机成绩,总成绩,平均分七个模块。

    1. 设计的数据对象包括整形:学号。字符型:姓名、3门课程成绩、总成绩、平均成绩。
    2. 数据结构线性数据结构,定义人数上限为1000.

    算法的设计:

    1. 自顶向下

      现有全局,在进行整体设计,然后再进行下层的设计,逐步实现精细化。采用这种方法能够做到胸有全局,能全盘考虑,不至于顾此失彼,头重脚轻。

    1. 逐步细化

       一步步地将上层的任务分解成较小的、易于实现的任务,知道可以很简单实现为止。

    编写源程序:

    1. 不求速度,但求质量!一步一个脚印,编写程序时候宁可速度慢些也要尽量保证质量,做到尽量不出错。
    2. 精力集中,全神贯注!写程序时候最忌讳三心二意,这样才能思路清晰保证质量。
    3. 保持一个良好的编程心态,不要被长长的代码吓到

    程序的编译与运行:

    1. 查找错误是一件让人闹心的事,但是要注重技巧,注意平时经验的积累。
    2. 程序编译成功不要满足现状,要积极测试程序的可用性,对功能不理想,存在缺点的地方,积极的改进,完善。

    五、结束语

    在实训过程中,使我良好的锻炼了自己,首先是兴趣方面,通过编写通讯录管理系统使我更加喜欢编程,使我从以前的迷茫状态中解脱出来,使我了解了编程的真正意义。我想这对我以后的人生有着很大的帮助。其次通过编写通讯录管理系统使我对写程序有了一定的思路,不像以前无从下手,使我理解了算法的意义,使我懂得了模块化思想的好处。

    通过一个星期的编写代码,使我对书本上的知识有了更深的理解,甚至有很多不懂的问题在这过程中自然而然的理解了。对期末考试更有了信心。在朱老师的悉心指导下,我对C语言有了更深刻的理解,对程序的算法,数据的定义,程序的改错等方面的能力有了很大提高,自身的注意力,耐心,和对编程的兴趣有了很大增长,使我获益匪浅。

    六、参考书目:

    [1]谭浩强,《C语言程序设计》,清华大学出版社

    附完整代码:

    #include<stdio.h>
    #include<string.h>    //比较字符串头文件//
    #include<stdlib.h>   //实时检测总数头文件//
    #define N 1000       //控制最大输入//
    int n=0;             //实时检测的总数n//
    
    /*定义结构体students*/																	       
    struct students
    {
       int num;          //学号-整型//
       char name[8];     //姓名-字符型//
       char chinese;     //大学语文-字符型//
       char math;        //大学数学-字符型//
       char computer;    //计算机-字符型//
       char sum;         //总成绩-字符型//
       char ave;        //平均分-字符型//
    }student[N],student1;     //student[N]是结构体数组student1是结构体的初始化//
    
      /*实时检测总数n*/
    void count()  
     {
    	FILE *fp;         //定义一个文件指针fp//
    	fp=fopen("students.txt","at+");     //以“追加”方式打开students文本文件//
    	if(fp==NULL)                        //判断文件是否为空//
    		printf("Cannot open file!");
        struct students stu1;                 
    	n=0;         //初始化//
    	while(1)
    	{
    	  if(feof(fp))  //检测文件是否结束//
    	  break;
          fread(&stu1,sizeof(struct students),1,fp);   //读取文件//
    	  n++;    //读取文件数//
        }
    	n--;           //关闭文件数//
    	fclose(fp);    //关闭文件//
     }
    
    /*菜单*/
    void main()
    {
    	int i;        //获取用户在菜单中的选择//     
    	while(i!=0)
    	{
    		system("cls");     //清屏//
    	printf("\t\t欢迎进入学生信息管理系统\n");
      printf("\t\t==============================\n");
    		printf("\t\t*请择操作                    *\n");
    		printf("\t\t*1输入学生信息               *\n");
    		printf("\t\t*2输出学生信息               *\n");
    		printf("\t\t*3修改学生信息               *\n");
    		printf("\t\t*4查询学生信息               *\n");
           printf("\t\t*5排序学生信息               *\n");
    		printf("\t\t*6退出                       *\n");
    	printf("\t\t==============================\n");
     scanf("%d",&i);
     system("cls");     //清屏// 
    		count();     //实时检测总数n//
    		switch(i)
    		{
    		 case 1:input();break;    //输入学生信息//	
    		 case 2:output();break; 	//输出学生信息//
    	     case 3:xiugai();output();break;    //修改学生信息//
            case 4:query();break;    //查询学生信息*/
            case 5:paixu();output();break;    //成绩排序//
    	default:
    		   printf("输入有错\n");     //错误纠正//  
    		}
    	}
    	   if(i==0)
    	     tuichu();        //退出系统//
    }
    
    
    /*成绩输入*/
    void input()   
    {
      int i=0;     //学生人数初始化//
      char c;
      FILE *fp;     //定义一个文件指针fp//
    	count();     //实时检测总数n//
    	fp=fopen("students.txt","at+");    //以“追加”方式打开students文本文件//
      do 
      {	
       printf("请输入学生的个人信息:\n");
         printf("\n请输入第%d学生的信息:\n",n+1);
         printf("请输入学生的学号:");
         scanf("%d",&student[i].num);
         printf("请输入学生的姓名:");
        scanf("%s",student[i].name);getchar();
        printf("请输入学生的大学语文成绩");
        scanf("%s",student[i].chinese);
        printf("请输入学生的大学数学成绩:");
        scanf("%d",&student[i].math);
        printf("请输入学生的计算机成绩:");
        scanf("%s",student[i].computer);
         getchar();
         student[i].sum=student[i].chinese+student[i].math+student[i].computer;
    		student[i].ave=student[i].sum/3;
    fwrite(&student[i],sizeof(struct students),1,fp);  //以方式将其写入students文本文件//
    	i++;     
    	n++;      
    	printf("\n\n\t\t\t\t是否继续输入(Y/N):");getchar();     //提示是否继续,从键盘  
                                                               获得一个字符//  
    scanf("%c",&c);  
      }
     while(c=='y'||c=='Y');
     fclose(fp);
    }
    
    /*成绩输出*/        
    void output()  
    {
      int i;
      char c;
      FILE *fp;      //定义一个文件指针fp//
      fp=fopen("students.txt","rt");    //以“读取的” 方式打开students文本文件//
      system("cls");     //清屏//
      getchar();
        
    printf("||------||-----||-----||-----||------||-------||-------||------||");
    	printf("|#学号-----姓名------大学语文------大学数学------计算机------总成绩
    -----平均分---#|\n");
      do{  
    	  for(i=0;i<n;i++)  
    	  { 
           fread(&student[i],sizeof(struct students),1,fp);  
           printf("%d",student[i].num);
            printf(" %d",student[i].name);
    	        printf("%d",student[i].chinese);
              printf(" %d ",student[i].math);
              printf("%d ",student[i].computer);
              printf("%d",student[i].sum);
              printf(" %d ",student[i].ave);
         
    	  }
    printf("|------||-----||------||-----||-----||-----||-----||------ |");
      	  printf("\n\n\t\t\t\t是否继续其它操作(Y/N):");     //提示是否继续//
    	      scanf("%c",&c);
    	  c=getchar();
    	}while(c=='y'||c=='Y');
         fclose(fp);      //关闭文件//
    }
    
    /*成绩修改*/
    void xiugai()  { 
      int i,tp,num1;
      char c; 
      FILE *fp;     //定义一个文件指针fp//
    
    lb:  
      printf("\n按学号修改\n\n");
      printf("请输入要修改的学生学号\n");
      scanf("%d",&num1);
    
     for(i=0;i<n;i++) 
     {
    	if(num1==student[i].num)
    	  { 
    		printf("要修改的学生信息为:\n");
            printf("学号\t姓名\t大学语文成绩\t大学数学成绩\t计算机成绩\t总成绩\t
    平均分\n");          
            printf(" %d ",student[i].num);
            printf(" %d ",student[i].name);
            printf(" %d ",student[i].chinese);
            printf(" %d ",student[i].math);
            printf(" %d ",student[i].computer);
            printf(" %d ",student[i].sum);
            printf(" %d ",student[i].ave);
            do {
    		    printf("请选择要修改项:\n");
                printf("1学号\n2姓名\n3大学语文成绩\n4大学数学成绩\n5总成绩\n6平
    均分\n");
                scanf("%d",&tp);
    	            switch(tp)
    			{
    	         case 1:
    				{	 printf("请输入学号:\n");
    		          scanf("%d",&student[i].num);
    		          goto la;
    				}	
    	  	      case 2:
    				{ printf("请输入姓名:\n");
    		          scanf("%s",student[i].name);
    		          goto la;
    				}	
    	  	      case 3:
    				{ printf("请输入大学语文成绩:\n");
    				  getchar();
    		          scanf("%c",&student[i].chinese);
    		         goto la;
    				}	
    	  	      case 4:
    				{ printf("请输入大学数学成绩:\n");
    		          scanf("%d",&student[i].math);
    		         goto la;		  
    				}	
    	  	      case 5:
    				{printf("请输入计算机成绩:\n");
    		          scanf("%s",student[i].computer);	
    		         goto la;
    				}	
    	  	     case 6:
    				{ printf("请输入总成绩:\n");
    		          scanf("%s",student[i].sum);
    		         goto la;
    				}	
    	  	     case 7:
    				{ printf("请输入平均分:\n");
    		          scanf("%s",student[i].ave);
    		         goto la;
    				}
    			}
    		}while (tp<8);		 
    la:	  printf("是否继续修改(y/n)\n");     //提示是否继续//
    	  getchar();
    	  scanf("%c",&c);
    	  if(c=='y'||c=='Y')  goto lb;
             }
      }
        fp=fopen("students.txt","w+");   //以“读写” 方式打开students文本文件//
    	  for(i=0; i<n;i++)
    	  fwrite(&student[i],sizeof(struct students),1,fp);  //以 方式将其写入students
                                                     文本文件//
     fclose(fp);    //关闭文件//
    }
    
    
    /*成绩查询*/
    void query()
    { int querymode;     //子菜单选择//
      int i,j=0,findnum;
      char findname[20];
      int findok,t=0;     //定义一个判断标志的整型变量findok//
      char findct;        //定义一个用于判断是否继续查找的字符变量findct//
      
       FILE *fp;         //定义一个文件指针fp//
       count();     //实时检测总数n//
       fp=fopen("students.txt","r");       //以“只读” 方式打开students文本文件//
       system("cls");     //清屏//
    
      /*查询菜单*/
      printf("\t\t信息查询");
      printf("\n\t1按姓名查询");
      printf("\n\t2按学号查询");
      printf("\n\t0返回上级菜单");
      printf("\n请输入您的操作:");
      scanf("%d",&querymode);
    
      /*查询操作*/
      switch(querymode)
      {case 1: 
        {     printf("请输入要查询学生的姓名:\n");
                getchar();
                scanf("%s",findname); 
                for(i=0;i<N;i++)
    		{
         fread(&student[i],sizeof(struct students),1,fp); //以方式将其读入students
                                                          文本文件//
       if(strcmp(student[i].name,findname)==0)        //比较字符串//
    			 { 
    			   j++;
    			   printf("\n查寻到的学生为:\n");
    			   if(j==1)
                              、
    printf("|------||-----||------||------||------||-------||------||-----|");    
    //仅在第一次显示//
    	printf("|#学号-----姓名------大学语文------大学数学------计算机------总成绩-
    ----平均分---#|\n");
              
    printf("%4d%d%d%d%d%d%d%d",student[i].num,student[i].name,
    student[i].chinese,student[i].math,student[i].sum,student[i].ave);
    			  }
    
    			}
    			if(j==0)
    			  printf("\n>>>查无此人!");
    
               //提示是否继续// 
                printf ("\n是否继续查找(Y/N)?");       
                getchar();
                getchar();}break;
      
        case 2:{ printf("请输入要查询学生的学号:");
                 scanf("%d",&findnum);
                 for(i=0;i<n;i++)
    			 {
                  fread(&student[i],sizeof(struct students),1,fp);        
    //以结构体students的方式从文件fp中读取,将其读入students文本文件,每次读入一个 
    学生的信息//
                  if(student[i].num==findnum)      //整型数字的比较// 
    			  {findok=1;break;}
    			  else findok=0;
    			 }
                  if(!findok)
    				printf("\n>>>查无此人!");
    			  else
    			  { printf("\n查寻到的学生为:\n") ;
    			    if(j==1)
                          printf("|-------||------||------||-------||-------||-------||-------||------|");   
     //仅在第一次显示//
     printf("|学号-----姓名------大学语文------大学数学------计算机------总成绩-----平均分---|\n");
     printf("%4d%d%d%d%d%d%d%d",student[i].num,student[i].name,
    student[i].chinese,student[i].math,student[i].sum,student[i].ave);
    			  }
    //提示是否继续//
          printf ("\n是否继续查找(Y/N)?");       
            getchar();
    			findct=getchar();     //从键盘输入一个判断字符,并将它赋值给字符变量
                                   findct,用于以下的if语句的判断 //
    			if(findct=='Y' || findct=='y')
    			  query();
    		  }
      }
      fclose(fp);    //关闭文件//
    }
    
    
    /*成绩排序*/
    void paixu()
    {
       int i, j;
         FILE *fp;       //定义一个文件指针fp//
       system("cls");      //清屏//
       count();       //实时检测总数n// 
       for(i=0;i<n-1;i++)
    	    for(j=0;j<n-1-i;j++)    //按学号对学生信息进行排序//
    		{
    		     if(student[j].num>student[j+1].num)   //整型数字的比较//
    			 {
    			     student1=student[j];
    			     student[j]=student[j+1];
    			     student[j+1]=student1;
    			 }
    		}
    	fp=fopen("students.txt","w+");  //以 “读写”方式打开students文本文件//
    	for(i=0;i<n;i++)
    	fwrite(&student[i],sizeof(struct students),1,fp);  //以结构体students的方式从
       文件fp中读取,将其写入students文本文件,每次写入一个学生的信息//
        fclose(fp);      //关闭文件//
    }
    
    /*退出系统*/
    void tuichu() 
    {
    	char c;
    	  system("cls");      //清屏//
        printf("\n\n\t\t谢谢使用\n\n\n");
        printf("\n\n\t\t制作人:李姣 渠莉 宝珠 朱佳 刘妍\n");
    	  getchar();
    	c=getchar();       //取用户输入,回显//    
    }

    需要实训报告的同学,请在下方留言,看到会一个个回复的。

    或者直接扫描下方公号,发送 成绩系统 三个字,获取下载源码

    如果失效了,再请直接私信或留言,欢迎大家一起探讨学习。

    相关文章推荐:

    1、 C语言学生成绩管理系统源代码 ★★★★★

    2、 C语言学籍管理系统源代码 ★★

    3、C语言学生成绩管理系统设计 《C语言程序设计》实训报告 ★★★

    展开全文
  • c语言课程设计学生信息管理系统

    万次阅读 多人点赞 2019-03-06 21:20:50
    学生信息管理系统 题目: 新生入学,需要管理学生信息,要求如下: 能够通过键盘进行输入学生信息,比如:学生姓名,学号,性别,班级,专业,入学成绩; 能够通过键盘输入要录入的学生的个数; 能够...
  • MySQL学生成绩管理系统设计实验报告

    千次阅读 多人点赞 2020-12-01 21:46:15
    主要介绍学生成绩管理系统项目开发的背景、目的、对象以及研究内容。 1.1项目背景 每个学校都需要在期末进行考试成绩的统计分析工作,而这些工作都必须在考试结束后一个星期的时间内完成。大量的成绩数据的统计工作...
  • java 学生信息管理系统

    万次阅读 多人点赞 2015-10-06 14:03:33
    学生信息管理包括添加,删除,修改,查询,显示全部等 具体结构如图 在SQL Server 2005数据库上实现数据操作。使用纯面向对象的java语言作为开发语言 在sql server 2005新建一个名为Student的数据库,在下面新建一...
  • C++课程设计学生信息管理系统

    万次阅读 多人点赞 2015-04-26 18:55:58
    C++课程设计学生信息管理系统
  • C语言学生成绩管理系统设计报告和全部源码)

    千次阅读 多人点赞 2020-11-29 16:49:31
    学生成绩管理系统设计与实现 1) 系统功能模块 学生成绩管理系统主要功能是。。。。 模块结构如“图1-1系统功能结构图”所示。 图1-1 系统功能结构图 我是事先定义了: typedef struct Node { in
  • 学生成绩管理信息系统

    千次阅读 多人点赞 2017-09-10 00:23:03
    设计题目:学生成绩管理信息系统设计与实现。 软件功能分为服务器功能与客户端功能两部分。其中: 管理员通过系统管理界面进入,建立各种课程、班级,将课程、班级信息保存在数据库中并可以对课程、班级进行改动和...
  • C++课程设计学生宿舍管理信息系统

    千次阅读 多人点赞 2018-10-29 21:43:18
    青岛农业大学c++课 程 设 计报 告         学院、系: 青岛农业大学理信... 课程设计科目 ... 面向对象程序课程设计 ... 学生姓名: 董松 指导教师: ...
  • Java_web期末课程设计学生信息管理系统

    千次阅读 多人点赞 2018-12-31 21:19:17
    Java_web期末课程设计学生信息管理系统 一、系统开发的意义 随着计算机和网络的普及,学生信息从纸质类变为电子信息类,管理电子类信息变得尤为重要。学生信息管理系统是学校内部重要的工具之一,不仅可以提高管理...
  • java学生管理系统界面设计

    万次阅读 多人点赞 2019-07-05 13:16:30
    关于学生管理系统的界面设计:代码如下: 数据库设计 DROP TABLE IF EXISTS `stu`; CREATE TABLE `stu` ( `stuId` int(11) NOT NULL AUTO_INCREMENT, `stuName` varchar(30) DEFAULT NULL, `stuSex` varchar(30) ...
  • c#实现简单学生信息管理系统

    万次阅读 多人点赞 2019-06-06 21:40:37
    登录、添加学生信息、修改学生信息、删除学生信息、查询学生信息 三、实现步骤 1、登陆界面功能实现 老规矩,先贴下主要代码: //构造方法 public Login() { InitializeComponent(); this.label3.Parent = ...
  • 学生信息管理系统设计

    千次阅读 2012-09-18 21:59:21
    学生信息管理系统设计 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: (1)学生信息录入功能(学生信息用文件保存)---输入 (2)学生...
  • 【python毕业设计】Django框架实现学生信息管理系统

    万次阅读 多人点赞 2019-08-10 16:39:01
    Django框架实现学生信息管理系统 总体概括 注册流程 首先进行输入用户名(邮箱)、密码以及验证码,输入完之后点击注册按钮。如果输入的不正确,提示错误信息。 如果一切信息填写正确无误,调用STMP...
  • C语言图书管理系统设计报告

    万次阅读 多人点赞 2017-06-20 17:37:54
    源代码:https://blog.csdn.net/k_young1997/article/details/73480766 XXXX大学 ...C语言课程设计报告 ...题 目 图书管理系统设计 专业班级 XXXX级计算机科学与技术本科X班 组 别 计科第...
  • 学生信息管理系统数据库课程设计

    万次阅读 多人点赞 2018-06-12 14:48:25
    学校工作繁杂,资料众多,人工管理信息的难度也越来越大,显然是不能满足实际的需要,效率也是很低的。并且这种传统的方式存在着众多的弊端,如:保密性差.查询不便.效率低,很难维护和更新等,然而,本系统针对以上...
  • java课程设计学生信息管理系统

    万次阅读 多人点赞 2018-04-18 14:45:14
    Reader r=new FileReader("f:\\信息系统账号\\"+s); String b=null; char cs[]=new char[10]; int len=0; while ((len=r.read(cs))!=-1) { b=new String(cs,0,len); } if (pf.getText().equals(b)) { ...
  • C语言开发简单的学生成绩管理系统(附源码)

    万次阅读 多人点赞 2019-04-15 21:08:22
    学生成绩管理系统 开发语言:C语言 开发工具:Visual Studio 2019 开发时间:2019.4.14 开发者:summer @一、系统使用展示 @二、系统功能 @三、菜单 @四、录入学生信息 @五、打印学生信息 @六、保存学生信息 @七、...
  • 学生信息管理系统架构设计

    千次阅读 2018-06-20 20:31:10
      近期学习架构设计,首先从最基本的学生信息管理系统进行分析。 目的:学生信息管理系统架构设计 思考第一步:识别系统复杂度   架构设计的真正目的是为了解决软件复杂度带来的问题,故应首先识别本系统复杂度...
  • 学生成绩管理系统数据库设计--MySQL

    万次阅读 多人点赞 2020-06-18 13:02:04
    MySQL/SQL Server 数据库设计学生成绩管理系统设计大纲 1. 项目背景及需求分析 1.1 项目背景 1.2 需求分析 1.2.1 信息需求 1.2.2 功能需求 1.2.3 安全性与完整性需求 2. 概念结构设计 2.1 抽象出系统实体 2.2 ...
  • 学生信息管理系统数据库设计

    千次阅读 2019-09-24 01:55:24
    学生信息管理系统数据库设计 表名tb_school(学校表:存储学校的基本信息) 字段 类型 介绍 属性 其他 schoolid Int 学校id 主键 ...
  • 特殊时期,不能外出,整理一下本科期间做过的课程设计,学完数据库,设计一个学生选课管理信息系统,老师给的要求如下: 系统功能基本要求 教师信息,包括教师编号、教师姓名、性别、年龄、学历、职称、毕业院校,...
  • C语言实现学生信息管理系统

    万次阅读 多人点赞 2019-04-08 14:40:48
    使用C语言对学生管理系统进行优化
  • 学生成绩管理系统——课程设计报告

    万次阅读 多人点赞 2018-07-10 19:47:16
    学期末课程设计的作业,利用链表和文件的操作。...*******程序名称:学生成绩管理系统 *******作 者: *******开发环境:Dev-C++5.11 *******创建日期:2018.06.28 *******完成日期:2018.07.02 ***************...
  • Javaweb学生管理系统期末设计

    万次阅读 多人点赞 2019-06-14 21:18:11
    学生管理-描述文档 有需要参考的可以进入,项目下载地址。 一:功能描述 该项目实现了以下功能:  页面包括展示信息和管理信息两部分,并且实现了图片验证登录  通过连接数据库并执行SQL语句实现对数据库的增、...
  • 题目:基于链表的学生信息管理系统 要求:   (1)插入节点:输入学生信息后,生成节点并插入链表中;   (2)删除节点:根据给定的学生姓名或学号删除该学生节点;   (3)查找节点:根据给定的学生姓名或学号...
  • 项目总体结构 数据库:mysql 主要技术:Java、springMVC maven、mybaits 主要功能:用户管理学生信息管理学生成绩管理、课程信息管理、老师信息管理、登录、退出等 采用mysql5 eclipse 开发 、下面给大家看...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,103
精华内容 39,241
关键字:

学生管理信息系统设计报告