资源描述
目 录
1设计目的………………………………………………………………………3
2 设计题目及要求……………………………………………………3
3设计算法分析………………………………………………………………3
3。1 模块调用层次图………………………………………………………3
3。2 核心算法描述………………………………………………………4
3。3 系统特点………………………………………………………6
4程序代码………………………………………………………………………6
5调试情况……………………………………………………………………8
6结论……………………………………………………………………………11
学生信息管理
1。设计目的
本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学的知识,补充未学的但又必要的内容.进行课程设计目的在于加深对程序设计基础中基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计的能力。具体目的如下:
1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。
2.培养学生综合运用所学知识独立完成课题的能力。
3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力.
6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核.
2。设计题目及要求
【1】设计题目
【2】要求
实现如下功能:
(1)建立学生信息的结构体
(2)学生信息的初始化(可以从文件获取)
(3)学生信息的添加、修改、删除、查找
(4)学生信息的输出
(5)对学生信息按学号、成绩排序
(6)计算一门课的平均分和总分
(7)将学生信息保存为文件
综合应用数组、指针、结构体、文件等,对该设计题目进行设计和实现。课程设计完成后,提交课程设计报告。
3.设计算法分析
3.1 模块调用层次图
【1】变量描述
定义形式/名称
含义/作用
数组
char name[20]
定义姓名数组
结构体
struct student stu[50]
声明一个结构数组
全局变量
int input=0;float ave,sum;
FILE *fp;
全局变量标记当前录入学生个数
文件
stu_list2。doc
保存学生信息
函数
SaveInputStuDelStuModifyStuFindStuInsertStuSortStuListStu
保存 录入 删除 修改 查找 插入 排序 显示学生信息
【2】系统模块调用层次图
Main
ListStu
SortStu
InsertStu
FindStu
ModifyStu
DelStu
InputStu
Save
3。2核心算法描述
1.总体模块流程图:
开始
!(scanf("%d",&in1)==1
N
T
学生信息
保存
排序
删除
插入
查询
修改
结束
2。修改模块:
for(i=0;i〈=15;i++)
for(i=0;i〈input;i++)
stu[i]。num==id
T(flag!=0) F(flag!=0)
输出修改后学生信息 printf(”\n\nnull”)
3。查询模块:
for(i=0;i〈=15;i++)
for(i=0;i〈input;i++)
(stu[i]。num==id)
T (flag=0) F (flag!=0)
输出查询后学生信息 printf("\n\nnull”)
(stu[i].classid==id)
T (flag=0) F(flag!=0)
输出查询后学生信息 printf(”\n\nnull”)
T (flag=0) (!strcmp(stu[i]。name,name)) F(flag!=0)
输出查询后学生信息 无找到有关信息
4。插入模块:
for(i=0;i〈input;i++)
stu[i]。num=id
T(flag=0)F(flag!=0)
学号信息已经存在 输入要插入学生信息
5。删除模块:
ask != 'n'
T F
i=0;i〈input;i++
stu[i].num == delnum
T (flag=0) F(flag!=0) for(j=i;j〈input;j++)
删除成功且
显示删除后数据
删除指定学生的信息 没有要删除的学生
6。排序模块:
chose==1
T F(chose==2)
for(i=0;i〈input-1;i++)for(i=0;i<input—1;i++)
for(j=i+1;j<input;j++)for(j=i+1;j〈input;j++)
stu[i]。num〉stu[j]。numstu[i]。ave〈stu[j]。ave
T F T F
temp=stu[i]temp=stu[i]
stu[i]=stu[j]stu[i]=stu[j]
stu[j]=tempstu[j]=temp
3。3 系统特点
【1】特点:这个学生信息管理系统建立了学生信息的结构体,实现了学生信息的录入、添加、修改、删除、查找等功能,并能计算学生的平均分和总分,对学生进行排序.
4。程序代码
【1】程序代码
void Help();
void Save(struct student stu[]);
void InputStu(struct student stu[]);
void DelStu(struct student stu[]);
void ModifyStu(struct student stu[]);
void FindStu(struct student stu[]);
void InsertStu(struct student stu[]);
void SortStu(struct student stu[]);
void ListStu(struct student stu[]);
void main()
{ struct student stu[50]; struct student *p;
int in;int in1; char ch;
void InputStu(struct student stu[])
{ pp=stu;
system(”cls");
int i;
printf(”Number of students you want to enter information:");
scanf("%d",&input);
if((fp=fopen("inputdata.sys",”wb+"))==NULL)
{ printf("Cannot open file strike any key exit!");
getch();exit(1); }
void ModifyStu(struct student stu[])
{system("cls”);
pp=stu;int id,i,flag=1;
if((fp=fopen(”modifydata.sys”,"wb+”))==NULL)
{printf(”Cannot open file strike any key exit!”);
getch();exit(1);}
void FindStu(struct student stu[])
{system("cls”);int i=0,id,flag=1,chose;
printf(”\nPlease select query: 1。No。 inquiries by school;2.Query by class;3.Query by name\n”);
scanf(”%d”,&chose);
switch(chose){
case 1:printf("Please enter your query No。 students:”);
scanf(”%d”,&id);
for(i=0;i〈input;i++)
{if (stu[i]。num==id)
{ flag=0;
stu[i]。sum=stu[i]。score1+stu[i].score2+stu[i].score3;
stu[i]。ave=stu[i]。sum/3;
printf(”\nNo. Studies\ Name\ No. classes\ The first subjec\ The second subject\ The third subject\Average \Total\n”);
void InsertStu(struct student stu[])
{system(”cls");
int flag=1; pp=stu;int i,id;
if((fp=fopen("insertdata。sys”,”wb+"))==NULL)
{printf(”Cannot open file strike any key exit!");
getch();exit(1);}
void ListStu(struct student stu[])
{int i=0;
for(i=0;i〈input;i++)
{stu[i]。sum=stu[i]。score1+stu[i]。score2+stu[i]。score3;
stu[i]。ave=stu[i]。sum/3;}
printf(”\nNo。 Studies\ Name\ No。 classes\ The first subjec\ The second subject\ The third subject\Average \Total\n”);
for(i=0;i〈input;i++)
{printf("\n %d %s %d \t%d \t%d \t%d \t%d %d”,stu[i]。num,stu[i]。name,stu[i]。classid,stu[i]。score1,stu[i]。score2,stu[i]。score3,stu[i]。ave, stu[i]。sum); }
getch();}
void DelStu(struct student stu[])
{system(”cls");
pp=stu;int delnum,flag=1; char ask;int i,j;
if((fp=fopen(”Deldata。sys”,"wb+"))==NULL)
{printf(”Cannot open file strike any key exit!”);
getch();exit(1);}
void SortStu(struct student stu[])
{system(”cls”);
int i,j,chose;
struct student temp;
printf(”To sort the data before:\n”);
printf(”\nNo. Studies\ Name\ No. classes\ The first subjec\ The second subject\ The third subject\Average \Total\n”);
for(i=0;i〈input;i++)
{printf(”\n %d %s %d %d\t %d\t %d\t %d\t %d\n",stu[i]。num,stu[i].name,stu[i]。classid,stu[i].score1,stu[i].score2,stu[i]。score3,stu[i].ave,stu[i]。sum); }
printf("\n1.Sort by Student ID\t2。By the average score (high → low) Sort\n”);
void Save(struct student stu[])
{int i,j;pp=stu;
system("cls”);
printf(”\n\n\n\n\t\t\tSaving”);
if((fp=fopen(”stu_list2.doc”,"wb+”))==NULL)
{ printf(”Cannot open file strike any key exit!”);
getch();exit(1);
}
【2】程序执行结果
【3】结果的讨论:系统最后将修改过后的学生信息保存了下来
5。调试情况
三科成绩、平均分、总分不能用float定义应改为int
定义应在函数的最前端
文件未定义
这是建立学生信息文件
添加学生信息并计算平均分和总分
找不到要删除的学生信息
删除了学号为12的学生信息
修改学生信息
新学生信息记录
保存信息后退出程序
6.结论
(1)能够通过编译时出现的出错提示信息,进行初步的纠错.
(2)完成一个程序的一般步骤为设计,录入 ,编译 ,如果出错,则修改,然后再编译,编译成功后,看看结果是否正确,如果结果不正确,则再重复以上步骤.
(3)从这次编程序的过程中,我学到了编程所必须具备的专业技能,更领会编译程序所需要的细心和耐心。
展开阅读全文