C语言课程设计.docx
- 文档编号:16840169
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:16
- 大小:63.22KB
C语言课程设计.docx
《C语言课程设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计.docx(16页珍藏版)》请在冰点文库上搜索。
C语言课程设计
C语言课程设计
学生管理系统
学生姓名:
学生学号:
所在专业:
任课教师:
2011年6月2日
学生管理系统
一、设计目的
设计“学生管理系统”使其具有数据插入、修改、删除和查询等功能。
(1)数据包括:
学号、姓名、年龄和成绩。
(2)可对记录中的学生信息进行修改。
(3)可增加或删除学生信息。
(4)可进行查询学生所有信息。
(5)熟练掌握C语言课程中所学的理论知识;
(6)通过综合C语言的基本知识来解决实际问题;
(7)加强分析和解决问题的能力;
(8)加强同学们之间的团队合作经验;
二、设计思路
根据要求,学生管理系统数据以文本文件存放在文件中,需要提供文件的输入、输出等操作;可以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。
三、总体设计
图1系统功能模块图
四、详细设计
//各个函数功能
1.主函数:
提供部分提示语,显示一系列功能选项
voidmain(void)
{
menu:
page_title("操作选单");
printf("请用数字键选择操作\n\n");
printf("1录入学生基本信息\n2修改学生基本信息\n");
printf("3注销学生基本信息\n\n4录入成绩\n5修改成绩\n\n");
printf("6浏览...\n\n0退出\n");
switch(getch())
{
case'1':
student_new();break;
case'2':
student_edit();break;
case'3':
student_del();break;
case'4':
score_input();break;
case'5':
score_edit();break;
case'6':
browser();break;
case'0':
exit(0);
}
gotomenu;
}
2.定义结构体变量
structSTUDENT{
intid;
intage;
intchinese,math,english;
charname[21];
}students[32];
3.插入函数:
插入学生的基本信息
voidstudent_new(void)
{
intn;
page_title("录入学生基本信息");
for(n=0;n<32;n++)
if(students[n].id==0)break;
printf("学号:
");
scanf("%d",&students[n].id);
printf("姓名:
");
scanf("%s",&students[n].name);
printf("年龄:
");
scanf("%d",&students[n].age);
return_confirm();
}
4.删除函数:
删除学生的基本信息
voidstudent_del(void)
{
intn;
page_title("注销学生基本信息");
if((n=search_id())!
=-1)students[n].id=0;
printf("\n!
该学生已注销.\n");
return_confirm();
}
5.修改函数:
修改学生的基本信息和修改学生的成绩
①修改学生的基本信息
voidstudent_edit(void)
{
intn;
page_title("编辑学生基本信息");
if((n=search_id())!
=-1)
{
printf("\n请重新输入新信息:
\n学号:
");
scanf("%d",&students[n].id);
printf("姓名:
");
scanf("%s",&students[n].name);
printf("年龄:
");
scanf("%d",&students[n].age);
}
return_confirm();
}
②修改学生成绩
voidscore_edit(void)
{
intn;
page_title("修改成绩");
if((n=search_id())!
=-1)
{
printf("语文:
%d数学:
%d英语:
%d\n",students[n].chinese,students[n].math,students[n].english);
printf("\n请重新输入成绩:
\n语文:
");
scanf("%d",&students[n].chinese);
printf("数学:
");
scanf("%s",&students[n].math);
printf("英语:
");
scanf("%d",&students[n].english);
}
return_confirm();
}
6.查询函数:
通过学号,查找学生的基本信息和查询学生的所有信息
①查找学生的基本信息
intsearch_id(void)
{
intn,i;
printf("请输入学生学号:
");
scanf("%d",&i);
for(n=0;n<32;n++)
{
if(students[n].id==i&&students[n].id!
=0)
{
printf("学号:
%d\n",students[n].id);
printf("姓名:
%s\n",students[n].name);
printf("年龄:
%d\n",students[n].age);
returnn;
}
}
printf("\n输入错误或学号不存在.\n");
return-1;
}
②查询学生的所有信息
voidbrowser(void){
intn,x;
chark;
sort_it('1');
while
(1)
{
page_title("浏览");
printf("按数字键选择排序方式或按0返回\n");
printf("学号-1\t姓名\t年龄\t语文-2\t数学-3\t英语-4\t总分-5\n");
for(n=0;n<32;n++)
{
if(INDEX[n]!
=-1)
{
x=INDEX[n];
printf("%d\t%s\t",students[x].id,students[x].name);
printf("%d\t%d\t",students[x].age,students[x].chinese);
printf("%d\t%d\t",students[x].math,students[x].english);
printf("%d\n",students[x].chinese+students[x].math+students[x].english);
}
}
k=getch();
if(k<'6'&&k>'0')sort_it(k);
elseif(k=='0')break;
elsecontinue;
}
}
7.加总函数:
求学生的总成绩
voidsort_it(charnn)
{
intn,m,p,x,t[32];
for(n=0;n<32;n++)
{
switch(nn)
{
case'1':
t[n]=students[n].id;break;
case'2':
t[n]=students[n].chinese;break;
case'3':
t[n]=students[n].math;break;
case'4':
t[n]=students[n].english;break;
case'5':
t[n]=students[n].chinese+students[n].math+students[n].english;break;
}
}
for(n=0;n<32;n++)
{
x=0;
p=-1;
for(m=0;m<32;m++)
{
if(t[m]>x)
{
x=t[m];
p=m;
}
}
t[p]=-1;
INDEX[n]=p;
}
}
图2.主函数流程图
五、设计体会
1.通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。
通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机
2.通过编写该程序,我熟悉了C语言的基本语法,选择、循环等结构,深入联系了函数的调用方法和文件的读写方法,熟悉了结构体的使用,更加深化了面向对象语言思想和一些基本算法。
通过对程序的后期调试,熟悉了C语言常见错误,锻炼了思维的严密性和完备性。
附录:
源程序
#include
#include
#include
intINDEX[32];
structSTUDENT{
intid;
intage;//结构体变量
intchinese,math,english;
charname[21];
}students[32];
voidpage_title(char*menu_item){
printf(">>>学生管理系统<<<\n\n-%s-\n\n",menu_item);
}
voidreturn_confirm(void){
printf("\n按任意键返回……\n");
getch();
}
voidstudent_new(void){
intn;
page_title("录入学生基本信息");
for(n=0;n<32;n++)
if(students[n].id==0)break;
printf("学号:
");
scanf("%d",&students[n].id);//添加函数添加学生基本信息
printf("姓名:
");
scanf("%s",&students[n].name);
printf("年龄:
");
scanf("%d",&students[n].age);
return_confirm();
}
intsearch_id(void){//查询函数:
查询学生基本信息
intn,i;
printf("请输入学生学号:
");
scanf("%d",&i);
for(n=0;n<32;n++)
{
if(students[n].id==i&&students[n].id!
=0)
{
printf("学号:
%d\n",students[n].id);
printf("姓名:
%s\n",students[n].name);
printf("年龄:
%d\n",students[n].age);
returnn;
}
}
printf("\n输入错误或学号不存在.\n");
return-1;
}
voidstudent_del(void)
{
intn;
page_title("注销学生基本信息");
if((n=search_id())!
=-1)students[n].id=0;//删除函数:
删除学生基本信息
printf("\n!
该学生已注销.\n");
return_confirm();
}
voidstudent_edit(void){
intn;
page_title("编辑学生基本信息");
if((n=search_id())!
=-1)//修改函数:
修改学生基本信息
{
printf("\n请重新输入新信息:
\n学号:
");
scanf("%d",&students[n].id);
printf("姓名:
");
scanf("%s",&students[n].name);
printf("年龄:
");
scanf("%d",&students[n].age);
}
return_confirm();
}
voidscore_input(void){//插入函数:
插入学生成绩
ints,n,t;
page_title("录入成绩");
printf("\n请用数字键选择科目\n1-语文2-数学3-英语\n");
scanf("%d",&s);
for(n=0;n<32;n++)
{
if(students[n].id!
=0)
{
printf("学号:
%d姓名:
%s成绩:
",students[n].id,students[n].name);
scanf("%d",&t);
switch(s)
{
case1:
students[n].chinese=t;break;
case2:
students[n].math=t;break;
case3:
students[n].english=t;break;
}
}
}
return_confirm();
}
voidscore_edit(void){
intn;//修改学生成绩
page_title("修改成绩");
if((n=search_id())!
=-1)
{
printf("语文:
%d数学:
%d英语:
%d\n",students[n].chinese,students[n].math,students[n].english);
printf("\n请重新输入成绩:
\n语文:
");
scanf("%d",&students[n].chinese);
printf("数学:
");
scanf("%s",&students[n].math);
printf("英语:
");
scanf("%d",&students[n].english);
}
return_confirm();
}
voidsort_it(charnn){
intn,m,p,x,t[32];//加总函数求学生的总成绩
for(n=0;n<32;n++)
{
switch(nn)
{
case'1':
t[n]=students[n].id;break;
case'2':
t[n]=students[n].chinese;break;
case'3':
t[n]=students[n].math;break;
case'4':
t[n]=students[n].english;break;
case'5':
t[n]=students[n].chinese+students[n].math+students[n].english;break;
}
}
for(n=0;n<32;n++)
{
x=0;
p=-1;
for(m=0;m<32;m++)
{
if(t[m]>x)
{
x=t[m];
p=m;
}
}
t[p]=-1;
INDEX[n]=p;
}
}
voidbrowser(void){
intn,x;//查询学生的所有信息
chark;
sort_it('1');
while
(1)
{
page_title("浏览");
printf("按数字键选择排序方式或按0返回\n");
printf("学号-1\t姓名\t年龄\t语文-2\t数学-3\t英语-4\t总分-5\n");
for(n=0;n<32;n++)
{
if(INDEX[n]!
=-1)
{
x=INDEX[n];
printf("%d\t%s\t",students[x].id,students[x].name);
printf("%d\t%d\t",students[x].age,students[x].chinese);
printf("%d\t%d\t",students[x].math,students[x].english);
printf("%d\n",students[x].chinese+students[x].math+students[x].english);
}
}
k=getch();
if(k<'6'&&k>'0')sort_it(k);
elseif(k=='0')break;
elsecontinue;
}
}
voidmain(void){//主函数
menu:
page_title("操作选单");
printf("请用数字键选择操作\n\n");
printf("1录入学生基本信息\n2修改学生基本信息\n");
printf("3注销学生基本信息\n\n4录入成绩\n5修改成绩\n\n");
printf("6浏览...\n\n0退出\n");
switch(getch())
{
case'1':
student_new();break;
case'2':
student_edit();break;
case'3':
student_del();break;
case'4':
score_input();break;
case'5':
score_edit();break;
case'6':
browser();break;
case'0':
exit(0);
}
gotomenu;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计