永发信息网

实现简单的学生管理系统

答案:2  悬赏:10  手机版
解决时间 2021-02-09 01:33
  • 提问者网友:饥饿走向夜
  • 2021-02-08 06:51
a. 学生成绩信息以记录的形式存储在文件中;
b. 每个记录包含的学生信息有姓名、学号、专业、班级和三门功课的成绩;
c. 记录的插入:允许用户添加新的记录,程序可以判断出不合理的输入并给出提示信息和相应的处理(如学号不能为空值);
d. 记录的修改:允许用户对特定的记录进行修改,程序可以判断出不合理的输入并给出提示信息和相应的处理;
e. 记录的删除:允许用户删除记录。
最佳答案
  • 五星知识达人网友:长青诗
  • 2021-02-08 07:45
该不会是c语言的课程设计吧,现在的教学还真是极端类似,当时学c我的课程设计也是这种,题目文字表述几乎不变,不过同学如果你是认真想学到c的话,你还是自己认真投入去编写吧,
这个题目要编写系统这几乎是包含C语言最简单也是最基础的几条命令,如果学了c,连最基础的都写不出来。那也就白学了

下面是一个当时没完成的半成品,刚好电脑里还保存这个文件,我不是专业学C的,下面的程序仅供你参考

#define N 2 //N为输入的学生数量
#include<stdio.h>

struct student
{
int num[10];
char sex[2];
char name[15];
char cla[12];
int score[3];
}stu[N+N+1];

void input(struct student stu[])
{
int i,j;
for(i=0;i<N;i++)
{
printf("\n请输入第%d个同学的信息:\n",i+1);
printf("\n学号:");
scanf("%d",stu[i].num);
printf("\n性别,男(女)性用b(g)表示:");
scanf("%s",stu[i].sex);
printf("\n姓名:");
scanf("%s",stu[i].name);
printf("\n班级:");
scanf("%s",stu[i].cla);
for(j=0;j<3;j++)
{
printf("\nscore %d:",j+1);
scanf("%d",&stu[i].score[j]);
}
printf("\n该学生输入完成!\n");
}
printf("\n 全部输入结束!\n");
}

void main()
{
void pp();
void input();
void xg();
void print();
void cl();
pp();
printf("\n");
printf("\n 操作完成,关闭窗口退出!\n\n");
}

void print(struct student stu[])
{
int i,j;
printf("\n学号 姓名 性别 班级 score1 score2 score3\n");
for(i=0;i<N;i++)
{
printf("%-15d%-15s%-10s%-10s",*stu[i].num,stu[i].name,stu[i].sex,stu[i].cla);
for(j=0;j<3;j++)
printf("%-9d",stu[i].score[j]);
printf("\n");
}
}

void pp()
{
int s ;
printf(" ★小型学生信息管理系统★\n");
do
{
printf("\n 主菜单\n");
printf("\n 1.数据输入 2.数据修改 3.数据处理 4.数据输出 5.退出\n");
printf("\n请输入您要执行的命令,用命令前的数字表示:");
scanf("%d",&s);
switch(s)
{
case 1 : input(stu);break;
case 2 : xg(stu);break;
case 3 : cl();break;
case 4 : print(stu);break;
}
}
while(s!=5);
}

void xg(struct student stu[])
{
int n,i,j,e;char f;
printf("\n请输入要修改的学生学号:");
scanf("%d",&n);getchar();
for(i=0;i<N;i++)


{
printf("\n修改过后原有数据将消失,确定?(y/n)");
scanf("%c",&f);
if(f=='y')
{
for(i=0;i<N;i++)
{
if(n==*stu[i].num)
{
do
{
printf("\n 【数据修改】\n");
printf("\n1.学号 2.姓名 3.性别 4.班级 5.成绩 6.退出修改\n");
printf("\n重新选择输入该学生数据,用命令前的数字表示:");
scanf("%d",&e);
switch(e)
{
case 1 : printf("\n学号:");scanf("%d",stu[i].num);break;
case 2 : printf("\n姓名:");scanf("%s",stu[i].name);break;
case 3 : printf("\n性别,男(女)性用b(g)表示:");scanf("%s",stu[i].sex);break;
case 4 : printf("\n班级:");scanf("%s",stu[i].cla);break;
case 5 : for(j=0;j<3;j++)
{
printf("\nscore %d:",j+1);
scanf("%d",&stu[i].score[j]);
}break;
}
}
while(e!=6);
printf(" \n修改完成!\n");
}
}
}
printf("\n修改结束!\n");
}
}

