学生信息管理系统c代码.docx

上传人:b****6 文档编号:6160795 上传时间:2023-01-04 格式:DOCX 页数:21 大小:562.02KB
下载 相关 举报
学生信息管理系统c代码.docx_第1页
第1页 / 共21页
学生信息管理系统c代码.docx_第2页
第2页 / 共21页
学生信息管理系统c代码.docx_第3页
第3页 / 共21页
学生信息管理系统c代码.docx_第4页
第4页 / 共21页
学生信息管理系统c代码.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

学生信息管理系统c代码.docx

《学生信息管理系统c代码.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统c代码.docx(21页珍藏版)》请在冰豆网上搜索。

学生信息管理系统c代码.docx

学生信息管理系统c代码

学员信息管理系统

(C语言项目制作)

由于考试发的是全国信息化工程师“岗位技能”证书,比较重视项目制作能力和动手能力,要求学生必须做一个项目,该项目要有一定实用价值,本文讲述“学员信息管理系统”地制作,学完该项目后,关于用C语言编写、与数据管理有关的项目,大家应该都就会做了。

一、软件需求分校

1、任务描述

随着学校规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长,学生信息管理工作变得更加复杂,需要规范的学生信息管理系统来提高工作效率。

2、功能模块

图1

3、功能演示

3.1、启动软件,进入程序主界面(图2)

图2

按屏幕提示“按任意键初始化学员信息…”:

(图3)

图3

“按任意键进入主目录”:

(图4)

图4

3.2、键入“1”,选择“显示”命令,可以显示所有学生信息:

(图5)

图5

3.3、返回主目录“图4”,键入“2”,选择“查找”命令,查找指定学号的信息:

(图6是查找“002”号学员后,返回的学员信息):

图6

3.4、返回主目录“图4”,键入“3”,选择“录入”命令,录入新的学员信息:

(图7是录入“007”号学员信息的步骤和结果):

图7

3.5、返回主目录“图4”,键入“4”,选择“修改”命令,可修改学员信息:

(图8是录入“002”号学员信息的步骤和结果):

图8

3.6、返回主目录“图4”,键入“5”,选择“删除”命令,可删除指定学员信息:

(图9是成功删除“005”号学员信息的步骤和结果):

图9

图10是删除“002”号学员不成功的步骤和结果:

图10

3.7、返回主目录“图4”,键入“6”,选择“排序”命令,可按学号排序:

(图11是“按学号降序”的步骤和结果):

图11

图12是“按学号升序”的步骤和结果

图12

 

二、程序设计

1、界面设计

1.1、在软件开发中,程序界面有两种,如图13所示:

图13

 

第一种界面:

提示用户如何操作,指令如下:

("欢迎进入========学员信息管理系统========\n");

("\n\t\t\t按任意键初始化学员信息...\n\n");

第二种界面:

返回程序运算的结果,会在后面“算法”中介绍。

1.2、如何实现主目录界面?

("");

("以下是程序主目录,请选择功能\n\n");

("1)显示\n2)查找\n3)录入\n4)修改\n5)删除\n6)排序\n0)退出\n\n");

