利用函数和数组实现的学生管理系统

第一次制作课设,大一上学期C语言
要求:用数组实现 增、删、查、改。

版))

一.课程设计目的

1.系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。
2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握使用系统设计的方法和步骤,灵活运用熟悉数组与函数在软件开发中的使用。
3.学会将知识使用于实际的方法,提高分析和解决问题的能力,增加综合能力。
(1)熟练使用数组以及字符数组进行实际应用;
(2)熟练掌握调用函数与数组结合;
(3)学会自己调试程序的方法并掌握一定的技巧。

二.课程设计内容和要求

“学生管理系统”的设计与实现

  1. 问题描述
    设计一个学生管理系统,进行学生成绩信息的管理。
  2. 基本要求
    (1)利用数组完成
    (2)实现对学生成绩的添加
    (3)实现对学生成绩的修改
    (4)实现对学生成绩的删除
    (5)实现对利用信息查询学生成绩
    3.测试数据
    由读者根据实际情况指定。

【实现提示】
按回车键进行下一步

三.任务完成情况

整体利用数组完成

1 输入所有学生信息及成绩

由for循环语句实现将信息录入已声明数组之中。

2 输出所有学生信息及成绩

由for循环语句按输入顺序输出已录入数组。

3 按学号查找某个学生信息

由for循环找出输入的学号数组并且输出

4 按学号修改某个学生信息

由for循环找出输入的学号数组,后输入对应数值进行修改

5 按学号删除某个学生信息

由for循环找出输入的学号数组,删除当前学生信息即为将数组从result 的位置依次前挪一个位置

四.设计报告

4.1 需求分析

4.1.1 用户需求

(1)输入学生的学号,姓名,语文,数学,英语成绩,自己计算总分。
(2)打印学生信息,各科成绩,总分。
(3)利用学号查找学生信息。
(4)利用学号进行学生信息的删除。

4.2 概要设计

4.2.1 总体设计

总体设计

4.2.2 各功能函数的设计

  1. 欢迎界面,显示菜单。
  2. 输入学生信息以及成绩。
  3. 输出学生信息以及成绩。
  4. 删除学生信息以及成绩。
  5. 修改学生信息以及成绩。
  6. 查找学生信息以及成绩。

4.3 详细设计

4.3.1 程序流程图

程序流程图

4.4 详细代码

4.4.1 头文件

#include<bits/stdc++.h>
using namespace std;         //万能头 
void shuru(int n);
void shuchu(int n);
int find_xuehao(int n);
int xiugai_xuehao(int n) ;
int delete_xuehao(int n) ;
//声明数组,存储学生信息 
char names[233][233];//名字 
int chinese[233];//语文成绩 
int math[233];//数学成绩 
int english[233];//英语成绩
int sum[233];//总成绩 
int num[233];// 学号
//声明循环变量
int i, j; 

4.4.2 主函数

int main(void)
{
    int choice,n;
    while (1)
    {
        printf("\t\t\t\t丨==========================================丨\n");
        printf("\t\t\t\t丨欢迎使用学生成绩管理系统                  丨\n");
        printf("\t\t\t\t丨请输入您的选择(0 - 6)                   丨\n");
        printf("\t\t\t\t丨① 输入所有学生信息及成绩                 丨\n");
        printf("\t\t\t\t丨② 输出所有学生信息及成绩                 丨\n");
        printf("\t\t\t\t丨③ 按学号查找某个学生信息                 丨\n");
        printf("\t\t\t\t丨④ 按学号修改某个学生信息                 丨\n");
        printf("\t\t\t\t丨⑤ 按学号删除某个学生信息                 丨\n");
        printf("\t\t\t\t丨⑥ 按总分进行排序                         丨\n");
        printf("\t\t\t\t丨0 退出程序                                丨\n");
        scanf("%d",&choice);//输入选择 
        printf("======================================================\n");
        switch (choice)
        {
        case 1:
            printf("请输入录入的学生数: ");
            scanf("%d",&n); 
            shuru(n);
            break;
        case 2:
            shuchu(n);
            break;
		case 3:
            find_xuehao(n);
            break;
		case 4:
            xiugai_xuehao(n);
            break;
		case 5:
            delete_xuehao(n);
            n--;
            break;
        case 6:
			printf("该功能维护中...\n");
			break;
        case 0:
            printf("退出程序\n");
            printf("程序结束\n");
            exit(0);
        default:
            printf("请重新输入\n");
        }
    }
    return 0;
}

4.4.3 输入函数

 void shuru(int n)//循环存储成绩 
{

    for (i=0; i<n; i++)
    {
        printf("\n请输入第%d个学生的信息:\n", i + 1);
        printf("\n学号:");
        scanf("%d", &num[i]);
        printf("\n姓名:");
        scanf("%s", &names[i]);
        printf("\n数学成绩:");
        scanf("%d", &math[i]);
        printf("\n英语成绩:");
        scanf("%d", &english[i]);
        printf("\n语文成绩:");
        scanf("%d", &chinese[i]);
        sum[i] = math[i] + english[i] + chinese[i];
    }
}

