大一下学期写的C语言程序设计实验报告——学生成绩管理系统课程设计与实现

此篇为“设计篇”o~

目录

前言

一、设计任务

二、程序设计与实现

1.程序设计

2.数据描述

3.功能模块设计

总结


前言

此篇为大一下学期写的C语言程序设计实验报告——学生成绩管理系统课程设计与实现

这篇为设计篇~ 代码部分可以查看下一篇文章哦>.< 

编译工具我用的是codeblocks,其他一般C语言编译器如vc++等也是可以运行的哦     

具体内容如下啦

一、设计任务

随着信息时代的到来,办公趋向无纸化、高效化,对于学生成绩的管理更是如此,基于此,我选择了学生成绩管理系统作为我的课题,希望能够模仿教务系统中成绩的录入与查询功能,编写自己的成绩管理系统。从教师与学生两个角度分别实现成绩的录入、删除、修改、排序、浏览与查询功能。

二、程序设计与实现

1.程序设计

本程序面向两类用户即教师与学生,登录需密码,登录成功后有两个入口,分别为教师端和学生端。教师端共有添加、删除、修改、查找、浏览、排序六个功能,学生权限为查看本人详细成绩、查看班级成绩由高到低排序两个功能。学生成绩管理系统功能结构图如图1.所示。

图1 学生成绩管理系统功能结构图

2.数据描述

(1)学生信息存储

代码中定义结构体类型struct student来存储学生的信息。结构体类型定义及结构体成员含义说明如下所示。

struct student

{

    char name[20];

    char num[20];

    int math;

    int Cgrade;

    int English;

    int total;

};

(2)全局变量设计

定义全局变量tea[50]记录密码用户数量,用于用户输入。

Struct teacher tea[50];

(3)账号密码设计

代码中定义结构体变量struct teacher来储存账号和密码。

struct teacher

{

    char ac[30];//账号

    char pw[30];//密码

};

3.功能模块设计

(1)函数名:void Hello()

        函数功能:显示登录界面

        输入:用户输入选项

        输出:各项功能

        算法描述:采用switch函数

        当 case 1:显示登录功能   login();

             case 2:显示注册功能   registeruser();

             case 0:退出登录

(2)函数名:void login ()  

        函数功能:显示登录功能

        输    入:账号  密码

        输    出:无

        算法描述:

(3)函数名:void registeruser()

        函数功能:注册账号功能

        输    入:用户账号  密码(六位)

        输    出:无

        算法描述:输入账号:

                          输入密码:采用for循环,使得输入密码时用*显示。

                          再次输入密码:(1)若密码正确,则注册成功

                                                   (2)若密码错误,则注册失败,重新注册

(4)函数名:void Menu() 和 void Key()

        函数功能:系统菜单,选择教师端或学生端

        输入:用户输入选项

        输出:教师菜单 或 学生菜单

        算法描述:采用switch函数

                case 1:教师端 菜单及功能   systemMenu(); keyDown();

                case 2:学生端 菜单及功能   stuMenu();  stuKeyDown();

                case 3:退出登录  回到Hello()函数 : 登录界面

                case 0:退出系统。

(5)函数名:void systemMenu()  和  void keyDown()

      函数功能:分别为显示教师菜单 和 实现教师功能

      输入:用户输入选项

      输出:各项功能

      算法描述:采用switch函数

      当case 1:录入学生信息

                        插入链表   insertNodeByHead(list,tempData);

                        保存到文件  saveInfoToFile("student.txt",list);

        case 2:浏览学生信息

                         打印链表    printList(list);

        case 3:删除学生信息

                         删除函数  deleteNodeByAppoinNum(list,tempData.num);

                         保存到文件saveInfoToFile("student.txt",list);

        case 4:修改学生信息

                         输入新的信息,保存到文件saveInfoToFile("student.txt",list);

        case 5:根据学号查找学生信息

                         searchNodeByAppoinNum(list,tempData.num);

        case 6:根据总成绩从高到低排序

                         排序函数     sortStudentListByTotal(list);

                         打印   printList(list);

        case 7:返回到主菜单  主功能   Menu();   Key();

        case 0:退出系统。

(6) 函数名:void stuMenu()  和  void stuKeyDown()

             函数功能:分别显示学生菜单 和 学生功能

             输       入:用户输入选项

             输       出:各项功能

             算法描述:采用switch函数

             case 1:根据学号查找学生个人信息

                         searchNodeByAppoinNum(list,tempData.num);

             case 2:查找班级总成绩及从高到低的排名

                         排序函数     sortStudentListByTotal(list);

                         打印   printList(list);

             case 3:返回到主菜单  主功能   Menu();   Key();

             case 0:退出系统。

(7)函数名:void deleteNodeByAppoinNum(struct Node* listHeadNode,char* num)

      函数功能:通过学号删除学生信息

      输入:学生学号

      输出:若学号匹配,则删除成功

      算法描述:

(8)函数名:struct Node *sortStudentListByTotal(struct Node *listHeadNode)

      函数功能:根据总成绩从高到低排序

      输入:无

      输出:无

      算法描述:采用选择排序法

(9)函数名:struct Node* searchNodeByAppoinNum(struct Node* listHeadNode,char* num)

        函数功能:根据学号查找学生信息

        输入:学生学号

        输出:无

        算法描述:


三、总结

通过此次实验项目,学到了(1)链表的使用;

                                           (2)以及指针的高级用法 如结构体指针等。

自己在做项目时,存在哪些问题?后续如何改正?

(1)登录注册等出现问题、以及链表运用不熟练,以至于有些程序不能如愿做出;

(2)后续会更加努力学习链表,尽量做到熟练运用,以及对文件的熟练操作等。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