版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、语言课程设计论文Prepared on 24 November 2020C语言程序设计项目设计报告项目名称: 学生成绩信息管理系统2016年1月13日1项目分析问题描述信息储存与查询是计算机处理数据的优势之一,目前,学生信息的管理系 统已经完全走进了校园,其中成绩信息的储存是主要部分,本课题使用C语言 实现学生成绩的储存,查询,修改,以及删除等操作。程序中涉及到数据块和 文件指针的操作,包括结构体数据定义,使用及文件的读写,定位,修改等。功能需求分析学生成绩信息管理系统的主要功能如下:添加学生信息:录入学生的基本信息,如姓名,学号,成绩。显示所有学生成绩信息:直接显示已经全部录入学生的成绩信息
2、。学号或姓名查询:可以根据学生的姓名和学号直接查询该名学生的成绩。成绩查询:可以根据一个特定的分数来查询学生的信息。删除学生成绩信息:可以直接根据学号确定是否删除对应学生的成绩信息。修改学生成绩信息:直接根据学生学号来修改学生的姓名,学号,成绩。当生成缁信息管,纸侬添力口但息2系统设计数据结构设计struct stu定义结构体类型(char name10;姓名char num10;char score10;成绩if (fpl=fopene,", "w") )=NULL)printf ("信息写入失败exit (0);char wjnt20;学号/文件名,
3、使用文件方式/文件名函数设计表1函数列表序号函数原型功能说明1void addnewO新增学生姓名,学号,成绩信息2void addoldO在原有基础上继续增加其他同学的信息3void printall()显示所有已经存入学生的成绩等信息4void search0根据姓名或者学号查询学生分数5void jgsearchO根据成绩查询对应的同学6void del ()删除学生信息7void modify0修改学生信息8system( “cis" );清屏部分功能设计L删除学生的信息,输入学生的学号进行删除操作,如果没有此人,系统 将会提示无此人,如果找到,系统将会确认你是否需要删除,流
4、程图如1-2所开始椅入登目在文件里查找图1-2加际于土信息流程图2.输入学号进行查询对应同学的成绩,流程图如图3所示。No输出姓名,学/欢迎使用学生成/输出文件无此hnnn); printf(Mprintf(M结束成绩查询nn");printfC*5删除学生成绩信息nn”);printf(-6修改学生成绩信息nn”);printf(-0退出)printf("请您选择:");choice:scanf("d&x);switch(x) case l:add();break;case 2:printall();break;case 3:search();
5、break; case 4:jgsearch();break;case 5:del();break;case 6:niodify();break;case O:break;default:printf("n错误的选择,请重新选择:");gotochoice;)while(x!=O);system(nclsn);printf("n»欢迎再次使用学生成绩管理系统n”);)添加学生信息/*学生成绩信息管理系统*/#include <>#include <>#include <>int c,j,t;struct stu/*定义
6、结构体类型*/(char name10;char num10;char score10;)student 100, newstudent100;/*添加学生个人信息*/void addnew() int a,b,k;FILE *fp,*fpl,*fp2;/*FILE类型指针变量的定义形式*/for(a=0;a<200;a+) (system(nclsn);printf(-欢迎使用学生成绩管理系统nnn");printf(Hprintff输入学生姓名:");scanf("%s,&);printf(”输入学生学号:")
7、;scanf(H%s,&studenta.nuni);printf(”输入学生成绩:”); scanf(H%s,&studenta.score);/*判断输入是否结束刃使用文件方式*/printf(”输入T继续,。结束n”);scanf(M%d",&b);if(b=O)(c=a;system(nclsH); break;)if(fpl=fopen(H","w")=NULL)/* 文件名,printf("信息写入失败)exit(O);)if(fp2=fopen(,HHwn)=NULL)printf("信息写入失败
8、】exit(O);)if(fp=fopen(,H,;,wn)=NULL)printf("信息写入失败)exit(O);)j=sizeof(struct stu);for(a=0;a<=c;a+)if(fwrite(&studenta,j, 1 ,fp)!=l)printf("存入失败! ”);)for(a=0;a<=c;a+)if(strcmp(studenta.score,n80n)=0)fwrite(&studenta J, 1 ,fp 1);elsefwrite(&studenta,j, 1 ,fp2);)printf("
9、添加成功! nn");printf(”请输入。返回n”);scanf("%d'&k);fclose(fpl);fclose(fp2);fclose(fp);if(k=o) system(MclsH);)/*继续添加成员*/void addold() (int a,b,k,p,q;char wjm20;FILE *fp;j=sizeof(struct stu);system(nclsH);printf(”欢迎使用学生成绩信息管理系统nnn");printf("录入学生信息nn");printf("nn存储文件名有nn&q
10、uot;);printf(”请输入想继续添加的文件名:”);scanf("%s",wjm);for(a=0;a<200;a+) printf(”输入学生姓名:");scanf("%s",&);printf("输入学生学号:");scanf("%s",&newstudenta.num);printf(”输入学生成绩:");scanf(H%s,&newstudenta.score); printf(”输入T继续结束n)ame,newstu
11、);strcpy(studentp.num,newstudentq.num);strcpy(studentp.score,newstudentq.score);)if(fp=fopen(wjm/,wM)=NULL) printf("文件打开失败!");exit(O);)for(a=0;a<=t+c;a+)if(fwrite(&studenta J, 1 ,fp)!=l)printf("存入失败! ”);)printf("添加成功! nn");printf(”请输入。返回n”);scanf("%d&qu
12、ot;,&k);fclose(fp);if(k=o)system(HclsH);)void add()int x;system(HclsH);printf("欢迎使用学生成绩信息管理系统nnn");printf("添加学生信息nn”);printf("1重新添加信息n");printf("2继续添加信息n”);printf("0 返回nnn");printf("请选择:");scanf("%d",&x);choice:switch(x)(case l:addn
13、ew();break;case 2:addold();break;case O:break;default:printf("n错误的选择,请重新选择:");goto choice;)system(HclsH);)/*显示所有学生的成绩*/void printall()(int a,b;FILE *fp,*fpl,*fp2;system(HclsH);printf("欢迎使用学生成绩信息管理系统nnn”);printf("全部已录入学生信息nn");j=sizeof(struct stu);if(fp=fopen("",&qu
14、ot;r")=NULL)printf(”n打开失败)exit(O);)if(fpl=fopen(,H;,r,)=NULL)printf("信息写入失败)exit(O);)if(fp2=fopen(,HHrH)=NULL)printf("信息写入失败)exit(O);)a=0;while(!feof(fp)if(fread(&studenta j, 1 ,fp)=l)printf(H%-10s%-20s%-50siiH,,studenta.num,studenta.score); a+;)a=0;while(!feof(fpl)if
15、(fread(&studenta J, 1 ,fp 1)= 1) printf("%-10s%-20s%-50siV,studentfa.num,studenta.score); a+;)a=0;while(!feof(fp2)if(fread(&studenta J, 1 ,fp2)=l) printf("%-10s%-20s%-50sn,,studenta.num,studenta.score); a+;)fclose(fp);fclose(fpl);fclose(fp2);printf(”返回上级请输
16、入U!n:”);scanf("%d",&b);if(b=O)( system(nclsH);)姓名学号查询void search()int k,b,a;char ex 20;FILE *fp;system(ncIsH);j=sizeof(struct stu);doprintf("欢迎使用学生成绩信息管理系统nnn”);printf("查找已录入学生成绩信息nn");k=0;if(fp=fopen(,","r")=NULL) (printf("n打开失败!)exit(O); )printf(&qu
17、ot;请输入学号或姓名:n");scanf(M%s,cx);if(cx0v'0')ll(cx0>9)a=0;while(!feof(fp)fread(&studenta j, 1 ,fp);if(strcmp(,cx)=O) (printf("nn已查到,该记录为:nn");printf("%-10s%-20s%-50sn",” 姓名 学号“,”成绩)printf("%-10s%-20s%-50siV5studenta.num,studentfa.sco
18、re);k=l;)a+;)if(V<=cx0<=,9,)a=0;while(!feof(fp)fread(&studenta J, 1 ,fp);if(strcmp(studenta.num,cx)=O) (printf("nn已查到,该记录为:nn");printf("%-10s%-20s%-50sn”J姓名”,“学号“,"成绩,printf("%-10s%-20s%-50siiH,,studenta.num,studenta.score);k=l;a+;) ) if(!k)printf(&quo
19、t;n文件中无此人的记录。");fclose(fp);printf("n输入“1”继续查找,“0”结束n");scanf("%d",&b);system("cls");)while(b!=O);system(HclsH);)成绩查询void jgsearch()int b,a;char ex 20;FILE *fp;system(HclsH);j=sizeof(struct stu);do(printf("欢迎使用学生成绩信息管理系统nnn”);printf("查找学生成绩信息nn”);if(fp
20、=fopenC'","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"J 姓名 学号”成绩)printf('1%-10s%-20s%-50snH5,studenta.num,studenta.score);1
21、 a+;)fclose(fp);printf("n输入“1”继续查找,“0”结束n");scanf("%d",&b);system("cls");)while(b!=0);system(Hclsn);)删除学生成绩信息void del() int m=0,k=0,b,a,q,p;char xh20,wjm20;FILE *fp;system(MclsH);j=sizeof(struct stu); do printfC,欢迎使用学生成绩信息管理系统nnn”);printf("删除学生成绩信息nn”);printf(&
22、quot;nn存储文件名有nn");k=0;printf("n请输入学号:");scanf("%s",xh);printf(”n请输入欲删除的文件名:");scanf(,%s,wjm);if(fp=fopen(wjm/rrn)=NULL)exit(O);) a=O; while(!feof(fp) (fread(&studenta j, 1 ,fp);um)=O)(k=l; break; ) if(a=t)printf("nn文件中无此人的记录。");) if(k=l) (printf("nn已查
23、到,该记录为:nn");printf(”%-10s%-20s%-50s”J姓名”,“学号“,“成绩)printf("%-10s%-20s%-5Os,studenta .name,studenta .num5studenta .score);printf("n确实要删除记录,请按1 ;不删除记录,请按0 :n"); scanf(H%d&m); if(m) (for(p=a,q=a+1 ;p<t,qv=t;q+,p+) (strcpy(,); strcpy(studentp.num,stud
24、entq.num); strcpy(studentp.score,studentq.score); )1 )if(fp=fopen(wjm/rwn)=NULL) (printf("n文件打开失败!)exit(O); ) for(a=0;a<t;a+) fwrite(&studentaJ J,fp);if(m)printf("n删除成功!)fclose(fp);printf("n 输入T 继续,"(T结束n");scanf("%d",&b);system("cls");)while(b
25、!=0);system(ncIsH);)修改学生成绩信息void modifyOint k=0,b,a;char xh20,wjm20;FILE *fp;system(HclsH);j=sizeof(struct stu);do(printfC,欢迎使用学生成绩信息管理系统nnn”);printf("修改学生成绩信息nn“);printf("nn存储文件名有nn”);printf("n请输入学号:");scanf(H%sH,xh);printf("n请输入欲修改文件名:");scanf("%sH,wjm);if(fp=fop
26、en(wjm;'r+,')=NULL) (printf(”n打开失败!)exit(O);)a=0;while(!feof(fp)fread(&studenta ,j J ,fp);a+;fclose(fp);t=a-1;for(a=0;a<=t;a+)if(strcmp(xh,studenta.num)=O) (k=l; break;)if(a=t)printf("nn文件中无此人的记录。”);)if(k=l) (printf("nn已查到,该记录为:printf(”%-10s%-20s%-50s”,“姓名",“学号“,“成绩”);p
27、rintf("%-10s%-20s%-50s,,studenta.num,studenta.score);printf("n请输入新的姓名:");scanf(H%s,studenta.nanie);printf(”n请输入新的学号:”);scanf(H%s,studenta.num);printf("n请输入新的成绩:");scanf(H%s,studenta.score); if(fp=fopen(wjm/,wM)=NULL) (printf("n文件打开失败!)exit(O); )for(a=0;a<
28、;t;a+) fwrite(&studenta j, 1 ,fp);printf("n 修改成功!”);fclose(fp);)printf("n输入T继续,"结束n");scanf(H%d&b);system(HclsH);)while(b!=O);system(McIsH);)4功能测试菜单测试学生成绩管理系统运行后的主菜单界面如图4-1所示。图4-1系统主界面系统功能测试添加学生信息在主菜单按1后,会显示图4-2,再按2添加学生的信息如图4-3所示,如果按1的话那么所有以前的保存的信息都将被清除,接着再重新输入数据。图4-2学生信息
29、输入界面图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,选择需要修改的人的学号,再进行一系列的修改,
30、可以得到图4-9所示。图4-9修改学生信息5系统设计遇到的问题及解决方法1 .*和1在定义时只是说明作用,不能误解为运算符&、*、是,语言提供的三种运算符,分别是取地址运算符、指针运算符 和下标运算符,其中,&与*互为逆运算。在表达式中它们的意义很明确,但是 在定义中*、只是起说明作用,不能看作运算符。例如:int numb er = 10;Int *pt=&number;Int *pt=a;在这里,我们容易被后两个语句迷惑,之所以迷惑,就是把水当作了运算 符,其实在这里Int *共同来修饰指针变量pt,定义一个指向整型变量的指针 变量,自然会把一个地址&number赋值给pt。因此,上述后面两个赋值语句 中,第一个是正确的。2、用整数值直接给指针赋值指针值就是指针所指向的地址,在程序运行中,指针的值其实就是一个整 数值,但是决不能在程序语句中把一个整数值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制作儿童课件教学课件
- 目送课件底板教学课件
- 蘑菇屋课件教学课件
- 卡通游戏课件教学课件
- 2024年度云计算平台广告业务合同
- 2024年度八宝山殡仪馆鲜花制品物流配送服务合同
- 2024年度委托加工协议(定制产品)
- 2024年塑料模具生产与交付合同
- 2024年度健康医疗服务合同服务细节
- 2024供水供电合同
- 设备维保施工组织设计
- 2023年高中学业水平测试计算机考试操作练习题
- 医院出入口安检工作记录表范本
- 妇科VTE防治小组成员及职责
- 《如何实现目标》
- 安徽壹石通化学科技有限公司年产5万吨氢氧化镁、5万吨碱式碳酸镁、1万吨氧化锆、1000吨硼酸锌、1000吨五硼酸铵和100吨钛酸钡产品项目环境影响报告书
- 2020阿里云产品图标
- GB/T 3499-2003原生镁锭
- GB/T 12361-2016钢质模锻件通用技术条件
- 成都市中小学在校学生健康检查表
- GA 98-2005混凝土结构防火涂料
评论
0/150
提交评论