C语言程序设计学生成绩记录簿_第1页
C语言程序设计学生成绩记录簿_第2页
C语言程序设计学生成绩记录簿_第3页
C语言程序设计学生成绩记录簿_第4页
C语言程序设计学生成绩记录簿_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程实验报告

课实验日期2013年8

程13新能源月1号

C语言程序设计班级

名2班

姓130370实验成绩

许鑫学号

名236

学生成绩记录簿系统

本程序就是非数值计算型算法设计,我设计出了学生成绩记录簿系统得

基本功能,并设计了简单得界面。本程序主要考察对自定义函数得熟悉程度,

本程序主要使用得就是链表得相关操作,包括结构体链表得创建、输入、输

出、查找、删除等。我设计得这个成绩记录簿系统也初步实现了学生成绩信

息得显不、输入、删除、查找等必要得功能C

1、建立一个主界面

2、用switch语句进行分类讨论

3、分别进入录入,查询,删除,等子函数。

4、将子函数与主函数相连即可。

该程序可以建立学生得成绩记录。可以方便老师与同学方便得查阅成绩;

这个程序有录入与删除得功能;

还可以求出平均成绩,并排序

成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、

学分

添加成绩:需要输入学生得学号或姓名、课程编号及成绩,如已有该

门课程成绩给出提示;

查询(班级或个人)成绩:

查询个人成绩:以学号或姓名作为关健字,可查询一个学生得所有成

绩,与已完成得总学分。

查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及

格率及全班同学不同课程在不同分数段分布得人数及百分比。

拓展功能:

a)程序启动时先从文件读入数据,如果文件中没有数据则给出提

示;

b)每次修改得数据写入文件

实以自己得电脑为主要得实验平台,运用VisualC++6、0这个软件进行反

验复得编写实验。

实1、开始时

2、添加

一□

:习、Debug\test5.exe"

第1个学生:

学生学号:1H04127

学生姓名:许鑫

该学生所修课程数:2

第1门课:

课程编号,9874S

课程名称:C语言

课程成绩:100

课程学分:

第2门课:

课程编号:54687

课程名称:物理

半:

5、写文本

6、读取

-^\Debug\t2st5.exe'X

I-装疆用爨震?I霰

1、颓

2、删除

3、查学生成绩

4、查班成绩表

II5、写入文本文件

i6、读取文本文件

:。、退出

他择操作:

j请输入读取的文件地址:

小也址输入格式:例如d:Wstudent.txt:e:\Xstudent.txt

障取中…「

U半:

主程序提供一个界面,允许用户选择。使用switch语句,用时直接输

入数字即可。

增加函数,功能就是插入学生成绩。使用一个无穷循环,直到录入“n"

时结束。

删除函数,功能就是删除,分为两步,先找后删。找,用strcmp函数

来做如果找到记录i值,反之记为一1;删除不以从i项开始将数组得后一项

赋值给前一项。前一项自动被删掉。这样完成删除。

查询函数与之类似,将删除改为输出即可;

求平均值函数与查询类似只就是输出时只输出平均值而已。

按平均值排序只要加一个排序函数即可,

退出函数什么都不写,即可。

程序流程图

经过一个多星期得编译原理课程设计,在我得努力下,顺利完成该课程设

计。

通过该课程设计,掌握了编译程序工作得基本过程及其各阶段得基本任

务,熟悉了编译程序总流程框图,了解了编译程序得生成过程及其相关得技

术,对课本上得知识也有了更深得理解。老师常说,课本上得知识就是机械得,

表面得,要学会去运用,要举一反三。现在终于深刻得了解了这句话。经过这

次得课程设计,发现书本上很深奥得知识变得更为简单,同样,对实验原理也

了有更深得理解。知道与理解了该理论在计算机中就是怎样执行得,对该理

论在实践中得应用有深刻得理解。通过该课程设计,把死板得课本知识变

得生动有趣,激发了学习得积极性。能够把课堂上学得知识通过自己设计得

程序表示出来,加深了对理论知识得理解。

课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不

必要得命令去除。除了课堂外,课程设计就是最能学到东西得,最考验人得。

在做课程设计得这段时间,时刻都感到自己学得知识有多么得贫瘠.经过这

次课程设计,让我对C++这门语言有了更深得认识,操作能力有了提高要想就

