c语言学生管理系统Word文档下载推荐.docx
- 文档编号:18094671
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:24
- 大小:514.31KB
c语言学生管理系统Word文档下载推荐.docx
《c语言学生管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言学生管理系统Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
团队整体成绩:
成员成绩
****
1309060****5
综合成绩
一、问题描述及分析
1、如何保存输入的学生信息,使其利于后续工作的开展,使用结构体数组明显满足不了这种要求,经过反复实验,只有while循环最适合。
2、全局变量的不正确使用容易使程序出现混乱,必须在每次使用后确定全局变量n的大小。
3、变量依据使用情况而定,每次使用新的变量时要到前面进行定义,避免编译、链接或运行时出现错误。
二、功能模块及数据结构描述
1、voidpaixu(structstudents[])自定义排序函数
2、voidcharu(structstudentstu[])自定义信息插入函数
3、voidcheck(structstudentstu[],intxuehao)自定义依据学号查询函数
4、voidxiugai(structstudentstu[],intxuehao)自定义信息修改函数
5、voidshanchu(structstudentstu[],intxuehao)自定义信息插入函数
6、voidbijiao(structstudentstu[],charxingming[])自定义依据姓名查询函数
三、部分核心算法及主要算法流程描述
流程图如下图所示。
开始
定义变量
进入菜单
退出学生管理系统
按学号查询信心
按姓名查询信息
学生信息增添
学生信息删除
学生信息修改
学生信息录入
按学号进行排序
结束
核心算法为:
1、冒泡排序法(依据学号对学生进行排序)
voidpaixu(structstudents[])//自定义排序函数————<
排序>
{
structstudenttemp;
inti,j;
for(i=0;
i<
n-1;
i++)//冒泡排序法
for(j=0;
j<
n-1-i;
j++)
if(s[j].num>
s[j+1].num)
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
printf("
这%d个学生的信息为:
\n"
n);
学号:
姓名:
年龄:
性别:
出生年月日:
地址:
电话:
E-mail:
);
for(j=0;
n;
if(s[j].num!
=0)
%d%s%d%s%d%d%d%s%s%s\n"
s[j].num,s[j].name,s[j].age,s[j].secx,s[j].year,s[j].month,s[j].day,s[j].add,s[j].pho,s[j].em);
}
2、用switch结构构建菜单
switch(m)
case1:
printf("
请逐个输入学生信息:
scanf("
%d%s%d%s%d%d%d%s%s%s"
&
stu[i].num,stu[i].name,&
stu[i].age,stu[i].secx,&
stu[i].year,&
stu[i].month,&
stu[i].day,stu[i].add,stu[i].pho,stu[i].em);
while(stu[i].num!
=0)//利用while循环实现学生信息的输入
{
n++;
请输入下一个学生的信息:
i++;
if(stu[i].num==0)
i--;
printf("
学生信息录入结束!
!
break;
}
printf("
for(i=0;
i++)
%d%s%d%s%d%d%d%s%s%s\n"
stu[i].num,stu[i].name,stu[i].age,stu[i].secx,stu[i].year,stu[i].month,stu[i].day,stu[i].add,stu[i].pho,stu[i].em);
case2:
对信息录入错误的学生信息进行修改:
//信息修改
请输入信息错误的学生的学号:
scanf("
%d"
xuehao);
while(xuehao!
xiugai(stu,xuehao);
//子函数中信息修改函数的入口
请输入下一个信息错误的学生的学号:
if(xuehao==0)
printf("
学生信息修改结束!
case3:
按照学号对这%d个学生进行排序!
//按学号排序
paixu(stu);
//子函数中排序函数的入口
break;
case4:
对信息遗漏的同学进行信息采集,并按照学号递增顺序插入!
//按学号插入遗漏学生信息
请输入遗漏的学生的信息:
i=n;
while(stu[i].num!
请输入下一个遗漏的学生的信息:
i++;
if(stu[i].num==0)
{
n=i;
i--;
charu(stu);
//子函数中信息插入函数的入口
case5:
下面请按照学号查询学生信息!
//按学号查询学生信息
请输入要查询的学生的学号:
check(stu,xuehao);
//子函数中查询函数(按学号查询)的入口
请输入要查询的下一个学生的学号:
if(xuehao==0)
本次查询结束!
case6:
下面请按照姓名查询学生信息!
//按照姓名查询学生信息
请输入要查询的学生的姓名:
%s"
xingming);
while(strcmp(xingming,"
0"
)!
bijiao(stu,xingming);
//子函数中查询函数(按姓名查询)的入口
请输入要查询的下一个学生的姓名:
if(strcmp(xingming,"
)==0)
};
case7:
按学号删除学生信息!
//删除学生信息
请输入要删除的学生的学号:
shanchu(stu,xuehao);
//子函数中信息删除函数的入口
请输入要删除的下一个学生的学号:
信息删除工作结束!
四、系统使用说明
1、进入学生管理系统
在界面中输入1进行学生信息录入,并录入以下信息:
1111111111
7777777777
3333333333
9999999999
5555555555
2、信息录入结束后出现如下界面
3、在菜单中选择3,实现按照学号对学生信息进行排序,界面中会输出排序后的学生信息如下:
4、在菜单中选择2,按照学号对学生信息进行修改,界面中会提示输入信息错误的学生的学号,待输入5后,如下图:
5、确认该生信息错误后输入正确的信息:
6、确认所有学生信息无误后输入0结束修改。
在菜单中选择4对信息遗漏的学生进行信息增添,并输入学号为6的学生的信息:
7、输入学生信息后,程序会自动将该学生的信息插入,并按照学号对所有学生的信息进行排序并输出,如下图:
8、在菜单中选择5按学号对这些学生进行信息查询,查询学号为3的学生的信息:
9、在菜单中选择6按学号对这些学生进行信息查询,查询学号为7的学生的信息:
10、在菜单中选择7按学号对这些学生进行信息查询,查询学号为3的学生的信息:
11、在菜单中选择0结束学生管理工作:
以上是本程序的调试过程!
五、问题及解决办法
①变量忘记定义就在函数中使用
②全局变量代表管理的学生的个数,在程序中使用的比较混乱,在学生信息删除后全局变量没有变化,导致输出时发生错误
③对switch结构掌握的不够牢固,使用时出现错误
④从实际参数向形式参数传递数据时出现错误,导致子函数在处理数据时出现错误
⑤删除学生信息时利用信息覆盖出现错误,没有处理好n与i的关系。
六、课外实践总结
经过几周的课程设计,巩固和加深了我们对C程序的理解,提高了综合运用课本所学知识的能力。
培养了我们独立思考,深入研究、分析问题、解决问题的能力。
按照要求编写程序设计报告,能正确阐述设计和实验结果,正确绘制系统和程序框图。
同时,通过这次课程设计我们发现,数据结构基础掌握的还不够扎实,有很多地方还需要继续努力,为走向社会打下一个良好的基础。
七、源程序
#include<
stdio.h>
string.h>
structstudent//定义结构体
intnum;
charname[20];
intage;
charsecx[5];
intyear;
intmonth;
intday;
charadd[100];
charpho[20];
charem[20];
};
intn=0;
voidmain()
voidpaixu(structstudents[]);
voidcharu(structstudentstu[]);
voidcheck(structstudentstu[],intxuehao);
voidxiugai(structstudentstu[],intxuehao);
voidshanchu(structstudentstu[],intxuehao);
voidbijiao(structstudentstu[],charxingming[]);
intm;
inti=0;
intxuehao;
charxingming[22];
structstudentstu[222];
//自定义结构体数组
*******************************************************************************\n"
*****************************欢迎使用学生管理系统******************************\n"
****信息录入请按1;
信息修改请按2;
排序请按3;
增添学生信息请按4;
按学号查询请按5****\n"
***********************按姓名查询请按6;
删除信息请按7***************************\n"
m);
while(m>
0&
&
m<
8)
{
switch(m)
while(stu[i].num!
n++;
i++;
}
}
**************************感谢使用学生管理系统!
***************************\n"
*****************************本程序运行结束!
******************************\n"
//externn;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)