c语言用数组编写学籍管理程序,c语言学籍管理系统实验报告(5页)-原创力文档...

实验报告

课程 程序设计基础 实验名称 课内实验 共5页

系别?计算机系 专业班级 ? 姓 名 学号

实验题目:使用 C 编程实现一个学籍管理系统

1. 程序设计与分析

程序实现的功能

1.提供基本的菜单选项,能根据不同的选项执行不同操作;

2. 对学生信息进行录入信息、删除学生信息、查询信息、学生信息排序、学生信息统计输出的操作;

数据类型

学生信息:结构体数组

学生学号、班级、姓名:字符串数组

学生的三个成绩及总分:浮点型变量

用户选项、计数器:整形变量

各个功能模块:被调函数

主函数

主函数

主界面——

主界面——功能选择

退出输出排序查找删除录入

退出

输出

排序

查找

删除

录入

2. 程序设计中存在的问题和解决思路

存在问题:

从调用函数返回主函数后无法再次调用主函数。

全程使用数组而没用指针。

不会编写退出程序的指令。

一些基础性的语法错误。

解决思路:

在被调函数中使用return;语句,在主函数中利用while(1)循环,使每次返回主函数均可再次调用主函数。

再设置一个指向结构体的指针,利用该指针的自增输出结构体。

在用户选择为退出程序时,在跳出switch函数后再利用一个break;语句跳出while循环,读取return 0;语句,退出程序。

利用编译器中的build功能进行语法筛查。

3. 实验总结

收获:

懂得了编写程序前计划好核心算法的重要性。

对于调用函数有了更清楚的认识,可以更加熟练地运用return语句。

更加了解结构体,熟悉了结构体指针、结构体数组。

熟练掌握输入输出语句。

学会分块编译程序,调试程序更加熟练。

不足:

对于指针的理解不足,没有用指针做成链表进行函数间的调用。

尚存在一些基础性的语法错误,这要通过复习课本、上机实验来消灭这些错误。

对于调用函数掌握不足,可以尝试着做一些带返回值的函数。

4. 源代码清单

#include

#include

struct Student

{

char id[10];char cla[10];char name[10];float score1;float score2;float score3;float sum;

}stu[3],mark,temp,*p;/*学生信息结构体数组,mark用来标记待删除的学生信息,temp用来交换,*p指向结构体数组*/

int choice,i, j;

char str1[10],str2[10]={"no"};//用以判断是否继续

void homepage()//输出主页面并获取用户的选项

{

printf("1.input\n2.delete\n3.select\n4.order\n5.output\n6.quit\nplease input your option\n");

scanf("%d",&choice);

}

void input()//输入学生信息

{

for(i=0;;i++,p++)

{

printf("id ");scanf("%s",&stu[i].id);

printf("class ");scanf("%s",&stu[i].cla);

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

printf("score1 ");scanf("%f",&stu[i].score1);

printf("score2 ");scanf("%f",&stu[i].score2);

printf("score3 ");scanf("%f",&stu[i].score3);

stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;

printf("continue?\n");scanf("%s",str1);

if(strcmp(str1,str2)==0)break;

}

return;

}

void del()//用指针将数据输出,将用户想找到的学生信息进行标记

{

char find[10];scanf("%s",find);

for(i=0,p=stu;i<3,p

{

if((strcmp(stu[i].name,find)!= 0)&&(strcmp(stu[i].id,find) != 0))

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值