




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计课程设计名称: C语言程序设计 专 业 班 级 : xxxxxxxxxxxxxxxxx 学 生 姓 名 : xxxxxx _学 号 : xxxxxxx _ 指 导 教 师 : _课程设计时间: 2011年12月 _计算机科学与技术 专业课程设计任务书学生姓名专业班级学号题 目 学生成绩管理系统设计指导教师同组姓名主要内容学习掌握并熟练运用C语言进行程序设计;学习使用数组、指针、结构体和文件等数据结构;根据具体题目进行简单的需求分析,给出设计方案。任务要求综合运用和融化所学理论知识,提高分析和解决实际问题的能力,使用C语言设计一个简单的学生成绩管理系统;完成需求分析报告,报告中对关键部分给出图表说明。要求格式规范,工作量饱满。参考文献C语言程序设计基础与项目实训 中国人民大学出版社。C语言程序设计案例教程 中国铁道出版社。C语言程序设计案例实践 清华大学出版社 C语言程序设计实验报告一、需求分析随着计算机的飞速发展,它的应用已经十分广泛,它在人们的生产、生活、工作和学习中发挥着重要的作用。例如一个高等教育的学校,拥有数千名乃至数万名的学生,那么如何管理这么庞大的学生成绩档案呢?这时,开发一个功能完善的学生成绩管理系统就必不可少了。从学生的成绩的查询到管理实现了自动化的模式,从而提高了老师的工作效率和减少工作中的出错率,对学校的学生管理更加方便。本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,一方便对成绩各项管理操作。本系统能对成绩进行输入和输出:能按姓名对学生进行排序,并显示学生的资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能根据学生的姓名来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生信息,并且添加到系统中;能把对系统锁进行的操作进行保存,及时更新系统中的数据。二、人员分工姓名主要负责内容总体设计;数据程序查询主菜单程序主菜单程序、录入数据程序的编码与调试、输出、统计、删除、追加数据程序的编码与调试修改数据程序的编码与调试三、运行环境硬件环境: CPU(pentium4 2.4Hz)、内存(256MB)、硬盘(80G)软件环境:Windows7、 VC6.0四、系统模版功能1、系统总体框图2、模块设计在我们设计的程序中:包括了个人成绩录入,修改学生成绩,查询个人成绩,删除个人成绩,四大模块组成。本系统定义了结构体 allstudentinfo,用于存放学生的基本信息和成绩管理信息。进入该程序后会看到总的页面菜单,包括1、录入学生个人成绩 ;2、修改学生个人成绩;3、查询学生个人成绩;4、删除学生个人成绩;5、退出成绩管理系统;再按个人需求分别进入需要的界面。我们用到了switch 函数语句和if语句和for循环语句等本学期学到的相关知识。个人成绩录入:首先,打开文件“个人成绩录入.dat”如果成功,将输入学生姓名,学号及语、数、外,三科成绩录入到文件当中(在录入学生信息时,系统调用函数”inputsorc()”,将新的学生信息录入到文件中。),然后判断输入是否结束,如果没有错误,请继续输入,否则推出录入模块。如有错误,要按照当前操作进行修正。再依次录入要输入的学生信息,按照之前的操作进行。修改学生成绩:当用户在“学生个人信息管理”界面中按“2”进入“修改学生个人成绩”。可以对当前已录入的学生成绩进行修改,在此界面中课选择“13”之间的数值,调用相应功能进行操作,并将修改后的信息保存在“学生个人成绩.dat”中。如果成功,选择要修改的内容和要修改的姓名。(在修改学生信息时,调用mofsorc()函数实现对学生3科成绩的修改)如果学生存在,则输入新的信息,并保存在文件中;如果不存在,输入错误信息,并选择要重新修改的内容。如果打开文件有错误,输出错误信息并推出学生管理系统。主要功能是用来修改学生资料。在系统保存了某学生资料的前提下,想要查找学生资料,可以输入学生姓名,系统就会显示学生资料和各科成绩等信息,这样就可以修改学生的资料,成绩等信息。查询个人成绩:用户在“学生个人信息界面”中,按“3”,回车,便可进入“查询个人成绩”中。在查询学生个人成绩时,可调用“seasorc()”函数实现,并按照1、 学生姓名;2、 学号;进行查询。如果成功,则选择学生的姓名或学号,则显示该学生信息;如果不存在,重新输入要查询的内容。然后判断是否继续查询,否则退出模块。如果打开文件有错误,输出模块信息有错误并退出信息管理器。主要功能是用来查询学生资料。在系统保存了某学生资料的前提下,想要查找学生资料,可以输入学生姓名,系统就会显示学生资料和各科成绩等信息。删除学生个人成绩:当用户在“学生个人信息管理”界面中按“4”,回车,即可进入“删除个人信息“。即出现:printf(请选择你的操作选项:1.按姓名查找删除 2.按学号查找删除);在删除学生个人信息时,可调用“delsorc()”函数,按学生的姓名字段或学号查找要删除的学生个人信息,并将删除后的信息保存在文件“学生个人成绩.dat”中。主要功能是用来删除学生资料。在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生的姓名,系统查找学生资料后,就可以删除了。由于学生辍学,毕业等原因,即使对系统进行更新,删除一些没有用的信息,可以使系统更加优化。退出学生个人成绩:按照当前程序输入的步骤退出该程序。主要功能是在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,即使更新系统,方便下一次的操作。五、源程序代码 /*源程序:学生成绩管理系统*/*/ / 学生学籍管理系统./*/#include #include #include #include #include #define NAME 20#define SEX 10#define SORC 3#define STUDENTMAX 10000000 Struct studentsorc /学生成绩结构 char nameNAME; /学生姓名 int ID; /学生学号 float sorc6; /记录学生成绩 float aver; /平均分 float sum; /总分; /*学生个人成绩管理*/ void sorcmeun (struct allstudentinfo *p_student) int in; char ch; do printf(nn); printf(t -n); printf(t | 学生个人成绩管理 |n); printf(t | -|n); printf(t | 1、录入学生个人成绩 |n); printf(t | 2、修改学生个人成绩 |n); printf(t | 3、查询学生个人成绩 |n); printf(t | 4、删除学生个人成绩 |n); printf(t | 5、浏览所有学生成绩 |n); printf(t | 6、退出成绩管理系统 |n); printf(t |-|n); printf(t 请您正确的选择:); if (!scanf(%d,&in)=1) while (ch=getchar()!=n) putchar(ch); printf(没有此选项,请正确选择!); getch(); continue; fflush (stdin); switch (in) case 1: inputsorc (p_student); break; case 2: mofsorc (p_student); break; case 3: seasorc (p_student); break; case 4: delsorc (p_student); break; case 5: return ; default: printf(没有此选项,请正确选择!); break; while(l); /*个人成绩录入*/ void inputsorc(struct allstudentinfo *p_student) int i.count,countinfo;char *tempname,ch;system(cls);if(sorcfile=fopen(filenamel,a+b)=NULL)printf(不能打开文件,请确认磁盘已满或文件是否存在); getch();exit(l);rewind(sorcfile);for(count=0;ferad(&p_studentcount.student1,sizeof(struct studentsorc),1,sorcfile)=1;count+)countine;tempname=(char *)malloc(20*sizeof(char);printf(请输入第%d学生的姓名:,count+1);while (countSTUDENTMAX&gets(tempname)!=NULL&tempname0!=0)strcpy(p_,tempname);printf(请输入该学生的学号:);scanf(%d,&p_studentcount.student1.ID);fflush(stdin);printf(请输入该个学生的3科成绩n);printf(-n);printf(n语文:); scanf(%f,&p_studentcount.student1.sorc0); fflush(stdin);printf(n数学:); scanf(%f,&p_studentcount.student1.sorc0); fflush(stdin);printf(n英语:); scanf(%f,&p_studentcount.student1.sorc0); fflush(stdin);printf(-n);fwrite(&p_studentcount+.student,sizeof(struct studentsorc),1,sorcfile);printf(确定要继续输入下一个学生的成绩吗?(y/n);ch=getchar();if(ch=y|ch=Y)system (cls);free (tempname);tempname=(char *)malloc(20*sizeof(char);printf(请输入第%d个学生的姓名:,count+1);countinue;elsesystem(cls);free(tempname);fclose(sorcfile);return;printf(输入有误请返回重新选择操作.!); free(tempname); fclose(sorcfile); getch(); system(cls); return; /*修改学生成绩*/void mofsorc (struct allstudengtinfo *p_student) int i, j, k, count;float sorc;char ch;char *tempname;count=sorcdatfile(p_student);if(!count)printf(“读取数据失败,请确认已成功录入或文件是否损坏”);getch();system(“cls”);return ;tempname=(char *)malloc(20*sizeof(char);printf(“请输入要修改成绩的学生姓名:”);while(gets(tempname)!=NULL&tempname0!=o)if(strcmp(tempname,p_)continue;elseprintf(“请选择要修改的科目成绩:1. 语文 2. 英语 3.数学n”);scanf(“%d”&j);fflush(stdin);if(j=1)printf(“请重新输入%s的语文成绩:”,tempname);scanf(“%f”&sorc);p_studenti.student1.sorc0=sorc;fflush(stdin);sorcfile=fopen(filenamel,”w+b”); /把修改后的重新写入文件夹for(k=0;kcount;k+)if(fwrite(&p_studentk.student1,sizeof(struct studentsorc),1,sorcfile)!=1)free(tempname);fclose(sorcfile); /写入失败关闭文件printf(“修改失败,.!”);getch();system(“cls”);return;free(tempname);fclose(sorcfile);printf(“修改成功,返回.!”);getch();system(“cls”);return ;else if (j=2)printf(“请重新输入%s的英语成绩:”,tempname);scanf(“%f”&sorc);p_studenti.student1.sorc2=sorc;fflush(stdin);sorcfile=fopen(filenamel,”w+b”); /把修改后的重新写入文件夹for(k=0;kcount;k+)if(fwrite(&p_studentk.student1,sizeof(struct studentsorc),1,sorcfile)!=1)free(tempname);fclose(sorcfile); /写入失败关闭文件printf(“修改失败,.!”);getch();system(“cls”);return;free(tempname);fclose(sorcfile);printf(“修改成功,返回.!”);getch();system(“cls”);return ;else if (j=3)printf(“请重新输入%s的数学成绩:”,tempname);scanf(“%f”&sorc);p_studenti.student1.sorc2=sorc;fflush(stdin);sorcfile=fopen(filenamel,”w+b”); /把修改后的重新写入文件夹for(k=0;kcount;k+)if(fwrite(&p_studentk.student1,sizeof(struct studentsorc),1,sorcfile)!=1)free(tempname);fclose(sorcfile); /写入失败关闭文件printf(“修改失败,.!”);getch();system(“cls”);return;free(tempname);fclose(sorcfile);printf(“修改成功,返回.!”);getch();system(“cls”);return ;elseprintf(“没有此科目,返回.!”);free(tempname);getch()system(“cls”);return ;printf(“没有找到%s的学习成绩,返回.!”,tempname);free(tempname);getch()system(“cls”);return ;printf(“输入有误,返回.!”,tempname);free(tempname);getch()system(“cls”);return ;/*查询个人成绩*/void seasorc(struct allstudentinfo *p_student)char *tempname;int tempID,stuID;int i,j,cont;float sum=0.0,aver;count=sorcdatfile(p_student);if (!count)printf(读取数据失败,请确认数据是否存在或文件是否损坏);getch();system(cls);return ;printf(请选择要操作的类型:n);printf(1.按姓名查找 2.按学号查找n);scanf(%d,&tempID);fflush(stdin);if (tempID=1)tempname=(char *)malloc(20*sizeof(char);printf(请输入该学生的姓名:);while (gets(tempname)!=NULL&tempname0!=0)for (i=0;icount;i+)if (strcmp(tempname,p_)continue;elsefor (j=0;j3;j+)sum+=p_studenti.student1.sorcj; /计算总分aver=sum/3.0; /计算平均分printf(%s的学生成绩表n,tempname);printf(-n);printf(n学号:%dn,p_studenti.student1.ID);printf(n姓名:%dn,p_);printf(n语文:%.2fn,p_studenti.student1.sorc0);printf(n数学:%.2fn,p_studenti.student1.sorc1);printf(n英语:%.2fn,p_studenti.student1.sorc2);printf(n总分:%.2fn,sum);printf(n平均分:%.2fn,aver);printf(-n);printf(查询完毕,按任意键返回!);free(tempname);getch();system(cls);return ;printf(找不到该学生的成绩,返回.!);free(tempname);getch();system(cls);return ;else if (tempID=2)printf(请输入该学生的ID学号:);scanf(%d,&stuID);fflush(stdin);for(i=0;icount;i+)if(stuID!=p_studenti.student1.ID)continue;elsefor(j=0;j3;j+)sum+=p_studenti.student1.sorcj; /计算总分aver=sum/3.0; /计算平均分printf(学号为%d的学生成绩表n,stuID); printf(-n);printf(n学号:%dn,p_studenti.student1.ID);printf(n姓名:%dn,p_);printf(n语文:%.2fn,p_studenti.student1.sorc0);printf(n数学:%.2fn,p_studenti.student1.sorc1);printf(n英语:%.2fn,p_studenti.student1.sorc2);printf(n总分:%.2fn,sum);printf(n平均分:%.2fn,aver);printf(-n);printf(查询完毕,按任意键返回!);getch();system(cls);return ; printf(没有找到该学生的成绩,返回.!); getch();system(cls);return;printf(没有此选择,返回.!);getch();system(cls);return;/*删除学生成绩*voiddelsorc(struct allstudentinfo *p_student) int in,stuID; int i,count; char ch; char *empname; count=sorcdatfile(p_student); if(!count) printf(“读取数据失败!请确认已成功录入或文件是否损坏!); getch(); system(cls); reyurn; printf(请选择你的操作选项:1.按姓名查找删除 2.按学号查找删除); scanf(%d,&in); fflush(stdin); if(in=1) tempname=(char *)malloc(20*sizeof(char); printf(*请输入你要删除的学生姓名:); gets(tempname); for(i=0;icount;i+) if(strcmp(tempname,p_) continue; else for(;icount;i+) p_studenti.student1=p_studenti+1.student1; -count;/成绩减1 sorcfile=fopen(filenamel,w+b); for(i=0;icount;i+) if(fwrite(&p_studenti.student1,sizeof(structstudentsorc),1,sorcfile)=1) continue; else printf(删除失败.!); free(tempname); fclose(sorcfile); getch(); system(cls); return; printf(删除成功.!); free(tempname); fclose(sorcfile); getch(); system(cls); return; printf(找不到该学生,返回.!); free(tempname); getch(); system(cls); return; else if(in=2) printf(*请输入你要删除的学生学号 :); scanf(%d,&stuID); fflush(stdin); for(i=0;icount;i+) if(stuID!=p_studenti.student1.ID) continue; else for(;icount;i+) p_studenti.student1=p_studenti+1.student1; -count; sorcfile=fopen(filenamel,w+b); for(i=0;icount;i+) if(fwrite(&p_studenti.student1,sizeof(structstudentsorc),l,sorcfile)=1) continue; else printf(*删除失败.!); fclose(sorcfile); getch(); system(cls); return; printf(删除成功.!); fclose(sorcfile); getch(); system(cls); return; printf(找不到该学生,返回.!); getch(0; system(cls); return; printf(输入有误,返回.!); getch(); system(cls); return; else if(in=2)printf(“请输入你要删除的学生学号:”);scanf(“%d”,&stuID);fflssh(stdin);for(i=0;icount;i+) if(stuID!=p_studenti.student1.ID) countinue; else for(;icount;i+) P_studenti.studen1=p_studenti+1.student1; -count; Sorcfile=fopen(filename,”w+b”); for(i=0;icount;i+) if(fwrite(&p_studenti.student1,sizeof(struct studentsorc),1,sorcfile)=1) countinue; else printf(“删除失败.”); fclose(sorcfile); getch(); system(“cls”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《小学教师招聘》考试彩蛋押题及参考答案详解(a卷)
- 教师招聘之《小学教师招聘》综合检测提分完整答案详解
- 2025年教师招聘之《小学教师招聘》考前冲刺练习题库附答案详解【预热题】
- 演出经纪人之《演出经纪实务》预测复习附参考答案详解(典型题)
- 教师招聘之《幼儿教师招聘》综合提升测试卷附参考答案详解【能力提升】
- 教师招聘之《小学教师招聘》题库检测试题打印含答案详解【b卷】
- 三高铁路投资有限公司招聘笔试题库2025
- 2025年教师招聘之《小学教师招聘》通关练习题库包及参考答案详解一套
- 教师招聘之《小学教师招聘》考试历年机考真题集带答案详解(满分必刷)
- 店面转让合同
- 卡培他滨诱导手足综合征大鼠模型的建立及评价
- ov属性分析技术在地震数据采集中的应用
- 电动托盘车(搬运车)培训-课件
- 14K118 空调通风管道的加固
- 安庆飞凯新材料有限公司6000吨-年光固化树脂及表面处理涂料项目环境影响报告书
- 月子会所运营方案
- 排污单位自行监测方案编制模板
- 工作安全分析JSA杜邦
- YY 1727-2020口腔黏膜渗出液人类免疫缺陷病毒抗体检测试剂盒(胶体金免疫层析法)
- 粘膜免疫系统概述
- 10室外配电线路工程定额套用及项目设置
评论
0/150
提交评论