
正文
学生管理系统c语言主函数 c语言做学生管理系统
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言新手 要做学生管理系统,我创建了一个链表想输入代码中的信息,在主函数中输出第一个信息。
create开头部分
scanf("%s %d %s %d",p-data.name,p-data.age,p-data.sex,p-data.num);
这里p还没有分配内存。
所以野指针越界访问导致停止工作了。
你可以试试这样
struct node*creat()
{
struct node *head,*tail,*p;
head=tail=NULL;
do
{
p=(struct node *)malloc(sizeof(struct node));
p-next=NULL;
if(head==NULL)
head=tail=p;
else
{
tail-next=p;
tail=p;
}
printf(" 姓名1 年龄 性别 学号\n");
scanf("%s %d %s %d",p-data.name,p-data.age,p-data.sex,p-data.num);
}while(p-data.num!=0);
return (head);
}
不过 可以预见的是,最后会多一个节点出来。就是p-data.num=0那个。
最好再想办法删除
相关问答
Q1: c语言编写学生管理系统
#include stdio.h
#include io.h
#include stdlib.h
#include string.h
#define MAX 200
struct student
{
char no[10]; // 学号
char name[50]; // 姓名
int sum; // 次数
float score; // 分数
};
struct data
{
int count; // 当前学生数组中学生学生管理系统c语言主函数的个数
struct student stu[MAX]; // 学生数组
} dd;
// 显示主菜单
void menu()
{
system("cls");//清屏
printf("\n");
printf("\t\t\t********************************\n");
printf("\t\t\t* *\n");
printf("\t\t\t* 健身跑学分管理系统 *\n");
printf("\t\t\t* *\n");
printf("\t\t\t* [0] 退出 *\n");
printf("\t\t\t* [1] 查看所有学生信息 *\n");
printf("\t\t\t* [2] 输入学生记录 *\n");
printf("\t\t\t* [3] 删除学生记录 *\n");
printf("\t\t\t* [4] 编辑学生记录 *\n");
printf("\t\t\t* [5] 查询(学号) *\n");
printf("\t\t\t* [6] 查询(姓名) *\n");
printf("\t\t\t* [7] 排序(学号) *\n");
printf("\t\t\t* [8] 跑步签到 *\n");
printf("\t\t\t* *\n");
printf("\t\t\t********************************\n");
}
// 等待用户按回车后回到主菜单
void to_menu()
{
char c1,c2;
printf("\n\n\n按回车键返回主菜单...");
scanf("%c%c",c1,c2);//第一个字符吸收上次的确认回车键
menu();
}
// 查看所有学生信息
void view_data()
{
int i;
printf("学号\t姓名\t次数\t学分");
printf("\n-------------------------------------------------------------------\n");
for(i=0;idd.count;i++)
printf("%s\t%s\t%d\t%-7.1f\n",dd.stu[i].no,dd.stu[i].name,dd.stu[i].sum,dd.stu[i].score);
}
// 将数据从结构体数组保存到文件中
void save_data()
{
FILE *fp;//文件指针
int i,k;
k=dd.count;
fp=fopen("dada.txt","w");//文件存储位置学生管理系统c语言主函数:当前文件夹
fwrite(k,sizeof(int),1,fp);
for(i=0;ik;i++)
fwrite(dd.stu[i],sizeof(struct student),1,fp);
fclose(fp);
}
// 输入学生记录
void add_data()
{
struct student st;
int b;
int k;
while(1)
{
printf("\n请输入学生信息:");
printf("\n学号\t姓名");
printf("\n---------------------------------------------------------------\n");
scanf("%s%s",st.no,st.name);
k = dd.count;
strcpy(dd.stu[k].no,st.no);
strcpy(dd.stu[k].name,st.name);
dd.stu[k].sum=0;
dd.stu[k].score=0;
dd.count++;
printf("\n\n继续添加学生信息[1-yes 0-no]:");
scanf("%d",b);
if(b==0) break;
}
save_data();
}
// 将数据从文件读到结构体数组中
void read_data()
{
FILE *fp;
int i,k;
struct student st;
k=0;
if(access("dada.txt",0)==-1) // 如果文件不存在
{
fp=fopen("dada.txt","w");
fwrite(k,sizeof(int),1,fp);
fclose(fp);
}
fp=fopen("dada.txt","r");
fread(k,sizeof(int),1,fp);
dd.count=k;
for(i=0;ik;i++)
{
fread(st,sizeof(struct student),1,fp);
strcpy(dd.stu[i].no,st.no);
strcpy(dd.stu[i].name,st.name);
dd.stu[i].sum=st.sum;
dd.stu[i].score=st.score;
}
fclose(fp);
}
// 删除学生记录
void delete_data()
{
int i,k;
char no[10];
printf("\n请输入要删除学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;idd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(学号-%s)!",no);
}
else
{
dd.stu[k].sum=0;
dd.stu[k].score=0;
save_data();
printf("\n\n删除学生(学号-%s)记录成功!",no);
}
}
// 编辑学生记录
void edit_data()
{
int i,k;
char no[10],name[50];
printf("\n请输入要编辑学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;idd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(学号-%s)!",no);
}
else
{
printf("\n请输入学生数据:");
printf("\n姓名");
printf("\n--------------------------------------------------------------------\n");
scanf("%s",name);
strcpy(dd.stu[k].name,name);
save_data();
printf("\n\n编辑学生记录(学号-%s)成功!",no);
}
}
// 查询(学号)
void query_data_no()
{
int i,k;
char no[10];
printf("\n请输入要查询学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;idd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
if(k==-1)
{
printf("\n\n学号\t姓名\t次数\t学分");
printf("\n-----------------------------------------------------------------\n");
}
k=i;
printf("%s\t%s\t%d\t%-7.1f\n",dd.stu[i].no,dd.stu[i].name,dd.stu[i].sum,dd.stu[i].score);
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(学号-%s)!",no);
}
}
// 查询(姓名)
void query_data_name()
{
int i,k;
char name[10];
printf("\n请输入要查询学生的姓名:");
scanf("%s",name);
k=-1;
for(i=0;idd.count;i++)
{
if(strcmp(dd.stu[i].name,name)==0)
{
if(k==-1)
{
printf("\n\n学号\t姓名\t次数\t学分");
printf("\n-----------------------------------------------------------------\n");
}
k=i;
printf("%s\t%s\t%d\t%-7.1f\n",dd.stu[i].no,dd.stu[i].name,dd.stu[i].sum,dd.stu[i].score);
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(姓名-%s)!",name);
}
}
// 排序(学号)
void sort_data_no()
{
int i,k;
struct student tmp;
k=dd.count-1;
while(k0)
{
for(i=0;ik;i++)
{
if(strcmp(dd.stu[i].no,dd.stu[i+1].no)0)//最大的放末尾
{
strcpy(tmp.no,dd.stu[i].no);
strcpy(tmp.name,dd.stu[i].name);
tmp.sum=dd.stu[i].sum;
tmp.score=dd.stu[i].score;
strcpy(dd.stu[i].no,dd.stu[i+1].no);
strcpy(dd.stu[i].name,dd.stu[i+1].name);
dd.stu[i].sum=dd.stu[i+1].sum;
dd.stu[i].score=dd.stu[i+1].score;
strcpy(dd.stu[i+1].no,tmp.no);
strcpy(dd.stu[i+1].name,tmp.name);
dd.stu[i+1].sum=tmp.sum;
dd.stu[i+1].score=tmp.score;
}
}
k--;
}
save_data();
printf("\n\n排序成功!");
}
// 跑步签到
void sign()
{
int i,k;
char no[10];
float tmp;
printf("\n请输入要签到学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;idd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(学号-%s)!",no);
}
else
{
dd.stu[k].sum++;
tmp=(float)(dd.stu[k].sum/20*0.5);
if(tmp2) tmp=2;
dd.stu[k].score=tmp;
save_data();
printf("\n\n签到(学号-%s)成功!",no);
}
}
// 主函数
main()
{
int fun;
read_data();
menu();
while(1)
{
printf("请输入功能号[0-8]:",fun);
scanf("%d",fun);
switch(fun)
{
case 0: break; // 退出
case 1: view_data();break; // 查看所有学生信息
case 2: add_data(); break; // 输入学生记录
case 3: delete_data();break; // 删除学生记录
case 4:edit_data();break; // 编辑学生记录
case 5: query_data_no();break; // 查询(学号)
case 6:query_data_name();break; // 查询(姓名)
case 7:sort_data_no(); break; // 排序(学号)
case 8:sign();break; // 跑步签到
}
if(fun==0) break;
to_menu();
}
}
Q2: 用C语言编写学生信息管理程序(给出五个主要函数就OK啦!)
#includestdio.h
int main()
{
int test[]=;
int i,n;
printf("请输入一个数:");
scanf("%d",n);
for(i=0;isizeof(test);i++)
if(n==test[i])
printf("该数在数组中第%d位",i);
if(i==sizeof(test))
printf("数组中没有输入的数");
return 0;
}
Q3: 用C语言编写一个学生管理系统。
概述
单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标。
运行结果如下:
输入数据:
根据总成绩排序:
根据学号删除学生信息:
贴上代码(有点多)
#include stdio.h
#include stdlib.h //exit函数头文件
#include string.h //字符串相关操作头文件
#define MAX_STUDENT 30 //最大学生数
//函数声明,本程序共10个子函数,每个函数对应一个操作
void student_scanf(int n);
void student_printf(int n);
int student_find_name(int n);
int student_find_num(int n);
void student_sort_num(int n);
void student_sort_sum(int n);
int student_alter_num(int n);
int student_alter_name(int n);
int student_delete_num(int n);
int student_delete_name(int n);
//全局数组变量,用于存储学生信息
char names[MAX_STUDENT][50];
int math[MAX_STUDENT];
int english[MAX_STUDENT];
int computer[MAX_STUDENT];
int sum[MAX_STUDENT];
int num[MAX_STUDENT];
//以下变量用于学生信息数组排序,作为临时数组
int temp_num[MAX_STUDENT];
char temp_names[MAX_STUDENT][50];
int temp_math[MAX_STUDENT];
int temp_english[MAX_STUDENT];
int temp_computer[MAX_STUDENT];
int temp_sum[MAX_STUDENT];
//sort数组存储排好序的学号或姓名下标
int sort[MAX_STUDENT];
//循环全局变量
int i, j;
//main主函数
int main(void)
{
int choice,n;
while (1)
{
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("[8] 按姓名修改某个学生信息\n");
printf("[9] 按学号删除某个学生信息\n");
printf("[10] 按姓名删除某个学生信息\n");
printf("[0] 退出程序\n");
printf("请输入您的选择(0 - 9):");
scanf("%d",choice);
printf("**************************************)\n");
switch (choice)
{
case 1://录入;
printf("请输入录入的学生信息数: ");
scanf("%d",n);
student_scanf(n);
break;
case 2://输出;
student_printf(n);
break;
case 3://根据学号查找
student_find_num(n);
break;
case 4://根据姓名查找
student_find_name(n);
break;
case 5://按学号排序
student_sort_num(n);
break;
case 6://按姓名排序
student_sort_sum(n);
break;
case 7://按学号修改
student_alter_num(n);
break;
case 8://按姓名修改
student_alter_name(n);
break;
case 9://按学号删除
student_delete_num(n);
n--;
break;
case 10://按姓名删除
student_delete_name(n);
n--;
break;
case 0://退出程序
printf("退出程序\n");
printf("程序结束,谢谢使用!\n");
exit(0);
default:
printf("您输入的菜单有误。请重新输入!\n");
}
}
return 0;
}
//1.输入信息
void student_scanf(int n)
{
for (i = 0; in; ++i)
{
printf("\n请输入第%d个学生的信息:\n", i + 1);
printf("\n学号:");
scanf("%d", num[i]);
printf("\n姓名:");
scanf("%s", names[i]);
printf("\n数学成绩:");
scanf("%d", math[i]);
printf("\n英语成绩:");
scanf("%d", english[i]);
printf("\n计算机成绩:");
scanf("%d", computer[i]);
//计算总成绩
sum[i] = math[i] + english[i] + computer[i];
}
}
//2.打印信息
void student_printf(int n)
{
printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
printf("----------------------------------------------------------\n");
for (i = 0; in; ++i)
{
printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[i], names[i], math[i], english[i], computer[i], sum[i]);
}
printf("-------------------------------------------------------\n");
}
//3.按学号查找
int student_find_num(int n)
{
int nums;
int result;
printf("请输入待查找的学生学号:");
scanf("%d",nums);
result= -1;
for (i = 0; in; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else
{
//先打印表头
printf("\n学号\t\t姓名\t\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
//再打印数据
printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);
printf("打印出查找结果!\n");
}
return 1;
}
//4.用姓名查找成绩
int student_find_name(int n)
{
char name[200];
int result;
printf("请输入待查找的学生姓名:");
scanf("%s", name);
result = -1;
for (i = 0; in; ++i)
{
if (strcmp(name, names[i]) == 0)
{
result = i;
break;
}
}
if (result == -1)
{//未找到结果
printf("没有该学生信息!\n");
return 0;
}
else//找到结果
{
printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);
printf("已完成查找!\n");
}
return 1;
}
//5.按学号排序
void student_sort_num(int n)
{
int min,max;
for(i=0; in; ++i) //复制临时数组
{
temp_num[i] = num[i];
}
max = 0; //查找学号最大值,将其下标存至sort数组的最后一个值中
for(j=1; jn; j++)
{
if(temp_num[max]temp_num[j])
max = j;
}
sort[n-1] = max; //sort数组的最后一个数
for(i=0; in-1; ++i)
{
min = i; //查找学号最小值
for(j=0; jn; ++j)
{
if(temp_num[min]temp_num[j])
min = j;
}
//sort数组记录排序的学生信息的下标
sort[i] = min;
temp_num[min] = temp_num[max]; //利用临时数组将查找过的学生信息的学号设为最大值,排除查找干扰
}
for(i=0; in; ++i) //再复制一次临时数组
{
temp_num[i] = num[i];
strcpy(temp_names[i],names[i]);
temp_math[i] = math[i];
temp_english[i] = english[i];
temp_computer[i] = computer[i];
temp_sum[i] = sum[i];
}
for(i=0; in; i++) //按照下标对原数组进行修改
{
num[i] = temp_num[sort[i]];
strcpy(names[i],temp_names[sort[i]]);
math[i] = temp_math[sort[i]];
english[i] = temp_english[sort[i]];
computer[i] = temp_computer[sort[i]];
sum[i] = temp_sum[sort[i]];
}
printf("排序完毕,请按菜单键2查看排序结果!\n");
return ;
}
//6.按总成绩排序
void student_sort_sum(int n)
{
int min,max;
for(i=0; in; ++i) //复制临时数组
{
temp_sum[i] = sum[i];
}
max = 0; //查找总成绩最大值,将其下标存至sort数组的最后一个值中
for(j=1; jn; j++)
{
if(temp_sum[max]temp_sum[j])
max = j;
}
sort[n-1] = max; //sort数组的最后一个数
for(i=0; in-1; ++i)
{
min = i; //查找总成绩最小值
for(j=0; jn; ++j)
{
if(temp_sum[min]temp_sum[j])
min = j;
}
//sort数组记录排序的学生信息的下标
sort[i] = min;
temp_sum[min] = temp_sum[max]; //利用临时数组将查找过的学生信息的总成绩设为最大值,排除查找干扰
}
for(i=0; in; ++i) //再复制一次临时数组
{
temp_num[i] = num[i];
strcpy(temp_names[i],names[i]);
temp_math[i] = math[i];
temp_english[i] = english[i];
temp_computer[i] = computer[i];
temp_sum[i] = sum[i];
}
for(i=0; in; i++) //按照下标对原数组进行修改
{
num[i] = temp_num[sort[i]];
strcpy(names[i],temp_names[sort[i]]);
math[i] = temp_math[sort[i]];
english[i] = temp_english[sort[i]];
computer[i] = temp_computer[sort[i]];
sum[i] = temp_sum[sort[i]];
}
printf("排序完毕,请按菜单键2查看排序结果!\n");
return ;
}
//7.按学号修改学生信息
int student_alter_num(int n)
{
int nums;
int result;
printf("请输入待修改的学生学号:");
scanf("%d",nums);
result= -1;
for (i = 0; in; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //修改信息值
{
printf("请重新输入该学生信息:\n");
printf("学号:\n");
scanf("%d",num[result]);
printf("姓名:\n");
scanf("%s",names[result]);
printf("数学成绩:\n");
scanf("%d",math[result]);
printf("英语成绩:\n");
scanf("%d",english[result]);
printf("计算机成绩:\n");
scanf("%d",computer[result]);
sum[result] = math[result] + english[result] + computer[result];
}
return 1;
}
//8.按姓名修改学生信息
int student_alter_name(int n)
{
char name[50];
int result;
printf("请输入待修改的学生姓名:");
scanf("%s",name);
result= -1;
for (i = 0; in; ++i)
{
if (strcmp(name,names[i])==0)
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //修改信息值
{
printf("请重新输入该学生信息:\n");
printf("学号:\n");
scanf("%d",num[result]);
printf("姓名:\n");
scanf("%s",names[result]);
printf("数学成绩:\n");
scanf("%d",math[result]);
printf("英语成绩:\n");
scanf("%d",english[result]);
printf("计算机成绩:\n");
scanf("%d",computer[result]);
sum[result] = math[result] + english[result] + computer[result];
}
return 1;
}
//9.按学号删除学生信息
int student_delete_num(int n)
{
int nums;
int result;
printf("请输入待删除的学生学号:");
scanf("%d",nums);
result= -1;
for (i = 0; in; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //删除当前学生信息即为将数组从result的位置依次前挪一个位置
{
for(i=result; in-1; ++i) //最后在main函数中,要将n的值减1
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
computer[i] = computer[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}
//10.按姓名删除学生信息
int student_delete_name(int n)
{
char name[50];
int result;
printf("请输入待删除的学生姓名:");
scanf("%s",name);
result= -1;
for (i = 0; in; ++i)
{
if (strcmp(name,names[i])==0)
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //删除当前学生信息即为将数组从result的位置依次前挪一个位置
{
for(i=result; in-1; ++i) //最后在main函数中,要将n的值减1
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
computer[i] = computer[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}
Q4: 用C语言编写学生信息管理程序(给出五个主要函数就OK啦!)
#includestdio.h
#define M 2/*容量*/
struct _674
{
long num;
char name[20];
char add[20];
long tel;
}A[M],B[1];
void input()
{
int i=1;
char a='y';
while(a=='y')
{
if(i=M)
{
printf("请输入学生管理系统c语言主函数你要输入的学生学号\n");
scanf("%d",A[i].num);
for(int j=1;ji;j++)
if(A[j].num==A[i].num)
{
printf("学生管理系统c语言主函数你输入的学号已存在\n");continue;
}
printf("请输入你要输入的学生姓名\n");
scanf("%s",A[i].name);
printf("请输入你要输入的学生地址\n");
scanf("%s",A[i].add);
printf("请输入你要输入的学生电话\n");
scanf("%d",A[i].tel);
i++;
printf("退出请任意输入,继续请输入y\n");
getchar();
scanf("%c",a);
}
else
{
printf("你的空间已满\n");break;
}
}
}
void output()
{
for(int i=1;i=M;i++)
printf("学号:%d姓名:%s地址:%s电话:%d\n",A[i].num,A[i].name,A[i].add,A[i].tel);
}
void seek()
{
int a,f=0;
printf("请输入你要查找学生的学号\n");
scanf("%d",a);
for(int i=1;i=M;i++)
if(a==A[i].num)
{
printf("学号:%d姓名:%s地址:%s电话:%d\n",A[i].num,A[i].name,A[i].add,A[i].tel),f=0;break;
}
else
f=1;
if(f==1)
printf("查无此人\n");
}
void del()
{
int a;
printf("请输入你要删除的学生学号\n");
scanf("%d",a);
for(int i=1;i=M;i++)
if(a==A[i].num)
{
for(;iM;i++)
A[i]=A[i+1];
}
}
void insert()
{
printf("请输入你要输入你要插入的学生学号\n");
scanf("%d",B[1].num);
for(int j=1;j=M;j++)
if(B[1].num==A[j].num)
{
printf("你要插入的学号已存在\n");break;
}
printf("请输入你要插入的学生姓名\n");
scanf("%s",B[1].name);
printf("请输入你要插入的学生地址\n");
scanf("%s",B[1].add);
printf("请输入你要插入的学生电话\n");
scanf("%d",B[1].tel);
}
void main()
{
input();
output();
seek();
del();
insert();
}
不好意思
自己也是刚学的
有不足之处还请谅解
很多地方还需要根据你的需要适当修改
最后希望我们能相互讨论学习共同进步
Q5: 学生信息管理系统c语言
#include"stdio.h"
#include"conio.h"
#include"string.h"
#include"stdlib.h"
void look(); /*声明查看函数*/
void save(); /*声明保存函数*/
void search_name(); /*声明按姓名查看函数*/
void search_number(); /*声明按学号查看函数*/
void order(); /*声明排序函数*/
void del(); /*声明删除函数*/
int openl(); /*声明打开函数*/
void welcome(); /*声明我的个人信息函数*/
void type(); /*声明输入函数*/
void see(); /*声明打开并查看文件函数*/
struct student /*定义学生信息的结构体类型*/
{
char num[15]; /*学号*/
char name[20]; /*姓名*/
char sex[4]; /*性别*/
int english; /*英语成绩*/
int math; /*数学成绩*/
int chinese; /*语文成绩*/
float aver; /*平均成绩*/
float sum; /*总成绩*/
}stu[100];
int n; /*声明一个全局变量*/
void main() /*主函数即用户的操作界面*/
{
system("color 1E"); /*设计文本颜色*/
int b,flag=0; /*声明局部变量*/
while(1) /*循环输出以下信息*/
{
printf("\n\t\t\t欢迎来到学生成绩管理系统!\n");
printf("\n\t\t\t\t ###制作\n");
printf("\t\t\t-------------------------------\n");
printf("\t\t\t1.键入学生的信息\n\n"); /*键入学生的信息*/
printf("\t\t\t2.查看录入的学生信息\n\n"); /*查看录入的学生信息*/
printf("\t\t\t3.按姓名查看学生的信息\n\n"); /*按姓名查看学生的信息*/
printf("\t\t\t4.按学号查看学生的信息\n\n"); /*按学号查看学生的信息*/
printf("\t\t\t5.按平均成绩排序\n\n"); /*排序*/
printf("\t\t\t6.删除学生信息\n\n"); /*删除学生信息*/
printf("\t\t\t7.保存学生信息\n\n"); /*保存*/
printf("\t\t\t8.打开文件\n\n"); /*打开文件*/
printf("\t\t\t9.我的个人信息\n\n"); /*我的个人信息*/
printf("\t\t\t0.退出\n\n"); /*退出*/
printf("\t\t\t请输入你的选择:");
scanf("%d",b);
switch(b)
{
case 1:type();break; /*调用键入学生信息函数*/
case 2:look();break; /*调用查看函数*/
case 3:search_name();break; /*调用姓名查看函数*/
case 4:search_number();break; /*调用学号查看函数*/
case 5:order();break; /*调用排序函数*/
case 6:del();break;/*调用删除函数*/
case 7:save();break;/*调用保存函数*/
case 8:see();break;/*调用打开文件函数*/
case 9:welcome();break;/*调用我的个人信息函数*/
case 0:flag=1;break;/*退出SWITCH语句*/
default :printf("错误!");
}
if(flag) break; /*如果选择0就退出循环*/
}
}
void welcome() /*我的个人信息函数*/
{
system("CLS");
printf("\n\n\t\t------------个人信息------------"); /*在屏幕上输出一下信息*/
printf("\n\n\n\n\t\t姓名:###");
printf("\t\t\tSex:#\n");
printf("\t\t年龄:#\n");
printf("\n\t\t\t--------学习经历--------\n\n\n");
printf("\t\t小学:######\n\n");
printf("\t\t初中:#####\n\n");
printf("\t\tS高中:######\n\n");
printf("\t\t大学:######\n\n");
printf("\n\n\t\t按任意键返回欢迎屏幕!");
getch(); /*按任意键返回主函数*/
}
void type() /*定义键入学生信息函数*/
{
system("CLS");
int i; /*定义局部变量*/
printf("\t\t输出你想输入的学生信息个数:");
scanf("%d",n);
for(i=0;in;i++) /*输入每个学生的信息*/
{
printf("\n\t\t\t----------------\n");
printf("\t\t\t学号:");
scanf("%s",stu[i].num); /*输入学号*/
printf("\t\t\t姓名:");
scanf("%s",stu[i].name); /*输入姓名*/
printf("\t\t\t性别:");
scanf("%S",stu[i].sex); /*输入性别*/
printf("\t\t\t英语:");
scanf("%d",stu[i].english); /*输入英语成绩*/
printf("\t\t\t数学:");
scanf("%d",stu[i].math); /*输入数学成绩*/
printf("\t\t\t语文:");
scanf("%d",stu[i].chinese); /*输入语文成绩*/
stu[i].aver=((float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese)/3;/*计算平均成绩*/
stu[i].sum=(float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese;/*计算总成绩*/
printf("\t\t\t平均成绩=%4.1f\n",stu[i].aver); /*输出平均成绩*/
printf("\t\t\t总成绩=%4.1f\n",stu[i].sum); /*输出总成绩*/
}
printf("\n\n\t\t\t按任意键返回菜单!!");
getch();
save();
}
void save() /*建立保存文件函数*/
{
system("CLS");
FILE *fp; /*定义文件型指针*/
int i;
if((fp=fopen("student.txt","wb"))==NULL) /*打开输出文件*/
{
printf("不能打开文件!\n");
return; /*终止程序*/
}
for(i=0;in;i++) /*向student文件中写入信息*/
if(fwrite(stu[i],sizeof(struct student),1,fp)!=1)
printf("文件写入错误\n");
fclose(fp); /*关闭文件*/
printf("\n\n\n\n\t\t\t学生信息保存成功!\n");
printf("\n\n\n\n\t\t\t按任意键返回菜单!!");
getch();
}
void look() /*定义查看函数*/
{
system("CLS");
int i;
//n=openl(); /*调用openl函数*/
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;in;i++) /*输出所有的学生信息*/
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();
}
void search_name() /*按姓名查看函数*/
{
system("CLS");
int i;
char name[20]; /*声明字符数组*/
printf("\t\t\t请输入学生姓名:\n");
scanf("%s",name);
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;in;i++)
if(strcmp(stu[i].name,name)==0) /*将输入的姓名与结构体中的姓名进行比较*/
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf("\n\n\n\t\t\t按任意键返回菜单");
}
getch();
}
void search_number() /*定义按学号查看函数*/
{
system("CLS");
int i;
char number[15]; /*声明字符数组*/
printf("\t\t\t请输入学号:\n");
scanf("%s",number);
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;in;i++)
if(strcmp(stu[i].num,number)==0) /*将输入的学号与结构体中的学号进行比较*/
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();
}
void order() /*定义排序函数*/
{
system("CLS");
int i,j;
char a;
struct student temp; /*声明结构体变量*/
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;in;i++) /*对数据进行排序*/
{
for(j=i+1;jn;j++)
if(stu[i].sumstu[j].sum)
{
temp=stu[i];
stu[i]= stu[j];
stu[j]=temp;
}
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
getch();
printf("是否保存?(y or n)");
getchar();
scanf("%c",a);
if(a=='y') /*是否保存排序后的文件*/
save();
else
printf("退出");
getch();
}
void del() /*定义删除学生信息函数*/
{
int i;
char a;
char name[20];
system("CLS");
printf("\t\t\t输入学生名字:\n");
scanf("%s",name);
system("CLS");
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;in;i++)
if(strcmp(stu[i].name,name)==0)
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
getch();
printf("真的删除?(y or n)");
getchar();
scanf("%c",a);
if(a=='y') /*是否删除该信息*/
{
for(;in;i++)
stu[i]=stu[i+1];
n=n-1;
printf("你已经删除信息");
}
else
printf("退出");
getch();
}
save();
}
int openl() /*定义打开文件函数*/
{
system("CLS");
int i;
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL)
{
printf("Cannot open file.\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fread(stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}
void see() /*打开并查看文件*/
{
system("CLS");
int i;
n=openl();
printf("文件打开成功!\n");
printf("按任意键查看!\n");
getch();
printf("\t学号\t姓名\t性别\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;in;i++) /*输出所有的学生信息*/
{
printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();
请采纳答案,支持我一下。
学生管理系统c语言主函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言做学生管理系统、学生管理系统c语言主函数的信息别忘了在本站进行查找喔。








