学生管理系统课程设计

学生管理系统课程设计

一.课程设计目的

1.通过结构体和函数的综合应用来实现一个具体的应用项目,使我们掌握小型系统程序设计的基本方法,掌握程序设计基本框架的搭建和模块化程序设计的基本思路,能够使用工具进行程序设计调试,培养我们利用C语言进行软件设计的能力。
2.设计出的学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,针对这些要求设计了学生信息管理系统。

二.课程设计内容和要求

设计一个学生管理系统,系统以菜单方式工作,能够提供以下功能:
1.学生信息录入功能
―――由for循环语句录入信息,并使用结构体
2.学生信息浏览功能
―――使用for循环语句浏览信息,并使用了结构体
3.学生信息按学号查询功能
―――学生姓名是字符串类型,在if中使用strcmp进行字符串比较;并使用for循环语句以及结构体
4.学生信息按姓名查询功能
―――学号是unsign类型,在if语句中使用strcmp进行字符串比较;并使用for循环语句以及结构体
5.学生信息修改功能
―――用for循环语句以及结构体,while语句,switch语句进行多重选择,还在if语句中使用strcmp进行字符串比较
6.学生信息的删除功能
―――用for循环语句以及结构体,还在if语句中使用strcmp进行字符串比较,还单独使用if语句进行情况分类。

三.任务完成情况

1.对学生的信息进行了保存,同时拥有了删除、排序、修改、根据学号查找、根据姓名查找的功能。
2.通过结构体的出现让读者一目了然。

四.设计报告

4.1需求分析

4.1.1用户需求

(1)界面简介,排列清晰,可以一目了然的看懂每一项功能。
(2)学生利用此系统能够进行与自己有关信息查询与输入。

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<stdio.h>
#include<stdlib.h> 
#include<string.h>
#include<conio.h>

该系统创建的结构体有:

struct record
{
char xuehao[20];
    char name[20];
    char old[20];
    char xingbie[20];
    char date[20];
    char phone[20];
}num[100];

4.4.2 主函数

int main()
{
while(1)
{
system("cls");
menu();
}
return 0;
}

4.4.3 菜单函数

void menu()
{
int num=0;
char n;
char m;
printf("***************学生信息管理系统***************\n");
	printf("***************本系统选择如下*****************\n");
	printf("***          1.学生信息的录入              ***\n");
	printf("***          2.学生信息的浏览              ***\n");
	printf("***          3.学生信息按学号查询          ***\n");
	printf("***          4.学生信息按姓名查询          ***\n");
	printf("***          5.学生信息修改                ***\n");
	printf("***          6.学生信息的删除              ***\n");
	printf("***          7.退出系统                    ***\n");
	printf("**********************************************\n");
	printf("请输入(1~7):"); 
scanf("%d",&num);

4.4.4 关于成绩录入

void input()
{
    int i;
    printf("请输入录入的学生人数:");
    scanf("%d",&n);
    printf("\n\n");
    for(i=0;i<n;i++)
    {
        printf("请输入学号: "); 
        scanf("%s",&num[i].xuehao);
        printf("\n");
        printf("请输入姓名:  ");
        scanf("%s",&num[i].name);
        printf("\n");
        printf("请输入年龄:  ");
        scanf("%s",&num[i].old);
        printf("\n");
        printf("请输入性别:  ");
        scanf("%s",&num[i].xingbie);
        printf("\n");
        printf("请输入出生年月:  ");
        scanf("%s",&num[i].date);
        printf("\n");
        printf("请输入电话:  ");
        scanf("%s",&num[i].phone);
        printf("\n");
        printf("\n\n");
    }
    printf("输入完毕!按任意键返回主菜单!");
    getch();// 拿来判断键盘的按键 ,等待按下任意键再继续执行下面的语句。 
}

4.4.5 学生信息浏览

void look()
{
int i;
for(i=0;i<n;i++)
{ 
printf("学号: %s",num[i].xuehao); 
        printf("\n");
   printf("姓名:  %s",num[i].name);
        printf("\n");
        printf("年龄:  %s",num[i].old);
        printf("\n");
        printf("性别:  %s",num[i].xingbie);
        printf("\n");
        printf("出生年月:  %s",num[i].date);
        printf("\n");
        printf("电话:  %s",num[i].phone);
        printf("\n\n");
}
printf("\n按任意键返回主菜单!");
getch();
}

4.4.6 学生信息按学号查询

void select1()
{
int i,no;
char no1[100];
printf("请输入要查询的学号:");
scanf("%s",no1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].xuehao,no1)==0)如果学号的字符串内容与no1的字符串内容相同的话,strcmp == 0
no=i;
}
printf("请输入学号: %s",num[no].xuehao); 
    printf("\n");
