C语言课程设计学生信息管理系统实习报告电子版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计学生信息管理系统实习报告电子版
学生信息管理系统
系部名称:电子工程系
专业名称:电子信息技术
班级:110112
学号:11011221
学生姓名:刘龙涛
指导教师:顾军林
时间:2012 年 5 月26日至
2012年 6 月1 日
*** Created on 11/8/2012 10:05:13 PM
一、课程设计目的
1,对C各部分知识的综合应用能力
2,提高程序设计的能力
3,提升对于较大程序的抽象分析设计能力
4,学习调试和测试的技巧
二、课程设计内容
1,熟悉C实验环境~按给定的上机步骤练习完成,
2,熟悉C程序的编辑~编译~链接和运行的过程。
3,编译一个应用系统程序~形成一个软件系统。
三、需求分析
随着当今社会发展~信息化水平逐步提高~对教务管理有了新的要求~因此~编写一个信息管理系统是十分有必要的。
该软件主要是实现对学生信息进行系统化的管理~首先可以对学生基本信息进行输入和读取~其次查找并显示特定学生的相关信息~然后可以插入学生的相关信息~还有就是可按学生相关信息排序~以求达到简易操作的目的。
四、概要设计
1(系统结构图,功能模块图,和数据变量说明
主菜单
输入列表查找增加修改排序退出
2(功能模块说明
1.输入模块
2.列表模块
开始
开始
-1 返回主程序输入
输出列表 -1
i=-1 返回主程序
返回主程序输入数据
-1
返回主程序 i=-1
第 1 页共 10页
*** Created on 11/8/2012 10:05:13 PM
3.查找模块
4.修改模块
开始开始
读文件数据读文件数据
输入num 输入num
N N stu[i].num==nstu[i].num==n 返回主函数返回主函数 uum ? uum ?
Y Y
输出数据输出数据
修改数据返回主函数
显示数据 5.增加模块
开始
返回主函数
读文件数据
6.成绩排序
列出数据
开始
s=i
读文件数据 Y
i=-1 返回主函数
列出数据 N
输入数据
冒泡排序
Y
i=-1 返回主函数输入数据 N
返回主函数
第 2 页共 10页
Created on 11/8/2012 10:05:13 PM
五、运行情况
1. 主菜单
2.录入数据
3.输出数据
4.查找数据
5.增加数据
5.增加数据
第 3 页共 10页
Created on 11/8/2012 10:05:13 PM
6.修改数据
7.成绩排序
8.退出系统
第 4 页共 10页
Created on 11/8/2012 10:05:13 PM
六、设计体会和反思
通过两周的上机实习,我对C语言又有了崭新的认识。
C语言的学习是一个系统的过程,需要长期的知识积累和储备并辅以大量的上级实际操作练习,自己也应该有所体会,在实践中成长,在实践中求知。
这次我设计的课题是学生信息管理系统。
课题要求对学生信息实现一系列基本操作。
我选择通过结构体数组来实现这个设计。
通过fread和fwrite两个函数实现对文件的读写,过程比较简洁(这里也有参考《C程序设计》中某例题的思想)。
通过大量的符号和printf语句,使得操作界面更加和谐友善,这些都是我通过这次实习积累的经验。
同时,设计完成后我也发现了代码中的一些不足,例如在录入数据时要求输入序号的值,这个我认为操作比较复杂,但由于时间紧迫,未能提出完美的解决方案,但此问题并不影响程序的运行和要求的实现。
经过实际检验,只要按照程序要求输入,就能够实现。
总之,通过这次实习,我也认识到了我自己在程序设计这门课程上的不足,在以后的学习实践中,要更加的严谨踏实,对知识的把握要更加的细致入微,要活学活用,争取在这个学科上取得更大的进步。
七、参考文献
谭浩强著.C程序设计(第三版).北京:清华大学出版社,2005
第 5 页共 10页
Created on 11/8/2012 10:05:13 PM
八、程序源代码
#include "stdio.h"
#define SIZE 100000
#include"string.h"
#include"stdlib.h"
#include"conio.h"
struct student
{int n;
int num;
char name[10];
int C;
int Maths;
int En;
float ave;
}stu[SIZE];
/*录入数据*/
void finput()
{
FILE *fp;
int i,p;
fp=fopen("fstu","wb");
for(i=0;i<SIZE;i+1)
{
printf("i=%d 输入序号i(当输入i=-1时,返回),i=",i++); scanf("%d",&i);
if(i==-1)
{
fclose(fp);
return;
}
else
{
printf("请输入学号,姓名,C成绩,数学成绩,英语成绩:");
scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].C,&stu[i].Maths,& stu[i].En);
stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;
stu[i].n=i+1;
fwrite(&stu[i],sizeof(struct student),1,fp);
}
}
fclose(fp);
}
/*输出数据*/
void flist()
{
FILE *fp;
int i;
fp=fopen("fstu","rb");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 成绩列表\n");
printf("-----------------------------------------------------------\n");
printf("序号学号姓名 C成绩数学英语平均\n");
printf("-----------------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)
{
printf("%d%8d%8s%8d%8d%8d%16.2f\n",stu[i].n,stu[i].num,stu[i].name,s tu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
}
printf("-----------------------------------------------------------\n\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
第 6 页共 10页
Created on 11/8/2012 10:05:13 PM
fclose(fp);
}
/*查找数据*/
void fsearch()
{
FILE *fp;
int i,num;
fp=fopen("fstu","rb");
rewind(fp);
printf("请输入要查找的学号:");
scanf("%d",&num);
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 查询结果\n");
printf("-----------------------------------------------------------\n");
printf("序号学号姓名 C成绩数学英语平均\n");
printf("-----------------------------------------------------------\n");
for(i=0;i<=SIZE;i++)
if(stu[i].num==num)
{
printf("%d%8d%8s%8d%8d%8d%16.2f\n",stu[i].n,stu[i].num,stu[i].name,s tu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
}
printf("-----------------------------------------------------------\n\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n\n");
fclose(fp);
}
/*增加数据*/
void fadden()
{
int i,s;
FILE *fp;
fp=fopen("fstu","ab+");
rewind(fp);
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 成绩列表\n");
printf("-----------------------------------------------------------\n");
printf("序号学号姓名 C成绩数学英语平均\n");
printf("-----------------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)
{
printf("%d%8d%8s%8d%8d%8d%16.2f\n",stu[i].n,stu[i].num,stu[i].name,s tu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
}
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
s=i;
for(i=s;i<SIZE;i++)
{
printf("i=%d 输入序号i(当输入i=-1时,返回),i=",i+1);
scanf("%d",&i);
if(i==-1)
{
fclose(fp);
return;
}
else
{
printf("请输入学号,姓名,C成绩,数学成绩,英语成绩:");
stu[i].n=i+1;
scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].C,&stu[i].Maths,& stu[i].En);
第 7 页共 10页
Created on 11/8/2012 10:05:13 PM
stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;
fwrite(&stu[i],sizeof(struct student),1,fp);
}
}
fclose(fp);
}
/*修改数据*/
void fchange()
{
FILE *fp;
int i,num,n;
int flag=0;
printf("请输入要修改学生的学号:");
scanf("%d",&num);
for(i=0;i<=SIZE;i++)
if(stu[i].num==num)
{
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 成绩列表\n");
printf("-----------------------------------------------------------\n");
printf("序号学号姓名 C成绩数学英语平均\n");
printf("-----------------------------------------------------------\n");
printf("%d%8d%8s%8d%8d%8d%16.2f\n",stu[i].n,stu[i].num,stu[i].name,s tu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
printf("-----------------------------------------------------------\n\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
n=i;
flag=1;
break;
}
if(flag==0)
{
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 输入错误!\n");
printf(" 请返回!\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
return;
}
printf("\n\n\n");
fp=fopen("fstu","rb+");
fseek(fp,n*sizeof(struct student),0);
printf("请输入新的学号,姓名,C成绩,数学成绩,英语成绩:");
scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].C,&stu[i].Maths,& stu[i].En);
stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("fstu","rb");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 成绩列表\n");
printf("-----------------------------------------------------------\n");
printf("序号学号姓名 C成绩数学英语平均\n");
printf("-----------------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)
{
printf("%d%8d%8s%8d%8d%8d%16.2f\n",stu[i].n,stu[i].num,stu[i].name,s tu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
}
printf("-----------------------------------------------------------\n\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
第 8 页共 10页
Created on 11/8/2012 10:05:13 PM
fclose(fp);
}
/*成绩排序*/
void ftaxis()
{
int i,j,n;
FILE *fp;
struct student t;
fp=fopen("fstu","rb");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 成绩列表\n");
printf("-----------------------------------------------------------\n");
printf("序号学号姓名 C成绩数学英语平均\n");
printf("-----------------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)
{
printf("%d%8d%8s%8d%8d%8d%16.2f\n",stu[i].n,stu[i].num,stu[i].name,s tu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
}
printf("-----------------------------------------------------------\n\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
fclose(fp);
n=i;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(stu[i].ave<stu[j].ave)
{
t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
fp=fopen("fstus","wb");
printf("\n\n\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 成绩列表 \n");
printf("-----------------------------------------------------------\n");
printf("序号学号姓名 C成绩数学英语平均\n");
printf("-----------------------------------------------------------\n");
for(i=0;i<n;i++)
{
fwrite(&stu[i],sizeof(struct student),1,fp);
printf("%d%8d%8s%8d%8d%8d%16.2f\n",stu[i].n,stu[i].num,stu[i].name,s tu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
}
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
fclose(fp);
}
第 9 页共 10页
Created on 11/8/2012 10:05:13 PM
/*主函数*/
main()
{
int n;
for(;;)
{
printf("\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※ ※\n");
printf("※ 欢迎来到学生信息管理系统※\n");
printf("※ ※\n");
printf("※ 系部:通信工程专业:通信工程※\n");
printf("※ 姓名: 学号: ※\n");
printf("※ 班内序号: 指导老师: ※\n");
printf("※ ※\n");
printf("※ 主菜单※\n");
printf("※ ※\n");
printf("※ ?1.录入数据? ※\n");
printf("※ ?2.输出数据? ※\n");
printf("※ ?3.查找数据? ※\n");
printf("※ ?4.增加数据? ※\n");
printf("※ ?5.修改数据? ※\n");
printf("※ ?6.成绩排序? ※\n");
printf("※ ?7.退出系统? ※\n");
printf("※ ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n");
printf("请输入选择项(1-7):");
scanf("%d",&n);
printf("\n\n\n\n");
if(n>0&&n<8)
{
switch(n)
{
case 1:finput();break;
case 2:flist();break;
case 3:fsearch();break;
case 4:fadden();break;
case 5:fchange();break;
case 6:ftaxis();break;
case 7:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※ ※\n");
printf("※ 谢谢使用! ※\n");
printf("※ 再见! ※\n");
printf("※ ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
exit(0);
}
}
else
{
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); p rintf("※ ※\n");
printf("※ 输入错误! ※\n");
printf("※ 请退出! ※\n");
printf("※ ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); break;
}
}
}
第 10 页共 10页
Created on 11/8/2012 10:05:13 PM
第 11 页共 10页。