学生管理系统--面向对象程序设计
学生信息基本管理系统
一 实验目的
应用《C语言程序设计》课程的所有知识点,开发一个学生信息管理系统,采用计算机对学生信息进行管理,进一步提高了办学效益和现代化水平.为广大教师和学生提高工作效率,实现学生信息管理工作流程的系统化,规范化和自动化.现在我国的大中专院校的学生信息管理水平普遍都不是很高,有的还停留在全用纸介质基础上,这种管理方式已不能适应时代的发展,社会的需求,因为它浪费了大量的人力物力,也存在着许多不足的因素.在今天信息时代这种传统的管理方法必然会被计算机为基础的信息管理系统所代替.一个高效的学生信息管理系统可以存储历届的学生信息档案,不需要大量的人力,只需要几名专门录入员即可操作系统,节省大量人力,可以迅速查到所需信息,高效,安全,学生在能方便的查看自己的信息。
二 实验内容和主要任务
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计学生信息管理系统,使之能提供以下功能:
1) 安全模块
2) 信息录入
3) 信息浏览
4) 学号查询
5) 姓名查询
6) 信息排序
7) 信息删除
8) 信息修改
9) 保存文件
10) 退出系统
11) 系统菜单形式显示
三 实验设计及步骤
总体设计:
- 1.该系统可以按功能进行模块划分,其模块图如下:
其中:
信息输入模块完成学生信息的输入功能,输入信息包括学生号、姓名、性别、出生年月、成绩、专业. 住址、电话等;
信息浏览模块完成已录入学生信息的显示;
信息查询模块完成学生信息的查询,查询时对应有按姓名查询和按学号查询两种方式;
信息修改模块完成学生信息的修改功能;
信息删除模块完成学生信息的删除功能;
安全模块 是进入系统需要用户名字 和密码;
菜单选择模块完成用户命令的接收,此模块也是职工信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;
2数据结构
本系统中主要的数据结构就是学生的信息,包含学生号、姓名、性别、出生年月、成绩 、专业、住址、电话等,在处理过程中各项可以作为一个学生的不同属性来进行处理
3程序流程
系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下:
三.源代码
#include <stdio.h>
#include <string.h>
int n;
void showMain()
{
printf("\t-------欢迎使用学生信息管理系统-------\n");
printf("\t\t1.创立学生信息\n");
printf("\t\t2.显示学生信息\n");
printf("\t\t3.新增学生信息\n");
printf("\t\t4.删除学生信息\n");
printf("\t\t5.修改学生信息\n");
printf("\t\t0.退出\n");
}
void create(int stuID[41],char stuName[41][20],int stuSco1[41],int stuSco2[41])
{
printf("请输入学生人数(不超过41人):\n");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("请输入第%d个学生学号:\n",i+1);
scanf("%d",&stuID[i]);
printf("请输入第%d个学生姓名:\n",i+1);
scanf("%s",&stuName[i]);
printf("请输入第%d个学生成绩1:\n",i+1);
scanf("%d",&stuSco1[i]);
printf("请输入第%d个学生成绩2:\n",i+1);
scanf("%d",&stuSco2[i]);
}
printf("\n");
}
void showIno(int stuID[41],char stuName[41][20],int stuSco1[41],int stuSco2[41])
{
printf("\t\t学号\t姓名\t成绩1\t成绩2\n");
for(int i=0;i<n;i++)
{
printf("\t\t%d\t%s\t%d\t%d\n",stuID[i],stuName[i],stuSco1[i],stuSco2[i]);
}
printf("\n");
}
void insert(int stuID[41],char stuName[41][20],int stuSco1[41],int stuSco2[41])
{
int index;
printf("目前共有%d个学生,请输入在第几个同学后加入新同学:\n",n);
scanf("%d",&index);
for(int i=n;i>index;i--)
{
stuID[i]=stuID[i-1];
strcpy(stuName[i],stuName[i-1]);
stuSco1[i]=stuSco1[i-1];
stuSco2[i]=stuSco2[i-1];
}
printf("请输入新同学的学号:\n");
scanf("%d",&stuID[index]);
printf("请输入新同学的姓名:\n");
scanf("%s",&stuName[index]);
printf("请输入新同学的成绩1:\n");
scanf("%d",&stuSco1[index]);
printf("请输入新同学的成绩2:\n");
scanf("%d",&stuSco2[index]);
n++;
printf("\n");
}
void deletestu(int stuID[41],char stuName[41][20],int stuSco1[41],int stuSco2[41])
{
int index;
printf("目前共有%d个学生,请输入想删除第几个学生:\n",n);
scanf("%d",&index);
for(int i=index-1;i<n;i++)
{
stuID[i]=stuID[i+1];
strcpy(stuName[i],stuName[i+1]);
stuSco1[i]=stuSco2[i+1];
stuSco2[i]=stuSco2[i+1];
}
n--;
printf("\n");
}
void changestu(int stuID[41],char stuName[41][20],int stuSco1[41],int stuSco2[41])
{
int i;
printf("目前共有%d个学生,请输入想修改第几个学生:\n",n);
scanf("%d",&i);
printf("请输入修改后的学号:\n");
scanf("%d",&stuID[i-1]);
printf("请输入修改后的姓名:\n");
scanf("%s",&stuName[i-1]);
printf("请输入修改后的成绩1:\n");
scanf("%d",&stuSco1[i-1]);
printf("请输入修改后的成绩2:\n");
scanf("%d",&stuSco2[i-1]);
printf("\n");
}
int main()
{
int stuID[41];
char stuName[41][20];
int stuSco1[41];
int stuSco2[41];
while(1)
{
showMain();
printf("请输入您的操作:\n");
int choose=0;
scanf("%d",&choose);
//创建功能区
if(choose==1)
{
create(stuID,stuName,stuSco1,stuSco2);
}
if(choose==2)
{
showIno(stuID,stuName,stuSco1,stuSco2);
}
if(choose==3)
{
insert(stuID,stuName,stuSco1,stuSco2);
}
if(choose==4)
{
deletestu(stuID,stuName,stuSco1,stuSco2);
}
if(choose==5)
{
changestu(stuID,stuName,stuSco1,stuSco2);
}
if(choose==0)
{
printf("\t\t欢迎下次使用!\n");
break;
}
}
return 0;
}
四.github地址链接:https://github.com/daishimin/xinxiguanli/tree/master