学生成绩简单管理程序.docx
- 文档编号:9459860
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:41
- 大小:268.81KB
学生成绩简单管理程序.docx
《学生成绩简单管理程序.docx》由会员分享,可在线阅读,更多相关《学生成绩简单管理程序.docx(41页珍藏版)》请在冰点文库上搜索。
学生成绩简单管理程序
东莞理工学院
《C语言程序设计》课程设计
题目:
学生成绩简单管理程序
院系:
化学与环境工程学院
专业:
化学工程与工艺
年级:
2010
班别:
2班
指导教师:
侯家利
组长:
吴晓芳(201041511239)
同组成员:
黎雪花(201041511221)
李敏章(201041511230)
张淼(201041511209)
《程序设计语言(C语言)》课程设计
目录
1目的……………………………………………………………………………3
2环境配置要求…………………………………………………………………4
3时间安排………………………………………………………………………5
4课程设计题目及分析…………………………………………………………6
题目:
学生成绩简单管理程序
5课程设计准备过程、调试分析……………………………………………13
6课程设计个人体会及总结报告……………………………………………33
附录:
参考代码…………………………………………………………16
㈦课程设计考核………………………………………………………………
1课程设计目的
加深对《C语言》课程所学知识的理解,进一步巩固C语言讲法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力本课程设计是采用C语言,在VC平台下设计图书管理系统,该系统运行在MS-DOS命令行模式下。
本课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
"C语言"课程设计主要是培养学生利用系统综合C语言进行程序设计的能力。
1.进一步巩固和复习C程序设计的基础知识。
2.培养学生结构化程序、模块化程序设计的方法和能力。
3.了解软件的编制过程及各环节的具体内容。
4.提高学生程序调试技巧、软件设计能力和代码规范化等素质。
5.提高学生分析问题、解决问题以及实际运用能力。
2
环境配置要求:
硬件配置:
586以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于64MB,硬盘自由空间不少于200MB。
推荐配置为内存128MB或256MB(或以上),硬盘自由空间500MB以上。
操作系统:
Windows2000/NT/Xp、VisualC++集成开发环境。
3
时间安排
课程设计计划如下:
(1)准备阶段
时间:
一天
任务:
明确设计任务、理清思路、制定计划、整理设计步骤。
备注:
以上内容可集体讨论。
(2)功能模块划分阶段
时间:
一天
任务:
理清程序的总体流程,根据需要进行功能模块(函数)划分,定义各函数原型及功能。
备注:
以上内容可集体讨论。
(3)程序的设计、调试阶段
时间:
五天
任务:
设计各功能模块处理流程、独立设计和调试程序,并不断按要求完善程序功能。
备注:
以上内容必须单独完成。
(4)总结阶段
时间:
二天
任务:
书写论文、检查材料,准备上交。
备注:
以上内容必须单独完成。
4
课程设计题目及分析
题目——学生成绩简单管理程序
⒈该学生成绩管理系统具备输入、输出学生信息(包括学生姓名、学号、各科成绩),按学号排序,输入姓名进行查询学生信息或者删除记录,计算各科平均分并输出最高、最低平均分,从文件添加数据到结构体数组中,将所有数据写入文件中。
具体功能的详细描述如下:
(1)输入若干条记录:
提示用户输入学生的学号、姓名、各科分数,及提示再输入其它学生的信息。
(2)显示所有记录:
显示输入的学生的所有记录。
(3)按学号排序:
将学生信息用学号从小到大排序。
(4)插入一条记录:
系统将提示用户输入学生的学号、姓名、各科分数,及提示再输入其它学生的信息。
(5)按姓名查找,删除一条记录:
通过输入姓名来查出记录并删除此记录。
(6)查找并显示一条记录:
通过交互输入,然后系统用函数查找,并在屏幕上显示记录。
(7)输出统计信息(新增):
通过新增功能,统计成绩平均值,总共记录数,最高分最低分等信息。
(8)从正文中添加数据到结构体数组中:
从文件中读入数据,定义文件指针及文件名,经过打开文件、打开失败信息、读入总记录量等过程循环读入数据,最后关闭文件。
(9)将所有数据写入文件中:
定义文件指针及文件名,输入文件名并打开文件,进入循环写入数,关闭文件,返回成功信息。
(0)退出程序:
结束操作。
2系统总框架图
⒊程序自定义函数
/*定义结构体数组*/
typedefstruct/*定义结构体数组*/
{
charnum[10];/*学号*/
charname[20];/*姓名*/
intscore_c;/*语文成绩*/
intscore_m;/*数学成绩*/
intscore_e;/*英语成绩*/
}Student;
/*定义菜单函数*/
intmenu_select()/*菜单函数*/
{
charc;
do{
system("cls");/*运行前清屏*/
printf("");/*界面内容*/
printf("GiveyourChoice(0-9):
");
c=getchar();/*读入选择*/
}while(c<'0'||c>'9');
return(c-'0');/*返回选择*/
}
/*输入若干条记录*/
intInput(Studentstud[],intn){/*输入若干录条记*/
}
voidDisplay(Studentstud[],intn)/*显示所有记录*/
{
inti;
printf("------------------------------------------\n");/*格式头*/
printf("学号姓名语文数学英语\n");
printf("------------------------------------------\n");
for(i=1;i { printf("%-10s%-10s%-10d%-10d%-10d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score_c,stud[i-1].score_m,stud[i-1].score_e); if(i>1&&i%10==0)/*每十个暂停*/ {printf("------------------------------------------\n");/*格式*/ printf(""); system("pause"); printf("------------------------------------------\n"); } } printf(""); system("pause"); } /*冒泡法按学号排序*/ voidSort_by_num(Studentstud[],intn)/*按学号排序*/ {inti,j,*p,*q,s,*m,*o,a,*y,*g,b; chart[10]; for(i=0;i for(j=0;j if(strcmp(stud[j].num,stud[j+1].num)>0) {strcpy(t,stud[j+1].num); strcpy(stud[j+1].num,stud[j].num); strcpy(stud[j].num,t); strcpy(t,stud[j+1].name); strcpy(stud[j+1].name,stud[j].name); strcpy(stud[j].name,t); p=&stud[j+1].score_c; q=&stud[j].score_c; s=*p; *p=*q; *q=s; m=&stud[j+1].score_m; o=&stud[j].score_m; a=*m; *m=*o; *o=a; y=&stud[j+1].score_e; g=&stud[j].score_e; b=*y; *y=*g; *g=b; } } /*插入一条记录*/ intInsert_a_record(Studentstud[],intn)/*插入一条记录*/ {charx[10];/*清除多余输入所用*/ printf("student'snum,student'sname,student'sscore_c,student'sscore_m,student'sscore_e: ");/*交互式输入*/ scanf("%s%s%d%d%d",stud[n].num,stud[n].name,&stud[n].score_c,&stud[n].score_m,&stud[n].score_e); gets(x); n++; Sort_by_num(stud,n);/*调用排序函数*/ printf("InsertSuccessed! \n");/*返回成功信息*/ return(n); } /*查找并显示一个记录*/ voidQuery_a_record(Studentstud[],intn)/*查找并显示一个记录*/ {chars[20]; inti=0; printf("输入他(她)的姓名: ");/*交互式输入*/ scanf("%s",s); while(strcmp(stud[i].name,s)! =0&&i if(i==n) {printf("没找到! \n");/*输入失败信息*/ return; } printf(");/*输出该学生信息*/ } /*新增功能,输出统计信息,各科成绩平均值,总共记录数,各科最高分数,各科最低分数*/ voidStatistic(Studentstud[],intn)/*新增功能,输出统计信息*/ {inti,j=0,k=0,sum_c=0,sum_m,sum_e; floataver_c,aver_m,aver_e;/*成绩平均值*/ for(i=0;i { sum_c+=stud[i].score_c; if(stud[j].score_c>stud[i].score_c)j=i; if(stud[k].score_c } aver_c=1.0*sum_c/n; printf("");/*总共记录数*/ printf("");/*科目*/ printf("");/*最高分*/ printf(““);/*学生信息*/ printf("");/*最低分*/ printf("");/*学生信息*/ printf("");/*平均分*/ } /*从文件中读入数据*/ intAddfromText(Studentstud[],intn)/*从文件中读入数据*/ {inti=0,num; FILE*fp;/*定义文件指针*/ charfilename[20];/*定义文件名*/ printf("输入文件名: "); scanf("%s",filename);/*输入文件名*/ if((fp=fopen(filename,"rb"))==NULL)/*打开文件*/ {printf("不能找到文件\n");/*打开失败信息*/ printf(""); system("pause"); return(n); } fscanf(fp,"%d",&num);/*读入总记录量*/ while(i { fscanf(fp,"%s%s%d%d%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score_c,&stud[n+i].score_m,&stud[n+i].score_e); i++; } n+=num; fclose(fp);/*关闭文件*/ printf("成功! \n"); printf(""); system("pause"); return(n); } /*将所有记录写入文件*/ voidWritetoText(Studentstud[],intn)/*将所有记录写入文件*/ { inti=0; FILE*fp;/*定义文件指针*/ charfilename[20];/*定义文件名*/ printf("将所有记录写入文件\n");/*输入文件名*/ printf("输入文件名: "); scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL)/*打开文件*/ { printf("不能打开文件\n"); system("pause"); return; } fprintf(fp,"%d\n",n);/*循环写入数据*/ while(i { fprintf(fp,"%-8s%-8s%-8d%-8d%-8d\n",stud[i].num,stud[i].name,stud[i].score_c,stud[i].score_m,stud[i].score_e); i++; } fclose(fp);/*关闭文件*/ printf("成功! \n");/*返回成功信息*/ } ㈤课程设计准备过程、调试分析 1、小组成员任务分配情况 序号 姓名 分配的任务 编写的程序文件 任务完成情况 备注 1 吴晓芳 ●输出统计信息(新增)程序 ●从正文中添加数据到结构体数组中程序编写 ●将所有数据写入文件中编写 Statistic() AddfromText() WritetoText() 完成 组长 2 黎雪花 ●输入若干条记录子函数 ●显示所有记录程序编写 ●按学号排序程序编写 Input() Display() Sort_by_num() 完成 组员 3 李敏章 ●插入一条记录的程序 ●按姓名查找,删除一条记录程序编写 ●查找并显示一条记录程序 Insert_a_record() Delete_a_record() Query_a_record()· 完成 组员 4 张淼 ●预处理的定义 ●主函数定义 ●选择菜单编写 #include intmain() menu_select() 完成 组员 2、数据类型说明 本系统的数据结构主要用于对学生成绩简单管理系统数据的描述,包括以下的字段: 序号 字段名 数据类型 宽度 标识码 说明 1 学号 char 10 num 例如: 1234 2 姓名 char 20 name 例如: 梁启超 3 分数 int 2 score 例如: 88 4 指针 FILE*fp FILE*fp 定义文件指针 5 平均分 float 32 aver 6 总记录数 int 2 sum 例如: 56 数据结构是这样的: 学号只能由数字字符组成,最大可以个11字符;姓名由字符组成,最大可以20个字符;三门科目分数都是整型;平均成绩是实型。 ⒊用到的函数: ⒈printf()………………格式化输出函数 ⒉scanf()………………格式化输入函数 3sprintf()………………输出字符数 4gets()………………读入字符串 5puts()………………输出字符串 6fopen()………………打开文件 7fclose()………………关闭文件 8strcmp()………………比较字符串 9strcpy()………………复制字符串 10fputc()………………将字符ch输出到fp所指向的函数 11fgets()………………从fp所指向的文件最多读取n-1个字符 12fputs()………………将字符串s输出到fp所指向文件 13fgetc()………………从fp所指向文件中读取一个字符 14fprintf()……………………………写文件数据函数 ⒋运用到的控制结构 ⒈if(表达式) 语句1;if语句 ⒉while(表达式) 循环体语句;while语句 ⒊for(初值表达式;条件表达式;步长表达式) 循环体语句;for语句 ⒋switch(条件表达式){ case常量表达式1;语句段1;break; case常量表达式2;语句段2;break; …… case常量表达式n;语句段n;break; default: 语句段n+1;break; } switch语句 ⒌do{ 循环体语句; }while(表达式) do-while语句 5.程序代码 #include #include #include #include typedefstruct/*定义结构体数组*/ { charnum[10];/*学号*/ charname[20];/*姓名*/ intscore_c;/*语文成绩*/ intscore_m;/*数学成绩*/ intscore_e;/*英语成绩*/ }Student; Studentstu[80];/*结构体数组变量*/ intmenu_select()/*菜单函数*/ { charc; do{ system("cls");/*运行前清屏*/ printf("~*~~*~~*~~*~~*~~*~~*~~*~~*~~*~~*~~*~\n"); printf("学生成绩简单管理系统\n");/*菜单选择*/ printf("1.输入若干条记录\n"); printf("2.显示所有记录\n"); printf("3.按学号排序\n"); printf("4.插入一条记录\n"); printf("5.按姓名查找,删除一条记录\n"); printf("6.查找并显示一个记录\n"); printf("7.输出统计信息(新增)\n"); printf("8.从正文中添加数据到结构体数据组中\n"); printf("9.将所有数据写入文件中\n"); printf("0.退出程序\n"); printf("~*~~*~~*~~*~~*~~*~~*~~*~~*~~*~~*~~*~\n"); printf("GiveyourChoice(0-9): "); c=getchar();/*读入选择*/ }while(c<'0'||c>'9'); return(c-'0');/*返回选择*/ } intInput(Studentstud[],intn)/*输入若干录条记*/ {inti=0; charsign,x[10];/*x[10]为清除多余的数据所用*/ while(sign! ='n'&&sign! ='N')/*判断*/ {printf("student'snum: ");/*交互输入*/ scanf("%s",stud[n+i].num); printf("student'sname: "); scanf("%s",stud[n+i].name); printf("student'sscore_c: "); scanf("%d",&stud[n+i].score_c); printf("student'sscore_m: "); scanf("%d",&stud[n+i].score_m); printf("student'sscore_e: "); scanf("%d",&stud[n+i].score_e); gets(x);/*清除多余的输入*/ printf("anymorerecords? (Y/N)"); scanf("%c",&sign);/*输入判断*/ i++; } return(n+i); } voidDisplay(Studentstud[],intn)/*显示所有记录*/ { inti; printf("------------------------------------------\n");/*格式头*/ printf("学号姓名语文数学英语\n"); printf("------------------------------------------\n"); for(i=1;i { printf("%-10s%-10s%-10d%-10d%-10d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score_c,stud[i-1].score_m,stud[i-1].score_e); if(i>1&&i%10==0)/*每十个暂停*/ {printf("------------------------------------------\n");/*格式*/ printf(""); system("pause"); printf("------------------------------------------\n"); } } printf(""); system("pause"); } voidSort_by_num(Studentstud[],intn)/*按学号排序*/ {inti,j,*p,*q,s,*m,*o,a,*y,*g,b; chart[10]; for(i=0;i for(j=0;j if(strcmp(stud[j].num,stud[j+1].num)>0) {strcpy(t,stud[j+1].num); strcpy(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 简单 管理程序