C程大作业.docx

上传人:b****2 文档编号:1699110 上传时间:2023-05-01 格式:DOCX 页数:22 大小:50.96KB
下载 相关 举报
C程大作业.docx_第1页
第1页 / 共22页
C程大作业.docx_第2页
第2页 / 共22页
C程大作业.docx_第3页
第3页 / 共22页
C程大作业.docx_第4页
第4页 / 共22页
C程大作业.docx_第5页
第5页 / 共22页
C程大作业.docx_第6页
第6页 / 共22页
C程大作业.docx_第7页
第7页 / 共22页
C程大作业.docx_第8页
第8页 / 共22页
C程大作业.docx_第9页
第9页 / 共22页
C程大作业.docx_第10页
第10页 / 共22页
C程大作业.docx_第11页
第11页 / 共22页
C程大作业.docx_第12页
第12页 / 共22页
C程大作业.docx_第13页
第13页 / 共22页
C程大作业.docx_第14页
第14页 / 共22页
C程大作业.docx_第15页
第15页 / 共22页
C程大作业.docx_第16页
第16页 / 共22页
C程大作业.docx_第17页
第17页 / 共22页
C程大作业.docx_第18页
第18页 / 共22页
C程大作业.docx_第19页
第19页 / 共22页
C程大作业.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C程大作业.docx

《C程大作业.docx》由会员分享,可在线阅读,更多相关《C程大作业.docx(22页珍藏版)》请在冰点文库上搜索。

C程大作业.docx

C程大作业

 

学年论文

(课程论文、课程设计)

 

题  目:

  学生信息管理系统

作  者:

  

所在学院:

信息科学与工程学院

专业年级:

 

指导教师:

  

职  称:

          

 

2010年1月2日

大作业题目:

学生成绩管理系统

大作业目的:

(1)进一步熟悉C的语法知识和VC++环境;

(2)熟练掌握一些常用算法,如排序、查找等;

(3)熟悉C程序的编写与调试;

(4)增加学生对C语言的兴趣

大作业要求:

设计一学生成绩管理系统,要求实现数据的录入、插入、删除、修改、查找、查询、排序、统计、显示等功能。

(1)数据结构:

学号、姓名、性别、年龄、3门课程成绩、总分、平均分。

(2)为用户提供友好的菜单选择界面,用户通过键入数字或者字母实现功能选择,进入相应的功能。

(3)功能:

a)数据录入——按顺序录入学生成绩

b)删除记录

c)修改记录

d)查询记录——按学号等进行简单查询

e)计算总分和平均分

f)排序:

可以按学号、总分、平均分显示学生信息

g)学生信息能以文件的形式保存,或读取

h)页面以汉字形式输出。

i)插入学生信息

j)统计学生分数

k)退出

(4)对系统常量要求用符号常量进行规范,对于常用的功能和算法如排序要求做成自己的库函数,并使用头文件的方式实现分离编译。

(5)要求提供算法分析、程序流程图,对实验结果的处理包括程序调试结果、结论及改进方案、实习体会等内容。

三.大作业总体设计及源代码

1、总体设计

 

 

 

 

2、源代码

#include

#include/*定义数组*/

#defineM3

 

structstudent/*结构体*/

{

intxh;//学生学号

charxm[20];/*数组*/

charxb;

intnl;

intcj[M];//成绩

intzf,pjf;/*总分与平均分*/

};

 

structstudents[20];/*学生数组*/

intn=0;

voidcalc(i)