printf("请输出姓名:  %s",num[no].name);
    printf("\n");
    printf("请输出年龄:  %s",num[no].old);
    printf("\n");
    printf("请输出性别:  %s",num[no].xingbie);
    printf("\n");
    printf("请输出出生年月:  %s",num[no].date);
    printf("\n");
    printf("请输出电话:  %s",num[no].phone);
    printf("\n\n");
    getch();// 拿来判断键盘的按键 ,等待按下任意键再继续执行下面的语句。 
}

4.4.7 学生信息按姓名查询

void select2()
{
int i,mo;
char mo1[100];
printf("请输入要查询的学生姓名:");
scanf("%s",&mo1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].name,mo1)==0)如果学号的字符串内容与mo1的字符串内容相同的话,strcmp == 0
mo=i;
}
printf("请输入学号: %s",num[mo].xuehao); 
    printf("\n");
printf("请输出姓名:  %s",num[mo].name);
    printf("\n");
    printf("请输出年龄:  %s",num[mo].old);
    printf("\n");
    printf("请输出性别:  %s",num[mo].xingbie);
    printf("\n");
    printf("请输出出生年月:  %s",num[mo].date);
    printf("\n");
    printf("请输出电话:  %s",num[mo].phone);
    printf("\n");
    printf("\n按任意键返回主菜单!");
    getch();// 拿来判断键盘的按键 ,等待按下任意键再继续执行下面的语句。 
}

4.4.8 学生信息修改

void xiugai()
{
int i,t,n;
char z1[30],z2[30];
printf("   请输入要修改的学号\n");
scanf("%s",z1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].xuehao,z1)==0);
   {
    n=i;
   }
}
printf("--------------------------------\n");
printf("    1修改学号    \n");
printf("    2修改姓名    \n");
printf("    3修改年龄    \n");
printf("    4修改性别    \n");
printf("    5修改出生年月    \n");
printf("    6修改电话    \n");
printf("    7返回主菜单    \n");
printf("--------------------------------\n");
while(1)
{
printf("请输入菜单的编号:");
scanf("%d",&t);
switch(t)
{
case 1:
printf("请输入新的学号:\n");
scanf("%s",z2);
strcpy(num[n].xuehao,z2);
break;
case 2:
printf("请输入新的姓名:\n");
scanf("%s",z2);
strcpy(num[n].name,z2);
break;
case 3:
printf("请输入新的年龄:\n");
scanf("%s",z2);
strcpy(num[n].old,z2);
break;
case 4:
printf("请输入新的性别:\n");
scanf("%s",z2);
strcpy(num[n].xingbie,z2);
break;
case 5:
printf("请输入新的出生年月:\n");
scanf("%s",z2);
strcpy(num[n].date,z2);
break; 
case 6:
printf("请输入新的电话:\n");
scanf("%s",z2);
strcpy(num[n].phone,z2);
break;
case 7: return;
default:
printf("请在1-7之间选择\n"); 
} 
}
printf("按任意键返回主菜单!\n");
getch();// 拿来判断键盘的按键 ,等待按下任意键再继续执行下面的语句。 
}

4.4.9学生信息删除

void shanchu()
{
int i,j,flag=0;
char x1[30];
printf("请输入将要删除的学生的学号:\n");
scanf("%s",x1);
for(i=0;i<n;i++)
if(strcmp(num[i].xuehao,x1)==0)
{
flag=1;
for(j=i;j<n-1;j++)
   num[j]=num[j+1];
}
if(flag==0)
printf("该学号不存在!\n"); 
if(flag==1)
{
printf("删除成功!\n");
n--;
} 
printf("\n按任意键返回主菜单!");
getch();// 拿来判断键盘的按键 ,等待按下任意键再继续执行下面的语句。 
}