4.4.4 输出函数

void shuchu(int n)
{
    printf("\n学号\t姓名\t数学成绩\t英语成绩\t语文成绩\t总成绩\n");
    printf("==============================================================================\n");

    for (i=0; i<n; i++)
    {
        printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[i], names[i], math[i], english[i], chinese[i], sum[i]);
    }
    printf("==============================================================================\n");
}

4.4.5 学号查找函数

int find_xuehao(int n)
{
    int nums;
    int x;
    printf("请输入待查找的学生学号:");
    scanf("%d",&nums);
    x= -233;
    for (i = 0; i<n; ++i)
    {
        if (nums == num[i])
        {
            x = i;

            break;
        }
    }
    if (x == -233)
    {
        printf("没有该学生信息!\n");
        return 0;
    }
    else
    {
        printf("\n学号\t\t姓名\t\t数学成绩\t英语成绩\t语文成绩\t总成绩\n");
        printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n", num[x], names[x], math[x], english[x], chinese[x], sum[x]);
        printf("结果如上\n");
    }
    return 1;
}

4.4.6 学号修改函数

int xiugai_xuehao(int n) 
{
    int nums;
    int x;
    printf("请输入待修改的学生学号:");
    scanf("%d",&nums);
    x= -233;
    for (i = 0; i<n; ++i)
    {
        if (nums == num[i])
        {
            x = i;
            break;
        }
    }

    if (x == -233)
    {
        printf("没有该学生信息!\n");
        return 0;
    }
    else
    {
        printf("请重新输入该学生信息:\n");
        printf("学号:\n");
        scanf("%d",&num[x]);
        printf("姓名:\n");
        scanf("%s",names[x]); 
        printf("数学成绩:\n");
        scanf("%d",&math[x]);
        printf("英语成绩:\n");
        scanf("%d",&english[x]);
        printf("语文成绩:\n");
        scanf("%d",&chinese[x]);
        sum[x] = math[x] + english[x] + chinese[x];
    }
    return 1;
}

4.4.7 学号删除函数

int  delete_xuehao(int n) 
{
    int nums;
    int x;
    printf("请输入待删除的学生学号:");
    scanf("%d",&nums);
    x= -233;
    for (i = 0; i<n; ++i)
    {
        if (nums == num[i])
        {
            x = i;
            break;
        }
    }
    if (x == -233)
    {
        printf("没有!\n");
        return 0;
    }
    else    
    {
        for(i=x; i<n-1; ++i)
        {
            num[i] = num[i+1]; 
            strcpy(names[i],names[i+1]); 
            math[i] = math[i+1]; 
            english[i] = english[i+1]; 
            chinese[i] = chinese[i+1]; 
            sum[i] = sum[i+1];
        } 

    }
    return 1;
} 

4.5 使用说明

按照提示进行,回车进行下一步。

4.6 测试结果与分析

主界面如图:
主界面
信息录入如图:
信息录入

信息输出如图:
信息输出

学号查找信息如图:
学号查找信息

学号修改信息如图:
学号修改信息

学号删除信息如图:
学号删除信息

4.7 参考文献

  • [1] 谭浩强,C语言程序设计.清华大学出版社,2010.6
  • [2] CSDN

五.体会与感想

第一次制作课设,完全摸不着头脑,不过再学长指点以及相关资料的帮助下,还是顺利的完成,这既是学习之路上的挑战,更是个基于,这是我们软件开发进行应用的第一步,迈出了第一步,这场软件之战就顺利打响了,希望未来的日子里能陪着大家共同学习,共同进步。学知识的目的还是为了应用,如何利用所学的知识来进行实际应用是非常重要的。

附录

//学生管理系统,用数组写。 
#include<bits/stdc++.h>
using namespace std;         //万能头 
void shuru(int n);
void shuchu(int n);
int find_xuehao(int n);
int xiugai_xuehao(int n) ;
int delete_xuehao(int n) ;
//声明数组,存储学生信息 
char names[233][233];//名字 
int chinese[233];//语文成绩 
int math[233];//数学成绩 
int english[233];//英语成绩
int sum[233];//总成绩 
int num[233];// 学号
//声明循环变量
int i, j; 
/*
int:
Int是将一个数值向下取整为最接近的整数的函数。
int是数据库中常用函数中的取整函数,常用来判别一个数能否被另一个数整除。
在编程语言(C、C++、C#、Java等)中,常用于定义整数类型变量的标识符。
void:
中文翻译为“无类型”。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
void真正发挥的作用在于:
1、 对函数返回的限定;
2、对函数参数的限定。
void的使用规则:

规则一:如果函数没有返回值,那么应声明为void类型

规则二:如果函数无参数,那么应声明其参数为void

规则三:小心使用void指针类型

规则四:如果函数的参数可以是任意类型指针,那么应声明其参数为void *

规则五:void不能代表一个真实的变量
*/
//------------------------------------------ 

