c语言课程方案设计书学生信息管理系统.docx
《c语言课程方案设计书学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程方案设计书学生信息管理系统.docx(35页珍藏版)》请在冰豆网上搜索。
c语言课程方案设计书学生信息管理系统
封面
作者:
PanHongliang
仅供个人学习
课程设计报告
课程名称:
高级语言程序设计课程设计
姓名:
汤璞君
班级学号:
BX1209121003410937
指导教师:
吉顺如
完成日期:
2013.6.15
学生信息管理系统
1课程设计目的与要求
1.1课程设计目的
本课程设计是在学习C++基本理论之后的实践教案环节。
该实践教案是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。
要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。
学生通过课程设计在下述各方面得到锻炼:
1.能根据实际问题的具体情况,结合C++的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。
2.提高程序设计和调试能力。
学生通过上机实习,验证自己设计的算法和程序的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。
1.2课程设计要求
通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。
特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。
通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用。
具体如下:
(1)数据组织方面尽量使用到:
数组、链表、结构体、文件;
(2)程序结构方面做到函数调用,尽量采用指针运算;
(3)代码编写规范,形成良好的编程习惯;
(4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。
(5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。
课设报告内容包括以下几个方面:
●程序的总体设计和算法分析。
●程序流程图、函数说明
●源程序代码清单
●测试数据和测试过程记录
●遇到的问题及解决方法分析
●课程设计小结
1.3课程设计的评价
通过此次课程设计,我的知识面得到了扩展,发现课本上的东西是远远不够的,需要上网找资料寻找补充,而且小组合作的形式可以互相交流知识,弥补自己的不足。
通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。
提高程序开发能力。
2问题描述
设计一个学生信息管理系统,其中包括:
学生基本信息:
如学号、姓名、性别、年龄、地址、电话等。
功能包括:
1.系统菜单形式显示
2.学生信息录入功能—输出
3.学生信息浏览功能—输出
4.查询、排序功能—算法
按学号查询
按姓名查询
5.学生信息的删除与修改
3总体设计
3.1功能分析
3.1.1菜单模块
通过while语句
给出信息提示;
清屏;
绘制菜单(包含输入,浏览,查询,修改,删除,排序,保存,退出);
提示菜单选择并读入到变量;
根据读入变量的值调用不同的模块函数;
3.1.2信息录入模块
打开文件
While()
{清屏;
按照提示输入各种信息;
While
显示各种信息;
通过选择1.确认并继续2.重新填写3.放弃并返回4.确认并返回
选择四种功能;
}
}
3.1.3信息浏览模块
打开文件
While()
{清屏;
用for语句依次按照顺序输出学生信息
通过选择可以翻页1.上一页2.下一页0.退出
}
3.1.4信息查询
While()
{通过菜单式的选择是学号查询还是姓名
printf("******学生信息管理系统******")。
printf("\n----------检索----------")。
printf("\n您想要:
")。
printf("\n1.按学号检索")。
printf("\n2.按姓名检索")。
printf("\n3.返回主菜单")。
printf("\n****************************\n")。
}
如果选择学号进入学号模块
通过输入学号
If(学号存在继续)
{输出学生信息
}
Else输出无此学生
如果选择姓名进入姓名模块
If(根据比较姓名判断学生是否存在)
{输出学生信息
}
Else输出无此学生
3.1.5删除模块
while(继续删除)
{
提示并读入待删除的学生的学生号;
显示要删除的信息
}
删除成功
3.1.6信息修改模块
输入要修改学生信息的学号:
If(判断是否有此学生)
{菜单形式显示要修改的工程
printf("\n1.姓名2.年龄3.性别4.出生年月5.地址6.电话7.E-mail\n")。
printf("\n8.数学9.英语\n")。
}
Swich()
{选择要修改的工程进行修改
}
3.1.7打开文件模块
voidfileopen()
{
FILE*fp。
intn。
if((fp=fopen("data","r+"))==NULL)
fp=fopen("data","w+")。
for(n=0。
n<100。
n++)
fread(&stu[n],sizeof(structstudent),1,fp)。
fread(&stunum,4,1,fp)。
fclose(fp)。
}
3.1.8保存文件模块
voidfilesave()
{
intn。
FILE*fp。
fp=fopen("data","r+")。
for(n=0。
n<100。
n++)
fwrite(&stu[n],sizeof(structstudent),1,fp)。
fwrite(&stunum,4,1,fp)。
fclose(fp)。
printf("保存成功!
pressEntertocontinue..")。
getch()。
}
3.1.9退出模块
case'8':
ma=0。
break。
用的是跳出while语句
回到安全模块
3.1.10排序模块
通过冒泡排序法
for(m=0。
mm++)
for(x=m+1。
xx++)
if(stu[m].sum{
stu[99]=stu[m]。
stu[m]=stu[x]。
stu[x]=stu[99]。
stu[99].id=stu[x].id。
stu[x].id=stu[m].id。
stu[m].id=stu[99].id。
}
printf("排序后的顺序为:
\n")。
然后显示排序好后的学生信息;
3.2系统主要函数
多功能计算器采用结构化程序设计思想,程序中除主函数外,共设计了23个函数,函数原型及功能说明如表3.2.1所示。
表3.2.1函数原型及功能说明
序号
函数原型
功能说明
1
voidcalculate1()
调用整数运算的相关函数
2
voidzhengshu()
整数的运算的头文件
3
voidcalculate2()
调用实数运算的相关函数
4
voidshishu()
实数的运算的头文件
5
voidcalculate3()
调用分数运算的相关函数
6
voidfenshu()
分数的运算的头文件
7
typedefstructfushu
抽象数据类型定义
8
floatreal
数据对象
9
floatimage
定义构造复数的函数
10
fushuComplexNumberInput(floata,floatb)
构造复数二元组
11
fushuComplexNumberAdd(fushuc1,fushuc2)
复数的求和运算
12
fushuComplexNumberSub(fushuc1,fushuc2)
复数的求差运算
13
fushuComplexNumberMul(fushuc1,fushuc2)
复数的求积运算
14
fushuComplexNumberDiv(fushuc1,fushuc2)
复数的求商运算
15
voidComplexNumberOutput(fushuc)
输出复数的运算结果
16
voidfushi()
复数的运算的头文件
17
typedefstructLinknode
定义链表节点的数据类型为Node
18
structLinknode*next
定义链表节点的数据类型为Node
19
Node*createlink()
创建链表并读入多项式的指数和系数
20
voidSum(Node*pa,Node*pb)
两个一元多项式相加
21
voidmus(Node*pa,Node*pb)
两个一元多项式相减
22
voidprint(Node*p)
输出程序中所有的项
23
voidyiyuanduoxiangshi()
一元多项式的运算的头文件
4详细设计
主模块
4.1程序总体结构图
主函数
4.2主函数流程图
各部分模块
4.3信息的录入流程图
4.4学生信息浏览流程图
4.5按姓名或学号查询流程图
4.6信息的删除流程图
5功能测试
5.1系统主界面
5.1系统主界面
5.2录入学生信息功能
5.2.1录入学生信息界面
5.2.2录入学生信息界面
5.2信息浏览功能
5.2信息浏览界面
5.3信息修改功能
5.3.1信息修改界面
5.4信息检索功能
5.4.1信息检索界面
5.4.2按学号检索界面
5.4.4按姓名检索界面
6程序设计调试情况分析
1.问题:
c程序运行不出来,几个头文件中出现了相同的函数;
解决方法:
改变头文件中相同名字的函数名。
2.问题:
调用检索函数一闪而过。
解决方法:
添加getchar()语句使程序暂停。
3.问题:
无法有效的控制输出函数循环终止。
解决方法:
添加全局变量“stunum”,使用该全局变量来记录学生总数,从而控制输出循环的次数
4.问题:
查询函数数据量过多时同时输出,先输出的内容无法查看,或需用户自行查看。
解决方法:
添加getchar()语句使程序暂停,当用户按Enter时继续。
5.问题:
调试时,有的时候编译后没什么问题,就是在点击连接link时出现了错误;
解决方法:
将源程序保存,然后关掉MicrosoftVisualC++6.0,重新启动MicrosoftVisualC++6.0。
7课程设计小结
通过此次课程设计,我基本上对制作一个相对来说比较完整的程序有了一定的认识和了解。
这一周多来的制作,不但对C语言的知识有了一定的巩固,还增加了我们的动手能力。
学生信息管理系统,涉及到结构体,链表,文件和循环的知识,所以尤其对这几个方面有所加深和巩固。
其中又包括结构体的赋值,写到文件中。
从文件中赋值给结构体。
等等。
还能够通过编译时出现的出错提示信息,进行初步的纠错。
完成一个程序的一般步骤为设计,录入,编译,如果出错,则修改,然后
再编译,编译成功后,看看结果是否正确,如果结果不正确,则再重复以上步骤。
小组