C语言课程设计
综合实习报告
学籍信息管理系统 :目题
姓名: 黄凯
学号:20081000153
班级号: 052081
院(系):工程学院
专业: 土木工程
指导教师: 曹弘
一 ,题目要求
1. 学生学籍信息管理系统设计
[要求]
使用下面的数据设计一个简单的学籍管理系统。
学生基本信息文件(A.TXT)极其内容:
学号 姓名 性别 宿舍号码 电话号码
01 张成成 男 501 87732111
02 李成华 女 101 87723112
03 王成凤 女 101 87723112
04 张明明 男 502 87734333
05 陈东 男 501 87732111
06 李果 男 502 87734333
07 张园园 女 102 87756112
学生成绩基本信息文件(B.TXT)极其内容:
.....................................................................................................................
学号 课程编号 课程名称 学分平时成绩 实验成绩 卷面成绩 综合成绩 实得学分
01 A01 大学物理 3 66 78 82
02 B03 高等数学 4 78 -1 90
01 B03 高等数学 4 45 -1 88
02 C01 VF 3 65 76 66
................................................................................................................
功能要求极其说明:
(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)查询功能:分为学生基本情况查询和成绩查询两种
学生基本情况查询:
输入一个学号或姓名(可实现选择)查出此学生的基本信息并显示输出。
输入一个宿舍号码,可查出本室所有学生的基本信息并显示输出。
称号查询:
输入一个学号时,查出此学生所有课程情况,格式如下:
XXX 实得学分:XX综合成绩:XXXX课程名称:XX 学号:
...............................................................................
共修:X科,实得总分为:XXX
(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此学生所有信息。
(4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
[提示]
数据结构采用结构体数组,提供学生基本信息和学生成绩基本信息结构体数组。
二 ,需求分析
根据题目要求,该程序应具备的功能有:
(1)数据录入功能:录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。实得成绩、实得学分根据条件自动运算。
(2)查询功能:分为学生基本情况查询和成绩查询两种
(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此学生所有信息。
(4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
三, 程序总体设计
学生学籍信息管理系
MENU(菜单)
数 排删查据序除询录退功功功入 出能能能功 模模模能块块块模 块
按按 按按综综查查学学合合询询成分分成功功 降升绩绩能能降序升序模模排排序序块块 排排列列
列列
四, 程序详细设计
⒈主函数
主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能 模块用菜单方式选择。[流程图]
[程序]
void main()
{
while(1)
{
printf(\
<<<<<<<<<<<<<
manage>>>>>>>>>>>>>>>>>\n\n);
printf(*
========================================================= * \n);
printf(* 1>input 2>cha zhao * \n);
printf(* 3>delete 4>paixu xianshi * \n);
printf(* 5>exit * \n);
printf(* * \n);
printf(* --------------------------------------------------------- * \n);
printf( Please input which you want(1-5):);
ch=getch();
switch(ch)
{
case '1':input();break;
case '2':search(); getch();break;
case '3':delete();getch(); break;
case '4':sort(); getch();break;
case '5':exit(0);
default: continue;
}
}
}
⒉个功能模块设计
⑴数据录入。
[数据结构]
我们需要录入的信息数据有两类:一类是学生基本信息,包括学号,学号 姓名 性别 宿舍号码 电话号码,存放在文件S_INFO.TXT中。另一类信息是学生成绩基本信息,包括学个数据。实得成绩、7号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共.
实得学分根据条件自动运算。 这些信息存放在文件S_SCORE.TXT中。
学生基本信息的存放格式为:
struct info
{
int sMingci; //名次
char xuehao[8];
char name[10];
char sex[2];
char d_num[4]; //宿舍号码
char tel_num[9]; //宿舍电话号码
}data,s_info[100];
成绩基本信息的存放格式为:
struct course
{
char xuehao[8];
char course_No[6]; //课程代号
char course_name[10]; //课程名字
float xuefen; //学分
float p_chengji; //平时成绩
float s_chengji; //实验成绩
float j_chengji; //卷面成绩
float z_chengji; //综合成绩
float s_xuefen; //实际学分
}course_data,s_course[100];
[需求分析]
数据录入模块的功能是用户通过输入选项在基本信息和成绩信息的输入之间进行选择。
[程序]
void input()
{
while(1)
{
printf(\
which information do you want to input: b(base) s(socre) e(exit));
ch=getch();
if(ch=='b'||ch=='B')
{
if((fp=fopen(s_info.txt,at+))==NULL)
{
printf(cannot open this file.\n);
getch();exit(0);
}
printf(\
Please input xuehao:);
gets(sn);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(sn,data.xuehao)==0)
{
flag=1;
}
}
if(flag==1)
{
printf(\
the number has exist,press ang key continue:\n);
flag=0;
getch();
continue;
}
else
{
strcpy(data.xuehao,sn);
}
printf(Please input name:);
gets(data.name);
printf(Please input sex:M(male)/F(female):\n);
gets(data.sex);
printf(Please input your dormitory No:);
gets(data.d_num);
printf(Please input telephone Number:);
gets(data.tel_num);
fwrite(&data,sizeof(data),1,fp); //写入数据
fclose(fp);
} //if
else if(ch=='s'||ch=='S')
{
if((fp1=fopen(s_score.txt,at+))==NULL||(fp=fopen(s_info.txt,
t))==NULL)
{
printf(cannot open this file.\n);
getch();exit(0);
}
printf(\
Please input xuehao:);
gets(sn);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(sn,data.xuehao)==0)
{ flag=1;
}
}
if(!flag)
{ printf(\
this number is not exist\n);
continue;
}
else
{ flag=0;
strcpy(course_data.xuehao,sn);
}
printf(\
Please input course No:);
gets(course_data.course_No);
printf(\
Please input course name:);
gets(course_data.course_name);
printf(\
Please input course xuefeng:);
gets(temp);
course_data.xuefen=atof(temp);
printf(\
Please input pingshi chengji:);
gets(temp);
course_data.p_chengji=atof(temp);
printf(\
Please input shiyan chengji:);
gets(temp);
course_data.s_chengji=atof(temp);
printf(\
Please input juanmian chengji:);
gets(temp);
course_data.j_chengji=atof(temp);
// 以下是综合成绩计算
if(course_data.s_chengji==-1) // 如果有实验
{
course_data.z_chengji=(course_data.p_chengji)*0.3+(course_data.j_chengji)*0.7;
}
else //如果无实验 {
course_data.z_chengji=(course_data.p_chengji)*0.15+(course_data.s_chengji)*0.15+(course
_data.j_chengji)*0.7;
}
以下是实际学分计算 //if((course_data.z_chengji)<60)
{course_data.s_xuefen=0;}
else if((course_data.z_chengji)<70)
{course_data.s_xuefen=course_data.xuefen*0.6;}
else if((course_data.z_chengji)<80)
{course_data.s_xuefen=course_data.xuefen*0.75;}
else if((course_data.z_chengji)<90)
{course_data.s_xuefen=course_data.xuefen*0.8;}
else
{course_data.s_xuefen=course_data.xuefen;
}
fwrite(&course_data,sizeof(course_data),1,fp1); // 写入数据fclose(fp1);
fclose(fp);
//else if }
else
{break;
}
printf(another?y/n);
ch=getch();
if(ch=='n'||ch=='N')
break;
}
//input }
⑵查询功能模块。]
需求分析[学生基本情况查询是根据输入的学号该模块的功能分为学生基本情况查询和成绩查询两种。查出本室所有学生的或者根据输入的宿舍号码,或姓名查出此学生的基本信息并显示输出; 基本信息并显示输出。成绩查询的功能是根据输入的学号,查出此学生的所有课程情况。] [ 流程图 选择基本信息查询还是成绩查询.
a/Ab/B
学生基本情况查学生成绩查
输入学选择根据学号姓名宿舍号码查
根据选择,输入学姓宿舍号
是否找信
是否找信显示找到的信提示没找到按任意键继
显示找到的信息 提示没找到,按任意键继续
[程序]
void search()
{
printf(\
select form: a(student information) b(socre information));
ch=getch();
if(ch=='a'||ch=='A')
{
if((fp=fopen(s_info.txt,
t))==NULL)
{
printf(\
Cannot open this file.\n);
exit(0);
}
printf(\
selectway: a(student Number) b(student name) c(dormitory
NO):\n);
ch1=getch();
//按照学号查找
if(ch1=='a'||ch1=='A')
{
printf(\
please input the student number:);
gets(temp_NO);
printf( xuehao name sex sushe hao telephone
);
printf(\
------------------------------------------------------------------------------\n);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_NO,data.xuehao)==0)
{ flag=1;
printf(\
%8s_x0010_s_x0012_ss s\n,data.xuehao,data.name,data.sex,data.d_num,data.tel_num);
}
}
if(!flag)
{ printf(\
this number is not exist,press any key to continue\n);
getch();
}
else
{ flag=0;
}
}
//按照名字查找 else
if(ch1=='b'||ch1=='B')
{
printf(\
please input the name:);
gets(temp_name);
printf( xuehao name sex sushe hao
telephone );
printf(\
------------------------------------------------------------------------------\n);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_name,data.name)==0)
{ flag=1;
printf(\
%8s_x0010_s_x0012_ss s\n,data.xuehao,data.name,data.sex,data.d_num,data.tel_num);
}
}
if(!flag)
{ printf(\
this name is not exist,press any key to continue:\n);
getch();
}
else
{ flag=0;
}
}
//按照宿舍号码查找
else if(ch1=='c'||ch1=='C')
{
printf(\
please input the dormitory number:);
gets(temp_dnum);
printf( xuehao name sex sushe hao
telephone );
printf(\
------------------------------------------------------------------------------\n);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_dnum,data.d_num)==0)
{ flag=1;
printf(\
%8s_x0010_s_x0012_ss s\n,data.xuehao,data.name,data.sex,data.d_num,data.tel_num);
}
if(!flag)
{ printf( his dormitory is not exist,press any key continue:);
getch();
}
else
{
flag=0;
}
}
}
else
{ printf(\
select error\n);
}
fclose(fp);
} //ch
if
//学生成绩查找
else if(ch=='b'||ch=='B')
{
j=0;
z_fen=0;
z_xuefen=0;
if((fp1=fopen(s_score.txt,
t))==NULL)
{
printf(\
Cannot open this file.\n);
exit(0);
}
printf(\
please input student number:);
gets(temp_NO);
printf( xuehao course_No course_name xuefen
chengji );
printf(\
------------------------------------------------------------------------------\n);
while((fread(&course_data,sizeof(course_data),1,fp1))==1)
{
if(strcmp(temp_NO,course_data.xuehao)==0)
{ flag=1;
j++;
z_fen=z_fen+course_data.z_chengji;
z_xuefen=z_xuefen+course_data.s_xuefen;
printf(\
_x0010_s_x0010_s_x0010_s.1f .1f\n,course_data.xuehao,course_data.course_No,course_data.course_name,course_data.s_xuefen,course_data.z_chengji);
}
}
if(!flag)
{ printf( is not exist);
}
else
{
flag=0;
}
printf(\
------------------------------------------------------------------------------\n);
printf( z_gong:= ke z_xuefen:%3.1f z_cheng
ji:%6.1f,j,z_xuefen,z_fen);
}
else
{
printf(error );
}
fclose(fp1);
}
⑶删除功能模块。
[需求分析]该模块的功能是当在学生基本信息文件中删除一个学生时,自动在成绩信息文件中删除此人的所有信息。
[程序]
void delete()
{
printf(\
input the number of student you want to delete:);
gets(temp_NO);
if((fp1=fopen(s_score.txt,
t))==NULL||(fp=fopen(s_info.txt,
t))==NULL||(fp2=fopen( emp.txt,wt+))==NULL)
{
printf(cannot open this file.\n);
getch();exit(0);
}
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_NO,data.xuehao)!=0)
fwrite(&data,sizeof(data),1,fp2);
}
remove(s_info.txt);
rename( emp.txt,s_info.txt);
fclose(fp);
fclose(fp2);
if((fp1=fopen(s_score.txt,
t))==NULL||(fp2=fopen( emp.txt,wt+))==NULL)
{
printf(cannot open this file.\n);
getch();exit(0);
}
while((fread(&course_data,sizeof(course_data),1,fp1))==1)
{
if(strcmp(temp_NO,course_data.xuehao)!=0)
fwrite(&course_data,sizeof(course_data),1,fp2);
}
remove(s_score.txt);
rename( emp.txt,s_score.txt);
fclose(fp1);
fclose(fp2);
printf(\
delete successful);
}
⑷排序功能模块。
[需求分析]
该模块的功能是能实现选择根据综合成绩或实得学分升序或降序排序显示数据。
[流程图]
输入要排序的课程名称
是否找到 N Y 该课程
提示没找到选择排序根据:根据学分还是综合成绩
退出选择排序方法:升序还是降序
根据选择对数据进行排序显示
]
[程序void sort()
{
printf(\
please input course number:);
gets(tempcn);
if((fp1=fopen(s_score.txt,
t))==NULL)
{
printf(cannot open this file.\n);
getch();exit(0);
}
i=0;
while((fread(&course_data,sizeof(course_data),1,fp1))==1)
{
if(strcmp(tempcn,course_data.course_No)==0)
{
s_course[i]=course_data;
i++;
flag=1;
}
}
if(!flag)
{
printf(\
no such course\n);
}
else
{
flag=0;
printf(\
please select way : a(xuefen) b(zhong
he cheng ji)\n);
ch=getch();
printf(\
select: s(sheng xu) j(jiang xu));
ch1=getch();
if(ch=='a'||ch=='A')
{
//升序排列
if(ch1=='s')
{
for(j=0;j
{
for(k=j;k
{
if(s_course[j].s_xuefen>s_course[k].s_xuefen)
{
temp_course=s_course[j];
s_course[j]=s_course[k];
s_course[k]=temp_course;
}
}
}
printf(\
\nxuehao course_number course_name xuefen chengji\n);
printf(\
----------------------------------------------------------------\n);
for(j=0;j
{
printf(\
%6s_x0010_s_x0016_s.1f.1f\n,s_course[j].xuehao,s_course[j].course_No,s_course[j].course_name,s_course[j].s_xuefen,s_course[j].z_chengji);
}
}
//降序排列
else
{
for(j=0;j
{
for(k=j;k
{
if(s_course[j].s_xuefen
{
temp_course=s_course[j];
s_course[j]=s_course[k];
s_course[k]=temp_course;
}
}
}
printf(\
\nxuehao course_number course_name xuefen chengji\n);
printf(\
----------------------------------------------------------------\n);
for(j=0;j
{
printf(\
%6s_x0010_s_x0016_s.1f.1f\n,s_course[j].xuehao,s_course[j].course_No,s_course[j].course_name,s_course[j].s_xuefen,s_course[j].z_chengji);
}
//ch1
}
} //ch if
else if(ch=='b'||ch=='B')
{
//升序排列
if(ch1=='s'||ch1=='S')
{
for(j=0;j
{
for(k=j;k
{
if(s_course[j].z_chengji>s_course[k].z_chengji)
{
temp_course=s_course[j];
s_course[j]=s_course[k];
s_course[k]=temp_course;
}
}
}
printf(\
\nxuehao
course_number course_name xuefen chengji\n);
printf(\
----------------------------------------------------------------\n);
for(j=0;j
{
printf(\
%6s_x0010_s_x0016_s.1f.1f\n,s_course[j].xuehao,s_course[j].course_No,s_course[j].course_name,s_course[j].s_xuefen,s_course[j].z_chengji);
}
}
//降序排列
else
{
for(j=0;j
{
for(k=j;k
{
if(s_course[j].z_chengji
{
temp_course.z_chengji=s_course[j].z_chengji;
s_course[j].z_chengji=s_course[k].z_chengji;
s_course[k].z_chengji=temp_course.z_chengji;
}
}
}
printf(\
\nxuehao course_number course_name xuefen chengji\n);
printf(\
----------------------------------------------------------------\n);
for(j=0;j
{
printf(\
%6s_x0010_s_x0016_s.1f.1f\n,s_course[j].xuehao,s_course[j].course_No,s_course[j].course_name,s_course[j].s_xuefen,s_course[j].z_chengji);
}
} //ch1
}
else
{
printf(illegal select);
getch();
}
}
五 ,上机操作
编译、连接和运行
下面是运行后各个模块的界面图:
1 主菜单函数
2.数据录入
3,查询功能
(1)学生基本信息查询
)学生成绩查询2(.
4 删除功能
5 排序功能
源程序:
#include stdio.h /*I/O函数*/
#include stdlib.h /*其它说明*/
#include string.h /*字符串函数*/
#include conio.h /*屏幕操作函数*/
#include memory.h /*内存操作函数*/
#include ctype.h /*字符操作函数*/
#include malloc.h /*动态地址分配函数*/
struct course
{
char xuehao[8];
char course_No[6]; //课程代号
char course_name[10]; //课程名字
float xuefen; //学分
float p_chengji; //平时成绩
float s_chengji; //实验成绩
float j_chengji; //卷面成绩
float z_chengji; //综合成绩
float s_xuefen; //实际学分
}course_data,s_course[100];
struct info
{
int sMingci; //名次
char xuehao[8];
char name[10];
char sex[2];
char d_num[4]; //宿舍号码
char tel_num[9]; //宿舍电话号码
}data,s_info[100];
int i,j,k=0;
int a,b;
int flag=0;
char temp[20],ch,ch1,ch2;
char temp_NO[8],temp_name[10],temp_dnum[4];
char tempcn[6];
char sn[8]; //临时学号
float z_fen,z_xuefen;
struct course temp_course;
struct info *inf;
FILE *fp,*fp1,*fp2;
void input()
{
while(1)
{
printf(\
which information do you want to input: b(base) e(exit)); s(socre)
ch=getch();
if(ch=='b'||ch=='B')
{
if((fp=fopen(s_info.txt,at+))==NULL)
{
printf(cannot open this file.\n);
getch();exit(0);
}
printf(\
Please input xuehao:);
gets(sn);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(sn,data.xuehao)==0)
{
flag=1;
}
}
if(flag==1)
{
printf(\
the number has exist,press ang key continue:\n);
flag=0;
getch();
continue;
}
else
{
strcpy(data.xuehao,sn);
}
printf(Please input name:);
gets(data.name);
printf(Please input sex:M(male)/F(female):\n);
gets(data.sex);
printf(Please input your dormitory No:);
gets(data.d_num);
printf(Please input telephone Number:);
gets(data.tel_num);
fwrite(&data,sizeof(data),1,fp); //写入数据
fclose(fp);
} //if
else if(ch=='s'||ch=='S')
{
if((fp1=fopen(s_score.txt,at+))==NULL||(fp=fopen(s_info.txt,
t))==NULL)
{
printf(cannot open this file.\n);
getch();exit(0);
}
printf(\
Please input xuehao:);
gets(sn);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(sn,data.xuehao)==0)
{ flag=1;
}
}
if(!flag)
{ printf(\
this number is not exist\n);
continue;
}
else
{ flag=0;
strcpy(course_data.xuehao,sn);
}
printf(\
Please input course No:);
gets(course_data.course_No);
printf(\
Please input course name:);
gets(course_data.course_name);
printf(\
Please input course xuefeng:);
gets(temp);
course_data.xuefen=atof(temp);
printf(\
Please input pingshi chengji:);
gets(temp);
course_data.p_chengji=atof(temp);
printf(\
Please input shiyan chengji:);
gets(temp);
course_data.s_chengji=atof(temp);
printf(\
Please input juanmian chengji:);
gets(temp);
course_data.j_chengji=atof(temp);
以下是综合成绩计算 // 如果有实验 if(course_data.s_chengji==-1) //
{
course_data.z_chengji=(course_data.p_chengji)*0.3+(course_data.j_chengji)*0.7;
}
如果无实验 else // {
course_data.z_chengji=(course_data.p_chengji)*0.15+(course_data.s_chengji)*0.15+(course
_data.j_chengji)*0.7;
}
以下是实际学分计算 //if((course_data.z_chengji)<60)
{course_data.s_xuefen=0;}
else if((course_data.z_chengji)<70)
{course_data.s_xuefen=course_data.xuefen*0.6;}
else if((course_data.z_chengji)<80)
{course_data.s_xuefen=course_data.xuefen*0.75;}
else if((course_data.z_chengji)<90)
{course_data.s_xuefen=course_data.xuefen*0.8;}
else
{course_data.s_xuefen=course_data.xuefen;
}
写入数据 fwrite(&course_data,sizeof(course_data),1,fp1); //
fclose(fp1);
fclose(fp);
//else if }
else
{break;
}
printf(another?y/n);
ch=getch();
if(ch=='n'||ch=='N')
break;
}
//input
}
void search()
{
printf(\
select form: a(student information) b(socre
information));
ch=getch();
if(ch=='a'||ch=='A')
{
if((fp=fopen(s_info.txt,
t))==NULL)
{
printf(\
Cannot open this file.\n);
exit(0);
}
printf(\
selectway: a(student Number) b(student name) c(dormitory
NO):\n);
ch1=getch();
//按照学号查找
if(ch1=='a'||ch1=='A')
{
printf(\
please input the student number:);
gets(temp_NO);
printf( xuehao name sex sushe hao telephone
);
printf(\
------------------------------------------------------------------------------\n);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_NO,data.xuehao)==0)
{ flag=1;
printf(\
%8s_x0010_s_x0012_ss s\n,data.xuehao,data.name,data.sex,data.d_num,data.tel_num);
}
}
if(!flag)
{ printf(\
this number is not exist,press any key to continue\n);
getch();
}
else
{ flag=0;
}
}
//按照名字查找
else if(ch1=='b'||ch1=='B')
{
printf(\
please input the name:);
gets(temp_name);
printf( xuehao name sex sushe hao
telephone );
printf(\
------------------------------------------------------------------------------\n);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_name,data.name)==0)
{ flag=1;
printf(\
%8s_x0010_s_x0012_ss s\n,data.xuehao,data.name,data.sex,data.d_num,data.tel_num);
}
}
if(!flag)
{ printf(\
this name is not exist,press any key to continue:\n);
getch();
}
else
{ flag=0;
}
}
//按照宿舍号码查找
else if(ch1=='c'||ch1=='C')
{
printf(\
please input the dormitory number:);
gets(temp_dnum);
printf( xuehao name sex sushe hao
telephone );
printf(\
------------------------------------------------------------------------------\n);
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_dnum,data.d_num)==0)
{ flag=1;
printf(\
%8s_x0010_s_x0012_ss s\n,data.xuehao,data.name,data.sex,data.d_num,data.tel_num);
}
if(!flag)
{ printf( his dormitory is not exist,press any key continue:);
getch();
}
else
{
flag=0;
}
}
}
else
{ printf(\
select error\n);
}
fclose(fp);
} //ch
if
//学生成绩查找
else if(ch=='b'||ch=='B')
{
j=0;
z_fen=0;
z_xuefen=0;
if((fp1=fopen(s_score.txt,
t))==NULL)
{
printf(\
Cannot open this file.\n);
exit(0);
}
printf(\
please input student number:);
gets(temp_NO);
printf( xuehao course_No course_name xuefen
chengji );
printf(\
------------------------------------------------------------------------------\n);
while((fread(&course_data,sizeof(course_data),1,fp1))==1)
{
if(strcmp(temp_NO,course_data.xuehao)==0)
{ flag=1;
j++;
z_fen=z_fen+course_data.z_chengji;
z_xuefen=z_xuefen+course_data.s_xuefen;
printf(\
_x0010_s_x0010_s_x0010_s.1f .1f\n,course_data.xuehao,course_data.course_No,course_data.course_name,course_data.s_xuefen,course_data.z_chengji);
}
}
if(!flag)
{ printf( is not exist);
}
else
{
flag=0;
}
printf(\
------------------------------------------------------------------------------\n);
printf( z_gong:= ke z_xuefen:%3.1f z_cheng
ji:%6.1f,j,z_xuefen,z_fen);
}
else
{
printf(error );
}
fclose(fp1);
}
//search
void delete()
{
printf(\
input the number of student you want to delete:);
gets(temp_NO);
if((fp1=fopen(s_score.txt,
t))==NULL||(fp=fopen(s_info.txt,
t))==NULL||(fp2=fopen( emp.txt,wt+))==NULL)
{
printf(cannot open this file.\n);
getch();exit(0);
}
while((fread(&data,sizeof(data),1,fp))==1)
{
if(strcmp(temp_NO,data.xuehao)!=0)
fwrite(&data,sizeof(data),1,fp2);
}
remove(s_info.txt);
rename( emp.txt,s_info.txt);
fclose(fp);
fclose(fp2);
if((fp1=fopen(s_score.txt,
t))==NULL||(fp2=fopen( emp.txt,wt+))==NULL)
{
printf(cannot open this file.\n);
getch();exit(0);
}
while((fread(&course_data,sizeof(course_data),1,fp1))==1)
{
if(strcmp(temp_NO,course_data.xuehao)!=0)
fwrite(&course_data,sizeof(course_data),1,fp2);
}
remove(s_score.txt);
rename( emp.txt,s_score.txt);
fclose(fp1);
fclose(fp2);
printf(\
delete successful);
}
void sort()
{
printf(\
please input course number:);
gets(tempcn);
if((fp1=fopen(s_score.txt,
t))==NULL)
{
printf(cannot open this file.\n);
getch();exit(0);
}
i=0;
while((fread(&course_data,sizeof(course_data),1,fp1))==1)
{
if(strcmp(tempcn,course_data.course_No)==0)
{
s_course[i]=course_data;
i++;
flag=1;
}
}
if(!flag)
{
printf(\
no such course\n);
}
else
{
flag=0;
printf(\
please select way : a(xuefen) b(zhong
he cheng ji)\n);
ch=getch();
printf(\
select: s(sheng xu) j(jiang xu));
ch1=getch();
if(ch=='a'||ch=='A')
{
//升序排列
if(ch1=='s')
{
for(j=0;j
{
for(k=j;k
{
if(s_course[j].s_xuefen>s_course[k].s_xuefen)
{
temp_course=s_course[j];
s_course[j]=s_course[k];
s_course[k]=temp_course;
}
}
}
printf(\
\nxuehao course_number course_name xuefen chengji\n);
printf(\
----------------------------------------------------------------\n);
for(j=0;j
{
printf(\
%6s_x0010_s_x0016_s.1f.1f\n,s_course[j].xuehao,s_course[j].course_No,s_course[j].course_name,s_course[j].s_xuefen,s_course[j].z_chengji);
}
}
//降序排列
else
{
for(j=0;j
{
for(k=j;k
{
if(s_course[j].s_xuefen
{
temp_course=s_course[j];
s_course[j]=s_course[k];
s_course[k]=temp_course;
}
}
}
printf(\
\nxuehao course_number course_name xuefen chengji\n);
printf(\
----------------------------------------------------------------\n);
for(j=0;j
{
printf(\
%6s_x0010_s_x0016_s.1f.1f\n,s_course[j].xuehao,s_course[j].course_No,s_course[j].course_name,s_course[j].s_xuefen,s_course[j].z_chengji);
}
} //ch1
} //ch if
else if(ch=='b'||ch=='B')
{
//升序排列
if(ch1=='s'||ch1=='S')
{
for(j=0;j
{
for(k=j;k
{
if(s_course[j].z_chengji>s_course[k].z_chengji)
{
temp_course=s_course[j];
s_course[j]=s_course[k];
s_course[k]=temp_course;
}
}
}
printf(\
\nxuehao
course_number course_name xuefen chengji\n);
printf(\
----------------------------------------------------------------\n);
for(j=0;j
{
printf(\
%6s_x0010_s_x0016_s.1f.1f\n,s_course[j].xuehao,s_course[j].course_No,s_course[j].course_name,s_course[j].s_xuefen,s_course[j].z_chengji);
}
}
//降序排列
else
{
for(j=0;j
{
for(k=j;k
{
if(s_course[j].z_chengji
{
temp_course.z_chengji=s_course[j].z_chengji;
s_course[j].z_chengji=s_course[k].z_chengji;
s_course[k].z_chengji=temp_course.z_chengji;
}
}
}
printf(\
\nxuehao course_number course_name xuefen chengji\n);
printf(\
----------------------------------------------------------------\n);
for(j=0;j
{
printf(\
%6s_x0010_s_x0016_s.1f.1f\n,s_course[j].xuehao,s_course[j].course_No,s_course[j].course_name,s_course[j].s_xuefen,s_course[j].z_chengji);
}
} //ch1
}
else
{
printf(illegal select);
getch();
}
}
}
void main()
{
while(1)
{
printf(\
<<<<<<<<<<<<<
manage>>>>>>>>>>>>>>>>>\n\n);
printf(*
========================================================= * \n);
printf(* 1>input 2>cha zhao * \n);
printf(* 3>delete 4>paixu xianshi * \n);
printf(* 5>exit * \n);
printf(* * \n);
printf(* --------------------------------------------------------- * \n);
printf( Please input which you want(1-5):);
ch=getch();
switch(ch)
{
case '1':input();break;
case '2':search(); getch();break;
case '3':delete();getch(); break;
case '4':sort(); getch();break;
case '5':exit(0);
default: continue;
}
}
}
六,总结
通过本次的实习,使我掌握了模块化设计方法,理解和运用结构化程序设计的思想和方法。学会了利用 流程图表示算法,提高了利用C语言进行程序设计能力。
程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常称为流程,然后采用逐步细化的方法实现整个程序。
第一次设计程序,感觉压力很大,很难完成。但通过同学和老师的帮助最终还是完成了自己的程序设计,虽然程序还不是很完美,但能满足题目的各项要求,相信以后再次进行程 序设计的时候会得心应手。最后感谢老师这么多天的教诲。谢谢!.
本文来源:https://www.2haoxitong.net/k/doc/58126143c7da50e2524de518964bcf84b9d52df0.html
文档为doc格式