4.5使用说明

按提示操作即可。

4.6测试结果与分析

主界面如图:在这里插入图片描述
学生信息的录入如图:
在这里插入图片描述
学生信息的浏览如图:
在这里插入图片描述
学生信息按学号查询如图:
在这里插入图片描述
学生信息按姓名查询如图:
在这里插入图片描述
学生信息的修改如图:
在这里插入图片描述
学生信息的删除:
在这里插入图片描述

4.7参考文献

1.《C 程序设计》(第四版),谭浩强,清华大学出版社,2010 年。
2.csdn别人的代码。

5.体会与感想

制作完这个程序其实我学到了挺多东西的,特别是结构体让我能够运用的更加顺手了。但是花了挺多时间的,还有很多东西需要我去学习吸收。相信我只要坚持下去,一定会越来越好。

附录

源代码

#include<stdio.h>
#include<stdlib.h>//定义了四个变量类型、一些宏和各种通用工具函数 
#include<string.h>//使用到字符数组时需要使用 
#include<conio.h>//getch()的头文件 
using namespace std;
struct record//结构体 
{
char xuehao[20];
    char name[20];
    char old[20];
    char xingbie[20];
    char date[20];
    char phone[20];
}num[100];
bool cmp(record a,record b)                    
{
return strcmp(a.xuehao, b.xuehao) < 0;    
}//为了后面使用字符串比较函数 
int n;
void input();                                   
void menu();
void look();
void select1();
void select2();
void xiugai();
void shanchu();
void menu()
{
int num=0;
char n;
char m;
printf("***************学生信息管理系统***************\n");
	printf("***************本系统选择如下*****************\n");
	printf("***          1.学生信息的录入              ***\n");
	printf("***          2.学生信息的浏览              ***\n");
	printf("***          3.学生信息按学号查询          ***\n");
	printf("***          4.学生信息按姓名查询          ***\n");
	printf("***          5.学生信息修改                ***\n");
	printf("***          6.学生信息的删除              ***\n");
	printf("***          7.退出系统                    ***\n");
	printf("**********************************************\n");
	printf("请输入(1~7):"); 
scanf("%d",&num);
switch(num)//选择函数 
{
case 1: system("cls");
input();
break;
case 2: system("cls");
look();
break;
case 3: system("cls");
select1();
break;
case 4: system("cls");
select2();
break;
case 5: system("cls");
xiugai();
break;
case 6: system("cls");
shanchu();
break;
case 7: exit(0);
default:;
}
}
void input()
{
    int i;
    printf("请输入录入的学生人数:");
    scanf("%d",&n);
    printf("\n\n");
    for(i=0;i<n;i++)
    {
        printf("请输入学号: "); 
        scanf("%s",&num[i].xuehao);
        printf("\n");
        printf("请输入姓名:  ");
        scanf("%s",&num[i].name);
        printf("\n");
        printf("请输入年龄:  ");
        scanf("%s",&num[i].old);
        printf("\n");
        printf("请输入性别:  ");
        scanf("%s",&num[i].xingbie);
        printf("\n");
        printf("请输入出生年月:  ");
        scanf("%s",&num[i].date);
        printf("\n");
        printf("请输入电话:  ");
        scanf("%s",&num[i].phone);
        printf("\n");
        printf("\n\n");
    }
    printf("输入完毕!按任意键返回主菜单!");
    getch();// 拿来判断键盘的按键 ,等待按下任意键再继续执行下面的语句。 
}
void look()
{
int i;
for(i=0;i<n;i++)
{ 
printf("学号: %s",num[i].xuehao); 
        printf("\n");
   printf("姓名:  %s",num[i].name);
        printf("\n");
        printf("年龄:  %s",num[i].old);
        printf("\n");
        printf("性别:  %s",num[i].xingbie);
        printf("\n");
        printf("出生年月:  %s",num[i].date);
        printf("\n");
        printf("电话:  %s",num[i].phone);
        printf("\n\n");
}
printf("\n按任意键返回主菜单!");
getch();
}
void select1()
{
int i,no;
char no1[100];
printf("请输入要查询的学号:");
scanf("%s",no1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].xuehao,no1)==0)如果学号的字符串内容与no1的字符串内容相同的话,strcmp == 0
no=i;
}
printf("请输入学号: %s",num[no].xuehao); 
    printf("\n");
