


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计项目设计报告项目名称:学生成绩信息管理系统2016年1月13日1项目分析问题描述信息储存与查询是计算机处理数据的优势之一,目前,学生信息的管理系统已经完全走进了校园,其中成绩信息的储存是主要部分,本课题使用C语言实现 学生成绩的储存,查询,修改,以及删除等操作。程序中涉及到数据块和文件指 针的操作,包括结构体数据定义,使用及文件的读写,定位,修改等。功能需求分析学生成绩信息管理系统的主要功能如下: 添加学生信息:录入学生的基本信息,如姓名,学号,成绩。 显示所有学生成绩信息:直接显示已经全部录入学生的成绩信息。 学号或姓名查询:可以根据学生的姓名和学号直接查询该名学生的成绩。 成
2、绩查询:可以根据一个特定的分数来查询学生的信息。 删除学生成绩信息:可以直接根据学号确定是否删除对应学生的成绩信息 修改学生成绩信息:直接根据学生学号来修改学生的姓名,学号,成绩。函数设计表1函数列表序号函数原型功能说明1void add new()新增学生姓名,学号,成绩信息2void addold()在原有基础上继续增加其他冋学的信息3void prin tall()显示所有已经存入学生的成绩等信息4void search()根据姓名或者学号查询学生分数5void jgsearch()根据成绩查询对应的同学6void del()删除学生信息7void modify()修改学生信息8syst
3、em( “ cls ” );清屏部分功能设计1.删除学生的信息,输入学生的学号进行删除操作, 会提示无此人,如果找到,系统将会确认你是否需要删除, 开始如果没有此人,系统将 流程图如1-2所示。NoYes输入学号图1-2删除学生信息流程图2.输入学号进行查询对应同学的成绩,流程图如图在文件里查找1-3所示。开始上3查询功能流程图3系统实现源程序主函数设voidin()int x;system("cls"); Yes /* 清屏 */do7在文件中查找确认删除输入0是否找到输出文件无此人No输入1prin tf("n printf(“p输出姓名,学号, printf
4、("成绩prif欢迎使用学生成绩信息管理系统厂1 -nnnnn");结束输出嘛生信息'n'n");-显示所有学生成绩信息 nn") -学号或姓名查询nn");-成绩查询nn”);结束printf(" printf(" printf("printf("choice:scanf("%d",&x);switch(x)case 1:add();break;case 2:printall();break;case 3:search();break;case 4:jgsea
5、rch();break; case 5:del();break;case 6:modify();break;case 0:break; default:printf("nwhile(x!=0);system("cls");printf("nn添加学生信息/* 学生成绩信息管理系统 */#include <>#include <>#include <>int c,j,t;struct stu/* 定义结构体类型 */char name10;5 删除学生成绩信息nn")6 修改学生成绩信息nn")0 退
6、出 ");请您选择: ");错误的选择,请重新选择:");goto choice;欢迎再次使用学生成绩管理系统 n");char num10;char score10; student100, newstudent100;/* 添加学生个人信息 */void addnew()int a,b,k;FILE *fp,*fp1,*fp2; /*FILE 类型指针变量的定义形式 */ for(a=0;a<200;a+)system("cls");printf(" 欢迎使用学生成绩管理系统 nnn");printf(&
7、quot; 录入学生信息 nn");printf(" 输入学生姓名 :"); scanf("%s",&);printf(" 输入学生学号 :"); scanf("%s",&studenta.num);printf(" 输入学生成绩 :"); scanf("%s",&studenta.score);printf(" 输入 1 '继续, 0 '结束 n"); /* 判断输入是否结束 *
8、/ scanf("%d",&b);if(b=0)c=a;system("cls");break;if(fp1=fopen("","w")=NULL) /* 文件名,使用文件方式 */printf(" 信息写入失败 ");exit(0);if(fp2=fopen("","w")=NULL)printf(" 信息写入失败 ");exit(0);if(fp=fopen("","w")=NULL)
9、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");p
10、rintf(" 请输入 '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");nnn");ame,);printf(" 欢迎使用学生成绩信息管理系统
11、 printf(" 录入学生信息 nn"); printf("nn 存储文件名有 nn"); printf(" 请输入想继续添加的文件名: "); scanf("%s",wjm);for(a=0;a<200;a+)printf(" 输入学生姓名 :"); scanf("%s",&);printf(" 输入学生学号 :"); scanf("%s",&newstudenta.num);p
12、rintf(" 输入学生成绩 :"); scanf("%s",&newstudenta.score);printf(" 输入 1 '继续, 0'结束 n"); 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(
13、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("添加学生
14、信息 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("ngoto choice;system("cls");/* 显示所有学生的成绩
15、void printall()错误的选择,请重新选*/");int a,b;FILE *fp,*fp1,*fp2; system("cls");printf("printf("欢迎使用学生成绩信息管理系统 nnn"); 全部已录入学生信息 nn");printf("%-10s%-20s%-50sn"," 姓名 ","学号 "," 成绩 ");j=sizeof(struct stu);if(fp=fopen("","r
16、")=NULL)printf("n 打开失败 ");exit(0);if(fp1=fopen("","r")=NULL) printf(" 信息写入失败 ");exit(0);if(fp2=fopen("","r")=NULL)printf(" 信息写入失败 ");exit(0);a=0;while(!feof(fp)if(fread(&studenta,j,1,fp)=1)printf("%-10s%-20s%-50sn&qu
17、ot;,,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
18、.num,studenta.score); a+;fclose(fp);fclose(fp1);fclose(fp2);printf(" 返回上级请输入 0' !n:");scanf("%d",&b);if(b=0)system("cls");姓名学号查询void search()int k,b,a;char cx20;FILE *fp;system("cls");j=sizeof(struct stu);doprintf(" 欢迎使用学生成绩信息管理系统 nnn");print
19、f(" 查找已录入学生成绩信息 nn"); k=0;if(fp=fopen("","r")=NULL)printf("n 打开失败 !");exit(0);printf(" 请输入学号或姓名: n"); scanf("%s",cx);if(cx0<'0')|(cx0>'9') a=0;while(!feof(fp)fread(&studenta,j,1,fp); if(strcmp(,cx)=0)p
20、rintf("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(
21、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("
22、;n 输入“ 1”继续查找,“ 0”结束 n");scanf("%d",&b);system("cls"); while(b!=0); system("cls");成绩查询void jgsearch()int b,a;char cx20;FILE *fp;system("cls");j=sizeof(struct stu);doprintf(" 欢迎使用学生成绩信息管理系统 nnn"); printf(" 查找学生成绩信息 nn"); if(fp=fopen
23、("","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"," 姓名 "," 学号 "," 成绩 "); pr
24、intf("%-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");删除学生成绩信息void del()int m=0,k=0,b,a,q,p; char xh20,wjm20; FILE *fp; system(&
25、quot;cls"); j=sizeof(struct stu); doprintf("欢迎使用学生成绩信息管理系统 nnn");printf(" 删除学生成绩信息 nn");printf("nn 存储文件名有 nn");k=0;printf("n 请输入学号: ");scanf("%s",xh);printf("n 请输入欲删除的文件名: ");scanf("%s",wjm);if(fp=fopen(wjm,"r")=NUL
26、L)printf("n 文件打开失败 !");exit(0);a=0;while(!feof(fp)fread(&studenta,j,1,fp); um)=0)k=1;break;if(a=t)printf("nn 文件中无此人的记录。 ");if(k=1)printf("nn 已查到,该记录为 :nn");printf("%-10s%-20s%-50s"," 姓名 ","学号 ","成绩 "); printf("%-10s%-20s%
27、-50s",,studenta.num,studenta.score); printf("n 确实要删除记录,请按 1;不删除记录,请按 0: n");scanf("%d",&m);if(m)for(p=a,q=a+1;p<t,q<=t;q+,p+) strcpy(,);strcpy(studentp.num,studentq.num);strcpy(studentp.score,studentq.score);if(fp=fopen(wjm,&q
28、uot;w")=NULL)printf("n 文件打开失败 !");exit(0);for(a=0;a<t;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");修改学生成绩信息void modify()i
29、nt k=0,b,a;char xh20,wjm20;FILE *fp;system("cls");j=sizeof(struct stu);donnn");printf(" 欢迎使用学生成绩信息管理系统 printf(" 修改学生成绩信息 nn"); printf("nn 存储文件名有 nn"); printf("n 请输入学号: ");scanf("%s",xh);printf("n 请输入欲修改文件名: ");scanf("%s"
30、,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(&qu
31、ot;%-10s%-20s%-50s"," 姓名 ","学号 ","成绩 "); printf("%-10s%-20s%-50s",,studenta.num,studenta.score); printf("n 请输入新的姓名: ");scanf("%s",);printf("n 请输入新的学号: ");scanf("%s",studenta.num);printf(&qu
32、ot;n 请输入新的成绩: ");scanf("%s",studenta.score);if(fp=fopen(wjm,"w")=NULL)printf("n 文件打开失败 !");exit(0);for(a=0;a<t;a+)fwrite(&studenta,j,1,fp);printf("n 修改成功 !");fclose(fp);printf("n 输入“ 1”继续,“ 0”结束 n");scanf("%d",&b);system(&qu
33、ot;cls");while(b!=0); system("cls");4 功能测试菜单测试学生成绩管理系统运行后的主菜单界面如图 4-1 所示。图 4-1 系统主界面系统功能测试1添加学生信息在主菜单按 1后,会显示图 4-2,再按 2添加学生的信息如图 4-3 所示,如果按 1的话那么所有以前的保存的信息都将被清除,接着再重新输入数据。图 4-2 学生信息输入界面 图 4-3 学生信息输入界面2显示所有学生成绩信息在系统菜单上面按 2,则所有的学生成绩都会显示如图 4-4 所示。图 4-4 学生成绩浏览3. 学号或姓名查询在主菜单上输入 3,然后在根据姓名或者
34、学号,可以查到该同学的分数,如图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 ,定义一个指向整型变量的指针变量,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州行测国考题库及答案详解(必刷)
- 2025上海科学院事业单位工作人员招聘4人(第三批)考试模拟试题及答案解析
- 2025年汽车销售退换货处理合同
- 2025年新能源储能技术在分布式光伏电站中的应用报告
- 2025年医学影像技术专业考试试卷及答案
- 2025年滇中城市群低空经济「跨境通道」航空物流服务创新与客户体验报告
- 2025年新能源汽车出口市场政策法规影响分析报告
- 2025年低空通信基站建设与运营模式研究报告
- 2025年新能源汽车电池回收利用产业园区产业园区绿色发展与生态保护报告
- 2025年肺结核与糖尿病共病的治疗管理试题含答案
- 《中华人民共和国未成年人保护法》宣贯培训2024
- 公司员工反腐倡廉管理制度
- 如愿音乐课件
- 华为fgOTN(细颗粒光传送网)技术白皮书
- 金融营销-试题及答案
- 人教版英语2024七年级上册全册单元知识清单(背诵版)
- 第4课 化解冲突有办法 (教学设计)-苏教版心理健康四年级上册
- SBT 11215-2018 商品交易市场建设与经营管理术语
- 2024春苏教版《亮点给力大试卷》 数学四年级下册(全册有答案)
- GB/T 35594-2023医药包装用纸和纸板
- 2021变电站端子箱
评论
0/150
提交评论