C语言课程设计报告学生管理系统.docx
《C语言课程设计报告学生管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告学生管理系统.docx(16页珍藏版)》请在冰豆网上搜索。
![C语言课程设计报告学生管理系统.docx](https://file1.bdocx.com/fileroot1/2022-11/22/3447d93d-594f-4fae-81f1-6507d90c9f21/3447d93d-594f-4fae-81f1-6507d90c9f211.gif)
C语言课程设计报告学生管理系统
兰州交通大学博文学院
《C语言程序设计》
课程设计报告
系别:
交通运输系
班级:
16交通运输(3)班
姓名:
学号:
指导老师:
2018年1月5日
兰州交通大学博文学院
交通运输系课程设计成绩评定表
学生姓名
班级
学号
导师姓名
职称
日期
课程设计
论文题目
学生管理系统的C语言实现
指导教师简要评语
指导教师签名:
成绩
备注
一、课程性质
《C语言程序设计》是理工类专业的主要专业基础课之一,该课程开设的目的是使学生掌握一种基本的程序设计语言。
通过该课程的学习,掌握C语言的数据类型、运算和表达式,掌握结构化程序设计的基本结构,学会数组、结构体及函数的使用,培养学生的程序编译素质,提高学生的程序开发能力。
《C语言程序设计》课程实践性强,既可以培养学生的踏实工作作风,又可以培养学生的观察和思考能力以及团队合作的能力。
二、课程设计的目标
通过本次课程设计,进一步巩固和强化C程序设计的思想及程序调试的方法和技巧,培养灵活的思维方式及动手编写调试程序的能力。
初步掌握软件的设计和开发手段,培养应用C语言解决实际问题的能力,培养学生踏实的工作作风、良好的观察和思考能力、团队合作能力,为后续专业课程的学习打下扎实的理论和实践基础。
具体目标如下:
1)能熟练应用VC++集成环境设计和调试C语言程序;
2)能用C语言设计解决简单实际问题的程序,并能完成简单程序的测试;
3)具有良好的数据结构基础和算法能力,以提高个人的结构化程序设计能力;
4)有计算机语言类课程的学习方法,能通过互联网、文献资料巩固和拓展所学知识;
5)养成良好的编程习惯,培养严谨务实的分析问题与解决问题能力。
6)知识目标:
※掌握C语言的程序的基本结构和数据类型、运算符、表达式
※熟悉的结构化程序设计的三种基本结构
※熟练掌握C程序调试的方法、步骤和技巧
※掌握函数的概念和用法
※掌握数组的概念和用法
※掌握指针及结构体的概念和用法
三、课程设计的要求
1、用C语言实现程序设计;
2、利用结构体数组实现学生信息的数据结构设计;
3、用函数实现系统功能模块的设计;
4、界面友好(良好的人机交互),程序要有必要的注释。
四、课程设计
(一)学生管理系统的功能设计
学生信息管理系统存放了每个学生的学号、姓名、性别、出生日期、成绩、生源地信息地数据库。
每个人的信息定义在一个结构体变量中。
其结构如下:
系统通过显示程序、追加程序、查询程序、删除程序、修改程序来实现学生信息管理系统的浏览功能、追加功能、查询功能、删除功能、修改功能。
(二)学生管理管理系统的数据实现
学号
姓名
性别
出生日期
生源地
语文
数学
英语
2016101
赵泽云
男
1998、10、20
甘肃
50
98
90
2016102
张爱平
女
1998、5、20
甘肃
98
56
20
2016103
马正泽
男
1999、10、5
湖北
99
100
65
2016104
王云
男
1998、5、6
甘肃
63
65
66
2016105
闫欣华
女
1998、7、20
甘肃
86
76
85
2016106
姚雪银
男
1998、2、15
上海
75
95
65
2016107
冯勇勇
男
1998、4、23
甘肃
82
23
76
2016108
辛军平
女
1998、5、8
甘肃
79
95
88
2016109
秦博
男
1998、12、20
甘肃
71
71
53
2016110
李苏
女
1998、10、3
河南
74
60
63
(三)详细设计
学生管理系统,程序通过#include头文件structstudent定义结构体,用一个printf函数把输出信息,再通过一个for循环把每一个学生的信息输出,首先定义了一个文件指针,通过while循环录入信息,最后关闭文件。
显示录入信息成功!
输入值通过switch用选择相应模块。
用for循环和字符串比较函数来不断的把输入的数据和系统储存的信息比较,如果相同,则输出信息。
否则提示信息不存在!
通过strcmp函数来判断该学号是否存在。
同时将i后面的每一个学生信息都赋给前一个学生的信息,达到删除的效果。
各个功能的调用通过主函数中的switch语句来实现。
#include
#include
#include
#defineMaxisize50//最多学生人数
intst=10;//当前学生人数
structDate//日期类型声明
{intyear,month,day;};
structStudent//学生类型声明
{
intnum;
charname[20];
charsex[5];
structDatebirthday;
charaddress[20];
}stu[Maxisize]={
{2016101,"赵泽云","男",1998,10,20,"甘肃"},
{2016102,"张爱平","女",1998,5,20,"甘肃"},
{2016103,"马正泽","男",1999,10,5,"湖北"},
{2016104,"王云","男",1998,5,6,"甘肃"},
{2016105,"闫欣华","女",1998,7,20,"甘肃"},
{2016106,"姚雪银","男",1998,2,15,"上海"},
{2016107,"冯勇勇","男",1998,4,23,"甘肃"},
{2016108,"辛军平","女",1998,5,8,"甘肃"},
{2016109,"秦博","男",1998,12,20,"甘肃"},
{2016110,"李苏","女",1998,10,3,"河南"}
};
structScore//成绩类型声明
{
intnum;
charname[20];
floatchinese;
floatmath;
floatenglish;
}sco[Maxisize]={
{2016101,"赵泽云",50,98,90},
{2016102,"张爱平",98,56,20},
{2016103,"马正泽",99,100,65},
{2016104,"王云",63,65,66},
{2016105,"闫欣华",86,76,85},
{2016106,"姚雪银",75,95,65},
{2016107,"冯勇勇",82,23,76},
{2016108,"辛军平",79,95,88},
{2016109,"秦博",71,71,53},
{2016110,"李苏",74,60,63}
};
voidwelcome()//系统功能界面展示函数
{
printf("\n\n\t\t\t\t========学生管理系统=======\n\n");
printf("\t\t\t\t======1、学生信息浏览======\n");
printf("\t\t\t\t======2、学生成绩浏览======\n");
printf("\t\t\t\t======3、学生信息查询======\n");
printf("\t\t\t\t======4、学生成绩查询======\n");
printf("\t\t\t\t======5、学生信息插入======\n");
printf("\t\t\t\t======6、学生信息删除======\n");
printf("\t\t\t\t======7、退出系统======\n");
printf("\t\t\t\t===========================\n\n");
}
voidbrowsestudent()//学生信息浏览函数
{
inti;
printf("\n\t\t\t学生信息浏览表\n\n");
printf("%10s%15s%12s%15s%18s\n","学号","姓名","性别","出生日期","生源地");
for(i=0;iprintf("%12d%15s%8s%12d.%2d.%2d%15s\n",stu[i].num,stu[i].name,stu[i].sex,
stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day,stu[i].address);
}
voidbrowsescore()//学生成绩浏览函数
{
inti;
printf("\n\t\t\t学生成绩浏览表\n\n");
printf("%10s%15s%15s%15s%15s\n","学号","姓名","语文","数学","英语");
for(i=0;iprintf("%12d%15s%15f%15f%15f\n",sco[i].num,sco[i].name,sco[i].chinese,sco[i].math,
sco[i].english);
}
voidsearchstudent()//学生信息查找函数
{
charname[20];
inti;
getchar();
printf("请输入要查找的学生姓名:
");
gets(name);
for(i=0;iif(strcmp(sco[i].name,name)==0)break;
if(i{printf("%10s%15s%15s%15s%15s\n","学号","姓名","语文","数学","英语");
printf("%12d%15s%15f%15f%15f\n",sco[i].num,sco[i].name,sco[i].chinese,sco[i].math,
sco[i].english);}
elseprintf("没有名叫%s的学生\n",name);
}
voidsearchscore()//学生成绩查找函数
{
charname[20];inti;
getchar();
printf("请输入要查找的学生姓名:
");
gets(name);
for(i=0;iif(strcmp(sco[i].name,name)==0)break;
if(i{printf("%10s%15s%15s%15s%15s\n","学号","姓名","语文","数学","英语");
printf("%12d%15s%15f%15f%15f\n",sco[i].num,sco[i].name,sco[i].chinese,sco[i].math,
sco[i].english);}
elseprintf("没有名叫%s的学生\n",name);
}
voidinsertstudent()//学生信息插入函数
{
printf("请输入要插入学生的学号、姓名、性别、出生日期、生源地\n");
scanf("%d%s%s%d%d%d%s",&stu[st].num,stu[st].name,stu[st].sex,&stu[st].birthday.year,
&stu[st].birthday.month,&stu[st].birthday.day,stu[st].address);
st++;
printf("插入成功\n");
}
voiddeletestudent()//学生信息删除函数
{charname[20];inti,j;
getchar();
printf("请输入要删除的学生姓名:
");
gets(name);
for(i=0;iif(strcmp(stu[i].name,name)==0)break;
if(i{for(j=i+1;jst--;
printf("删除成功\n");
}
elseprintf("没有名叫%s的学生\n",name);
}
intselection()//功能选择函数
{
intselect;
system("CLS");
welcome();
printf("请输入您要的操作序号:
");
scanf("%d",&select);
returnselect;
}
voidmain()//程序执行的入口函数
{inti;
welcome();
while((i=selection())!
=-1)
{
switch(i)
{case1:
browsestudent();system("Pause");break;
case2:
browsescore();system("Pause");break;
case3:
searchstudent();system("Pause");break;
case4:
searchscore();system("Pause");break;
case5:
insertstudent();system("Pause");break;
case6:
deletestudent();system("Pause");break;
case7:
printf("\n\n\t\t\t感谢使用学生管理系统\n\n\n");exit
(1);}
}
}
(四)测试及调试
1.如果运行程序,将出现如下的界面:
2.此时如果输入1,并按回车键,程序将进入浏览模块,通过浏览模块显示所有学生的所有信息。
其输出界面如下:
3.此时如果输入2,并按回车键,程序将进入浏览模块,通过浏览模块显示所有学生的成绩信息。
其输出界面如下:
4.此时如果输入3,并按回车键,程序将进入查询模块,通过查询模块查询所查学生的所有信息。
其输出界面如下:
5.此时如果输入3,并按回车键,程序将进入查询模块,通过查询模块,由于输入所查学生姓名有误。
其输出界面如下:
6.此时如果输入4,并按回车键,程序将进入查询模块,通过查询模块显示所查学生的成绩信息。
其输出界面如下:
7.此时如果输入4,并按回车键,程序将进入查询模块,通过查询模块,由于输入所查学生姓名有误。
其输出界面如下:
8.此时如果输入5,并按回车键,程序将进入修改模块,通过修改模块添加学生的信息。
其输出界面如下:
9.此时如果输入1,并按回车键,程序将进入显示模块,通过显示模块显示添加学生的信息是否成功。
其输出界面如下:
10.此时如果输入6,并按回车键,程序将进入修改模块,通过修改模块删除学生的信息。
其输出界面如下:
11.此时如果输入1,并按回车键,程序将进入显示模块,通过显示模块显示删除学生的信息是否成功。
其输出界面如下
12.此时如果输入7,并按回车键,程序将退出系统。
其输出界面如下
五、小结
通过一学期的学习,我对C语言又有了崭新的认识。
C语言的学习是一个系统的过程,需要长期的知识积累和储备并辅以大量的上级实际操作练习,自己也应该有所体会,在实践中成长,在实践中求知。
这次我设计的课题是学生信息管理系统。
课题要求对学生信息实现一系列基本操作。
我选择通过结构体数组来实现这个设计。
通过大量的符号和printf语句,使得操作界面更加和谐友善,这些都是我通过这次实习积累的经验。
同时,设计完成后我也发现了代码中的一些不足,例如在录入数据时要求输入序号的值,这个我认为操作比较复杂,但由于时间紧迫,未能提出完美的解决方案,但此问题并不影响程序的运行和要求的实现。
经过实际检验,只要按照程序要求输入,就能够实现。
通过C语言编程的能力有了提高,特别是在指针、数组、函数和结构体方面有了很大提高,另外还学习了课本没有讲到的知识,学会了使用模块化编程的简单方法,另外在对话框的编程要求美观、方面也有了体会。
指针是C语言的灵魂,也是本程序的灵魂,它在本程序中既有“穿针引线”的作用(利用指针传值),也起到了对数据进行分析、存贮、读取等重要的作用,本程序在使用指针过程中对指针进行了简化也是一个“亮点”,它使程序变得通俗易懂,也降低了程序的难度。
以后要对这种方法进行深刻的体会。
数组在程序中有着很重要的作用,对数据的贮存、输入、读取起着很重要的作用,本程序几乎所有数据都以数组进行输入、贮存、读取方便了对数据的处理和输入,数组的的使用本程序中有很大的好处。
函数是实现模块化编程的基础,它使程序变得方面易懂。
总之,通过这次实习,我也认识到了我自己在程序设计这门课程上的不足,在以后的学习实践中,要更加的严谨踏实,对知识的把握要更加的细致入微,要活学活用,争取在这个学科上取得更大的进步。
本次程序存在的问题;
1.功能作用还不够完善
2.学生管理系统的界面很单一,不够丰富吸引眼球