




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生成绩信息管理系统C语言程序设计项目设计报告项目名称: 学生成绩信息管理系统 2016年 1月 13日目 录1 项目分析11.1 问题描述11.2 功能需求分析12 系统设计22.1 数据结构设计22.3部分功能设计23 系统实现源程序43.1 主函数设计43.2 添加学生信息53.3 姓名学号查询103.4 成绩查询123.5 删除学生成绩信息133.6 修改学生成绩信息144 功能测试164.1 菜单测试164.2 系统功能测试165 系统设计遇到的问题及解决方法216 项目设计总结2223学生成绩信息管理系统 1 项目分析1.1 问题描述信息储存与查询是计算机处理数据的优势之一,目前,学生信息的管理系统已经完全走进了校园,其中成绩信息的储存是主要部分,本课题使用C语言实现学生成绩的储存,查询,修改,以及删除等操作。程序中涉及到数据块和文件指针的操作,包括结构体数据定义,使用及文件的读写,定位,修改等。1.2 功能需求分析学生成绩信息管理系统的主要功能如下:添加学生信息:录入学生的基本信息,如姓名,学号,成绩。显示所有学生成绩信息:直接显示已经全部录入学生的成绩信息。学号或姓名查询:可以根据学生的姓名和学号直接查询该名学生的成绩。成绩查询:可以根据一个特定的分数来查询学生的信息。删除学生成绩信息:可以直接根据学号确定是否删除对应学生的成绩信息。修改学生成绩信息:直接根据学生学号来修改学生的姓名,学号,成绩。学生成绩信息管理系统添加学生信息显示所有学生成绩信息学号或姓名查询成绩查询删除学生成绩信息修改学生成绩信息重新添加信息继续添加信息图1-1 系统功能模块图2 系统设计2.1 数据结构设计struct stu/定义结构体类型char name10;/姓名char num10;/学号char score10;/成绩if(fp1=fopen(Ca1.txt,w)=NULL)/文件名,使用文件方式printf(信息写入失败);exit(0);char wjm20;/文件名2.2 函数设计表1 函数列表序号函 数 原 型功 能 说 明1void addnew()新增学生姓名,学号,成绩信息2void addold()在原有基础上继续增加其他同学的信息3void printall()显示所有已经存入学生的成绩等信息4void search()根据姓名或者学号查询学生分数5void jgsearch()根据成绩查询对应的同学6void del()删除学生信息7void modify()修改学生信息8system(“cls”);清屏2.3部分功能设计1.删除学生的信息,输入学生的学号进行删除操作,如果没有此人,系统将会提示无此人,如果找到,系统将会确认你是否需要删除,流程图如1-2所示。输出删除成功结束开始输入学号在文件里查找输出文件无此人确认删除输入1输入0是否找到YesNoYes图1-2 删除学生信息流程图2.输入学号进行查询对应同学的成绩,流程图如图1-3所示。YesNo开始输入学号或姓名在文件中查找是否找到输出姓名,学号,成绩结束输出文件无此人记录图1-3 查询功能流程图3 系统实现源程序3.1 主函数设计void main()int x;system(cls);/*清屏*/doprintf(n 欢迎使用学生成绩信息管理系统nnnnn); printf( 1 -添加学生信息nn); printf( 2 -显示所有学生成绩信息nn); printf( 3 -学号或姓名查询nn);printf( 4 -成绩查询nn); printf( 5 -删除学生成绩信息nn);printf( 6 -修改学生成绩信息nn);printf( 0 -退出);printf( 请您选择:);choice:scanf(%d,&x);switch(x)case 1:add();break;case 2:printall();break;case 3:search();break;case 4:jgsearch();break;case 5:del();break;case 6:modify();break;case 0:break;default:printf(n 错误的选择,请重新选择:);goto choice; while(x!=0);system(cls);printf(nn 欢迎再次使用学生成绩管理系统n); 3.2 添加学生信息/*学生成绩信息管理系统*/#include #include #include int c,j,t;struct stu/*定义结构体类型*/ char name10;char num10;char score10;student100,newstudent100;/*添加学生个人信息*/ void addnew()int a,b,k;FILE *fp,*fp1,*fp2; /*FILE类型指针变量的定义形式*/ for(a=0;a200;a+)system(cls);printf( 欢迎使用学生成绩管理系统nnn);printf( 录入学生信息nn);printf(输入学生姓名:);scanf(%s,&);printf(输入学生学号:);scanf(%s,&studenta.num);printf(输入学生成绩:);scanf(%s,&studenta.score);printf(输入1继续,0结束n);/*判断输入是否结束*/ scanf(%d,&b);if(b=0)c=a;system(cls);break;if(fp1=fopen(Ca1.txt,w)=NULL)/*文件名,使用文件方式*/ printf(信息写入失败);exit(0);if(fp2=fopen(Ca2.txt,w)=NULL)printf(信息写入失败);exit(0);if(fp=fopen(Ca3.txt,w)=NULL)printf(信息写入失败);exit(0);j=sizeof(struct stu);for(a=0;a=c;a+)if(fwrite(&studenta,j,1,fp)!=1)printf(存入失败!);for(a=0;a=c;a+)if(strcmp(studenta.score,80)=0)fwrite(&studenta,j,1,fp1);elsefwrite(&studenta,j,1,fp2);printf(添加成功!nn);printf(请输入0返回n);scanf(%d,&k);fclose(fp1);fclose(fp2);fclose(fp);if(k=0)system(cls);/*继续添加成员*/void addold()int a,b,k,p,q;char wjm20;FILE *fp;j=sizeof(struct stu);system(cls);printf( 欢迎使用学生成绩信息管理系统nnn);printf( 录入学生信息nn);printf(nn存储文件名有 Ca1.txt Ca2.txt Ca3.txtnn);printf(请输入想继续添加的文件名:);scanf(%s,wjm);for(a=0;a200;a+)printf(输入学生姓名:);scanf(%s,&);printf(输入学生学号:);scanf(%s,&newstudenta.num);printf(输入学生成绩:);scanf(%s,&newstudenta.score);printf(输入1继续,0结束n);/判断输入是否结束scanf(%d,&b);if(b=0)c=a;system(cls);break;if(fp=fopen(wjm,r)=NULL)printf(文件打开失败!);exit(0);a=0;while(!feof(fp)fread(&studenta,j,1,fp);a+;fclose(fp);t=a-1;for(q=0,p=t;q=c,p=t+c;q+,p+)strcpy(,);strcpy(studentp.num,newstudentq.num);strcpy(studentp.score,newstudentq.score);if(fp=fopen(wjm,w)=NULL)printf(文件打开失败!);exit(0);for(a=0;a=t+c;a+)if(fwrite(&studenta,j,1,fp)!=1)printf(存入失败!);printf(添加成功!nn);printf(请输入0返回n);scanf(%d,&k);fclose(fp);if(k=0)system(cls);void add()int x;system(cls);printf( 欢迎使用学生成绩信息管理系统nnn);printf( 添加学生信息nn);printf( 1 重新添加信息n);printf( 2 继续添加信息n);printf( 0 返回nnn);printf( 请选择:);scanf(%d,&x);choice:switch(x)case 1:addnew();break;case 2:addold();break;case 0:break;default:printf(n 错误的选择,请重新选择:);goto choice; system(cls);/*显示所有学生的成绩*/ void printall()int a,b;FILE *fp,*fp1,*fp2;system(cls);printf( 欢迎使用学生成绩信息管理系统nnn);printf( 全部已录入学生信息nn);printf(%-10s%-20s%-50sn,姓名,学号,成绩);j=sizeof(struct stu);if(fp=fopen(Ca1.txt,r)=NULL)printf(n打开失败);exit(0);if(fp1=fopen(Ca2.txt,r)=NULL)printf(信息写入失败);exit(0);if(fp2=fopen(Ca3.txt,r)=NULL)printf(信息写入失败);exit(0);a=0;while(!feof(fp)if(fread(&studenta,j,1,fp)=1)printf(%-10s%-20s%-50sn,,studenta.num,studenta.score);a+;a=0;while(!feof(fp1)if(fread(&studenta,j,1,fp1)=1)printf(%-10s%-20s%-50sn,,studenta.num,studenta.score);a+;a=0;while(!feof(fp2)if(fread(&studenta,j,1,fp2)=1)printf(%-10s%-20s%-50sn,,studenta.num,studenta.score);a+;fclose(fp);fclose(fp1);fclose(fp2);printf(返回上级请输入0!n:);scanf(%d,&b);if(b=0)system(cls);3.3 姓名学号查询void search()int k,b,a;char cx20;FILE *fp;system(cls);j=sizeof(struct stu);doprintf( 欢迎使用学生成绩信息管理系统nnn);printf( 查找已录入学生成绩信息nn);k=0;if(fp=fopen(Ca1.txt,r)=NULL)printf(n打开失败!);exit(0);printf(请输入学号或姓名:n);scanf(%s,cx);if(cx09)a=0;while(!feof(fp)fread(&studenta,j,1,fp);if(strcmp(,cx)=0)printf(nn已查到,该记录为:nn);printf(%-10s%-20s%-50sn,姓名,学号,成绩);printf(%-10s%-20s%-50sn,,studenta.num,studenta.score);k=1;a+;if(0=cx0=9)a=0;while(!feof(fp)fread(&studenta,j,1,fp);if(strcmp(studenta.num,cx)=0)printf(nn已查到,该记录为:nn);printf(%-10s%-20s%-50sn,姓名,学号,成绩);printf(%-10s%-20s%-50sn,,studenta.num,studenta.score);k=1;a+;if(!k)printf(n文件中无此人的记录。);fclose(fp);printf(n输入“1”继续查找,“0”结束n);scanf(%d,&b);system(cls);while(b!=0);system(cls);3.4 成绩查询void jgsearch()int b,a;char cx20;FILE *fp;system(cls);j=sizeof(struct stu);doprintf( 欢迎使用学生成绩信息管理系统nnn);printf( 查找学生成绩信息nn);if(fp=fopen(Ca1.txt,r)=NULL)printf(n打开失败!);exit(0);printf(请输入学生成绩:n);scanf(%s,cx);a=0;while(!feof(fp)fread(&studenta,j,1,fp);if(strcmp(cx,studenta.score)=0)printf(%-10s%-20s%-50sn,姓名,学号,成绩);printf(%-10s%-20s%-50sn,,studenta.num,studenta.score);a+;fclose(fp);printf(n输入“1”继续查找,“0”结束n);scanf(%d,&b);system(cls);while(b!=0);system(cls);3.5 删除学生成绩信息void del()int m=0,k=0,b,a,q,p;char xh20,wjm20;FILE *fp;system(cls);j=sizeof(struct stu);doprintf( 欢迎使用学生成绩信息管理系统nnn);printf( 删除学生成绩信息nn);printf(nn存储文件名有 Ca1.txt Ca2.txt Ca3.txtnn);k=0;printf(n请输入学号:);scanf(%s,xh);printf(n请输入欲删除的文件名:);scanf(%s,wjm);if(fp=fopen(wjm,r)=NULL)printf(n文件打开失败!);exit(0);a=0;while(!feof(fp)fread(&studenta,j,1,fp); /将文件内容输入到数组中a+;fclose(fp);t=a-1;for(a=0;a=t;a+)if(strcmp(xh,studenta.num)=0)k=1;break;if(a=t)printf(nn文件中无此人的记录。);if(k=1)printf(nn已查到,该记录为:nn);printf(%-10s%-20s%-50s,姓名,学号,成绩);printf(%-10s%-20s%-50s,,studenta.num,studenta.score);printf(n确实要删除记录,请按1;不删除记录,请按0:n);scanf(%d,&m);if(m)for(p=a,q=a+1;pt,q=t;q+,p+)strcpy(,);strcpy(studentp.num,studentq.num);strcpy(studentp.score,studentq.score);if(fp=fopen(wjm,w)=NULL)printf(n文件打开失败!);exit(0);for(a=0;at;a+)fwrite(&studenta,j,1,fp);if(m)printf(n删除成功!);fclose(fp);printf(n输入“1”继续,“0”结束n);scanf(%d,&b);system(cls);while(b!=0);system(cls);3.6 修改学生成绩信息void modify()int k=0,b,a;char xh20,wjm20;FILE *fp;system(cls);j=sizeof(struct stu);doprintf( 欢迎使用学生成绩信息管理系统nnn);printf( 修改学生成绩信息nn);printf(nn存储文件名有 Ca1.txt Ca2.txt Ca3.txtnn);printf(n请输入学号:);scanf(%s,xh);printf(n请输入欲修改文件名:);scanf(%s,wjm);if(fp=fopen(wjm,r+)=NULL)printf(n打开失败!);exit(0);a=0;while(!feof(fp)fread(&studenta,j,1,fp);a+;fclose(fp);t=a-1;for(a=0;a=t;a+)if(strcmp(xh,studenta.num)=0)k=1;break;if(a=t)printf(nn文件中无此人的记录。);if(k=1)printf(nn已查到,该记录为:nn);printf(%-10s%-20s%-50s,姓名,学号,成绩);printf(%-10s%-20s%-50s,,studenta.num,studenta.score);printf(n请输入新的姓名:);scanf(%s,);printf(n请输入新的学号:);scanf(%s,studenta.num);printf(n请输入新的成绩:);scanf(%s,studenta.score);if(fp=fopen(wjm,w)=NULL)printf(n文件打开失败!);exit(0);for(a=0;at;a+)fwrite(&studenta,j,1,fp);printf(n修改成功!);fclose(fp);printf(n输入“1”继续,“0”结束n);scanf(%d,&b);system(cls);while(b!=0);system(cls);4 功能测试4.1 菜单测试学生成绩管理系统运行后的主菜单界面如图4-1所示。图4-1系统主界面4.2 系统功能测试1 添加学生信息在主菜单按1后,会显示图4-2,再按2添加学生的信息如图4-3所示,如果按1的话那么所有以前的保存的信息都将被清除,接着再重新输入数据。图4-2 学生信息输入界面图4-3 学生信息输入界面2 显示所有学生成绩信息在系统菜单上面按2,则所有的学生成绩都会显示如图4-4所示。图4-4 学生成绩浏览3. 学号或姓名查询在主菜单上输入3,然后在根据姓名或者学号,可以查到该同学的分数,如图4-5和4-6图所示。图4-5 根据学号查询分数图4-6 根据姓名查询分数4. 成绩查询在主菜单上输入4,可以得到图4-7所示,这是根据分数来确定学生。图4-7 根据分数来确定学生5. 删除学生成绩信息在主菜单上按5,选择需要删除的对应文档里的该学生的成绩信息,可以得到图4-8所示。图4-8 删除学生信息6. 修改学生的信息在主菜单上按6,选择需要修改的人的学号,再进行一系列的修改,可以得到图4-9所示。图4-9 修改学生信息5 系统设计遇到的问题及解决方法1.*和 在定义时只是说明作用,不能误解为运算符&、*、 是C语言提供的三种运算符,分别是取地址运算符、指针运算符和下标运算符,其中,&与*互为逆运算。在表达式中它们的意义很明确,但是在定义中*、 只是起说明作用,不能看作运算符。例如:int number=10; Int *pt=&number; Int *pt=a;在这里,我们容易被后两个语句迷惑,之所以迷惑,就是把*当作了运算符,其实在这里Int *共同来修饰指针变量pt,定义一个指向整型变量的指针变量,自然会把一个地址&number赋值给pt。因此,上述后面两个赋值语句中,第一个是正确的。2、用整数值直接给指针赋值指针值就是指针所指向的地址,在程序运行中,指针的值其实就是一个整数值,但是决不能在程序语句中把一个整数值当作指针的值直接赋给指针。例如:int num; Int *pt; num=72781
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 薄壁空心墩施工专项方案指南
- 牛津树-自然拼读-等级2-level 2 -U1-Lesson2
- 部编版三年级下册第三单元《纸的发明》教案
- 建筑施工特种作业-桥(门)式起重机司机真题库-3
- 建筑施工特种作业-建筑起重机械安装拆卸工(塔式起重机)真题库-10
- 日语基础阅读题目及答案
- 2023-2024学年山东省聊城市高二下学期期末教学质量抽测数学试题(解析版)
- 2023-2024学年河南省濮阳市高二下学期期末学业质量监测数学试题(解析版)
- 回复函建议意见
- 饱和蒸汽压力温度热焓对照表
- 检验科生物安全知识
- 沪教版五年级英语下册期末复习总结
- 半波整流电路周彩霞课件
- 《投标文件产品质量保证措施:方案与实施》
- 2025人工智能面向机器学习的数据标注规程
- 2025年中国商业地产物业管理市场供需格局及未来发展趋势报告
- 煤矿应聘笔试题库及答案
- 2024年第二次广东省普通高中生物学业水平合格性考试含答案
- Maya-2023三维建模与制作实战教程-配套课件
- 化学反应工程与催化反应课件
- 声学基础课件(许肖梅) - 声学原理与现象教程
评论
0/150
提交评论