c语言课程设计报告.docx

上传人:b****6 文档编号:6121197 上传时间:2023-01-04 格式:DOCX 页数:52 大小:220.40KB
下载 相关 举报
c语言课程设计报告.docx_第1页
第1页 / 共52页
c语言课程设计报告.docx_第2页
第2页 / 共52页
c语言课程设计报告.docx_第3页
第3页 / 共52页
c语言课程设计报告.docx_第4页
第4页 / 共52页
c语言课程设计报告.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

c语言课程设计报告.docx

《c语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告.docx(52页珍藏版)》请在冰豆网上搜索。

c语言课程设计报告.docx

c语言课程设计报告

 

 

C语言程序设计

课程报告

所在学院

地学院

所在班级

012101

班级学号

20101000689__03

姓名

周豪

指导老师

宋军

中国地质大学(武汉)

2012年1月1日

 

(一)题目要求············································1

(二)需求分析············································1

(三)详细说明··················································1

1、总体设计

2、主程序··················································2

3、主要功能模块说明·····································4

(四)上机操作··················································14

(五)源代码·····················································19

(六)附题外作业源代码

——编写三人选举投票系统·····························34

(七)编程小结·

调试中出现的问题、解决方法及本次编程的感受··37

 

(一)题目要求

用下面的数据设计一个简单的学籍管理系统。

  

学生基本信息文件(A.TXT)及其内容:

  

学号姓名性别宿舍号码电话号码  

01张成成男50187732111  

02李成华女10187723112  

03王成凤女10187723112  

04张明明男50287734333  

05陈东男50187732111  

06李果男50287734333  

07张园园女10287756112  

学生成绩基本信息文件(B.TXT)及其内容:

  

.....................................................................................................................  

学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分  

01A01大学物理3667882  

02B03高等数学478-190  

01B03高等数学445-188  

02C01VF3657666  

................................................................................................................  

功能要求极其说明:

  

(1)数据录入功能:

录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。

实得成绩、实得学分根据条件自动运算。

  

综合成绩的计算:

  

a.如果本课程的实验成绩为-1,则表无实验成绩,综合成绩=平时成绩*30%+卷面成绩*70%  

b.如果实验成绩不为-1,表示本课程有实验成绩,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70%  

实得学分的计算:

采用等级学分制。

  

综合成绩在90~100之间,应得学分=学分*100%  

综合成绩在80~90之间,应得学分=学分*80%  

综合成绩在70~80之间,应得学分=学分*75%  

综合成绩在60~70之间,应得学分=学分*60%  

综合成绩在60分以下,应得学分=学分*0%  

(2)查询功能:

分为学生基本情况查询和成绩查询两种  

学生基本情况查询:

  

输入一个学号或姓名(可实现选择)查出此学生的基本信息并显示输出。

  

输入一个宿舍号码,可查出本室所有学生的基本信息并显示输出。

  

称号查询:

  

输入一个学号时,查出此学生所有课程情况,格式如下:

  

学号:

XX课程名称:

XXXX综合成绩:

XX实得学分:

XXX  

...............................................................................  

共修:

X科,实得总分为:

XXX  

(3)删除功能:

当在A.TXT中删除一个学生时,自动地在B.TXT中删除此学生所有信息。

  

(4)排序功能:

能实现选择按综合成绩或实得学分升序或降序排序并显示数据。

  

(二)需求分析

学生基本信息和学生成绩基本信息用文件存储,提供文件的输入输出操作;要能够完成信息的录入和修改,需要提供学生基本信息及学生成绩基本信息查询删除;实现对学生成绩分类排序操作;实现对学生信息的分类查询;实现对学生信息的分类删除;另外还要提供键盘式选择菜单以实现功能选择。

(三)详细设计

1、总体设计

根据上面的需求分析,可以将这个系统的设计分为以下模块

 

2、主函数

[流程图]

[程序]

(预处理命令)

#include/*I/o函数*/

#include/*其他说明*/

#include/*字符串函数*/

#defineLEN30/*学号和姓名最大学生人数*/

#defineN100/*最大学生人数*/

structrecord/*声明函数体*/

{

charcode[20];/*学号*/

charname[10];/*姓名*/

intdomitory;/*宿舍号*/

charsex[5];/*性别*/

chartel[20];/*电话*/

intkcbh;/*课程编号*/

charkc_name[15];/*课程名称*/

intcridit;/*学分*/

intps_grade;/*平时成绩*/

intsy_grade;/*实验成绩*/

intjm_grade;/*卷面成绩*/

floatsum;/*综合成绩*/

floatc_cridit;/*应得学分*/

}stu[N];

