学生信息基本管理系统
一 实验目的
应用《C语言程序设计》课程的所有知识点,开发一个学生信息管理系统,采用计算机对学生信息进行管理,进一步提高了办学效益和现代化水平.为广大教师和学生提高工作效率,实现学生信息管理工作流程的系统化,规范化和自动化.现在我国的大中专院校的学生信息管理水平普遍都不是很高,有的还停留在全用纸介质基础上,这种管理方式已不能适应时代的发展,社会的需求,因为它浪费了大量的人力物力,也存在着许多不足的因素.在今天信息时代这种传统的管理方法必然会被计算机为基础的信息管理系统所代替.一个高效的学生信息管理系统可以存储历届的学生信息档案,不需要大量的人力,只需要几名专门录入员即可操作系统,节省大量人力,可以迅速查到所需信息,高效,安全,学生在能方便的查看自己的信息。
二 实验内容和主要任务
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计学生信息管理系统,使之能提供以下功能:
1) 安全模块
2) 信息录入
3) 信息浏览
4) 学号查询
5) 姓名查询
6) 信息排序
7) 信息删除
8) 信息修改
9) 保存文件
10) 退出系统
11) 系统菜单形式显示
三 实验设计及步骤
总体设计:
- 1.该系统可以按功能进行模块划分,其模块图如下:
其中:
信息输入模块完成学生信息的输入功能,输入信息包括学生号、姓名、性别、出生年月、成绩、专业. 住址、电话等;
信息浏览模块完成已录入学生信息的显示;
信息查询模块完成学生信息的查询,查询时对应有按姓名查询和按学号查询两种方式;
信息修改模块完成学生信息的修改功能;
信息删除模块完成学生信息的删除功能;
安全模块 是进入系统需要用户名字 和密码;
菜单选择模块完成用户命令的接收,此模块也是职工信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;
2数据结构
本系统中主要的数据结构就是学生的信息,包含学生号、姓名、性别、出生年月、成绩 、专业、住址、电话等,在处理过程中各项可以作为一个学生的不同属性来进行处理
3程序流程
系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下:
详细设计:
对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下:
1 安全模块
printf(" 请输入用户名,\n");
scanf("%s",x);
if(strcmp(x,y)==0)
{
printf(" 请输入密码,\n");
scanf("%d",&ma);
while (ma==123456)
通过比较语句 来判定输入人名和密码的正确 如果正确进入菜单模块;
2 菜单模块
通过while语句
给出信息提示;
清屏;
绘制菜单(包含输入,浏览,查询,修改,删除,排序,保存,退出);
提示菜单选择并读入到变量;
根据读入变量的值调用不同的模块函数;
3 信息录入模块
打开文件
While()
{ 清屏;
按照提示输入各种信息;
While
显示各种信息;
通过选择1.确认并继续 2.重新填写 3.放弃并返回 4.确认并返回
选择四种功能;
}
}
4 信息浏览模块
打开文件
While()
{ 清屏;
用for语句依次按照顺序输出学生信息
通过选择可以翻页 1.上一页 2.下一页 0.退出
}
5 信息查询
While()
{ 通过菜单式的选择 是学号查询 还是姓名
printf("******学生信息管理系统******");
printf("\n----------检 索----------");
printf("\n您想要:");
printf("\n 1.按学号检索");
printf("\n 2.按姓名检索");
printf("\n 3.返回主菜单");
printf("\n****************************\n");
}
如果选择学号进入学号模块
通过输入学号
If( 学号存在继续)
{输出学生信息
}
Else 输出无此学生
如果选择姓名进入姓名模块
If(根据比较姓名判断学生是否存在)
{输出学生信息
}
Else 输出无此学生
6 删除模块
while( 继续删除 )
{
提示并读入待删除的学生的学生号;
显示要删除的信息
}
删除成功
7 信息修改模块
输入要修改学生信息的学号:
If (判断是否有此学生)
{ 菜单形式显示要修改的项目
printf("\n1.姓名 2.年龄 3.性别 4.出生年月 5.地址 6.电话 7.E-mail \n");
printf("\n8.数学 9.英语 \n");
}
Swich()
{ 选择要修改的项目进行修改
}
8 打开文件模块
void fileopen()
{
FILE *fp;
int n;
if((fp=fopen("data","r+"))==NULL)
fp=fopen("data","w+");
for(n=0;n<100;n++)
fread(&stu[n],sizeof(struct student),1,fp);
fread(&stunum,4,1,fp);
fclose(fp);
}
9 保存文件模块
void filesave()
{
int n;
FILE *fp;
fp=fopen("data","r+");
for(n=0;n<100;n++)
fwrite(&stu[n],sizeof(struct student),1,fp);
fwrite(&stunum,4,1,fp);
fclose(fp);
printf("保存成功!press Enter to continue..");
getch();
}
10 退出模块
case ‘8‘:ma=0;break;
用的是跳出while语句
回到安全模块
11 排序模块
通过 冒泡排序法
for(m=0;m<y-1;m++)
for(x=m+1;x<y;x++)
if(stu[m].sum<stu[x].sum)
{
stu[99]=stu[m];
stu[m]=stu[x];
stu[x]=stu[99];
stu[99].id=stu[x].id ;
stu[x].id =stu[m].id;
stu[m].id =stu[99].id ;
}
printf("排序后的顺序为:\n");
然后显示排序好后的学生信息;
学生基本信息结构体是
struct student
{
int id;
char name[30];
int age;
char sex[6];
char birthday[12];
char add[80];
char tel[15];
char email[25];
int math;
int english;
int sum;
}stu[100]
四程序测试
1 安全模块
通过输入正确的用户名才能进入此系统
2 菜单显示
进入系统后便来到菜单界面 通过选择进入不同的模块
3 录入函数;
通过选择菜单1进入录入模块 下面是录入信息的界面
4浏览模块
如果选择2 可以进入浏览模块 包括学生的课中基本信息
5修改模块
修改模块 可以通过选择分别修改姓名 年龄 性别 等信息依次修改
修改后的信息
6排序模块
通过总分的大小从大到小排序
排序前的截图
排序后的截图
7删除模块
11退出模块
回到安全模块
五实验结论
通过此次课程设计,我基本上对制作一个相对来说比较完整的程序有了一定的认识和了解。这一周多来的制作,不但对C语言的知识有了一定的巩固,还增加了我们的动手能力。
学生信息管理系统,涉及到结构体,链表,文件和循环的知识,所以尤其对这几个方面有所加深和巩固。其中又包括结构体的赋值,写到文件中。从文件中赋值给结构体。
等等。
还能够通过编译时出现的出错提示信息,进行初步的纠错。
完成一个程序的一般步骤为设计,录入,编译,如果出错,则修改,然后
再编译,编译成功后,看看结果是否正确,如果结果不正确,则再重复以上步骤。
从这次编程序的过程中,我学到了编程所必须具备的专业技能,更领会编译
程序所需要的细心和耐心。
六github地址链接:https://github.com/daishimin/test/tree/master