高级语言程序设计报告
高级级语言课程设计报告
实验课程:课程设计 年级:16级 实验成绩:
课程设计名称:学生成绩管理系统 姓名:石宏伟 任课教师:杨有安 学号:[1**********]7 实验日期:
一、目的
通过编一些小程序,巩固和利用所学的知识,加强变成能力。
本课题涉及的知识内容:关于时间的函数,for 循环嵌套,if 语句,一维数组,结构数组,自定义函数等高级语言内容。
二、内容与设计思想 1.设计内容
学生信息管理系统 (1)登记学生信息 (2)删除学生信息
(3)浏览所有已经登记的学生 (4)查找
(4.1)按学号查找 (4.2)按姓名查找 (4.3)按成绩查找
(5)根据总成绩排序 (6)储存到文件 (7)从文件导出 (8)退出系统 2.主要代码结构
3. 主要代码段分析。
总共分为八个板块,分别作为学生成绩录入,删减,浏览,查找,排序,储存和导出的作用。用switch 函数将整体分成八个菜单,以方便直接进行操作。
本程序中,对于学生信息的记录用了结构数组的形式,对于主要数据结构的应用如下: 结构数组:
Typedef struct student /*结构体*/ char xuehao[20]; /* 学号*/ char xingming[20]; /* 姓名*/ int score[M]; /* 分数*/ int sum; /* 总成绩*/
本程序执行的入口是main 函数,然后用switch 语句实现对各个函数的调用。被调用的函数都是没有形参的,函数直接实现所需要的功能。最后,再从main 函数中结束整个程序的运行。 其中涉及到被调用的函数有:
V oid menu 显示帮助信息; Void dengji 登记学生信息 ;
V oid shanchu 删除学生信息 ; V oid liulan 浏览学生信息 ; V oid chazhao 查找学生信息; V oid paixu 学生信息排序; V oid cunchu 存储学生信息; V oid daochu 导出学生信息; 三、使用环境
本次上机实践所使用的平台和相关软件。 平台:Windows 7 相关软件:Microsoft Visual C++6.0
四、调试过程 1.测试结果分析
经检验,运行结果正确
五、总结
通过此次为期三周的课程设计实训课,我更加了解了关于C 语编程以及程序书写的更多的知识,在当初的C 语课时留下了许多问题,比如结构体,以及连接,通过此次课程,我巩固了在C 语课中遗留的问题,并且使当初遗忘了的知识点更加明了。这次课程设计,我成功的创建了一个信息管理的系统,在编写这个系统过程中,我遇见了颇多的问题,比如,无法显示出结果或者直接是无法运行,在经过严密的程序检查后,一般发现我的问题主要是细节上的问题,如在个别语句
后面忘记加‘ ;’,在此次设计过程中虽然遇见了一些问题,但总体还是成功的,在编写程序的过程中,细节明显更加重要,细节决定成败,通过此次课程也让我的C 语言知识更加的清晰明了。
六、附录 1.源代码
#include #include #include #include #define M 3 #define N 100 void menu();
#include"head.h" void main() { menu(); }
#include"head.h" typedef struct student { char xuehao[20]; char xingming[20]; int score[M]; int sum; }STUDENT; STUDENT student[N]; int renshu=0; void fhzjm() { char biaozhi[20]; printf("\n"); printf("还需要操作么?如果需要操作请输入:yes ,否则请输入:no\n"); scanf("%s",biaozhi); if(strcmp(biaozhi,"yes")==0) {menu(); } else if(strcmp(biaozhi,"no")==0) exit(0); else { printf("请输入正确的字符,谢谢!\n"); fhzjm(); } }
void DengJi() {
int rs; int i,j,k=1; system("CLS"); printf("请输入需要输入几个学生信息:"); scanf("%d",&rs); for(i=renshu;i
void ShanChu() { char shanchuinfo[10]; system("CLS"); printf("删除全部学生信息请输入\"all\",删除指定学号的学生信息请输入\"one\"\n"); scanf("%s",shanchuinfo); if(strcmp(shanchuinfo,"all")==0) { renshu=0; printf("删除成功\n\n"); } else if(strcmp(shanchuinfo,"one")==0) { struct student *p=NULL; char choice[20]; int i,j,k=0; printf("请输入你要删除的人的学号:"); scanf("%s",choice); for(i=0;i
} } if(k) { if(renshu==1) { p=&student[0]; free(p); renshu=0; } else { for(i=j;i
void LiuLan() { int i,j; system("CLS"); if(renshu==0) { printf("系统里面没有任何学生的信息!\n"); } else { for(i=0;i
绩:%d\n",i+1,j+1,student[i].score[j]);
} printf("第%d个学生的总成绩为:%d\n",i+1,student[i].sum); } } fhzjm(); }
void ChaZhao() { char choice[10],xinxi[20]; int i,j,k=0; system("CLS"); if(renshu==0) { printf("系统里面没有任何学生的信息!\n"); fhzjm(); } printf("三种查找方式:学号,姓名,成绩,请输入查找方式:"); scanf("%s",choice); if(strcmp(choice,"学号")==0) { printf("请输入需要查找学生的学号:"); scanf("%s",xinxi); for(i=0;i
printf("------%s------%s-------%d---------%d-------------%d\t\n",student[j].xuehao,student[j].xingming,
student[j].score[0],student[j].score[1],student[j].score[2]); } } else
if(strcmp(choice,"姓名")==0) { printf("请输入需要查找学生的姓名:\n"); scanf("%s",xinxi); for(i=0;i
printf("----%s-----%s-----------%d-----------%d---------------%d---\n",student[j].xuehao,student[j].xingming,
student[j].score[0],student[j].score[1],student[j].score[2]); } } else if(strcmp(choice,"成绩")==0) { printf("请输入需要查找学生的成绩:\n"); scanf("%s",xinxi); for(i=0;i
printf("-----%s-----%s-----------%d-----------%d---------------%d-----\n",student[j].xuehao,student[j].xingming,
student[j].score[0],student[j].score[1],student[j].score[2]); } } fhzjm(); }
void PaiXu() { struct student *p1[N],**p2,*temp; int i,j; system("CLS"); p2=p1; for( i=0;isumsum) { temp=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=temp; } } } printf("按照总成绩排序之后的信息为:\n"); printf("-----学号-----姓名------总成绩-----\n"); for( i=0;i
printf("-----%s-----%s--------%d\n",(*(p2+i))->xuehao,(*(p2+i))->xingming,(*(p2+i))->sum);
} fhzjm(); }
void CunChu() { int i; FILE *rs; if((rs=fopen("card.dat","wb"))==NULL) { printf("not open"); exit(0);
}
for(i=0;i
{
fwrite(&student[i], sizeof(student[i]), 1, rs); }
if(ferror(rs))
{
fclose(rs);
perror("写文件失败!\n");
return;
}
printf("存储文件成功!\n");
fclose(rs);
fhzjm();
}
void DaoChu()
{
struct student t;
int i=0;
FILE* fp = fopen("card.dat", "rb");
renshu=0;
if(NULL==fp)
{
perror("读取文件打开失败!\n");
return;
}
memset(student,0x0,sizeof(student)); while(1)
{
fread(&t,sizeof(t),1,fp);
if(ferror(fp))
{
fclose(fp);
perror("读文件过程失败!\n"); return;
}
if(feof(fp))
{
break;
}
student[i]=t;
i++;
}
fclose(fp);
renshu=i;
printf("导出文件成功!\n");
fhzjm();
}
#include"head.h"
void menu()
{
int n;
system("CLS");
printf(" 学生信息管理系统\n"); printf("-------------------MENU-----------------\n"); printf(" 1. 登记学生信息\n"); printf(" 2. 删除学生信息\n");
printf(" 3. 浏览所有已经登记的学生\n"); printf(" 4. 查找\n");
printf(" 4.1. 按学号查找\n"); printf(" 4.2按姓名查找\n"); printf(" 4.3按成绩查找\n"); printf(" 5. 根据总成绩排序\n"); printf(" 6. 存储到文件\n");
printf(" 7. 从文件导出\n");
printf(" 8. 退出系统\n");
a: printf(" 请选择:");
scanf("%d",&n);
switch (n)
{
case 1:
DengJi();
break;
case 2:
ShanChu();
break;
case 3:
LiuLan();
break;
case 4:
ChaZhao();
break;
case 5:
PaiXu();
break;
case 6:
CunChu();
break;
case 7: DaoChu(); break; case 8: exit(0); break; default: { printf("请输入1-8之间的数字\n");
}
}
}
goto a;