C语言课程实训报告样本 2.docx
《C语言课程实训报告样本 2.docx》由会员分享,可在线阅读,更多相关《C语言课程实训报告样本 2.docx(36页珍藏版)》请在冰豆网上搜索。
C语言课程实训报告样本2
HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY
C语言程序设计
课程实训报告
课设题目:
学生信息管理系统
专业:
电气工程及其自动化
班级:
k1223-1
姓名:
甘有明
成绩:
完成日期:
2013年12月28日-2014年1月11日
指导教师:
张吴波
1.课程实训目的
1)通过课程实训,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2)通过课程实训,进一步掌握C语言中重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3)通过课程实训,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4)通过课程实训,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。
5)通过课程实训,加强了自己的程序分析能力。
2.需求分析
2.要求
1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。
2)运用结构化程序设计方法,按照课程实训题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。
3)学会利用数组、结构体、链表进行相关信息表示。
4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述
5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。
6)所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。
7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。
8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。
9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。
10)掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。
11)C语言课程实训报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。
3.任务描述
题目描述
设计一学生证的管理程序。
该程序应具有下列功能:
(1)能从文件导入学生证信息
(2)能从键盘录入学生证信息
(3)给定学号,显示某位学生的学生证信息;
(4)给定某个班级的班号,显示该班所有学生的学生证信息;
(5)给定某位学生的学号,可以修改该学生的的学生证信息;
(6)给定某位学生的学号,可以删除该学生的学生证信息;
(7)可以将学生信息导出到文件
题目要求
(1)按分析、设计、编码、调试和测试的软件开发过程完成这个应用程序。
(2)学分信息应该包括学号、姓名、课程类别和学分等。
(3)为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
(4)每个功能操作中,不应有原则性的错误出现;
(5)对输入值用测试用例测试,不应有错误出现;
(6)界面应友好,操作应流畅。
输入要求
应用程序运行后,在屏幕上显示一个菜单。
用户可以根据需求,选定相应的操作项目。
进入每个操作后,一般应有相应的子菜单,或有相应的提示信息,根据提示信息的要求,从键盘或文件输入相应的信息。
输出要求
(1)应用程序运行后,要在屏幕上显示一个菜单。
(2)要求用户输入数据时,要给出清晰、明确的的提示信息,包括输入的数据内容、格式及结束方式等。
提示`
设计一个结构体类型和一维数组类型,用来保存学分信息。
扩展功能
将所有学生的学分信息存储在一个文件中,并实现文件读写的操作。
4基本描述
voidmenu();//主菜单
intinput(STUDENTs[],intn);/*录入全部学生的信息,有返回值*/
voidbrowseall(STUDENTs[],intn);/*显示全部学生的信息,无返回值*/
intadd(STUDENTs[],intn);/*添加某位学生的信息,有返回值*/
voidbrowsestudent(STUDENTs[],intn);/*显示某位学生的信息,无返回值*/
voidbrowseclass(STUDENTs[],intn);/*显示该班所有学生情况,无返回值*/
voidamend(STUDENTs[],intn);/*给定某位学生的学号,修改该学生的信息,无返回值*/
intDelete(STUDENTs[],intn);/*给定某位学生的学号,删除该学生的信息,有返回值*/
5应用程序运行中,用户需要使用的交互命令名称、功能和格式的详细解决和示例
1菜单
2.输入学生信息
3.显示
4.添加学生信息
5.显示某位学生情况
6显示该班所有成绩
7删除学生20129230113的学分信息
8显示删除后所有学生的信息
10退出
6.各模块的主要算法(用流程图描述)和数据结构解释
main()流程图
input()流程图add()流程图
browseall()流程图browsestudent()流程图browseclass()流程图
amend()流程图Delete()流程图
graduation()流程图
7程序源代码:
#include
#include
#include
#include
#include
#defineN100
structClass//班级
{
charCname[20];//班名
charCno[20];//班号
};
structStudent//学生
{
charSname[20];//姓名
charSex[10];//性别
charSno[20];//学号
intAge;//年龄
structClassCInfo;//嵌套结构体,表示班级信息
}StuInfo[N];
//函数申明
voidmenu();//主菜单
voidadd();//添加模块
voidmodify();//修改模块
voidDelete();//删除模块
voidbrowse();//浏览模块
voidquiry();//查询模块
voidstastic();//统计模块
voidbySname();//按姓名查询,子模块
voidbySno();//按学号查询,子模块
voidbyCno();//按班号查询,子模块
voidStuMsg();//返回全体学生统计信息,子模块
voidFemale();//女生统计信息,子模块
voidMale();//男生统计信息,子模块
intFemaleNum();//返回女生人数,子函数
floatFemaleMG();//返回女生平均年龄,子函数
intMaleNum();//返回男生人数,子函数
floatMaleMG();//返回男生平均年龄,子函数
intStuNum();//返回全体学生人数,子函数
floatMG();//返回全体学生的平均年龄,子函数
voidBackMenu();//返回主菜单
voidBackQuiry();//返回查询子菜单
voidBackStastic();//返回统计子菜单
intLoadFile();//加载文件
voidSaveFile(intnum);//保存文件
voidInput(intnum);//输入第num+1个记录
voidjianjie();//软件简介
voidmain()
{
menu();
getchar();
}
voidmenu()//菜单
{
intchose;
intright;
do
{
system("cls");
printf("\n\t\t\t\t学生证管理系统\n");
printf("--------------------------------------------------------------------------------");
printf("菜单:
\n\n1-添加学生信息\n\n2-修改学生信息\n\n3-浏览全部学生信息\n\n4-查询学生信息\n\n5-统计学生信息\n\n6-删除学生信息\n\n7-软件功能及开发\n\n8-退出\n\n");
printf("--------------------------------------------------------------------------------");
printf("请输入数字选择:
");
scanf("%d",&chose);
if(chose<1||chose>8)
{
printf("输入错误,请重新输入!
\n");
right=1;
getchar();
}
elseright=0;
}while(right==1);
switch(chose)
{
case1:
add();break;
case2:
modify();break;
case3:
browse();break;
case4:
quiry();break;
case5:
stastic();break;
case6:
Delete();break;
case7:
jianjie();break;
case8:
exit(0);
}
}
voidBackMenu()//返回主菜单
{
printf("\n请按enter键返回主菜单!
\n");
getchar();
getchar();
menu();
}
intLoadFile()//读取文件
{
inti;
FILE*fp;
if((fp=fopen("StuInfo.txt","r"))==NULL)
{
return0;//返回0,表示文件不存在
}
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%d%s%s",&StuInfo[i].Sname,&StuInfo[i].Sex,&StuInfo[i].Sno,&StuInfo[i].Age,&StuInfo[i].CInfo.Cno,&StuInfo[i].CInfo.Cname);
}
fclose(fp);
returni;//返回记录条数
}
voidInput(intnum)//输入第num+1条记录
{
inti;
intage;
charsno[20];
charsex[20];
charcno[20];
intright;
if(num==N)
{
printf("\n保存记录数超出结构体数组数的大小,请先修改N的值\n");
BackMenu();
}
printf("\n请按照提示输入学生信息:
\n\n");
printf("姓