C语言课程设计学生信息管理系统河南工程学院伊国彪.docx
- 文档编号:8359521
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:31
- 大小:179.62KB
C语言课程设计学生信息管理系统河南工程学院伊国彪.docx
《C语言课程设计学生信息管理系统河南工程学院伊国彪.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生信息管理系统河南工程学院伊国彪.docx(31页珍藏版)》请在冰豆网上搜索。
C语言课程设计学生信息管理系统河南工程学院伊国彪
河南工程学院
《数据结构》课程设计
成果报告
姓名伊国彪
学号201512211231
学院计算机学院
专业班级软件工程1542
专业课程数据结构
指导老师张天伍
2016年12月26日
河南工程学院计算机学院
课程设计报告书
课程设计题目:
学生成绩管理系统
课程设计时间:
12月19日~12月23日
课程设计地点:
综合楼B310
课程设计单位:
计算机学院
指导教师:
张天伍学院院长:
曲宏山
本组组长
范留杰
本组成员
王帅伊国彪
设计题目
学生成绩管理系统
本人分工
资料查询,确定设计思路、算法设计、程序运行
考核项目
考核内容
分值
工作态度及完成情况
出勤情况、设计态度、工作效率、协作精神;
20
设计水平与实际能力
知识掌握情况、基本操作技能、知识应用能力、获取知识能力;算法分析设计能力、代码编制调试能力;
50
设计成果与文档资料
设计成果说明、分析表达能力;
文档写作能力和文档的规范性;
20
答辩情况
对成果的理解和展示能力
10
课程设计成绩评定标准及成绩评定表
学生姓名:
伊国彪学号201512211231专业班级:
软件工程1542
项目
分值
优秀
(100≥x≥90)
良好
(90>x≥80)
中等
(80>x≥70)
及格
(70>x≥60)
不及格(x<60)
分项得分
工作态度及
完成情况
20
设计态度认真,作风严谨,保证设计时间并按任务书中规定的进度开展各项工作。
设计态度比较认真,作风良好,能按期圆满完成任务书规定的任务。
设计态度尚好,遵守组织纪律,基本保证设计时间,按期完成各项工作。
设计态度尚可,能遵守组织纪律,能按期完成任务。
学习马虎,纪律涣散,工作作风不严谨,能按期完成任务。
设计水平与
实际能力
50
设计中所用的基础理论、知识和技能扎实熟练,设计能力强,能独立思考问题,主动查阅文献资料解决问题,编制代码及调试分析能力强。
设计中所用的基础理论、知识和技能扎实,独立工作能力较强,能查阅文献资料解决问题,编制代码及调试分析能力较强。
基础理论、知识和技能掌握较好,有一定独立工作能力,设计能力较强,主要文献引用基本正确,有一定的实际动手能力。
基础理论、知识和技能基本掌握,独立工作能力不强,设计能力一般,主要文献引用基本正确,实际动手能力尚可。
基础理论、知识和技能掌握较差,独立工作能力不强,设计能力差,实际动手能力差。
设计
成果与
文档资料
20
设计方案良好,
功能完整,系统分析正确合理。
文档规范,表达正确、清晰,内容详实,结构严谨,逻辑性强,层次清晰,撰写规范。
设计方案合理,功能完整,系统分析正确合理。
文档
基本规范,表达正确、清晰,内容完整,撰写基本规范。
设计方案基本合理,系统分析基本正确,文档基本规范,表达基本清晰,内容完整,符合一般要求。
设计方案无原则错误,系统分析基本正确,文档内容基本完整,但表达不够清晰,撰写勉强达到规范化要求。
设计方案存在原则错误,系统分析不合理,表达不清楚,文档内容空泛,多缺漏或错误,表达混乱,不符合规范要求。
答辩情况
10
能准确圆满回答问题,自述清楚。
能较圆满回答问题,自述较清楚。
能回答主要问题,自述基本清楚。
能基本回答主要问题,自述尚清楚。
回答问题错误,自述不清楚。
成绩评定:
指导教师:
2016年12月日
1设计目标
(1)掌握指针数组的一般储存的基本概念及存储结构.
(2)利用指针数组的一般储存对学生成绩进行基本操作。
包括创建、插入、删除、排序等功能上要以菜单选项形式体现出来.学生成绩管理系统
设计程序,要求实现下面功能:
2.1可以输入学生成绩
(学号、姓名、性别、课程成绩(多门课程),总分)
2.2可以查看所有学生成绩
2.3可以插入、删除某个学生的成绩
2.4根据学号查找某个学生成绩
2.5对所有学生成绩进行排序(按课程、按总分、按单科进行排序)
(3)通过本次设计型实验使我们在学习完C、数据结构等课程基础上对前面所学的知识做一个总结与回顾。
(4)通过该课程设计,使我们对老师课上的讲述有了更深的理解,让我们学有所展示。
(5)将指针数组的一般储存应用到具体生活中,使我们了解了数据结构这一门课在实际生活中的应用。
2课题分析与设计
2.1 课题需求分析
利用所学数据结构理论知识完成“学生成绩管理系统”的设计。
(1)其功能具体包括:
1登录功能:
输入正确登陆密码点击enter键进入总界面让后进行余下功能。
2录入功能:
可以输入20位同学信息可以输入学生成绩(学号、姓名、性别、课程成绩(多门课程),
3浏览功能:
完成对全部学生信息记录浏览可以查看所有学生成绩
4添加功能:
在已有的学生信息基础下进行添加,增加学生信息
5删除功能:
所有信息录入完备后对学生信息进行整理去掉那些录入错误学生
6排序功能:
对学生信息中的课程,成绩,进行排序使用冒泡排序将分数高的学生排在前面
7查找功能:
输入学生学号就可以查找学生的信息
8退出功能:
所有工作完成后输入退出键退出。
(2)简明思路
建立学生成绩管理系统,需要逐步的完善。
进入系统之后,首先要有一个主界面,主界面要求要输入密码,如果密码输错三次,成绩查询系统自动锁定。
然后输入数据记录,将学生的基本信息包括学号,姓名,性别,多门课程成绩(包括数据结构,离散数学,JavaEE)总分数据作为一个记录写入文件。
然后显示输入的学生的各项信息。
然后增加数据记录,增加多个学生的成绩信息,位于之前的学生后面。
然后删除数据记录,删除学生成绩信息。
然后还可以查寻成绩,可以根据学生的学号查找并显示出学生的成绩信息。
最后还要对所有学生成绩进行排序(按课程、按总分、按单科进行排序)。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
2.2 存储结构设计
structstudent//定义学生结构体,利用指针数组存储学生成绩信息
{
longnum;//成员变量学号为长整型
charname[20];//姓名为字符串型
charsex[2];//性别为字符串型
intscore[3];//分数为整型
intsum;//总分为整型
intave;//平均分为整型
}stu[N];
2.3 算法设计
1.在voidenter()(主菜单函数)中用switch语句实现功能选择。
具体代码如下:
switch(choice)
{
case1:
input();break;
case2:
display();break;
……
default:
w=1;
}
2.在voidinput()(录入学生成绩函数)在voidadd()(增添学生成绩函数)中用do…while…语句实现学生信息的输入。
具体代码如下:
do{
printf("请输入第%d个学生的信息.\n\n",t);
printf("学号:
");
scanf("%ld",&p->num);//输入学号存放在num中
……
}while(x==1);
3.在voiddisplay()(显示学生信息函数)和voiddelet()(删除学生成绩)及voidfint()(查找学生信息函数)中主要用for循环语句及其嵌套语句实现逐个输出学生成绩信息、删除学生成绩信息及查询学生成绩信息。
具体代码如下:
for(j=0;j { printf("%ld\t%s\t%s\t",stu[j].num,stu[j].name,stu[j].sex);//输出学号、姓名、性别 for(i=0;i<3;i++) printf("%d\t",stu[j].score[i]);//输出各科分数 …… } 4.在voidfint()(统计学生成绩函数)中主要用冒泡排序法实现学生成绩的排列。 具体算法如下: for(i=0;i { for(j=i+1;j if(stu[i].score[1] { k=stu[i].score[1];//交换分数 stu[i].score[1]=stu[j].score[1]; stu[j].score[1]=k; } } 2.4 程序流程图 否 YN 3 程序清单 #include #include #include #include #defineN20//全局变量 structstudent//定义学生结构体 { longnum;//学号为长整型 charname[20];//姓名为字符串型 charsex[2];//性别为字符串型 intscore[3];//分数为整型 intsum;//总分为整型 intave;//平均分为整型 }stu[N];//结构体数组 intt=1,pl=0; voidenter();//主菜单函数 voidinput();//录入函数 voiddisplay();//显示函数 voidadd();//增添函数 voiddelet();//删除函数 voidpreside();//查找函数 voidfint();//排序函数 voidoutput();//结束函数 voidmain() {//初始界面输入验证密码 intpassword,i; printf("\n\n\n\n\t\t\t欢迎进入学生成绩管理系统\n"); for(i=1;i<=3;i++)//循环计数,输错三次,系统锁定 { printf("\n\n\t\t\t请输入密码: "); scanf("%d",&password); if(password==5201314)//设置密码为5201314 { enter();//输入正确调用主菜单函数 break; } printf("\\t\t输入错误,请再次输入! "); } printf("\n密码输入三次有误! 系统锁定! "); } voidenter()//进入主菜单函数 { intchoice,w; chark; system("cls");//执行控制台命令cls,功能是清屏,清除所有显示的信息 printf("\t\t\t学生成绩管理系统\n\n"); printf("\t\t1.录入.\t2.显示.\t3.增项.\t4.删项.\n\t\t5.排序.\t6.查找.\t7.退出.\n"); printf("\n输入序号执行相应功能: "); scanf("%d",&choice); switch(choice) { case1: input();break;//执行录入函数,然后结束循环 case2: display();break;//执行显示函数,然后结束循环 case3: add();break;//执行增添函数,然后结束循环 case4: delet();break;//执行删除函数,然后结束循环 case5: preside();break;//执行查询函数,然后结束循环 case6: fint();break;//执行排序函数,然后结束循环 case7: output();break;//执行结束函数,然后结束循环 default: w=1;//其他情况 } if(w==1) { printf("输入有误按任意键重新选怿.\n"); k=getchar();//从标准输入控制台读取字符 getch();//不回显函数,当用户按下某个字符时,函数自动读取,无需按回车 enter();//回车 } } voidinput()//学生信息录入的函数 { intx,i,count=0; charw,r[20],o; structstudent*p;//定义指向结构体的指针p p=stu;//p指向指针数组stu system("cls");//执行控制台命令cls,功能是清屏,清除所有显示的信息 printf("\t\t\t学生信息的录入.\n"); do { pl++; printf("请输入第%d个学生的信息.\n\n",t); printf("学号: "); scanf("%ld",&p->num);//输入学号存放在num中 printf("姓名: "); scanf("%s",&p->name);//输入姓名存放在name中 printf("性别: "); gets(r); gets(p->sex);//输入性别存放在sex中 printf("三门成绩: 1高等数学.2.大学英语.3.c语言.\n"); for(i=0;i<3;i++) { scanf("%d",&p->score[i]); while(p->score[i]<0||p->score[i]>100) { printf("输入分数有误,请重新输入! \n"); scanf("%d",&p->score[i]); } } p->sum=p->score[0]+p->score[1]+p->score[2];//求总分 p->ave=p->sum/3;//求平均分 printf("\n\n是否要继续输入学生信息,如果是请按y;不是请按n.\n"); o=getchar();//获取字符串 w=getchar();//获取字符串 if(w=='y'||w=='Y') { t++;//学生数量加1 x=1; p++; } else x=0; }while(x==1); if(w=='n'||w=='N') printf("按任意键返回.\n"); getch();//不回显函数,当用户按下某个字符时,函数自动读取,无需按回车 enter();//回车 } voiddisplay()//显示学生信息函数 { inti,j; system("cls"); printf("\t\t\t学生信息显示.\n\n"); for(j=0;j { printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n","学号","姓名","性别","高等数学","大学英语","c语言","平均分","总分"); printf("%ld\t%s\t%s\t",stu[j].num,stu[j].name,stu[j].sex);//输出学号、姓名、性别 for(i=0;i<3;i++) printf("%d\t",stu[j].score[i]);//输出各科分数 printf("%d\t",stu[j].ave);//输出平均分 printf("%d\t",stu[j].sum);//输出总分 printf("\n\n"); } printf("\n按任意键返回.\n"); getch();//不回显函数,当用户按下某个字符时,函数自动读取,无需按回车 enter();//回车 } voidadd()//学生信息的增添 { inti,x; chara,w; structstudent*p;//定义指向结构体的指针p p=stu+t;//p指向指针数组stu+t system("cls");//执行控制台命令cls,功能是清屏,清除所有显示的信息 printf("\n\t\t\t增加学生信息.\n"); do { printf("请输入第%d个学生的信息.\n\n",t+1); printf("学号: "); scanf("%ld",&p->num);//输入学号存放在num中 printf("姓名: "); scanf("%s",&p->name);//输入姓名存放在name中 printf("性别: "); scanf("%s",&p->sex);//输入性别存放在sex中 printf("三门成绩: 1.高等数学.2.大学英语.3.c语言.\n"); for(i=0;i<3;i++) scanf("%d",&p->score[i]); for(i=0;i<3;i++) p->sum=p->score[0]+p->score[1]+p->score[2]; p->ave=p->sum/3; a=getchar(); printf("\n是否要继续输入学生信息如果是请按y;不是请按n.\n\n"); w=getchar(); p++; t++;//学生数加1 if(w=='y'||w=='Y')//判断输入字符 { x=1; } if(w=='n'||w=='N') { x=0; break; } }while(x==1); if(x==0) { printf("\n"); printf("按任意键返回.\n"); getch();//不回显函数,当用户按下某个字符时,函数自动读取,无需按回车 enter();//回车 } } voiddelet()//学生信息的删除 { longb; intj; intr=t;//将t赋值给r charc,x; structstudent*p;//定义指向结构体的指针p system("cls");//执行控制台命令cls,功能是清屏,清除所有显示的信息 printf("\n\t\t\t删除学生信息\n"); printf("请输入要删除学生的学号: \n\n"); scanf("%ld",&b); for(p=stu;p if(p->num==b) break;//找到结束循环 else r--; if(r==0)//没有找到要删除的学生 { printf("你要删除的学生不存在,请按任意键返回.\n"); getch(); enter(); } printf("\n你要删除的学生为: \n"); printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","姓名","性别","高等数学","大学英语","c语言","平均分","总分"); printf("%-8ld%-8s%-8s",p->num,p->name,p->sex); for(j=0;j<3;j++) printf("%-8d",p->score[j]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("\n你确定要删除吗? 如是请输入y;不是请输入n.\n"); x=getchar(); c=getchar(); if(c=='y'||c=='Y') { for(p->num;p *p=*(p+1); t--; printf("系统已为你删除信息,请按任意键返回.\n"); getch();//不回显函数,当用户按下某个字符时,函数自动读取,无需按回车 enter();//回车 } if(c=='n'||c=='N') { printf("删除信息取消! 按任意键返回.\n"); getch(); enter(); } } voidpreside()//学生信息的排序 { inti,j,k,l; charm[20],n[2]; structstudent*p;//定义指向结构体的指针p system("cls");//执行控制台命令cls,功能是清屏,清除所有显示的信息 printf("\n\t\t\t学生信息排序.\n"); printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学号","姓名","性别","高等数学","大学英语","C语言","平均分","总分"); for(p=stu;p { printf("%-8ld%-8s%-8s",p->num,p->name,p->sex); for(j=0;j<3;j++) printf("%-8d",p->score[j]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("\n\n"); } printf("\n\n"); printf("按总分排序: \n");//冒泡排序 printf("%-8s%-8s%-8s%-8s\n\n","学号","姓名","性别","总分"); for(i=0;i { for(j=1+1;j if(stu[i].sum { k=stu[i].sum;//交换总分 stu[i].sum=stu[j].sum; stu[j]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 信息管理 系统 河南 工程学院 伊国彪
![提示](https://static.bdocx.com/images/bang_tan.gif)