("键入功能前的数字后,按\"\"键:

");

图14

1.3、如何实现“键入功能前的数字后”,就能选择相应的命令?

{();

()

{'1':

();;显示所有学员信息

‘2’:

();;查询学员信息

'3':

();;录入新学员信息

'4':

();;修改学员信息

'5':

();;删除学员信息

'6':

();;对学员进行排序

'0':

;退出

("请选择功能前的数字\n");

}

}('0');

说明:

“()”中,代表输入的数字字符;用语句实现选择对应的命令;“()”函数实现“显示所有学员信息”;“

1.4、如何实现“按任意键回到主目录”?

("\n\n\t\t\t按任意键进入主目录...");

();从键盘收任一个字符即返回,该函数在中

1.5、如何实现图15中“输出格式化”?

图15

("\810101010s\n","学号","姓名","语文","数学","英语");

("810101010s\n","====","====","====","==","==");

("810-10.1f%-10.1f%-10.1f",“001”,“1”,68,87,63);

("810-10.1f%-10.1f%-10.1f",“001”,“2”,68,78,74);

在在中,“-”表示数据左对齐,“10.1”中的10表示输出宽度,“.1”表示输出1位小数。

2、数据结构的设计

2.1、如何表示学生信息的数据类型

在本项目中,学生信息包括“学号、姓名、三门课的成绩”可以用结构体数据类型来表示:

定义学生信息结构体类型

{[10];学号

[16];姓名

[3];定义成绩数组

};

2.2、关于文件包含

在项目中用到了很多库函数,因此在程序起始位置,需要用到文件包含:

""

""

""

""

2.3、关于“全局变量”

由于程序中用到大量的函数,因此可以设置全局变量。

;定义数据库实际学生数量

[10000];声明代表学生的结构体数组,假设最多有10000条数据

2.4、关于“函数声明”

程序中用到大量的自定义函数,它们可能是主调函数,也可能是被调函数,为了扩展它们的作用域,最好在程序前面加上函数声明。

函数声明部分

();初始化学员信息,把外存中学生数据读入到内存中

();把内存中结构体数组中的学生数据保存到外存中

();显示程序主目录

();显示所有学员信息

();录入新学员信息

([80])查找指定学号的学员,若找到返回该学员在数组中的下标,若没找到返回-1代表指定学号;在多个模块中用到该函数

();根据学号查找,并显示学员信息

();修改学员信息

();删除学员信息

();对学员进行排序

2.5、关于“数据文件”

图16

上面显示的是所有学生信息,这些学生数据在内存中的表现形式是常量、变量、数组和链表的方式,在外存中的表现形式是文件。

由于断电后,内存信息会全部清空,因此,内存信息需要经常存放到外存中。

2.5.1、文件操作的步骤

(1)打开文件:

(2)对文件读写操作:

(3)关闭文件:

2.5.2、从外存文件中读数据至内存数组

*(“”,"r”);

0是数据库中实际学生数量,其全局变量

(())是代表学生的结构体数组

{(,"",

[i],[i],学号,姓名

[i][0],[i][1][i][2]);

;是三门课成绩的数组

}

();

2.5.3、把内存数组中数据输出到外存文件

*(“”,“w”);

0;

(0<)

{(,"810-10.1f-10.1f-10.1f\n"

[i],[i],

[i][0],[i][1][i][2]);

}”%-10.1f”中,“-”左对齐,“10”宽度,“.1”小数位数

();

3、主要算法的实现

3.1、显示所有学员的信息(如图17)

图17

方法:

遍历数组,用函数显示数据。

(0<)

(“810-10.1f-10.1f-10.1f\n”,

[i],[i],[i][0][i][1][i][2]);

其中,是“实际学生数量”;“代表学生信息的结构体数组”,“学号”,“姓名”,“三门课成绩的数组”。

3.2、查找指定学号

方法:

遍历数组,查找指定学号的学员,函数返回值是找到后的学号的下标,如果指定学号不存在,返回-1;

([80])代表要查找的学号

{i;

(0<)代表实际的学生数量

(([i])0)i;是表示学生信息的结构体数组名

-1;

}

3.3、插入新的学员信息

图18

方法:

(1)依次输入新学员信息,并赋值给新变量s;

(2)把s添加到数组中;(3)把内存数据保存至外存。

()录入新学员信息

{代表新学员信息

下面输入新学员信息

("\n\n\n请输入\"学号\",\"学号\"不允许为空字符串:

");

("");

("\n请输入\"姓名\",注意\"姓名\"里不能加空格:

");

("");

("\n请输入\"语文成绩\":

");

(""[0]);

("\n请输入\"数学成绩\":

");

(""[1]);

("\n请输入\"英语成绩\":

");

(""[2]);

把s添加到结构体数组中;同时把表示学员数量的变量增加1

[];

()函数把内存中结构体数组中的学生数据保存到外存中

}

3.4、修改学员信息

方法:

(1)查找到指定学员的数组下标n;

(2)输入修改后的学员信息,存贮到临时变量s中;(3)把s临时变量赋值给[n],即[n];(4)保存数据到外存文件。

()修改学员信息

{[80]作为临时变量,临时存放修改后的学生信息

("\n请输入要修改的学生的学号:

");

("");

();函数返回要查找的学号的下标

("\n\n\n请输入修改后的\"学号\",\"学号\"不允许为空字符串:

");

("");

("\n请输入修改后的\"姓名\",注意\"姓名里\"不能加空格:

");

("");

("\n请输入修改后的\"语文成绩\":

");

(""[0]);

("\n请输入修改后的\"数学成绩\":

");

(""[1]);

("\n请输入修改后的\"英语成绩\":

");

(""[2]);

[n]把修改后的值保存到内存数组中

()把内存数据保存到外存数据文件中

}

3.5、删除某学员信息

方法:

(1)查找到指定学员的数组下标n;

(2)把后续数据前移,实现删除操作;(3)保存数据到外存文件。

()删除学员信息

{[80];

("\n请输入要删除的学生的学号:

");

("");

();

(<2)[i][1]删除指定学号

;

()把内存数据保存到外存数据文件中

}

3.6、对学员排序

下面是升序排序:

(0<2)

(1<1)

(([i][j])>0)

{[i][i][j][j];}

三、对本项目的拓展

1、本程序是用结构体数组实现,您可以用结构体链表来实现所有的算法;

2、结构体的成员发生改变,本结构体成员有:

学号、姓名、三门课成绩。

您可以增加成员,如性别、年龄、或更多门课的成绩;

3、把系统改为“教师信息管理系统”、“档案信息管理系统”、“订单管理系统”等。

四、附完整的程序代码

学员信息管理系统

文本文件实时存储数据,运用结构体数组

""

""

""

""

;定义数据库实际学生数量

定义学生信息结构体类型

{[10];学号

[16];姓名

[3];定义成绩数组

};

[10000];声明结构体数组,假设最多10000条信息

函数声明部分

();初始化学员信息,把外存中学生数据读入到内存中

();把内存中结构体数组中的学生数据保存到外存中

();显示程序主目录

();显示所有学员信息

();录入新学员信息

([80])查找指定学号的学员,找到返回该学员在数组中的下标,没找到返回-1代表指定学号;在多个模块中用到该函数

();根据学号查找,并显示学员信息

();修改学员信息

();删除学员信息

();对学员进行排序

函数定义

()

{程序进入“欢迎界面”

("\n\n\n\n\n\t\t欢迎进入学员信息管理系统\n");

按任意键初始化学员信息

("\n\t\t\t按任意键初始化学员信息...\n\n");

();从键盘收任一个字符即返回,该函数在中

()初始化学员信息,把外存中学生数据读入到内存中

("\t\t\t共有条学员信息")是实际学生数量

("\n\n\t\t\t按任意键进入主目录...");

();从键盘收任一个字符即返回,该函数在中

()调出“程序主目录”

}

显示和返回到程序主目录

()

{代表用户所选择的子目录号

{("");

("学员信息管理系统\n\n");

("以下是程序主目录,请选择功能\n\n");

("1)显示\n2)查找\n3)录入\n4)修改\n5)删除\n6)排序\n0)退出\n\n");

("键入功能前的数字后,按\"\"键:

");

();

()

{

'1':

显示所有学员信息

("");

();

显示完毕,提示用户返回主程序

("\n\n\t\t\t按任意键进入主目录...");

();从键盘收任一个字符即返回,该函数在中

;

'2'();;查询学员信息

'3'();;录入新学员信息

'4'();;修改学员信息

'5'();;删除学员信息

'6'();;对学员进行排序

'0':

;退出

("请选择功能前的数字\n");

}

}('0');

}

()初始化学员信息,把外存中学生数据读入到内存中

{

*;

((("","r")))

{("文件有错误!

程序不能运行!

\n");;}

0是数据库中实际学生数量,是全局变量

(())是学号,是姓名,)是成绩

{是学生结构体数组,全局变量

(,""[][],

[][0][][1][][2]);

(([],"")0)去掉学号为空字符串

}

();

}

把内存中结构体数组中的学生数据保存到外存中

()

{i;*;

((("","w")))以写的方式打开文件,覆盖原文件

{("文件有错误!

程序不能运行!

\n");;}

是学生结构体数组,全局变量

(0<)代表实际的学生数量

(([i],"")0)去掉学号为空字符串的信息

(,"810-10.1f-10.1f-10.1f\n"[i][i],

[i][0][i][1][i][2]);

();

}

()显示所有学员信息

{i;

("\810101010s\n","学号","姓名","语文","数学","英语");

("810101010s\n",","","","","");

(0<)

“-”表示数据左对齐,“10.1”中的10表示宽度,“.1”表示1位小数

("810-10.1f-10.1f-10.1f\n"[i][i],

[i][0][i][1][i][2]);

}

查找指定学号的学员,代表指定学号()的下标,如果指定学号不存在,返回-1;在多个模块中用到该函数

([80])

{i;是表示学生信息的结构体数组名

(0<)代表实际的学生数量,

(([i])0)i;

-1;

}

()根据学号查找,并显示学员信息

{

[80]n;

("");

("\n请输入要查询的学生的学号:

");

("");

();

(1)

("\n对不起,您要查找的学员不存在\n");

{("\810101010s\n","学号","姓名","语文","数学","英语");

("810101010s\n","","","","","");

("810-10.1f-10.1f-10.1f\n"[n][n],

[n][0][n][1][n][2]);

}

显示完毕,提示用户返回主程序

("\n\n\t\t\t按任意键进入主目录...");

();从键盘收任一个字符即返回,该函数在中

}

()录入新学员信息

{代表新学员信息

i;

先显示已有学员信息

("");

("当前学员信息如下:

\n");

("\810101010s\n","学号","姓名","语文","数学","英语");

("810101010s\n","","","","","");

(0<)

("810-10.1f-10.1f-10.1f\n"[i][i],

[i][0][i][1][i][2]);

下面输入新学员信息

("\n\n\n请输入\"学号\",\"学号\"不允许为空字符串:

");

("");

("\n请输入\"姓名\",注意\"姓名\"里不能加空格:

");

("");

("\n请输入\"语文成绩\":

");

(""[0]);

("\n请输入\"数学成绩\":

");

(""[1]);

("\n请输入\"英语成绩\":

");

(""[2]);

把临时变量s赋到结构体数组中;同时把表示学员数量的变量增加1

[];

()把内存中结构体数组中的学生数据保存到外存中

显示完毕,提示用户返回主程序

("\n\n\t\t\t按任意键进入主目录...");

();从键盘收任一个字符即返回,该函数在中

}

()修改学员信息

{[80]s;

("");

("当前学员信息如下:

\n");

()先显示所有学员信息

("\n请输入要修改的学生的学号:

");

("");

();

(1)

("\n对不起,您要查找的学员不存在\n");

{您要修改的学员信息

("\n您要修改的学员信息如下:

\n");

("\810101010s\n","学号","姓名","语文","数学","英语");

("810101010s\n","","","","","");

("810-10.1f-10.1f-10.1f\n"[n][n],

[n][0][n][1][n][2]);

下面输入新学员信息

("\n\n\n请输入修改后的\"学号\",\"学号\"不允许为空字符串:

");

("");

("\n请输入修改后的\"姓名\",注意\"姓名里\"不能加空格:

");

("");

("\n请输入修改后的\"语文成绩\":

");

(""[0]);

("\n请输入修改后的\"数学成绩\":

");

(""[1]);

("\n请输入修改后的\"英语成绩\":

");

(""[2]);

[n]把修改后的值保存到内存数组中

()把内存数据保存到外存数据文件中

("\n\n\t\t\t祝贺您修改成功!

");

}

显示完毕,提示用户返回主程序

("\n\n\t\t\t按任意键进入主目录...");

();从键盘收任一个字符即返回,该函数在中

}

()删除学员信息

{[80];

("");

("\n请输入要删除的学生的学号:

");

("");

();

(1)

("\n对不起,您要删除的学员不存在\n");

{您要修改的学员信息

("\n您要删除的学员信息如下:

\n");

("\810101010s\n","学号","姓名","语文","数学","英语");

("810101010s\n","","","","","");

("810-10.1f-10.1f-10.1f\n"[n][n],

[n][0][n][1][n][2]);

提示用户是否继续删除操作

("\n继续删除,请输入\"y\"或者\"Y\",否则,请输入\"n\"或者\"N\":

");

{("");

}(!

('y''Y''n''N'));

('n''N')("\n您已取消删除操作,删除不成功!

\n");

('y''Y')

{(<2)[i][1]删除指定学号

;

()把内存数据保存到外存数据文件中

("\n恭喜您已成功删除!

\n");

}

}

显示完毕,提示用户返回主程序

("\n\n\t\t\t按任意键进入主目录...");

();从键盘收任一个字符即返回,该函数在中

}

()对学员进行排序

{;代表用户所选择的子目录号

t;定义排序用的临时变量

{("");

("学员信息管理系统\n\n");

("以下是排序子目录,请选择功能\n\n");

("1)按学号升序\n2)按学号降序\n0)退出\n\n");

("键入功能前的数字后,按\"\"键:

");

();

()

{'1'按学号升序

("\n按学号升序结果如下:

\n");

(0<2)

(1<1)

(([i][j])>0)

{[i][i][j][j];}

();显示所有学员信息

显示完毕,提示用户返回主程序

("\n\n\t\t\t按任意键进入排序子目录...");

();从键盘收任一个字符即返回,该函数在中

();把内存中结构体数组中的学生数据保存到外存中

;

'2'按学号降序

("\n按学号降序结果如下:

\n");

(0<2)

(1<1)

(([i][j])<0)

{[i][i][j][j];}

();显示所有学员信息

显示完毕,提示用户返回主程序

("\n\n\t\t\t按任意键进入排序子目录...");

();从键盘收任一个字符即返回,该函数在中

();把内存中结构体数组中的学生数据保存到外存中

;

'0':

;退出

("请选择功能前的数字\n");

}

}('0');

显示完毕,提示用户返回主程序

("\n\n\t\t\t按任意键进入程序主目录...");

();从键盘收任一个字符即返回,该函数在中

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1