学生信息管理系统.docx
《学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
学生信息管理系统
C语言程序设计课程设计任务书
一、设计题目
学生信息管理系统(难度系数★★★)
二、设计主要容
主要容:
该系统通过结构体数组或链表实现了对学生信息的批量录入、浏览、修改、删除、添加和查询功能。
具体要求如下:
学生信息包括:
学号、、性别、出生年月、地址、,试设计学生信息管理系统,使之能提供以下功能:
(1)基本功能:
①系统以文字菜单方式工作:
提供一个字符主菜单使用户可以选择不同的字符来实现系统的各个功能,各个功能实现后又能够返回到主菜单。
②批量录入功能:
在录入的过程中,通过询问用户是否继续录入的方法来录入多个学生的信息。
③浏览功能:
按一定的格式显示所有学生信息。
④修改功能:
输入要修改的学号,先对该学号进行查询,如果查询成功,则可以根据提示对该学生每项信息进行修改,如果查询不成功,则显示相应的提示信息。
⑤删除功能:
输入要删除的学号,先对该学号进行查询,如果查询成功,则删除该学生的所有信息,如果查询不成功,则显示相应的提示信息。
⑥添加功能:
输入要添加的学号,先对该学号进行查询,如果查询成功,则提示输入的学号已存在的信息,并要求能够重新输入,如果查询不成功,则输入该学生的其他信息,从而完成一个学生信息的录入。
⑦查询功能:
能够分别按输入的学号和查询学生信息,如果查询成功,则按一定的格式显示查询结果,如果查询不成功,则显示相应的提示信息。
(2)扩展功能:
①保存功能:
首先提示用户输入保存的文件名,将结构体数组或链表中的学生信息保存在指定的文件中。
②顺序浏览:
按照学号的顺序显示所有学生信息。
三、原始资料
[1]作者.书名.出版地:
,2008
四、要求的设计成果
(1)实现该系统功能的程序代码
(2)撰写符合规要求的课程设计报告
五、进程安排
序号
课程设计容
学时分配
备注
1
选题与搜集资料
1天
2
分析与设计
1天
3
模块实现
4天
4
系统调试与测试
2天
5
撰写课程设计报告
2天
合计
10天
六、主要参考资料
[1] 梁旭,谷晓琳,黄明.C语言课程设计.第2版.:
电子工业,2009.
[2] 王新.C语言课程设计.:
清华大学,2009.
[3]谭浩强.C语言程序设计.:
清华大学,2011.
指导教师(签名):
20年月日
1系统需求分析………………………………………………………………………………1
1.1系统概述………………………………………………………………………………1
1.2系统功能分析…………………………………………………………………………1
2系统结构设计………………………………………………………………………………2
2.1系统结构图……………………………………………………………………………2
2.2函数详细说明…………………………………………………………………………3
3系统实现……………………………………………………………………………………4
4系统测试……………………………………………………………………………………14
结论……………………………………………………………………………………………18
1系统需求分析
1.1系统概述
学生信息是学校管理中一项繁琐的工作。
纸质的学生信息登记表已经不能满足我们的要求,更新麻烦,查询困难等缺点是纸质信息登记表所不能克服的。
在此情况下,迫切需要一个电子版的学生管理系统来满足我们的需求,对学生信息进行必要的管理,能够使管理人员、班主任和任课教师对记录查询更加方便。
考虑到要对学生信息进行快速检索,所以采用结构体数组实现学生信息管理系统。
要现插入、查找、删除、修改、保存等基本功能,人机界面友好,使用文字化界面。
为此,设计一套实用的学生信息管理系统就可以大大简化管理人员、班主任和任课教师的工作,方便学生查询自己的学习情况。
1.2系统功能分析
①系统以文字菜单方式工作:
提供一个字符主菜单使用户可以选择不同的字符来实现系统的各个功能,各个功能实现后又能够返回到主菜单。
②批量录入功能:
在录入的过程中,通过询问用户是否继续录入的方法来录入多个学生的信息。
③浏览功能:
按一定的格式显示所有学生信息。
④修改功能:
输入要修改的学号,先对该学号进行查询,如果查询成功,则可以根据提示对该学生每项信息进行修改,如果查询不成功,则显示相应的提示信息。
⑤删除功能:
输入要删除的学号,先对该学号进行查询,如果查询成功,则删除该学生的所有信息,如果查询不成功,则显示相应的提示信息。
⑥添加功能:
输入要添加的学号,先对该学号进行查询,如果查询成功,则提示输入的学号已存在的信息,并要求能够重新输入,如果查询不成功,则输入该学生的其他信息,从而完成一个学生信息的录入。
⑦查询功能:
能够分别按输入的学号和查询学生信息,如果查询成功,则按一定的格式显示查询结果,如果查询不成功,则显示相应的提示信息。
(2)扩展功能:
①保存功能:
首先提示用户输入保存的文件名,将结构体数组或链表中的学生信息保存在指定的文件中。
②顺序浏览:
按照学号的顺序显示所有学生信息。
2系统结构设计
2.1系统结构图
开始
主菜单
浏览
修改地址
录入
修改
删除
添加
查询
退出
继续录入
查询
修改出生年月
修改姓名
修改电话号码
修改性别
修改学号
继续添加
主菜单
结束
保存
2.2函数详细说明
1.主函数:
调用桌面函数。
2.桌面函数:
调用每个功能函数,实现浏览,录入,修改,删除,添加,查询,学生信息的功能。
3.浏览函数:
调用读取函数,排序函数和表格函数。
4.录入函数:
批量录入学生信息。
5.查询函数:
按输入的学号或查询学生信息,如果查询成功,则按一定的格式显示查询结果,如果查询不成功,则显示相应的提示信息。
6.排序函数:
将输入数组中的学生信息按学号排序。
7.表格函数:
将学生信息以表格形式输出。
8.修改函数:
输入要修改的学号,先对该学号进行查询,如果查询成功,则可以根据提示对该学生每项信息进行修改,如果查询不成功,则显示相应的提示信息。
9.删除函数:
输入要删除的学号,先对该学号进行查询,如果查询成功,则删除该学生的所有信息,如果查询不成功,则显示相应的提示信息。
10.添加函数:
输入要添加的学号,先对该学号进行查询,如果查询成功,则提示输入的学号已存在的信息,并要求能够重新输入,如果查询不成功,则输入该学生的其他信息,从而完成一个学生信息的录入。
11.保存函数:
将结构体数组中的学生信息保存在指定的文件中。
12.读取函数:
查找用户先前保存学生信息的文件,读出先前保存的学生信息。
3系统实现
3.1预处理
#include//标准输入/输出函数库
#include//标准函数库
#include//字符串处理函数库
3.2数据类型定义
intn;
structstudent
{
charnum[20];//学号
charname[20];//
charsex[20];//性别
chartime[20];//出生年月
charaddress[20];//地址
chartel[20];//
}s[100];
3.3主函数
intmain()
{
voidindex();//桌面函数声明
index();
return0;
}
3.4桌面函数
voidindex()//桌面函数
{
voidoutput();//浏览函数声明
voidinput();//录入函数声明
voidrevise();//修改函数声明
voiddel();//删除函数声明
voidadd();//添加函数声明
voidsearch();//查询函数声明
intx;
system("cls");//清屏
printf("========================================\n");
printf("|学生成绩管理系统\n");
printf("+---------------------------------------\n");
printf("|1.浏览学生信息\n");
printf("|2.录入学生信息\n");
printf("|3.修改学生信息\n");
printf("|4.删除学生信息\n");
printf("|5.添加学生信息\n");
printf("|6.查询学生信息\n");
printf("|7.退出\n");
printf("+---------------------------------------\n");
printf(">请选择:
");
scanf("%d",&x);
if(x==1)output();
if(x==2)input();
if(x==3)revise();
if(x==4)del();
if(x==5)add();
if(x==6)search();
if(x==7)exit(0);
}
3.5浏览函数
voidoutput()//浏览函数
{
voidread();//读取函数声明
voidpaixu();//排序函数声明
voidexcel();//表格函数声明
intx;
system("cls");
read();
paixu();
excel();
printf("按任意键返回菜单..");
getchar();
getchar();
index();
}
3.6录入函数
voidinput()//录入函数
{
voidsave();//保存函数声明
voidindex();//桌面函数声明
inti,x;
n=1;
system("cls");
printf(">请输入学生信息:
\n");
for(i=0;i{
printf("学号:
");scanf("%s",&s[i].num);
printf(":
");scanf("%s",&s[i].name);
printf("性别:
");scanf("%s",&s[i].sex);
printf("出生年月:
");scanf("%s",&s[i].time);
printf("地址:
");scanf("%s",&s[i].address);
printf(":
");scanf("%s",&s[i].tel);
printf("-------------------------------------\n");
printf("1继续输入\n2保存并返回主菜单\n");
printf("-------------------------------------\n");
printf(">请选择:
");
scanf("%d",&x);
if(x==1)
n=n+1;
if(x==2)
{
save();
index();
}
}
}
3.7查询函数
voidsearch()//查询函数
{
voidindex();//桌面函数声明
inti,x;
chara[20];
system("cls");
printf(">请输入要查询的学号或:
");
scanf("%s",&a);
printf("+----------+----------+----------+------------+------------+------------+\n");
printf("|学号||性别|出生年月|地址||\n");
printf("+----------+----------+----------+------------+------------+------------+\n");
for(i=0;i{
if(strcmp(a,s[i].num)==0||strcmp(a,s[i].name)==0)
{
printf("|%10s|%10s|%10s|%12s|%12s|%12s|\n",s[i].num,s[i].name,
s[i].sex,s[i].time,s[i].address,s[i].tel);
printf("+----------+----------+----------+------------+------------+------------+\n");
break;
}
if(i==n)
printf("没有这个学生的纪录\n");
}
printf("1继续查询\n2返回主菜单\n");
printf(">请选择:
");
scanf("%d",&x);
if(x==1)search();
if(x==2)index();
}
3.8排序函数
voidpaixu()//排序函数
{
inti,j;
chara[20];
for(j=0;j{
for(i=0;iif(strcmp(s[i].num,s[i+1].num)>0)
{
strcpy(a,s[i].num);
strcpy(s[i].num,s[i+1].num);
strcpy(s[i+1].num,a);
strcpy(a,s[i].name);
strcpy(s[i].name,s[i+1].name);
strcpy(s[i+1].name,a);
strcpy(a,s[i].sex);
strcpy(s[i].sex,s[i+1].sex);
strcpy(s[i+1].sex,a);
strcpy(a,s[i].time);
strcpy(s[i].time,s[i+1].time);
strcpy(s[i+1].time,a);
strcpy(a,s[i].address);
strcpy(s[i].address,s[i+1].address);
strcpy(s[i+1].address,a);
strcpy(a,s[i].tel);
strcpy(s[i].tel,s[i+1].tel);
strcpy(s[i+1].tel,a);
}
}
}
3.9表格函数
voidexcel()//表格函数
{
inti;
printf("+----------+----------+----------+------------+------------+------------+\n");
printf("|学号||性别|出生年月|地址||\n");
printf("+----------+----------+----------+------------+------------+------------+\n");
for(i=0;i{
printf("|%10s|%10s|%10s|%12s|%12s|%12s|\n",s[i].num,s[i].name,
s[i].sex,s[i].time,s[i].address,s[i].tel);
printf("+----------+----------+----------+------------+------------+------------+\n");
}
}
3.10修改函数
voidrevise()//修改函数
{
voidsave();//保存函数声明
voidindex();//桌面函数声明
inti,x;
chara[20];
system("cls");
printf(">请输入要查询的学号:
");
scanf("%s",&a);
for(i=0;i{
if(strcmp(a,s[i].num)==0)
{
printf("+----------+----------+----------+------------+------------+------------+\n");
printf("|学号||性别|出生年月|地址||\n");
printf("+----------+----------+----------+------------+------------+------------+\n");
printf("|%10s|%10s|%10s|%12s|%12s|%12s|\n",s[i].num,s[i].name,
s[i].sex,s[i].time,s[i].address,s[i].tel);
printf("+----------+----------+----------+------------+------------+------------+\n");
printf("*************************************************************************\n");
printf("1修改学号\n2修改\n3修改性别\n4修改出生年月\n5修改地址\n6修改\n");
printf(">请选择:
");
scanf("%d",&x);
if(x==1)
{
printf("请输入新学号:
");
scanf("%s",&s[i].num);
}
if(x==2)
{
printf("请输入新:
");
scanf("%s",&s[i].name);
}
if(x==3)
{
printf("请输入新性别:
");
scanf("%s",&s[i].sex);
}
if(x==4)
{
printf("请输入新出生年月:
");
scanf("%s",&s[i].time);
}
if(x==5)
{
printf("请输入新地址:
");
scanf("%s",&s[i].address);
}
if(x==6)
{
printf("请输入新:
");
scanf("%s",&s[i].tel);
}
}
if(i==n-1)
printf("没有这个学生的纪录\n");
}
printf("--------------------------------------------------------------\n");
printf("1继续修改\n2保存并返回主菜单\n");
printf(">请选择:
");
scanf("%d",&x);
if(x==1)
revise();
if(x==2)
{
save();
index();
}
}
3.11删除函数
voiddel()//删除函数
{
voidsave();//保存函数声明
voidindex();//桌面函数声明
inti,x;
chara[20];
system("cls");
printf("请输入要删除的学号:
");
scanf("%s",a);
printf("----------------------------------\n");
for(i=0;i{
if(strcmp(a,s[i].num)==0)
{
strcpy(s[i].num,s[n-1].num);
strcpy(s[i].name,s[n-1].name);
strcpy(s[i].sex,s[n-1].sex);
strcpy(s[i].time,s[n-1].time);
strcpy(s[i].address,s[n-1].address);
strcpy(s[i].tel,s[n-1].tel);
n=n-1;
printf("存在该生信息,删除了该生信息!
\n");
}
else
printf("没有这个学生的纪录\n");
}
printf("-------------------------------------\n");
printf("1继续删除\n2保存并返回主菜单\n");
printf(">请选择:
");
scanf("%d",&x);
if(x==1)
del();
if(x==2)
{
save();
index();
}
}
3.12添加函数
voidadd()//添加函数
{
voidsave();//保存函数声明
voidindex();//桌面函数声明
inti,x;
chara[20];
system("cls");
printf("请输入要添加学生的学号:
");
scanf("%s",a);
for(i=0;i{
if(strcmp(a,s[i].num)==0)
{
printf("输入的学号已存在!
请重新输入:
");
scanf("%s",a);
}
break;
}
n=n+1;
printf(">请输入学生信息:
\n");
printf("学号:
");scanf("%s",&s[n-1].num);
printf(":
");scanf("%s",&s[n-1].name);
printf("性别:
");scanf("%s",&s[n-1].sex);
printf("出生年月:
");scanf("%s",&s[n-1].time);
printf("地址:
");scanf("%s",&s[n-1].address);
printf(":
");scanf("%s",&s[n-1].tel);
printf("-----------------------------------------\n");
printf("1继续添加\n2保存并返回主菜单\n");
printf("