void cl(struct sudent stu[])
{
void px();
void cx();
void tj();
int q;
do
{
printf("\n 【数据处理】\n");
printf("\n 1.排序 2.查询 3.统计 4.返回上层\n");
printf("\n请输入您要执行的命令,用命令前的数字表示:");
scanf("%d",&q);
switch(q)
{
case 1 : px(stu);break;
case 2 : cx(stu);break;
case 3 : tj(stu);break;
}
}
while(q!=4);
}

void px()
{
int l,k,i,j;
for(l=0;l<N;l++)
stu[N+l]=stu[l];
for(l=0;l<N-1;l++)
for(k=0;k<N-l-1;k++)
if(*stu[k+N].num>*stu[N+k+1].num)
{
stu[N+N]=stu[N+k];stu[N+k]=stu[N+1+k];stu[N+1+k]=stu[N+N];
}
printf("\n学号 姓名 性别 班级 score1 score2 score3\n");
for(i=N;i<N+N;i++)
{
printf("%-15d%-15s%-10s%-10s",*stu[i].num,stu[i].name,stu[i].sex,stu[i].cla);
for(j=0;j<3;j++)
printf("%-9d",stu[i].score[j]);
printf("\n");
}
printf("\n 排序完成!\n");
}

void cx()
{
int n,i,j;
printf("\n请输入您要查询的学生学号:");
scanf("%d",&n);
for(i=0;i<N;i++)
if(n!=*stu[i].num)
{
if(i==N-1)
printf("\n查无此学号!");
}
else
{
printf("\n学号 姓名 性别 班级 score1 score2 score3\n");
printf("%-15d%-15s%-10s%-10s",*stu[i].num,stu[i].name,stu[i].sex,stu[i].cla);
for(j=0;j<3;j++)
printf("%-9d",stu[i].score[j]);
printf("\n");
}
}

void tj()
{
void pjf();
void loss();
int t;
do
{
printf("\n 【统计】\n");
printf("\n1.输出各学生的平均分 2.存在不及格科目的学生 3.返回上层\n");
printf("\n请输入您要执行的命令,用命令前的数字表示:");
scanf("%d",&t);
switch(t)
{
case 1 : pjf();break;
case 2 : loss();break;
}
}
while(t!=3);
}

void pjf()
{

}