int main(void)
{
    int choice,n;
    while (1)
    {
        printf("\t\t\t\t丨==========================================丨\n");
        printf("\t\t\t\t丨欢迎使用学生成绩管理系统                  丨\n");
        printf("\t\t\t\t丨请输入您的选择(0 - 6)                   丨\n");
        printf("\t\t\t\t丨① 输入所有学生信息及成绩                 丨\n");
        printf("\t\t\t\t丨② 输出所有学生信息及成绩                 丨\n");
        printf("\t\t\t\t丨③ 按学号查找某个学生信息                 丨\n");
        printf("\t\t\t\t丨④ 按学号修改某个学生信息                 丨\n");
        printf("\t\t\t\t丨⑤ 按学号删除某个学生信息                 丨\n");
        printf("\t\t\t\t丨⑥ 按总分进行排序                         丨\n");
        printf("\t\t\t\t丨0 退出程序                                丨\n");
        printf("\t\t\t\t丨==========================================丨\n");
        scanf("%d",&choice);//输入选择 


        switch (choice)
        {
        case 1:
            printf("请输入录入的学生数: ");
            scanf("%d",&n); 
            shuru(n);
            break;

        case 2:
            shuchu(n);
            break;
            
		case 3:
            find_xuehao(n);
            break;
            
		case 4:
            xiugai_xuehao(n);
            break;
		
		case 5:
            delete_xuehao(n);
            n--;
            break;
        
        case 6:
			printf("该功能维护中...\n");
			break;
			
        case 0:
            printf("退出程序\n");
            printf("程序结束\n");
            exit(0);

        default:
            printf("请重新输入\n");

        }

    }
    return 0;
}
void shuru(int n)//循环存储成绩 
{

    for (i=0; i<n; i++)
    {
        printf("\n请输入第%d个学生的信息:\n", i + 1);
        printf("\n学号:");
        scanf("%d", &num[i]);
        printf("\n姓名:");
        scanf("%s", &names[i]);
        printf("\n数学成绩:");
        scanf("%d", &math[i]);
        printf("\n英语成绩:");
        scanf("%d", &english[i]);
        printf("\n语文成绩:");
        scanf("%d", &chinese[i]);
        
        sum[i] = math[i] + english[i] + chinese[i];
    }
}
void shuchu(int n)
{

    printf("\n学号\t姓名\t数学成绩\t英语成绩\t语文成绩\t总成绩\n");
    printf("==============================================================================\n");

    for (i=0; i<n; i++)
    {
        printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[i], names[i], math[i], english[i], chinese[i], sum[i]);
    }
    printf("==============================================================================\n");
}
int find_xuehao(int n)
{
    int nums;
    int x;
    printf("请输入待查找的学生学号:");
    scanf("%d",&nums);
    x= -233;
    for (i = 0; i<n; ++i)
    {
        if (nums == num[i])
        {
            x = i;

            break;
        }

    }


    if (x == -233)
    {
        printf("没有该学生信息!\n");
        return 0;
    }
    else
    {
        printf("\n学号\t\t姓名\t\t数学成绩\t英语成绩\t语文成绩\t总成绩\n");
        printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n", num[x], names[x], math[x], english[x], chinese[x], sum[x]);
        printf("结果如上\n");
    }
    return 1;
}
int xiugai_xuehao(int n) 
{
    int nums;
    int x;
    printf("请输入待修改的学生学号:");
    scanf("%d",&nums);
    x= -233;
    for (i = 0; i<n; ++i)
    {
        if (nums == num[i])
        {
            x = i;
            break;
        }
    }

    if (x == -233)
    {
        printf("没有该学生信息!\n");
        return 0;
    }
    else
    {
        printf("请重新输入该学生信息:\n");
        printf("学号:\n");
        scanf("%d",&num[x]);
        printf("姓名:\n");
        scanf("%s",names[x]); 
        printf("数学成绩:\n");
        scanf("%d",&math[x]);
        printf("英语成绩:\n");
        scanf("%d",&english[x]);
        printf("语文成绩:\n");
        scanf("%d",&chinese[x]);
        sum[x] = math[x] + english[x] + chinese[x];
    }
    return 1;
} 
int  delete_xuehao(int n) 
{
    int nums;
    int x;
    printf("请输入待删除的学生学号:");
    scanf("%d",&nums);
    x= -233;
    for (i = 0; i<n; ++i)
    {
        if (nums == num[i])
        {
            x = i;
            break;
        }
    }
    if (x == -233)
    {
        printf("没有!\n");
        return 0;
    }
    else    
    {
        for(i=x; i<n-1; ++i)
        {
            num[i] = num[i+1]; 
            strcpy(names[i],names[i+1]); 
            math[i] = math[i+1]; 
            english[i] = english[i+1]; 
            chinese[i] = chinese[i+1]; 
            sum[i] = sum[i+1];
        } 

    }
    return 1;
} 
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值