是写出得代码能运行,需要耐心细心,毅力以及充沛得体力。只有经过多次编

辑,多次编译,再多次运行,才能编写出更好得程序,有时候需要多次得更正

才能达到所要得运行结果。

#include<stdio>h>

#include<stdlib>h>

#include<string、h>

#defineMAX1000

struclLessun

charLessonName[100];

charLessonNuniber[100];

intLessonMark;

f1oatLessonCredit;

);

structStudent

(

charName[100];

charNumberfl00];

intLessonCount;

structLessonL[100];

);

structStudentS[MAX];

intStudentCount=0;

voidPrintlnterface();

intStudent_Insert();

intStudent_Deiete();

voidStudent_Select();

voidC1ass_Select();

voidWriteFile();

voidReadFile();

intmain()

(

intn;

(

PrintInterface();

scanf「%d”,&n);

)

}

voidPrintinterfaceO

{

intn;

while(1)

{

Printf(11\n一一-欢迎使用学生成绩记录簿系统一”);

printf("\n|1、添加|\n”);

printf("\n|2、删除|\nM);

printf("\n|3、查学生成绩[\n*,);

printf(*'\n|4>查班成绩表I;

PrintffXnl5、写入文本文件仙”);

printf(M\nI6、读取文本文件I

printf("\n|0、退出|\nM);

printf(*'\n--------—―-—**);

printfC'\n选择操作:");

scanf(0%dn,&n);

switch(n){

case1:

aif(Student_Insert())

。。pri添加成功、、、回车继续\n”);

else

gprintf("\n添加失败、、、回车继续\n");

break;

♦case2:

Student_Delete();

break;

gcase3:

Student_Se1ect();

break;

case4:

Class_Select();

®break;

gcase5:

WriteFi1e();

®break;

case6:

»ReadFile();

oobreak;

case0:

exit(l);

break;

。default:

gprintf(“无此功能,请重新选择,按回车确定\n");

}

)

return0;

)

intStudent_Insert()

(

inti,j,n;

printfV\n请输入所添加得学生人数:”);

seanf(u%d",&n);

if(StudentCount+n>=MAX)

return0;

for(i=StudentCount;i<StudentCount+n;++i)

printf(”\n\t第%d个学生八n",i-StudentCount+1);

printf(M\n\t学生学号:“);

ascanf(,*%s*S&S[i]、Nuniber);

if(str1en(S[i]、Number)!=8)

Od{

gprintf("输入错误,请重新输入”);

。return0;

。}

b

print—\n\t学生姓名巧;

oscanf(M%sM,S[i]>Name);

printf(**\n\t该学生所修课程数:");

®scanf("%d”,&S[i]、LessonCount);

for(j=0;j<S[i]、LessonCount;++j)

{

print:"\n\t第%(1门课:\n",j+1);

课程编号”;

scanf(*'%s",S[i]、L[j]>LessonNumber);

g。if(strlen(S[iJ>L[j]、LessonNumber)!=5)

aPrintf("输入错误,请重新输入!”);

。return0;

)

printf("\n\t\t课程名称:“);

dscanf(n%s",S[i]>L[j]、LessonNaine);

printf("\n\t\t课程成绩:”);

®scanf(u%d”,&S[i]>L[j]>LessonMark);

if(S[i]>L[j]>LessonMark<0||S[i]^L[j]、LessonMark>100)

,printf("输入错误,请重新输入!”);

。return0;

)

printf("\n\t\t课程学分

gscanf("%f",&S[i]、L[j]>LessonCredit);

。if(S[i]、L[j]>LessoiiCredit<l|IS[i]>L[j]、LessonCredit>5)

g(

Printf("输入错误,请重新输入!”);

oreturn0;

}

if(S[i]>L[j]、LessonMark<60)

3S[i]、L[jJ>LessonCredit=0;

}

)

StudentCount+=n;

return1;

)

intStudent_Delete()

(

chara[100];

®charb[l001;

inti,j;

printf(0\n删除学生:\iT);

printf("\n学生姓名:“);

scanf(”%s”,a);

printf("\n学生学号:,();

scanf("%s”,b);

if(strlen(b)!=8)

00{

®printf("输入错误请重新输入");

areturn0;

)

for(i=0;i<StudentCount;i++)

(

if(0==strcmp(S[i]>Name,a)&&0==strcmp(S[i]>Number,

b))

(

pri找到,删除\n");

for(j=i+1;j<StudentCount;j++)

(

SU-1]=SU];

}

I)reak;

)

}

if(i==StudentCountI|i>StudentCount)

(

printf("\n未找到该学生\n'n”);

return0;

}

else

(

StudentCount—;

return1;

)

voidStudent_Se1ect()

(

intx;

chary[100];

chara[100];

inti,j;

PrintfC*\n输入所查学生信息(1、姓名2、学号)选择:");

scanf(,,%dM.&x);

if(X==1||x==2)

(

if(x==1)

(

printf("\n姓名:");

«fflush(stdin);

gets(a);

for(i=0;i<StudentCount;i++)

(

if(0==strcmp(S[i]、Name,a))

{

pri学号:%s\t姓名:%s\n",S[i]>Nu

mber,S[i]、Name);

Printf(»\n课程编号\t课程名称\t课程成绩\t课程学

分n\");

printf(**.........--———...........-——------—―--一一

———\n");

for(j=0;j<S[iJ%LessonCount;J++)

(

printf(,,%s\t\t%s\t\t%d\t\t%f\nS[i]>L[j.

LessonNumber,

S[i]>L[j]、LessonName,S[i]>L

[j]、LessonMark,

S[i]、L[jl>LessonCredit);

printf(".......——--一----.......一-------

——..................---An");

)

printf(n\n\nM);

)

}

)

else

(

printf("\n学号:M);

ff1ush(stdin);

gets(y);

for(i=0;i<StudentCount;i++)

(

if(strcmp(S[i]>Number,y)==0)

(

priIltfr\n学号:%s\t姓名:%s\nH,S[i]>Numb

er,S[i]>Name);

PrintfC\n课程编号\t课程名称\t课程成绩Tt课

程学分\n”);

printf(H--—""—————-—

---------——-\nn);

for(j=0;j<S[i]、LessonCount;j++)

{

printf(M%s\t\t%s\t\t%d\t\t%f\nM,

。S[i]>L[j]、LessonNumber,S[i]、L[j]>

LessonName,

。,S[i]、L[jl>LessonMark,S[il>L[j]、LessonCredit);

printf(***-------------------------——---———------

------一一......\nH);

)

printf(n\n\nH);

break;

)

)

I

printf("查找完毕、、、回车继续\n“);

getchar();

)

else

(

Printf("选择错误、、、回车继续\n"

getchar();

return;

)

}

voidCIass_Select()

(

chara[l00];

doublex=0,y=0,z=0;

inti,j;

printf(**\n请输入课程编号:“);

fflush(stdin);

scanf(”%s",a);

Printf("学号\t姓名't课程名称\t课程成绩't课程学分\n");

printf("-———----------------———------------------------

for(i=0;i<StudentCount;i++)

{

for(j=0;j<S[i]%LessonCount;j++)

(

if(strcmp(S[i]xL[jJ>LessonNumber,a)==0)

{

printf(**%s\t%s\t%s\t\t%d\t\t%f\n',,

ssS[i]、Number,S[i]、Name,S[i]、L[j]>I.essonName,

S[i]、L[j]xLessonMark,S[i]、L[j]、LessonCr

edit);

printf(M-----———---------------------------------------

------Ann);

z+=S[i]>L[j]、LessonMark;

x++;

if(S[i]、L[j]、LessonMark>=60)

ggy++;

break;

)

)

)

printf("\n平均分:%f\t及格率:%f%%\n\n”,z/x,y/x*100);

printf(”\n查找完毕、、、回车继续\n”);

getchar();

}

voidWriteFileO

[

FILE*fp;

inti,j;

chara[100];

Printf(n\n请输入写入得文件地址八n\n地址输入格式:例如d:\W\Student>

txt:”);

scanf("%s",&a);

printf(”\n写入中、、、、、、\n");

if(fp=fopen(a,"w”))

{

fprintf(fp,"%d\n",StudentCount);

for(i=0;i<StudentCount;i++)

{

fprintf(fp,"%s\t%s\t%d\nH,S[i]、Number,S[i]、Name,S

[i]、LessonCount);

for(j=0;j<S[i]>LessonCount;j++)

{

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论