intk=1,m,n;

voidenter();

voidsearch();

voidmodify();

voidadd();

voiddel();

voiddisplay();

voidsave();

voidmenu();

voidsort();

voidtuichuxitong();

voidwelcome_page();

//........主函数........//

intmain()

{

while(k)

{

welcome_page();

system("pause");/*暂停*/

system("cls");/*清屏*/

printf("请按任意键进入主菜单!

\n");

system("cls");

menu();

system("pause");

}

return0;

}

3、主要功能模块设计

【菜单功能模块】

voidmenu()

{

intnum;

system("COLOR1f");

printf("\n\n学生信息管理系统\n\n");

printf("=======================================================\n");

printf("===============制作人:

周豪===========\n");

printf("\n");

printf("==============系统功能菜单==============\n");

printf("=======友情提醒:

查询前请刷新系统!

======\n");

printf("========================================\n");

printf("|======================================|\n");

printf("|0.系统帮助说明1.输入学生信息|\n");

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

printf("|2.查询学生信息3.修改学生信息|\n");

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

printf("|4.增加学生信息5.按学号删信息|\n");

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

printf("|6.显示当前信息7.保存当前信息|\n");

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

printf("|8.排序9.退出系统|\n");

printf("|======================================|\n");

printf("========================================\n");

printf("请选择菜单编号:

");

scanf("%d",&num);

switch(num)

{

case0:

system("cls");help();break;

case1:

system("cls");enter();break;

case2:

system("cls");search();break;

case3:

system("cls");modify();break;

case4:

system("cls");add();break;

case5:

system("cls");del();break;

case6:

system("cls");display();break;

case7:

system("cls");save();break;

case8:

system("cls");sort();break;

case9:

system("cls");k=0;tuichuxitong();

break;

default:

printf("请在0--9之间选择\n");

}

}

【数据录入模块】

【流程图】

[程序]

voidenter()/*实现录入学生基本信息功能*///输入功能模块

{

inti,flag=1;

while(flag)

{

flag=0;

printf("请输入需要创建信息的学生人数(1-100):

\n");

scanf("%d",&n);

if(n<1||n>100)

{

flag=1;

printf("输入数值超过范围,检查后请重新输入!

\n");

}

}

for(i=0;i

{

printf("请输入第%d个学生的基本信息:

\n",i+1);

printf("请输入学号:

\n");

scanf("%s",stu[i].code);

printf("请输入姓名:

\n");

scanf("%s",stu[i].name);

getchar();

printf("请输入性别(男,女):

\n");

scanf("%s",stu[i].sex);

printf("请输入宿舍号\n");

scanf("%d",&stu[i].domitory);

printf("请输入电话号码:

\n");

scanf("%s",stu[i].tel);

printf("请输入课程编号\n");

scanf("%d",&stu[i].kcbh);

getchar();

printf("请输入课程名称\n");

scanf("%s",stu[i].kc_name);

getchar();

printf("请输入学分\n");

scanf("%d",&stu[i].cridit);

printf("请输入平时成绩\n");

scanf("%d",&stu[i].ps_grade);

printf("请输入实验成绩\n");

scanf("%d",&stu[i].sy_grade);

printf("请输入卷面成绩\n");

scanf("%d",&stu[i].jm_grade);

if(stu[i].sy_grade==-1)

stu[i].sum=(float)stu[i].ps_grade*0.3+(float)stu[i].jm_grade*0.7;

elsestu[i].sum=(float)stu[i].ps_grade*0.15+(float)stu[i].sy_grade*0.15+(float)stu[i].jm_grade*0.7;

if(stu[i].sum>=90&&stu[i].sum<=100)

stu[i].c_cridit=(float)stu[i].cridit;

elseif(stu[i].sum>=80&&stu[i].sum<90)

stu[i].c_cridit=(float)stu[i].cridit*0.8;

elseif(stu[i].sum>=70&&stu[i].sum<80)

stu[i].c_cridit=(float)stu[i].cridit*0.75;

elseif(stu[i].sum>=60&&stu[i].sum<70)

stu[i].c_cridit=(float)stu[i].cridit*0.6;

else

stu[i].c_cridit=(float)stu[i].cridit*0;

}

printf("录入信息完毕!

,按任意键继续。

\n");

save();

}

【查询模块】

[流程图]

[程序]

/*******************************查询模块*********************/

voidsearch(){

inth,i,t,flag,ts1;

floats=0;

chars1[30];

system("COLOR5f");

printf("\n=================================\n");

printf("|1.按学号查询|\n");

printf("|2.按姓名查询|\n");

printf("|3.按寝室查询|\n");

printf("|4.成绩查询|\n");

printf("|5.退出本菜单|\n");

printf("=================================\n");

while

(1)

{

flag=0;

printf("请输入子菜单编号:

");

scanf("%d",&t);

switch(t)

{

case1:

printf("请输入要查询的学生的学号:

");

scanf("%s",s1);

for(i=0;i

if(strcmp(stu[i].code,s1)==0)

{

flag=1;

printf("学生学号姓名性别电话宿舍号\n");

printf("========================================================\n");

printf("%12s%7s%6s%15s%5d\n",stu[i].code,stu[i].name,stu[i].sex,stu[i].tel,stu[i].domitory);

}

if(flag==0)

printf("该学号不存在!

\n");break;

case2:

printf("请输入要查询的学生的姓名:

");

scanf("%s",s1);

for(i=0;i

if(strcmp(stu[i].name,s1)==0)

{

flag=1;

printf("学生学号姓名性别电话宿舍号\n");printf("=============================================================\n");

printf("%6s%7s%6s%15s%5d\n",stu[i].code,stu[i].name,stu[i].sex,stu[i].tel,stu[i].domitory);

}

if(flag==0)

printf("该姓名不存在!

\n");break;

case3:

printf("请输入要查询的学生的寝室:

\n");

scanf("%d",&ts1);

for(i=0;i

if(stu[i].domitory==ts1)

{

flag=1;

printf("学生学号姓名性别电话宿舍号\n");printf("=============================================================\n");

printf("%6s%7s%6s%15s%5d\n",stu[i].code,stu[i].name,stu[i].sex,stu[i].tel,stu[i].domitory);

i++;

break;

}

for(;i

if(stu[i].domitory==ts1)

printf("%6s%7s%6s%15s%5d\n",stu[i].code,stu[i].name,stu[i].sex,stu[i].tel,stu[i].domitory);

if(flag==0)

printf("该寝室不存在!

\n");break;

case4:

printf("请输入要查询学生的学号:

");

scanf("%s",s1);

for(i=0;i

{

if(strcmp(stu[i].code,s1)==0)

{

flag=1;

if(i==0)

{printf("学号%s姓名%s",stu[i].code,stu[i].name);}

printf("\n课程编号%s课程名称%s综合成绩%.2f实得学分%.2f\n",&stu[i].kcbh,stu[i].kc_name,stu[i].sum,stu[i].c_cridit);

s+=stu[i].c_cridit;}

printf("\n共修%d科,实得学分为%.2f\n",i+1,s);break;

if(flag==0)

{printf("该学号不存在!

\n");break;}}

case5:

return;

default:

printf("请在1--5之间选择\n");

}

}

}

【删除模块】

[流程图]

 

[程序]

voiddel()//删除功能模块

{

inti,j,flag=0;

chars1[15];

printf("请输入将要删除的学生的学号:

\n");

scanf("%s",s1);

for(i=1;i

if(strcmp(stu[i].code,s1)==0)

{

flag=1;

for(j=i;j

stu[j]=stu[j+1];

}

if(flag==0)

printf("该学号不存在!

\n");

if(flag==1)

{

printf("删除成功!

显示结果请按6!

\n");

n--;

}

}

voiddisplay()//显示功能模块

{

inti;

FILE*fp;

if((fp=fopen("student.txt","rb"))==NULL)

{

printf("打开文件时错误!

请按任意键退出!

");

system("pause");

exit(0);

}

printf("*****************所有学生的信息为********************************\n");

printf("============================================================\n");

for(i=0;i

{fread(&stu[i],sizeof(structrecord),1,fp);

printf("学生学号:

%s姓名:

%s性别:

%s电话:

%s宿舍:

%d\n",stu[i].code,stu[i].name,stu[i].sex,stu[i].tel,stu[i].domitory);

printf("\n课程编号:

%d课程名称:

%s学分:

%d平时成绩:

%d实验成绩:

%d卷面成绩:

%d\n",stu[i].kcbh,stu[i].kc_name,stu[i].cridit,stu[i].ps_grade,stu[i].sy_grade,stu[i].jm_grade,

stu[i].c_cridit,stu[i].sum);

printf("\n应得学分:

%.2f综合成绩:

%.2f\n",stu[i].c_cridit,stu[i].sum);

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

}

}

【排序模块】

[流程图]

[程序]

/***********************************排序模块******************************/

voidsort()//排序功能模块

{

inti,j,flag=0,tempcn;

intch,ch1;

structrecordtemp;

FILE*fp;

while

(1)

{

printf("\n******

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

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1