void loss()
{

}
全部回答
  • 1楼网友:duile
  • 2021-02-08 08:31
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #define MAX_NUM 45 struct studenter { int ID; char Name[10]; int Age; char Sex[2]; int Birthday; char Adress[15]; char TelNum[12]; char Email[10]; }; typedef struct studenter STUDENT; void input(STUDENT stu[],int Max,int cn); int findStudentID(STUDENT stu[],int findID,int Max); void DisplayInfor(STUDENT stu[],int Max); void DispMainMenu(); void DispQueryMenu(); char choice(); int InforInput(STUDENT stu[],int cn); void QueryInfor(STUDENT stu[],int Max); void EditInfor(STUDENT stu[],int Max); void DispMainMenu() { printf("**************学生信息管理系统1.0**************\n"); printf("\t1--学生信息录入 \t2--学生信息修改\n"); printf("\t3--学生信息查询 \t4--学生信息删除\n"); printf("\t5--学生信息排序 \t0--退出\n"); printf("************************************************\n"); printf("请选择(0--5):"); } void DispQueryMenu() { printf("*****************请选择查询方式*****************\n"); printf("\t1--按学号查询; \t2--按姓名查询\n"); printf("************************************************\n"); printf("请选择(1--2):"); } char choice() { char select; select=getche(); getch(); return (select); } void DisplayInfor(STUDENT stu[],int Max) { int i; printf("\n 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n"); for(i=0;i<Max;i++) printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email); printf("\n"); } void input(STUDENT stu[],int Max,int cn) { int i; for(i=cn;i<Max+cn;i++) { printf("\n请输入第%d个学生的学号 (8个字符以内):",i+1); scanf("%d",&stu[i].ID); printf("\n\t\t姓名(10个字符以内):"); scanf("%s",stu[i].Name); printf("\n\t\t\t 年龄:"); scanf("%d",&stu[i].Age); printf("\n\t\t\t性别(m或w):"); scanf("%s",&stu[i].Sex); printf("\n\t\t 出生年月(8位):"); scanf("%d",&stu[i].Birthday); printf("\n\t\t\t 地址:"); scanf("%s",&stu[i].Adress); printf("\n\t\t\t 电话:"); scanf("%s",&stu[i].TelNum); printf("\n\t\t\t E-mail:"); scanf("%s",&stu[i].Email); } printf("\n您的输入信息是:\n"); DisplayInfor(stu,Max+cn); } int findStudentID(STUDENT stu[],int findID,int Max) { int i; for(i=0;i<Max;i++) { if(stu[i].ID==findID) break; } if(i<Max) return i; else return -1; } int findStudentNAME(STUDENT stu[],char findNAME[10],int Max) { int i; for(i=0;i<Max;i++) { if(!strcmp(stu[i].Name,findNAME)) break; } if(i<Max) return i; else return -1; } int InforInput(STUDENT stu[],int cn) { int number; printf("\n请输入本次录入的学生人数: "); scanf("%d",&number); if(number>MAX_NUM) { printf("您输入的人数太多,大于%d人!\n",MAX_NUM); return (0); } input(stu,number,cn) ; return (number+cn); } void QueryInfor(STUDENT stu[],int Max) { char select; int i; int findID; char findNAME[10]; DispQueryMenu(); select=choice(); switch (select) { case '1': printf("\n按学号查询\n请输入学生的学号: "); scanf("%d",&findID); if ((i=findStudentID(stu,findID,Max))!=-1) { printf("查找结果如下:\n"); printf(" 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail"); printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email); } else printf("您输入的学号不存在!\n"); break; case '2': printf("\n按姓名查询\n请输入学生的姓名: "); scanf("%s",&findNAME); if ((i=findStudentNAME(stu,findNAME,Max))!=-1) { printf("查找结果如下:\n"); printf(" 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail"); printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email); } else printf("您输入的姓名不存在!\n"); break; default : printf("选择错误!\n"); } } void EditInfor(STUDENT stu[],int Max) { int i; int findID; printf("\n请输入学生的学号: "); scanf("%d",&findID); if ((i=findStudentID(stu,findID,Max))!=-1) { printf("姓 名: %s\n",stu[i].Name); printf("原信息:%8d %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email); printf("\n 请输入新的学号 (8个字符以内):",i+1); scanf("%d",&stu[i].ID); printf("\n\t\t姓名(10个字符以内):"); scanf("%s",stu[i].Name); printf("\n\t\t\t 年龄:"); scanf("%d",&stu[i].Age); printf("\n\t\t\t性别(m或w):"); scanf("%s",&stu[i].Sex); printf("\n\t\t 出生年月(8位):"); scanf("%d",&stu[i].Birthday); printf("\n\t\t\t 地址:"); scanf("%s",&stu[i].Adress); printf("\n\t\t\t 电话:"); scanf("%s",&stu[i].TelNum); printf("\n\t\t\t E-mail:"); scanf("%s",&stu[i].Email); } else printf("您输入的学号不存在!\n"); } DEL(STUDENT stu[],int Max,int i) { for(;i<Max;i++) { stu[i-1].ID=stu[i].ID; strcpy(stu[i-1].Name,stu[i].Name); stu[i-1].Age=stu[i].Age; strcpy(stu[i-1].Sex,stu[i].Sex); stu[i-1].Birthday=stu[i].Birthday; strcpy(stu[i-1].Adress,stu[i].Adress); strcpy(stu[i-1].TelNum,stu[i].TelNum); strcpy(stu[i-1].Email,stu[i].Email); } return(--Max); } DelInfor(STUDENT stu[],int Max) { int findID,i; char findNAME[10],select; printf("*****************请选择删除方式*****************\n"); printf("\t1--按学号删除; \t2--按姓名删除\n"); printf("************************************************\n"); printf("请选择(1--2):"); select=choice(); switch (select) { case '1': printf("\n按学号删除\n请输入学生的学号: "); scanf("%d",&findID); if ((i=findStudentID(stu,findID,Max))!=-1) DEL(stu,Max,i); else printf("您输入的学号不存在!\n"); break; case '2': printf("\n按姓名删除\n请输入学生的姓名: "); scanf("%s",&findNAME); if ((i=findStudentNAME(stu,findNAME,Max))!=-1) DEL(stu,Max,i); else printf("您输入的姓名不存在!\n"); break; default : printf("选择错误!\n"); } } SortInforMenu(STUDENT stu[],int Max) { char select; printf("*****************请选择排序方式*****************\n"); printf("\t1--按学号排序; \t2--按姓名排序\n"); printf("************************************************\n"); printf("请选择(1--2):"); select=choice(); if (select=='1'||select=='2') SortInfor(stu,Max,select); else printf("选择错误!\n"); } SortInfor(STUDENT stu[],int Max,char i) { STUDENT student; int j=0,k,l=0; if(i=='1') { for(k=0;j<Max;j++) for(;k<Max-j-1;k++) { if(stu[k].ID>stu[k+1].ID) { student.ID=stu[k+1].ID; strcpy(student.Name,stu[k+1].Name); student.Age=stu[k+1].Age; strcpy(student.Sex,stu[k+1].Sex); student.Birthday=stu[k+1].Birthday; strcpy(student.Adress,stu[k+1].Adress); strcpy(student.TelNum,stu[k+1].TelNum); strcpy(student.Email,stu[k+1].Email); stu[k+1].ID=stu[k].ID; strcpy(stu[k+1].Name,stu[k].Name); stu[k+1].Age=stu[k].Age; strcpy(stu[k+1].Sex,stu[k].Sex); stu[k+1].Birthday=stu[k].Birthday; strcpy(stu[k+1].Adress,stu[k].Adress); strcpy(stu[k+1].TelNum,stu[k].TelNum); strcpy(stu[k+1].Email,stu[k].Email); stu[k].ID=student.ID; strcpy(stu[k].Name,student.Name); stu[k].Age=student.Age; strcpy(stu[k].Sex,student.Sex); stu[k].Birthday=student.Birthday; strcpy(stu[k].Adress,student.Adress); strcpy(stu[k].TelNum,student.TelNum); strcpy(stu[k].Email,student.Email); } printf("\n 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n"); for(i=0;i<Max;i++) printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email); printf("\n"); } } else if(i=='2') { for(k=0;j<Max;j++) for(;k<Max-j-1;k++) { if(strcmp(stu[k].Name,stu[k+1].Name)>0) { student.ID=stu[k+1].ID; strcpy(student.Name,stu[k+1].Name); student.Age=stu[k+1].Age; strcpy(student.Sex,stu[k+1].Sex); student.Birthday=stu[k+1].Birthday; strcpy(student.Adress,stu[k+1].Adress); strcpy(student.TelNum,stu[k+1].TelNum); strcpy(student.Email,stu[k+1].Email); stu[k+1].ID=stu[k].ID; strcpy(stu[k+1].Name,stu[k].Name); stu[k+1].Age=stu[k].Age; strcpy(stu[k+1].Sex,stu[k].Sex); stu[k+1].Birthday=stu[k].Birthday; strcpy(stu[k+1].Adress,stu[k].Adress); strcpy(stu[k+1].TelNum,stu[k].TelNum); strcpy(stu[k+1].Email,stu[k].Email); stu[k].ID=student.ID; strcpy(stu[k].Name,student.Name); stu[k].Age=student.Age; strcpy(stu[k].Sex,student.Sex); stu[k].Birthday=student.Birthday; strcpy(stu[k].Adress,student.Adress); strcpy(stu[k].TelNum,student.TelNum); strcpy(stu[k].Email,student.Email); } } printf("\n 姓名 学号 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n"); for(;l<Max;l++) printf("%10s %8d %2d %2s %8d %15s %12s %10s",stu[l].Name,stu[l].ID,stu[l].Age,stu[l].Sex,stu[l].Birthday,stu[l].Adress,stu[l].TelNum,stu[l].Email); printf("\n"); } } Save(STUDENT stu[],int Max) { int i=0 ; FILE *fp; if((fp=fopen("stu.txt","w+"))==NULL) { printf("ERROR!"); exit(0); } for(;i<Max;i++) { fprintf(fp,"%d ",stu[i].ID); fprintf(fp,"%s ",stu[i].Name); fprintf(fp,"%d ",stu[i].Age); fprintf(fp,"%s ",stu[i].Sex); fprintf(fp,"%d ",stu[i].Birthday); fprintf(fp,"%s ",stu[i].Adress); fprintf(fp,"%s ",stu[i].TelNum); fprintf(fp,"%s ",stu[i].Email); } fclose(fp); printf("OK!"); } int main(int argc, char *argv[]) { char select; STUDENT stu[MAX_NUM]; int current_number=0; select=0; while(select!='0') { system("cls"); DispMainMenu(); select=choice(); switch(select) { case '0': printf("\n您选择的是退出测试!\n"); _beep(300,400); continue; case '1': printf("\n您选择的是信息录入!\n"); current_number=InforInput(stu,current_number); break; case '2': printf("\n您选择的是信息修改!\n"); EditInfor(stu,current_number); break; case '3': printf("\n您选择的是信息查询!\n"); QueryInfor(stu,current_number); break; case '4': printf("\n您选择的是删除信息!\n"); DelInfor(stu,current_number); break; case '5': printf("\n您选择的是排序信息!\n"); SortInforMenu(stu,current_number); break; default: printf("\n选择错误!请重新选择!\n"); } system("PAUSE"); } return (0); Save(stu,current_number); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