《高级语言程序设计》课程设计报告.docx
《《高级语言程序设计》课程设计报告.docx》由会员分享,可在线阅读,更多相关《《高级语言程序设计》课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
《高级语言程序设计》课程设计报告
学号
2013-2014学年第二学期
《高级语言程序设计》
课程设计报告
题目:
班级档案管理系统
专业:
网络工程
班级:
二
姓名:
朱和芳
指导教师:
孙妍姑
成绩:
计算机与信息工程系
2014年5月11日
]班级档案管理系统
设计总说明
一、设计目的
运用计算机语言设计班级档案管理,通过此次课程设计,加深对此课程基本知识的理解,提高综合运用知识的能力;掌握本课程的主要内容、课程设计或撰写小论文的步骤和方法;以提高独立分析问题、解决问题的能力,逐步增强实际工程训练。
二、设计内容
对一个有N个学生的班级,通过该系统实现对该班级学生基本信息进
行录入、显示、修改、删除、保存等操作的管理。
三、设计方法
结合C语言的有关知识,查阅资料,对班级档案管理系统的内容进行构思和设计,在MicrosoftVisualC++6.0平台上完成设计,并进行调试。
第一章绪论
......5
第章需求分析
2.1问题描述
......6
2.2功能要求
.......6
2.3算法提示
.......6
2.4项目开发的目的
7
第三章概要设计
3.1程序模块的组成
8
3.2班级档案管理系统
8
3.3各个程序的功能介绍..…
9
3.4系统结构图
9
第四章模块设计分析
4.1程序的模块组成
10
4.2各个函数的主要功能..…
10
4.3系统的功能模块的划分.
10
4.4总流程图
......12
4.5功能流程图
13
第五章测试
5.1存在的问题
14
5.2测试方案
14
第六章使用说明书
15
第七章总结17
附录
A参考文献18
B源程代码20
第一章绪论
班级档案管理系统有六种功能,把这六种功能做成六个子函数。
在主函数中设计一个菜单对这六个子函数进行管理,来实现对整个系统的操作。
根据课题的要求,每个数据的结构应当包括:
学号(char)、姓名(char)、性别(char)、年龄(int)、备注(char)。
对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息的录入、显示、修改、删除、保存等操作的管理。
最后为了以后按照处理后的顺序保存到文件中。
第二章需求分析
2.1问题描述:
对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录
入、显示、修改、删除、保存等操作的管理。
2.2功能要求:
1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
姓名、学号、性别、年龄、备注。
2、本系统显示这样的菜单:
请选择系统功能项:
A、学生基本信息录入
B、学生基本信息显示
C、学生基本信息保存
D、学生基本信息删除
E、学生基本信息修改
F、学生基本信息查询
(1)按学号查询
(2)按姓名查询
(3)按性别查询
(4)按年龄查询
G、退出系统
3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生基本信息保存到文件中。
2.3算法提示
1、数据结构:
结构体类型数组
2、数据库结构:
下表构成该系统的基本数据库
简单的班级档案管理系统,能够使老师了解到相应的信息。
是争对目前的现状,把管理人员从繁忙的数据统计中解脱出来,使其具有更多地精力去从事教务管理政策的而研究实施,教学计划的制定执行和教学质量的监督检查,从而全面提高教学质量,同时也减轻任课老师的负担,让其有更多的时间投入到教学和科研中,还有学生档案管理的重要性,以及当前的档案管理的现实,为了改善这种情况,使档案管理工作真正步入高效,健康的轨道从而促使我们开发了这个系统,以提高档案管理工作的效率和满足用户的基本需求为目的,实现档案管理。
第三章概要设计
3.1程序模块的组成
主函数:
voidmain()
录入函数:
voidGetInfo()
显示函数:
voidDisPlay()
保存函数:
voidSave()
删除函数:
voidDelect()
修改函数:
voidModfiy()
查询函数:
voidSearch()
输出函数:
voidprint()
1.GetInfo()是录入函数,主要是录入学生的基本信息;
2.DisPlay()是显示函数,就是把学生的基本信息显示在电脑上;
3.Save()是保存函数,就是把学生基本信息保存下来;
4.Delect()是删除函数,把不要的信息删除;
5.Modfiy()是修改函数,修改错误的学生基本信息;
6.Search()是查询函数,查询学生的基本信息;
7.print()是输出函数,输出学生的基本信息。
3.2班级档案管理系统
structstudent//设定一个内容为学生信息的结构体
{
charname[10];〃名字的长度允许最大为10;
charno[10];//学号的长度允许最大为10;
charsex;
intage;
charbnote[100];〃备注的长度允许最大为100;};
3.3各个程序的功能介绍
主函数:
利用无限次循环例如if(;;)while()和switch()语句
实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
录入函数:
用来录入学生的基本信息。
显示函数:
把录入的学生的基本信息显示在桌面上。
保存函数:
可以保存学生信息。
删除函数:
可以删除学生的错误信息。
修改函数:
可以修改旧的信息。
查询函数:
方便管理员和学生查询。
4退出函数:
可以用来退出系统以保证学生信息的安全。
保存函数:
voidSave
()
删除函数:
voidDelect
()
查询函数:
voidSearch
()
修改函数:
voidModify
()
菜单函数:
voidmenu_
select()
4.2各个函数的主要功能:
录入函数:
录入学生的基本信息;
菜单函数:
显示系统主菜单;
显示函数:
显示所有学生信息;
查询函数:
方便学生查找自己基本的信息;
删除函数:
删除某学生的信息;
保存函数:
保存好学生基本信息,以免丢失。
4.3系统的功能模块的划分:
开始
菜单界面
功能选择
初始化函数
录入学生信息
显示学生信息
保存学生信息
删除学生信息
修改学生信息
查询学生信息
退出系统
结束
整个系统除了主函数外,另外还有14个函数,实现七大功能:
录入功能、显示功能、保存功能、删除功能、修改功能、查询功能、退出系统功能。
各个函数的详细设计说明分明如下:
(1)主函数main()
利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
(2)菜单选择函数intmenu_select()
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九项功能,根据每个功能前面的序号进行选择。
等执行完每一个函数功能后,返回菜单。
(3)代码设计初始化函数STUDENT*init()
这是一个无参函数,里面只有两个语句,它的作用是使链表初始化,使head
的值为NULL和一个清屏语句。
比如:
没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码。
(4)输入记录函数STUDENT*create()
这是一个无参函数,用来执行学生档案的记录的输入,当学生为@寸停止输入,函数结束后,带回一个链表头的指针指向下一个学生的信息插在表头。
(5)显示记录函数voidprint(STUDENT*head
这是有一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生
成绩的输出,不足之处就是不能就是不能对学生成绩进行分页显示。
4.4总流程图
结束
4.5功能流程图
开始
通过switch函数选择插入功能
Voidprint
打开文件
录入学生基本信息
5.1存在的问题:
在我们编号程序的时候其实还是存在许多问题的,当然这是一个过程,可以
说错误基本上是不可避免的,比如说“一些输入格式问题和一些习惯性的问题而导致的错误等等”。
我个人认为系统调试需要比较扎实的基本功以及充分的细心,因为C语言中
的有些错误是不直接明了的。
在这个时候就需要我们耐心的去查找错误,有些错误是由于我们不好的习惯造成的,而且往往很难发现,因为这些错误都是自己平时不怎么注意的。
比如花括号的使用,比如分号的使用等等。
所以平时调试时得养成良好的习惯,尽量减少出错。
5.2测试的方案
1.系统验证技术
2.系统确认技术
3.系统测试技术
1.将编好的源代码放到C语言的运行环境中去运行,通过运行找出其中的错误或者是输入不规范的地方,加以改正,还有就是试一下程序能不能运行,是不是满足课程设计题目的要求。
2.把已经整理好的源代码放到C语言运行环境去调试一下,就是确认这个源代码是否正确。
3.用运行系统测试源程序代码。
第六章使用说明书
按照菜单的提示进行选择,1表示学生信息的录入,先进行信息的录入完成后,按回车键会弹出弹出第二个界面,根据第二个界面进行选择。
2表示信息的显示。
3表示信息的保存。
4表示信息的删除。
5表示信息的修改。
6表示信息的查询。
7表示安全退出系统。
当保存好学生的基本信息的时候你可以通过3保存
学生的信息,按4是删除,删除成功后再输入你的学号会显示该学生不存在,在
按5时会显示要输入密码才能改变信息,按6时会弹出一个由四个选项组成的界面,有按1按学号查询、2按年龄查询、3按性别查询、4按姓名查询。
所以只要你根据菜单上操作是不难的,欢迎使用!
第七章总结g■
通过这次课程设计,我觉得自己的知识还远远不够,这次C语言课程设计的
“班级档案管理系统”,通过不断调试与修改,最终还是完成了,虽然参考了许多资料,但是自己亲手完成的第一个课程设计,还是挺激动地。
这次课程设计充分运用了自己所学的东西,明白了自己的不足点,由于学艺不精,也遇到了不少麻烦,比如画E-R图时,各实体中关系的确定,由于对系统还不够了解而找不到一个准确的词来形容,总体规划材料太多,不易整理;相关数据库没有多注意,这次课程设计的重点只在对整个系统的总体思路设计。
通过这次设计让我明白了,只有通过自己动手才能真正学到东西。
书本知识固然重要,但只有把它运用于实际才会发现自己的不足和错误,才能改进,才能达到学习的最终目标。
以下是我总结出的一些经验:
1.要对系统的功能做出详细的分析,并合理分解任务。
2.把分解出来的子任务,做成一个相对独立的模块。
3.在设计一个模块之前,要简单构想一下总界面的显示情况。
4.针对构想出来的界面进行程序的编写。
虽然我的课程设计存在许多问题,究其原因还是因为自己平时没认真学习,以后定会认真学习,学以致用。
附录:
参考文献
《C程序设计(第三版)》谭浩强着清华大学出版社
《C语言程序设计实用指南》谭浩强着清华大学出版社
《课程设计与上级指导》谭浩强着
《课程设计与习题详解》葛日波着
源程序:
#include#include#include#include#defineN3〃测试数据人数为3
structstudent〃设定一个内容为学生信息的结构体
charname[10];//名字的长度允许最大为10
charno[10];//学号的长度允许最大为10
charsex;
intage;
printf("\t\t\t(
欢迎使用本班级档案管理系统)\t\t\t\n");
printf("***********
欢迎进入我们的系统**********\n\n");
if(!
menu)〃主菜单
else
printf(”学生基本信息录入;press1\n");
printf("学生基本信息显示,press2\n");
printf(”学生基本信息保存,press3\n");
printf("学生基本信息删除,press4\n");
printf("学生基本信息修改,press5\n");
printf("学生基本信息查询,press6\n");
}
printf("退出学生信息系统,press7\n");
}
voidGetInfo(structstudent*arr,intn)〃学生基本信息录入
{
charch;
for(inti=0;i{
printf("输入学生的基本信息:
namenoagesexbnote\n");
scanf("%s%s%d%c%c%s",arr[i].name,arr[i].no,&arr[i].age,&ch,&arr[i].sex,arr[i].bnote);
}
}
voidDisplay(structstudent*arr,intn)〃学生基本信息显示
{
printf("学生基本信息:
NameNoSexAgeNote\n");
for(inti=0;i{
printf("%15s%15s%15c%15d%15s\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].
age,arr[i].bnote);
voidSave(structstudent*arr,intn)〃学生基本信息保存,保存在
c:
\\student.txt{
FILE*fp;
fp=fopen("c:
\\student.txt","w+");
if(fp==NULL)
{
printf("
exit(0);
文件不存在!
\n");
}fwrite(arr,sizeof(structstudent)*n,n,fp);fclose(fp);
}
voidModfiy(structstudent*arr,intn)〃学生基本信息修改
{
charnumber[10],ch;
boolflag=false;
printf("
修改学生信息:
\n");
printf("
请输入学号:
\n");
scanf("%s",number);
for(inti=0;i{
if(!
strcmp(number,arr[i].no))
{
printf("infor:
namenosexagebnote'n”);
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
printf("pleaseinputinformation:
\n");
seanf("%s%s%c%c%d%s",arr[i].name,arr[i].no,&ch,&arr[i].sex,&arr[i].age,
arr[i].bnote);
Save(arr,n);
flag=true;
}
}
if(flag==false)
{
printf("该学生不存在!
:
\n");
}
}
学生基本信息删除
voidDelete(structstudent*arr,intn)〃
{
charnumber[10];
boolflag=false;
printf("Deleteinformation:
\n");
printf("pleaseinputtheno:
\n");
scanf("%s",number);
for(inti=0;i{
if(!
strcmp(number,arr[i].no))
{
strcpy(arr[i].name,"");
strcpy(arr[i].no,"");
strcpy(arr[i].bnote,"");
arr[i].sex='';
arr[i].age=0;
Save(arr,n);
flag=true;
if(flag==true)
{
printf("该学生已删除不存在!
:
\n");
}
}
voidSearch(structstudent*arr,intn)〃学生基本信息查询
{
inttemp,i;
boolflag=false;
printf("
通过学号查询,
press1
——\n");
printf("
通过姓名查询,
press2
——\n");
printf("
通过性别查询,
press3
——\n");
printf("
通过年龄查询,
press4
——\n");
printf("
退出,press5---
——\n");
scanf("%d",&temp);
switch(temp)
{
case1:
{
charnum[10];
printf("请输入学号:
\n");
scanf("%s",num);
for(i=0;i{
if(!
strcmp(num,arr[i].no))printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
flag=true;
}
}
if(!
flag)
{
printf("该学生不存在.\n");
}
}
break;
case2:
{
charnum[10];
printf("pleaseinputname:
\n");
scanf("%s",num);
for(i=0;i{
if(!
strcmp(num,arr[i].name))
^1{
printf("%12s%12s%12c%12d%12s",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
flag=true;
}
}if(!
flag)
printf("该学生不存在.\n");
}
}
break;
case3:
{
charch;
printf("请输入性别:
\n");
ch=getch();
for(i=0;i{
if(ch==arr[i].sex)
{
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
flag=true;
}
}
if(!
flag)
{
printf("该学生不存在.\n");
}
}
break;
case4:
{
charnum_age;
printf("请输入年龄:
\n");
seanf("%d",&num_age);
for(i=0;i{
if(num_age==arr[i].age)
{
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
flag=true;
}
}
if(!
flag)
{
printf("该学生不存在.\n");
}
}
break;
default:
break;
}
}
voidmain()
{
structstudentarr[N];
intselect;
print(false);
scanf("%d",&select);
while(0