printf("请输出姓名:  %s",num[no].name);
    printf("\n");
    printf("请输出年龄:  %s",num[no].old);
    printf("\n");
    printf("请输出性别:  %s",num[no].xingbie);
    printf("\n");
    printf("请输出出生年月:  %s",num[no].date);
    printf("\n");
    printf("请输出电话:  %s",num[no].phone);
    printf("\n\n");
    getch();// 拿来判断键盘的按键 ,等待按下任意键再继续执行下面的语句。 
}
void select2()
{
int i,mo;
char mo1[100];
printf("请输入要查询的学生姓名:");
scanf("%s",&mo1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].name,mo1)==0)如果学号的字符串内容与mo1的字符串内容相同的话,strcmp == 0
mo=i;
}
printf("请输入学号: %s",num[mo].xuehao); 
    printf("\n");
printf("请输出姓名:  %s",num[mo].name);
    printf("\n");
    printf("请输出年龄:  %s",num[mo].old);
    printf("\n");
    printf("请输出性别:  %s",num[mo].xingbie);
    printf("\n");
    printf("请输出出生年月:  %s",num[mo].date);
    printf("\n");
    printf("请输出电话:  %s",num[mo].phone);
    printf("\n");
    printf("\n按任意键返回主菜单!");
    getch();// 拿来判断键盘的按键 ,等待按下任意键再继续执行下面的语句。 
}
void xiugai()
{
int i,t,n;
char z1[30],z2[30];
printf("   请输入要修改的学号\n");
scanf("%s",z1);
for(i=0;i<n;i++)
{
if(strcmp(num[i].xuehao,z1)==0);
   {
    n=i;
   }
}
printf("--------------------------------\n");
printf("    1修改学号    \n");
printf("    2修改姓名    \n");
printf("    3修改年龄    \n");
printf("    4修改性别    \n");
printf("    5修改出生年月    \n");
printf("    6修改电话    \n");
printf("    7返回主菜单    \n");
printf("--------------------------------\n");
while(1)
{
printf("请输入菜单的编号:");
scanf("%d",&t);
switch(t)
{
case 1:
printf("请输入新的学号:\n");
scanf("%s",z2);
strcpy(num[n].xuehao,z2);
break;
case 2:
printf("请输入新的姓名:\n");
scanf("%s",z2);
strcpy(num[n].name,z2);
break;
case 3:
printf("请输入新的年龄:\n");
scanf("%s",z2);
strcpy(num[n].old,z2);
break;
case 4:
printf("请输入新的性别:\n");
scanf("%s",z2);
strcpy(num[n].xingbie,z2);
break;
case 5:
printf("请输入新的出生年月:\n");
scanf("%s",z2);
strcpy(num[n].date,z2);
break; 
case 6:
printf("请输入新的电话:\n");
scanf("%s",z2);
strcpy(num[n].phone,z2);
break;
case 7: return;
default:
printf("请在1-7之间选择\n"); 
} 
}
printf("按任意键返回主菜单!\n");
getch();// 拿来判断键盘的按键 ,等待按下任意键再继续执行下面的语句。 
}

void shanchu()
{
int i,j,flag=0;
char x1[30];
printf("请输入将要删除的学生的学号:\n");
scanf("%s",x1);
for(i=0;i<n;i++)
if(strcmp(num[i].xuehao,x1)==0)
{
flag=1;
for(j=i;j<n-1;j++)
   num[j]=num[j+1];
}
if(flag==0)
printf("该学号不存在!\n"); 
if(flag==1)
{
printf("删除成功!\n");
n--;
} 
printf("\n按任意键返回主菜单!");
getch();// 拿来判断键盘的按键 ,等待按下任意键再继续执行下面的语句。 
}
int main()
{
while(1)
{
system("cls");
menu();
}
return 0;
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

大许。

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值