{

intsum=0,j;

for(j=0;j

sum=sum+s[i].cj[j];

s[i].zf=sum;

s[i].pjf=sum/M;

}

 

voidinput()/*插入*/

{

intlocate(intxh);

intxh,i,sum;

printf("请输入学号:

");

scanf("%12d",&xh);

getchar();

while(xh!

=0)

{

if(locate(xh)!

=-1)

{

printf("学号已存在!

!

!

\n\n");

gotoabc;

}

s[n].xh=xh;

printf("姓名:

");

gets(s[n].xm);

printf("性别:

");

scanf("%c",&s[n].xb);

printf("年龄:

");

scanf("%d",&s[n].nl);

sum=0;

printf("3门成绩,成绩范围0--150:

");

for(i=0;i

scanf("%d",&s[n].cj[i]);

if(s[n].cj[i]<0||s[n].cj[i]>150)

{

printf("成绩超出范围");

return;

}

calc(n);

n++;

abc:

printf("\n请输入学号:

");

scanf("%d",&xh);

getchar();

}

}

 

voidinsert()/*插入*/

{

intlocate(intxh);

inti,j,t;

intxh;

printf("输入插入位置(0---%d):

",n);

scanf("%d",&i);

if(i<0||i>n)

{

printf("序号超出范围!

!

!

\n",n);

return;

}

for(j=n-1;j>=i;j--)

{

s[j+1].xh=s[j].xh;

strcpy(s[j+1].xm,s[j].xm);

s[j+1].xb=s[j].xb;

s[j+1].nl=s[j].nl;

s[j+1].cj[0]=s[j].cj[0];

s[j+1].cj[1]=s[j].cj[1];

s[j+1].cj[2]=s[j].cj[2];

}

printf("请输入学号:

");

scanf("%d",&s[i].xh);getchar();

printf("\n");

printf("请输入姓名:

");

gets(s[i].xm);

printf("请输入性别:

");

scanf("%c",&s[i].xb);

printf("请输入年龄:

");

scanf("%d",&s[i].nl);

printf("请输入3科成绩,成绩范围0---150:

");

for(j=0;j

{scanf("%d",&s[i].cj[j]);

if(s[i].cj[j]>150)

{printf("分数超出范围,请核对后再输入!

!

!

!

!

\n");

return;

}

}

calc(i);

n=n+1;

}

//删除

voiddel()

{

intxh,i,j;

intlocate(intxh);

printf("输入学号:

");

scanf("%d",&xh);

i=locate(xh);

if(i!

=-1)

{

for(j=i+1;j

{

s[j-1].xh=s[j].xh;

strcpy(s[j-1].xm,s[j].xm);

s[j-1].xb=s[j].xb;

s[j-1].nl=s[j].nl;

s[j-1].cj[0]=s[j].cj[0];

s[j-1].cj[1]=s[j].cj[1];

s[j-1].cj[2]=s[j].cj[2];

}

n=n-1;

}

else

printf("无法删除!

!

!

\n");

}

 

intlocate(intxh)

{

inti,j;

for(i=0;i

if(s[i].xh==xh)

{

printf("%11d",s[i].xh);

printf("%20s",s[i].xm);

printf("%3c",s[i].xb);

printf("%5d",s[i].nl);

for(j=0;j

printf("%5d",s[i].cj[j]);

printf("%5d",s[i].zf);

printf("%5d",s[i].pjf);

printf("\n");

returni;

}

printf("学号不存在,请输入学生信息!

!

!

\n");

return-1;

}

 

//显示

voiddisplay()

{

inti,j;

printf("----------------学生成绩统计---------------\n");

printf("学号姓名性别年龄成绩1成绩2成绩3总分平均分\n");

for(i=0;i

{

printf("%5d",s[i].xh);

printf("%20s",s[i].xm);

printf("%3c",s[i].xb);

printf("%5d",s[i].nl);

for(j=0;j

printf("%5d",s[i].cj[j]);

printf("%5d",s[i].zf);

printf("%5d",s[i].pjf);

printf("\n");

printf("-----------------------------------------------------\n");

}

}

 

voidsave()

{

FILE*fp;

inti;

charfname[20];

printf("输入文件名:

");

gets(fname);

fp=fopen(fname,"wb");

if(fp==NULL)

{

printf("文件打开错误!

!

!

\n");

return;

}

for(i=0;i

if(fwrite(&s[i],sizeof(structstudent),1,fp)!

=1)

{

printf("文件写入错误!

\n");

return;

}

printf("文件保存成功!

\n");

fclose(fp);

}

voidswap(inta,intb)

{

intt;

charxm[20];

charxb;

t=s[a].xh;s[a].xh=s[b].xh;s[b].xh=t;

strcpy(xm,s[a].xm);strcpy(s[a].xm,s[b].xm);strcpy(s[b].xm,xm);

xb=s[a].xb;s[a].xb=s[b].xb;s[b].xb=xb;

t=s[a].nl;s[a].nl=s[b].nl;s[b].nl=t;

t=s[a].cj[0];s[a].cj[0]=s[b].cj[0];s[b].cj[0]=t;

t=s[a].cj[1];s[a].cj[1]=s[b].cj[1];s[b].cj[1]=t;

t=s[a].cj[2];s[a].cj[2]=s[b].cj[2];s[b].cj[2]=t;

t=s[a].zf;s[a].zf=s[b].zf;s[b].zf=t;

t=s[a].pjf;s[a].pjf=s[b].pjf;s[b].pjf=t;

}

//冒泡排序法

voidsortbyxh()

{

inti,j;

for(i=0;i

{

for(j=0;j

if(s[j].xh>s[j+1].xh)

swap(j,j+1);

}

printf("顺序已经排好!

\n");

}

 

voidsortbyzf()

{

inti,j;

for(i=0;i

{

for(j=0;j

if(s[j].zf>s[j+1].zf)//相临的两个数比较

swap(j,j+1);

}

printf("顺序已经排好!

\n");

}

voidsortbypjf()

{

inti,j;

for(i=0;i

{

for(j=0;j

if(s[j].pjf>s[j+1].pjf)

swap(j,j+1);

}

printf("顺序已经排好!

\n");

}

voidsort()

{

inti;

printf("1按学生学号排序\n");

printf("2按学生总分排序\n");

printf("3按平均分数排序\n");

printf("\n");

printf("请输入选项:

");

scanf("%d",&i);

switch(i)

{

case1:

sortbyxh();break;

case2:

sortbyzf();break;

case3:

sortbypjf();break;

}

}

//下载文件

voidload()

{

FILE*fp;

inti;

charfname[20];

printf("输入文件名:

");

gets(fname);

fp=fopen(fname,"rb");

if(fp==NULL)

{

printf("文件打开错误!

\n");

return;

}

//从文件中载入学生信息

n=0;

while(!

feof(fp))

{

if(fread(&s[n],sizeof(structstudent),1,fp)!

=1)

{break;

}

n++;

}

printf("文件成功载入!

\n");

fclose(fp);

}

//统计数据

voidstas()

{

inta,b,c,d,e;

inti;

a=b=c=d=e=0;

for(i=0;i

{

switch(s[i].pjf/10)

{

case0:

case1:

case2:

case3:

case4:

case5:

case6:

case7:

case8:

a++;break;

case9:

case10:

b++;break;

case11:

c++;break;

case12:

d++;break;

case13:

case14:

e++;break;

case15:

;

}

}

printf("<80%d%5.2f%%\n",a,a*100.0/n);

printf("90<-->110%d%5.2f%%\n",b,b*100.0/n);

printf("110<-->120%d%5.2f%%\n",c,c*100.0/n);

printf("120<-->130%d%5.2f%%\n",d,d*100.0/n);

printf("130<-->150%d%5.2f%%\n",e,e*100.0/n);

}

voidedit()//编辑学生信息板块

{

intlocate(intxh);

intxh;

inti;

printf("请输入学号:

\n");

scanf("%12d",&xh);

getchar();

i=locate(xh);

if(i==-1)

{

printf("学号不存在!

\n");

return;

}

printf("请输入3门课的成绩:

");

scanf("%d%d%d",&s[i].cj[0],&s[i].cj[1],&s[i].cj[2]);

calc(i);

printf("修改成功!

\n");

}

voidmain()

{

intc=1;

while(c!

=0)

{

printf("**********************\n");

printf("*学生成绩管理系统菜单*\n");

printf("**********************\n");

printf("

(1)输入*

(2)插入\n");

printf("(3)删除*(4)编辑\n");

printf("(5)查找*(6)排序\n");

printf("(7)显示*(8)保存\n");

printf("(9)载入*(10)统计\n");

printf("(0)退出*\n");

printf("**********************\n");

printf("输入选项:

");

scanf("%d",&c);getchar();

//条件选择语句

switch(c)

{

case1:

input();break;

case2:

insert();break;

case3:

del();break;

case4:

edit();break;

case5:

{intxh;

printf("输入学号:

");

scanf("%12d",&xh);

locate(xh);break;

}

case6:

sort();break;

case7:

display();break;

case8:

save();break;

case9:

load();break;

case10:

stas();

case0:

break;

}

}

}

 

3、调试结果

 

4总结.(如需要,可附结论及改进方案、实习体会)

新疆大学课程论文(设计)、学年论文评分表

题目

作者

专业年级

指导教师

指导教师评语及

评分建议

 

指导教师:

年月日

(部)

学院或教研室主任:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2