《C语言案例实践》学生成绩管理系统Word格式.docx
- 文档编号:18730504
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:29
- 大小:155.38KB
《C语言案例实践》学生成绩管理系统Word格式.docx
《《C语言案例实践》学生成绩管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《《C语言案例实践》学生成绩管理系统Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
2.系统总体设计
一、编写目的
根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案,并写出书面文档总体设计说明书,为下一步进行详细设计做准备。
二、总体设计
1.功能划分
该系统可以按功能进行模块划分,如图1所示。
学生信息管理系统
图1系统模块图
其中:
(1)菜单选择模块完成用户命令的接受,此模块也是学生信息管理的入口,用户所要进行的各种操作均需在此模块中进行选择,并进而调用其他模块实现相应的功能。
(2)信息输入模块完成学生信息的输入功能,输入信息包括姓名学号和成绩。
(3)信息浏览模块完成已录入学生信息的显示。
(4)信息查询模块完成学生信息的查询,查询时对应有按编号查询和按姓名查询两种方式。
(5)信息修改模块完成学生信息的修改功能。
(6)信息删除功能模块完成学生信息的删除功能。
2.数据结构
本系统中主要的数据结构就是学生的信息,包含姓名学号和成绩,在处理过程中各项可以作为一个学生的不同属性来进行处理。
3.程序流程
系统的执行应从功能菜单选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。
系统的流程图如图2所示:
图2程序流程图
3.详细设计
1.数据结构
(1)性别:
emumSex{male,female};
(2)学历:
enumEducation{high,junior,college,master,doctor};
(3)日期:
StructDate
{
intyear;
intmonth;
intday;
};
(4)学生信息:
StructInfo
{
charnum[5];
/*学生号*/
charname[8];
/*姓名*/
enumSexsex;
/*性别*/
structDatebirthday;
/*出生年月*/
enumEducationeducation;
/*学历*/
charduty[8];
/*职务*/
doublewage;
/*工资*/
charaddr[12];
/*地址*/
charphone[8];
/*电话*/
};
2.各个功能模块的处理流程
对应于总体设计时的系统模块图,各个功能模块的处理流程如下:
(1)信息输入模块
输入三个学生信息以初始化系统;
读入学生信息;
(2)信息浏览模块
依次输出学生信息;
(3)信息查询模块
while(继续查询)
{
if(按编号查询)
{
读入查询的学生编号;
顺序读出一个学生的信息;
if(该学生信息的编号符合条件)
输出该学生的信息;
}
}
elseif(按姓名查询)
读入查询的学生姓名;
if(该学生信息的姓名符合条件)
}
}
else
提示输入不合适;
提示是否继续查询;
}
(4)信息修改模版
while(继续修改)
提示并读入待修改的学生的编号;
顺序读出一个学生的信息;
if(该学生信息的编号符合条件)
将学生的信息进行修改;
显示修改后所有学生的信息;
}
(5)信息删除模块
while(继续删除)
提示并读入待删除的学生号;
查找是否有符合条件的学生记录;
if(有符合条件的记录)
while(所有学生信息未读完)
读出下一条记录;
if(此条记录不是待删除记录)
删除该学生信息记录;
else
提示没有符合条件的记录存在;
(7)信息排序模块
if(按姓名排序)
将第i个学生姓名和他的下一个学生姓名作对比
通过对比大小将学生信息交换依次排序;
elseif(按学号排序)
将第i个学生学号和他的下一个学生学号作对比
elseif(按成绩排序)
打印排序后的学生信息;
4.系统测试
一、设置测试数据
根据以下几个列子分析测试:
1.录入:
姓名tom学号0001成绩98
2.录入:
姓名lili学号0002成绩56
3.录入:
姓名alin学号0003成绩74
2.显示所有学生的信息。
3.增加一个学生的信息姓名john学号0004成绩88。
4.删除学生号为0002的学生信息。
5.将alin学号的信息由0003改为0005。
6.查找学号为0001的学生信息。
7.将所有学生的信息按成绩排序。
8.退出。
二、测试结果及分析
(1)学生信息录入分析图如图1所示:
(2)学生信息系统菜单界面如图2所示:
(3)显示学生信息如图3所示
(4)学生信息录入图如图4所示:
(5)学生信息删除如图5所示
(6)学生信息修改图如图6所示:
(7)学生信息查找图如图7所示:
(8)学生信息排序图如图8所示:
5.软件使用说明书
(1)根据正确的提示安装软件。
(2)Intel486以上系列、AMDK6以上系列等PC台式机和便携式电脑都可运行。
(3)打开该程序系统,浏览菜单,根据需要选择功能,进行各项操作。
操作如下:
输入三名学生信息以初始化程序
根据菜单提示输入需要的信息即可完成指令。
当信息输入正确,进入你所需要的菜单程序中:
学生信息:
显示姓名、学号、成绩。
设计总结
在本系统的开发过程中,由于组是初次开发软件,在知识、经验方面都存在着不足。
另外,在整个开发的过程中,时间也比较仓促。
因此,该系统必然会存在一些缺陷和不足。
因为对学生信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。
尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。
通过开发这个系统,我组掌握了的项目基本开发过程,用到的知识巩固了我组对C语言的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。
附录:
部分源程序代码
#include<
stdio.h>
//写入头文件
windows.h>
conio.h>
process.h>
math.h>
string.h>
typedefstructSTU{//建立链表
charname[10];
charnum[10];
intgrade;
}st;
typedefstructnode{
stdata;
structnode*next;
}node;
node*jianli();
//函数定义
intse();
voidxianshi(node*head);
voidzengjia(node*head);
node*shanchu(node*head);
voidxiugai(node*head);
voidchazhao(node*head);
voidpaixu(node*head);
node*jianli()//建立函数
{
inti;
node*he,*tail,*p;
he=tail=NULL;
printf("
************************************\n\t学生管理系统初始化\n************************************\n\n\n请先输入3位学生的有效信息:
\n"
);
for(i=0;
i<
3;
i++)
p=(node*)malloc(sizeof(node));
p->
next=NULL;
printf("
请输入第%d位学生的信息\n"
i+1);
scanf("
%s%s%d"
p->
data.name,p->
data.num,&
p->
data.grade);
while(atoi(p->
data.num)==0||p->
data.grade<
0)
{
您输入的信息有误,请重新输入!
"
if(he==NULL)
he=p;
else
tail->
next=p;
tail=p;
p=he;
system("
cls"
************************************\n\t学生管理系统初始化\n************************************\n\n\n\n"
while(p!
=NULL)
姓名:
%s学号:
%s分数:
%d\n"
data.num,p->
p=p->
next;
已录入三个基础学生信息,按任意键进入学生管理系统菜单\n"
getch();
returnhe;
voidmain()//主函数入口
inta;
node*head;
color2e"
head=jianli();
do{system("
a=se();
switch(a)//输入选择
case1:
xianshi(head);
break;
case2:
zengjia(head);
case3:
head=shanchu(head);
case4:
xiugai(head);
case5:
chazhao(head);
case6:
paixu(head);
case7:
exit(0);
}}while
(1);
intse()//菜单界面
inti,t;
chars[10];
char*menu[]={"
***********学生管理系统**************\n\n"
"
1:
显示学生信息\n"
2:
增加学生信息\n"
3:
删除学生信息\n"
4:
修改学生信息\n"
5:
查找学生信息\n"
6:
排序学生信息\n"
7:
exit\n\n"
*************************************\n"
};
for(i=0;
9;
printf("
%s"
menu[i]);
do
请输入数字命令:
scanf("
s);
t=atoi(s);
}while(t<
0||t>
7);
returnt;
voidxianshi(node*head)//显示学生信息函数
node*p;
p=head;
voidzengjia(node*head)//增加学生信息函数
node*p,*tail,*t;
while(p!
tail=p;
p=p->
请输入新增学生的学号:
data.num);
data.num)==0)
您输入的学号有误,请重新输入!
t=head;
while(t!
if(atoi(p->
data.num)==atoi(t->
data.num))
t=head;
printf("
***********学生管理系统**************\n\n学生的学号已被使用,请重新输入学号!
continue;
}
t=t->
请输入该学生的名字、分数\n"
%s%d"
data.name,&
tail->
system("
\n按任意键返回\n"
node*shanchu(node*head)//删除学生信息函数
chard[10];
node*p,*t,*flag=NULL;
请输入需要删除学生的学号:
d);
while(strcmp(d,t->
data.num)!
=0&
&
t->
next!
flag=t;
if(strcmp(d,t->
if(strcmp(d,head->
head=head->
free(p);
flag->
next=t->
free(t);
else
没有搜索到需要删除的学生信息,请核对后再输入"
p=head;
system("
return(head);
voidxiugai(node*head)//修改学生信息函数
intd,m,flag;
charc[10],n[10],ex;
do
{system("
按姓名查找需要修改的学生信息输入1,按学号查找需要修改的学生信息输入2\t"
c);
while(atoi(c)!
=1&
atoi(c)!
=2)
输入的指令有误,请重新输入\n"
if(atoi(c)==1)
请输入需要修改学生的姓名:
n);
m=strcmp(n,p->
data.name);
while(m!
m=strcmp(n,p->
if(m==0)
\n姓名:
flag=1;
没有搜索到需要修改的学生信息,请核对后再输入\n"
flag=0;
if(atoi(c)==2)
请输入需要修改学生的学号:
%d"
&
d);
while(d!
=atoi(p->
data.num)&
{p=p->
if(d==atoi(p->
if(flag==1)
请重新输入该学生的名字、学号、分数\n"
\n修改成功!
\n还需修改学生信息请按1,退出请按任意键:
ex=getchar();
还需删除学生信息输入1,退出请按任意键:
}while(ex=='
1'
voidchazhao(node*head)//查找学生信息函数
intc,d,m;
charex,n[10];
按姓名查找输入1,按学号查找输入2\t"
c);
while(c!
c!
输入的指令有误,请重新输入"
if(c==1)
请输入需要查找学生的姓名:
i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言案例实践 语言 案例 实践 学生 成绩管理系统