《C语言综合应用》课程学习(2)——第2章 学生成绩管理系统案例

本文详细介绍了如何运用C语言设计学生成绩管理系统,涵盖了需求分析、模块划分、关键知识点(结构体、函数、文件)以及案例实现。系统功能包括管理员管理用户、教师成绩管理与查询、学生成绩查询。通过对结构体、函数和文件的操作,实现了数据的存储和处理。
摘要由CSDN通过智能技术生成

软件工程中包含需求、设计、编码和测试四个阶段

功能分析(需求):分析软件用户的需求,以及需要分析统计的数据。

模块划分(设计):基于功能划分、基于层次划分、基于专业划分、基于需求划分,通过功能分析,对系统所需要的功能进行划分,首先将规模较大的问题分解为若干个功能相对独立的小问题即模块,每个模块还可以再细分,这个过程也可参照自顶向下、逐步求精的思路完成。根据上述的需求分析确定系统应该完成的几大功能模块。

关键技术研究(设计与编码的过渡):通过功能分析和模块划分,了解实现该系统功能需要的关键技术。

代码实现(编码):书写程序代码。

测试:运行系统,测试系统。

2.1 学生成绩管理系统的功能分析

2.1.1需求分析

基于用户的需求分析:

(1)管理员用户:教师和学生信息管理。

(2)教师用户: 成绩管理。

(3)学生用户: 成绩查询。

2.1.2数据需求

(1)学生数据(结构体)

(2)用户数据(结构体)

问题求解过程中,要有效地表示和组织问题相关的数据,包括输入、输出、中间结果等,在设计算法时,需要精确定义对何种对象进行操作,可以进行哪些操作等,这些必须在开始编写代码之前完成。本系统中约定学生的信息需要包括学号、姓名、3门课的成绩和总分,学生的数据信息存放在磁盘文件中。

2.2 学生成绩管理系统的模块划分

1、管理员:增删改用户。

2、教师:增删改成绩(成绩管理)、查询成绩(成绩、学号、课程)、成绩统计(平均分、排序)、成绩输出。

3、学生:查询成绩(姓名、学号、课程)。

2.3 关键知识点

结构体

    学生信息、用户信息。

函数

    用户的每个功能使用函数实现。

文件

    用户信息和学生成绩信息。

一、结构体

(1)学生类型

(2)用户类型

1、结构体类型的定义:

2、结构体变量的定义:

(1)先定义结构体类型,再定义结构体变量。

struct student
{  char name[20];
   char num[12];
   int  score[M+1];
};
struct student stu1,stu2;

(2)在定义结构体类型的同时说明结构体变量。

(3)省略结构体类型名,直接定义结构体变量。

3、结构体变量的使用:      

引用:结构体变量名.成员名      

赋值:逐个成员赋值、整体赋值

gets(stu1.name);    gets(stu1.num);
stu1.score[M]=0;
for(i=0;i<M;i++)
{   scanf("%d",&stu1.score[i])
     stu1.score[M]=stu1.score[M]+stu1.score[i];}
          stu2=sut1;//相当于逐个成员赋值

4、结构体数组:

struct student
{  char name[20];
   char num[12];
   int  score[M+1];
}stu[1000];

 for(i=0;i<1000;i++)
{gets(stu[i].name);
        gets(stu[i].num);
        for(j=0;j<M;j++)
          scanf("%d",&stu[i].score[j]);}

5、指向结构体的指针:

 struct student *pstu,stu1;  pstu=&stu1;
pstu->num     (*pstu).num

*pstu=stu;

gets((*p).name);或者gets(p->name);

二、函数

1、函数的定义:

void students()
{int sel;
 char filename[20];
 do
   { printf("------------学生模块的选择-------------\n");
    printf("---------------------------------------\n");
    printf(" 		1: 按姓名查询			  \n");
    printf("		2: 按学号查询			  \n");
    printf("		3: 按课程查询			  \n");
    printf("		0: 退出					  \n");
    printf("		请选择	 0-3			  \n");
    printf("----------------------------------------\n");
    scanf("%d",&sel);getchar();
    switch(sel)
     {  case 1: printf("请输入学生姓名");gets(name);quname(name);break;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值