1、学生信息管理系统c代码学员信息管理系统(C语言项目制作)由于考试发的是全国信息化工程师“岗位技能”证书,比较重视项目制作能力和动手能力,要求学生必须做一个项目,该项目要有一定实用价值,本文讲述“学员信息管理系统”地制作,学完该项目后,关于用C语言编写、与数据管理有关的项目,大家应该都就会做了。一、软件需求分校1、任务描述随着学校规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长,学生信息管理工作变得更加复杂,需要规范的学生信息管理系统来提高工作效率。2、功能模块图13、功能演示3.1、启动软件,进入程序主界面(图2)图2按屏幕提示“按任意键初始化学员信息”:(图3)图3“按任意键进
2、入主目录”:(图4)图43.2、键入“1”,选择“显示”命令,可以显示所有学生信息:(图5)图53.3、返回主目录“图4”,键入“2”,选择“查找”命令,查找指定学号的信息:(图6是查找“002”号学员后,返回的学员信息):图63.4、返回主目录“图4”,键入“3”,选择“录入”命令,录入新的学员信息:(图7是录入“007”号学员信息的步骤和结果):图73.5、返回主目录“图4”,键入“4”,选择“修改”命令,可修改学员信息:(图8是录入“002”号学员信息的步骤和结果):图83.6、返回主目录“图4”,键入“5”,选择“删除”命令,可删除指定学员信息:(图9是成功删除“005”号学员信息的步
3、骤和结果):图9图10是删除“002”号学员不成功的步骤和结果:图 103.7、返回主目录“图4”,键入“6”,选择“排序”命令,可按学号排序:(图11是“按学号降序”的步骤和结果):图11图12是“按学号升序”的步骤和结果图12二、程序设计1、界面设计1.1、在软件开发中,程序界面有两种,如图13所示:图13第一种界面:提示用户如何操作,指令如下:(欢迎进入= = = = = = = =学员信息管理系统= = = = = = = =n);(nttt按任意键初始化学员信息.nn);第二种界面:返回程序运算的结果,会在后面“算法”中介绍。1.2、如何实现主目录界面?();(以下是程序主目录,请选
4、择功能nn);(1)显示n2)查找n3)录入n4)修改n5)删除n6)排序n0)退出nn);(键入功能前的数字后,按键:); 图141.3、如何实现“键入功能前的数字后”,就能选择相应的命令? (); () 1: (); ; 显示所有学员信息 2: (); ; 查询学员信息 3: (); ; 录入新学员信息 4: (); ; 修改学员信息 5: (); ; 删除学员信息 6: (); ; 对学员进行排序 0: ; 退出 (请选择功能前的数字n); (0);说明:“()”中,代表输入的数字字符;用语句实现选择对应的命令;“( )”函数实现“显示所有学员信息”;“1.4、如何实现“按任意键回到主目
5、录”?(nnttt按任意键进入主目录.);( ); 从键盘收任一个字符即返回,该函数在 中1.5、如何实现图15中“输出格式化”?图15(810101010sn,学号,姓名,语文,数学,英语);(810101010sn, = = = =,= = = =,= = = =,= = ,= =);(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、如何表
6、示学生信息的数据类型在本项目中,学生信息包括“学号、姓名、三门课的成绩”可以用结构体数据类型来表示: 定义学生信息结构体类型 10; 学号 16; 姓名 3; 定义成绩数组 ;2.2、关于文件包含在项目中用到了很多库函数,因此在程序起始位置,需要用到文件包含: 2.3、关于“全局变量”由于程序中用到大量的函数,因此可以设置全局变量。 ; 定义数据库实际学生数量 10000; 声明代表学生的结构体数组,假设最多有10000条数据2.4、关于“函数声明”程序中用到大量的自定义函数,它们可能是主调函数,也可能是被调函数,为了扩展它们的作用域,最好在程序前面加上函数声明。函数声明部分 ( ); 初始化
7、学员信息,把外存中学生数据读入到内存中 ( ); 把内存中结构体数组中的学生数据保存到外存中 ( ); 显示程序主目录 ( ); 显示所有学员信息 ( ); 录入新学员信息 ( 80)查找指定学号的学员,若找到返回该学员在数组中的下标,若没找到返回-1代表指定学号;在多个模块中用到该函数 ( ); 根据学号查找,并显示学员信息 ( ); 修改学员信息 ( ); 删除学员信息 ( ); 对学员进行排序 2.5、关于“数据文件”图16上面显示的是所有学生信息,这些学生数据在内存中的表现形式是常量、变量、数组和链表的方式,在外存中的表现形式是文件。由于断电后,内存信息会全部清空,因此,内存信息需要经
8、常存放到外存中。2.5.1、文件操作的步骤(1)打开文件:(2)对文件读写操作:、(3)关闭文件:2.5.2、从外存文件中读数据至内存数组 *(“”,r”);0是数据库中实际学生数量,其全局变量() 是代表学生的结构体数组 (, , i , i, 学号,姓名 i0, i1i2); ; 是三门课成绩的数组();2.5.3、把内存数组中数据输出到外存文件 *(“”,“w”);0;(0) (,810-10.1f-10.1f-10.1fn i , i, i0, i1i2); ”%-10.1f”中,“-”左对齐,“10”宽度,“.1”小数位数();3、主要算法的实现3.1、显示所有学员的信息(如图17)
9、图17方法:遍历数组,用函数显示数据。(0) (“810-10.1f-10.1f-10.1fn”,i , i, i0i1i2);其中,是“实际学生数量”;“代表学生信息的结构体数组”,“学号”,“姓名”,“三门课成绩的数组”。3.2、查找指定学号方法:遍历数组,查找指定学号的学员,函数返回值是找到后的学号的下标,如果指定学号不存在,返回-1 ; ( 80) 代表要查找的学号 i; (0) 代表实际的学生数量 (i)0) i; 是表示学生信息的结构体数组名 -1;3.3、插入新的学员信息图18方法:(1)依次输入新学员信息,并赋值给新变量s;(2)把s添加到数组中;(3)把内存数据保存至外存。
10、( )录入新学员信息 代表新学员信息 下面输入新学员信息 (nnn请输入学号,学号不允许为空字符串:); (); (n请输入姓名,注意姓名里不能加空格:); (); (n请输入语文成绩:); (0 ); (n请输入数学成绩:); (1 ); (n请输入英语成绩:); (2 ); 把s添加到结构体数组中;同时把表示学员数量的变量增加1 ; ( )函数把内存中结构体数组中的学生数据保存到外存中3.4、修改学员信息方法:(1)查找到指定学员的数组下标n;(2)输入修改后的学员信息,存贮到临时变量s中;(3)把s临时变量赋值给n,即n;(4)保存数据到外存文件。 ( ) 修改学员信息 80 作为临时变
11、量,临时存放修改后的学生信息 (n请输入要修改的学生的学号:); (); (); 函数返回要查找的学号的下标(nnn请输入修改后的学号,学号不允许为空字符串:);();(n请输入修改后的姓名,注意姓名里不能加空格:);();(n请输入修改后的语文成绩:);(0 );(n请输入修改后的数学成绩:);(1 );(n请输入修改后的英语成绩:);(2 ); n把修改后的值保存到内存数组中()把内存数据保存到外存数据文件中3.5、删除某学员信息方法:(1)查找到指定学员的数组下标n;(2)把后续数据前移,实现删除操作;(3)保存数据到外存文件。 ( )删除学员信息 80 ; (n请输入要删除的学生的学号
12、:); (); (); (2) i1删除指定学号;()把内存数据保存到外存数据文件中3.6、对学员排序下面是升序排序: (02)(10) iijj;三、对本项目的拓展1、本程序是用结构体数组实现,您可以用结构体链表来实现所有的算法;2、结构体的成员发生改变,本结构体成员有:学号、姓名、三门课成绩。您可以增加成员,如性别、年龄、或更多门课的成绩;3、把系统改为“教师信息管理系统”、“档案信息管理系统”、“订单管理系统”等。四、附完整的程序代码学员信息管理系统文本文件实时存储数据,运用结构体数组 ; 定义数据库实际学生数量 定义学生信息结构体类型 10; 学号 16; 姓名 3; 定义成绩数组 ;
13、 10000; 声明结构体数组,假设最多10000条信息函数声明部分 (); 初始化学员信息,把外存中学生数据读入到内存中 (); 把内存中结构体数组中的学生数据保存到外存中 (); 显示程序主目录 (); 显示所有学员信息 (); 录入新学员信息 ( 80)查找指定学号的学员,找到返回该学员在数组中的下标,没找到返回-1代表指定学号;在多个模块中用到该函数 (); 根据学号查找,并显示学员信息 (); 修改学员信息 (); 删除学员信息 (); 对学员进行排序函数定义 () 程序进入“欢迎界面” (nnnnntt欢迎进入学员信息管理系统n); 按任意键初始化学员信息 (nttt按任意键初始化
14、学员信息.nn); (); 从键盘收任一个字符即返回,该函数在中 ()初始化学员信息,把外存中学生数据读入到内存中 (ttt共有 条学员信息)是实际学生数量 (nnttt按任意键进入主目录.); (); 从键盘收任一个字符即返回,该函数在中 ()调出“程序主目录”显示和返回到程序主目录 () 代表用户所选择的子目录号 (); (学员信息管理系统nn); (以下是程序主目录,请选择功能nn); (1)显示n2)查找n3)录入n4)修改n5)删除n6)排序n0)退出nn); (键入功能前的数字后,按键:); (); () 1: 显示所有学员信息 (); (); 显示完毕,提示用户返回主程序 (nn
15、ttt按任意键进入主目录.); (); 从键盘收任一个字符即返回,该函数在中 ; 2(); ; 查询学员信息 3(); ; 录入新学员信息 4(); ; 修改学员信息 5(); ; 删除学员信息 6(); ; 对学员进行排序 0: ; 退出 (请选择功能前的数字n); (0); ()初始化学员信息,把外存中学生数据读入到内存中 *; (,r) (文件有错误!程序不能运行!n); ; 0是数据库中实际学生数量,是全局变量 () 是学号,是姓名,)是成绩 是学生结构体数组,全局变量 (, ,012); (,)0) 去掉学号为空字符串 ();把内存中结构体数组中的学生数据保存到外存中 () i; *
16、; (,w)以写的方式打开文件,覆盖原文件 (文件有错误!程序不能运行!n); ; 是学生结构体数组,全局变量 (0)代表实际的学生数量 (i,)0)去掉学号为空字符串的信息 (,810-10.1f-10.1f-10.1fnii,i0i1i2); (); ()显示所有学员信息 i; (810101010sn,学号,姓名,语文,数学,英语); (810101010sn, ,); (0) “-”表示数据左对齐,“10.1”中的10表示宽度,“.1”表示1位小数 (810-10.1f-10.1f-10.1fnii,i0i1i2);查找指定学号的学员,代表指定学号()的下标,如果指定学号不存在,返回-
17、1 ;在多个模块中用到该函数 ( 80) i; 是表示学生信息的结构体数组名 (0)代表实际的学生数量, (i)0) i; -1; () 根据学号查找,并显示学员信息 80 n; (); (n请输入要查询的学生的学号:); (); (); (1) (n对不起,您要查找的学员不存在n); (810101010sn,学号,姓名,语文,数学,英语); (810101010sn, ,); (810-10.1f-10.1f-10.1fnnn,n0n1n2); 显示完毕,提示用户返回主程序 (nnttt按任意键进入主目录.); (); 从键盘收任一个字符即返回,该函数在中 ()录入新学员信息 代表新学员信
18、息 i; 先显示已有学员信息 (); (当前学员信息如下:n); (810101010sn,学号,姓名,语文,数学,英语); (810101010sn, ,); (0) (810-10.1f-10.1f-10.1fnii,i0i1i2); 下面输入新学员信息 (nnn请输入学号,学号不允许为空字符串:); (); (n请输入姓名,注意姓名里不能加空格:); (); (n请输入语文成绩:); (0 ); (n请输入数学成绩:); (1 ); (n请输入英语成绩:); (2 ); 把临时变量s赋到结构体数组中;同时把表示学员数量的变量增加1 ; ()把内存中结构体数组中的学生数据保存到外存中 显示
19、完毕,提示用户返回主程序 (nnttt按任意键进入主目录.); (); 从键盘收任一个字符即返回,该函数在中 ()修改学员信息 80 s; (); (当前学员信息如下:n); ()先显示所有学员信息 (n请输入要修改的学生的学号:); (); (); (1) (n对不起,您要查找的学员不存在n); 您要修改的学员信息 (n您要修改的学员信息如下:n); (810101010sn,学号,姓名,语文,数学,英语); (810101010sn, ,); (810-10.1f-10.1f-10.1fnnn,n0n1n2); 下面输入新学员信息 (nnn请输入修改后的学号,学号不允许为空字符串:); (
20、); (n请输入修改后的姓名,注意姓名里不能加空格:); (); (n请输入修改后的语文成绩:); (0 ); (n请输入修改后的数学成绩:); (1 ); (n请输入修改后的英语成绩:); (2 ); n把修改后的值保存到内存数组中 ()把内存数据保存到外存数据文件中 (nnttt祝贺您修改成功!); 显示完毕,提示用户返回主程序 (nnttt按任意键进入主目录.); (); 从键盘收任一个字符即返回,该函数在中 ()删除学员信息 80 ; (); (n请输入要删除的学生的学号:); (); (); (1) (n对不起,您要删除的学员不存在n); 您要修改的学员信息 (n您要删除的学员信息如
21、下:n); (810101010sn,学号,姓名,语文,数学,英语); (810101010sn, ,); (810-10.1f-10.1f-10.1fnnn,n0n1n2); 提示用户是否继续删除操作 (n继续删除,请输入y或者Y,否则,请输入n或者N:); (); (!(yYnN); (nN) (n您已取消删除操作,删除不成功!n); (yY) (2) i1删除指定学号 ; ()把内存数据保存到外存数据文件中 (n恭喜您已成功删除!n); 显示完毕,提示用户返回主程序 (nnttt按任意键进入主目录.); (); 从键盘收任一个字符即返回,该函数在中 () 对学员进行排序 ; 代表用户所选
22、择的子目录号 t; 定义排序用的临时变量 (); (学员信息管理系统nn); (以下是排序子目录,请选择功能nn); (1)按学号升序n2)按学号降序n0)退出nn); (键入功能前的数字后,按键:); (); () 1按学号升序 (n按学号升序结果如下:n); (02) (10) iijj; (); 显示所有学员信息 显示完毕,提示用户返回主程序 (nnttt按任意键进入排序子目录.); (); 从键盘收任一个字符即返回,该函数在中 (); 把内存中结构体数组中的学生数据保存到外存中 ; 2按学号降序 (n按学号降序结果如下:n); (02) (11) (ij)0) iijj; (); 显示所有学员信息 显示完毕,提示用户返回主程序 (nnttt按任意键进入排序子目录.); (); 从键盘收任一个字符即返回,该函数在中 (); 把内存中结构体数组中的学生数据保存到外存中 ; 0: ; 退出 (请选择功能前的数字n); (0); 显示完毕,提示用户返回主程序 (nnttt按任意键进入程序主目录.); (); 从键盘收任一个字符即返回,该函数在中
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1