本文目录一览:
C语言程序设计之学生选修课程管理系统。
#include stdio.h
#include stdlib.h
#include string.hstruct student
{
char name[60];
char ID[7];
int score;
};int dq(struct student st[]);
void xianshi();
void bc(struct student st[]);
void add();
void select();
void zz();
void chazhao();
void xhcz();
void xmcz();
void del();
void xmsc();
void xhsc();
void tj();
void px();
void bjg();
void xg();
void xhxg();
void xmxg();
void bca();
void fh();
struct student st[300]; //这个数组用来保存所有的学生信息 和文件里面的一致
int Number=0; //记录总的学生人数 也就是数组/文件里面的学生人数
void main()
{
int choose=0;
FILE *fp=NULL;
char yesorno;
if((fp=fopen("C://student.dat","rb"))==NULL)
{
printf("\n=========提示:文件不存在,是否要创建一个?(y/n)\n");
scanf("%c",yesorno);
if(yesorno=='y'||yesorno=='Y')
{
//这里仅为了建立文件
fp=fopen("C://student.dat","wb");
fclose(fp);
}
else
exit(0);
}
else
{
Number=dq(st); //要是文件只能够已经有数据 将数据初始化到数组中
}
system("cls");
while(true)
{
xianshi();
printf("\t\t====请选择:");
scanf("%d",choose);
system("cls");
switch(choose)
{
case 0: exit(0);
//退出
break;
case 1: add();
fh();//增加学生成绩
break;
case 2: select();
fh();//查看学生成绩
break;
case 3: chazhao();
fh();// 查找
break;
case 4: del();
fh();//删除
break;
case 5: tj();
fh();//统计
break;
case 6: px();
fh();//排序
break;
case 7: bjg();
fh();//输出不及格
break;
case 8: xg();
fh();//修改
break;
case 9:zz();
fh();//作者
break;
case 10:bca();
fh();//保存
break;
default:
break;
}
fflush(stdin);
getchar();
system("cls");
}
}
void bca()
{
printf("\t=====程序在运行时已自动保存.....\n");
}
void fh()
{
printf("\t===按Enter键返回主菜单\n");
}
void xg() //修改学生信息
{
int way=0;
printf("请选择修改查找方式\n");
printf("1 按姓名查找修改\n");
printf("2 按学号查找修改\n");
scanf("%d",way);
switch(way)
{
case 1: xmxg();
break;
case 2: xhxg();
break;
default: printf("输入有误,结束!\n");
break;
}
}
//按姓名修改
void xmxg()
{
FILE *fp=NULL;
char name[60];
int i=0;
int changeIndex=0;
int index=0;
printf("请输入要修改的学生姓名:");
scanf("%s",name);
for (i=0;iNumber;i++)
{
if (strcmp(name,st[i].name))
{
changeIndex=i; //保存要修改的人的下标
}
break;
}
printf("\t姓名\t学号\t成绩\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("学号:");
scanf("%s",st[changeIndex].ID);
printf("成绩:");
scanf("%d",st[changeIndex].score); //信息修改后重新更新文件里面的数据 以保持数据一致性
fp=fopen("C://student.dat","wb");
for (i=0;iNumber;i++)
{
fwrite(st[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
void xhxg()//按学号修改
{
FILE *fp=NULL;
char id[60];
int i=0;
int changeIndex=0;
int index=0;
printf("请输入要修改的学生学号:");
scanf("%s",id);
for (i=0;iNumber;i++)
{
if (strcmp(id,st[i].ID))
{
changeIndex=i; //保存要修改的人的下标
}
break;
}
printf("\t姓名\t学号\t成绩\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("学号:");
scanf("%s",st[changeIndex].ID);
printf("成绩:");
scanf("%d",st[changeIndex].score);
//信息修改后重新更新文件里面的数据 以保持数据一致性
fp=fopen("C://student.dat","wb");
for (i=0;iNumber;i++)
{
fwrite(st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("\t=======修改成功\n");
}void bjg() //输出不及格人数
{
int i=0;
printf("以下是不及格:\n");
printf("\t姓名\t学号\t成绩\n");
for (i=0;iNumber;i++)
{
if (st[i].score60)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void px()//排序
{
struct student temp;
int wantNUmber=0;
int i=0;
int j=0;
for(i=0;iNumber-1;i++)
{
for(j=i;jNumber-1;j++)
{
if(st[j].scorest[j+1].score)
{
temp=st[j];
st[j]=st[j+1];
st[j+1]=temp;
}
}
}
printf("你想输出前几名的成绩:");
scanf("%d",wantNUmber);
if (wantNUmberNumber)
{
wantNUmber=Number;
} printf("\t姓名\t学号\t成绩\n");
for(i=0;iwantNUmber;i++)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
void tj()//统计
{
int i=0;
double sum=0.0;
for(i=0;iNumber;i++)
{
sum+=st[i].score;
}
printf("全班总分为:%f\n",sum);
printf("平均分为:%f\n",sum/Number);
}
void del()//删除
{
int n=0;
printf("1 按姓名删除\n");
printf("2 按学号删除\n");
scanf("%d",n);
switch(n)
{
case 1: xmsc();
break;
case 2: xhsc();
break;
}
}
void xmsc()//按姓名删除
{
FILE *fp=NULL;
char name[60];
int i=0;
int j=0;
printf("请输入要删除的学生姓名:");
scanf("%s",name);
for(i=0;iNumber;i++)
{
if (strcmp(name,st[i].name)==0) //如果查找到就删除
{
for (j=i;jNumber-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
} //将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了
fp=fopen("C://student.dat","wb");
for (i=0;iNumber;i++)
{
fwrite(st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("删除成功;\n");
}
void xhsc()//按学号删除
{
FILE *fp=NULL;
char id[60];
int i=0;
int j=0;
printf("请输入要删除的学生学号:");
scanf("%s",id);
for(i=0;iNumber;i++)
{
if (strcmp(id,st[i].ID)==0) //如果查找到就删除
{
for (j=i;jNumber-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
}
//将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了
fp=fopen("C://student.dat","wb");
for (i=0;iNumber;i++)
{
fwrite(st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("删除成功;\n");
}
void chazhao()//查找学生
{
int n=0;
printf("1 按姓名查找\n");
printf("2 按学号查找\n");
scanf("%d",n);
switch(n)
{
case 1: xmcz();
break;
case 2: xhcz();
break;
default: printf("输入有误,结束!\n");
break;
}
}
void xhcz()//按学号查找
{
char id[7];
int i=0;
printf("请输入要查找学生学号:");
scanf("%s",id);
system("cls");
printf("\t姓名\t学号\t成绩\n");
for (i=0;iNumber;i++)
{
if (strcmp(id,st[i].ID)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void xmcz()//按姓名查找
{
char name[7];
int i=0;
printf("请输入要查找学生姓名:");
scanf("%s",name);
system("cls");
printf("\t姓名\t学号\t成绩\n");
for (i=0;iNumber;i++)
{
if (strcmp(name,st[i].name)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void zz()
{
printf("\t**********************************************************\n\n");
printf("\t^^^^^^^^^^ 武汉工程大学邮电与信息工程学院 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 07网络与安全管理2班 ^^^^^^^^^\n\n");
printf("\t^^^^^^^^ 易樊制作 ^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 禁止CTRL+C 谢谢合作 ^^^^^^^^^\n\n");
printf("\t^^^^^^^^^^ QQ:895115828\n\n");
printf("\t**********************************************************\n\n");
}
void select()//查看学生
{
int i=0;
printf("以下是全部学生成绩\n");
printf("\t姓名\t学号\t成绩\n");
for(i=0;iNumber;i++)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
void add()//增加学生
{
int numberTemp=0;
int i=0;
struct student temp; //临时保存信息
printf("请输入要增加学生成绩个数:");
scanf("%d",numberTemp);
for(i=0;inumberTemp;i++)
{
printf("输入第%d个同学信息\n",i+1);
printf("姓名:");
scanf("%s",temp.name);
printf("学号:");
scanf("%s",temp.ID);
printf("成绩:");
scanf("%d",temp.score);
st[Number++]=temp; //将刚添加的写入到数组
bc(temp); //将刚添加的写入到文件 }
printf("添加成功\n");
}
void bc(struct student *st)
{
FILE *fp=NULL;
fp=fopen("C://student.dat","ab+");
fwrite(st,sizeof(struct student),1,fp);
fclose(fp);
}
int dq(struct student st[])
{
FILE *fp=NULL;
int i=0;
fp=fopen("C://student.dat","rb");
while(fread(st[i],sizeof(struct student),1,fp))
i++;
fclose(fp);
return i;
}
void xianshi()
{
printf("\t*****************************************************************\n");
printf("\t* *\n");
printf("\t* 学生成绩管理系统 *\n");
printf("\t* *\n");
printf("\t* [1] 增加学生成绩 [2] 查看学生成绩 *\n");
printf("\t* [3] 查找学生成绩 [4] 删除学生成绩 *\n");
printf("\t* [5] 统计(总成绩和平均分) [6] 输出前N名学生成绩 *\n");
printf("\t* [7] 输出不及格人数 [8] 修改学生信息 *\n");
printf("\t* [9] 关于作者 [10] 保存数据 *\n");
printf("\t* [0] 退出系统 *\n");
printf("\t*****************************************************************\n");
}运行成功,请你下去后慢慢研究下这个程序,很简单的,祝你成功!~
用C语言设计一个课程信息管理系统
#include iostream
#include string
#include iomanip
#include fstream
using namespace std;
struct List
{
string m_Name;
string m_ID;//可能有的学号里有字母,所以用string类型。
short int m_Chinese;
short int m_Match;
short int m_English;
struct List *Next; //指针域。
};
typedef struct List Node;
typedef Node *Link;
//---------------函数声明-------------------
Link Create(Link Head);
Link Search(Link Head);
Link Search_front(Link Head);
void Release(Link Head);
void Display(Link Head);
void Display_One(Link Head);
void Display(Link Head,fstream ofile);
Link AddInfo(Link Head);
Link DelInfo(Link Head);
Link Modify(Link Head);
void Grade_Stat(Link Head);
Link Sort(Link Head);
//---------------函数实现-------------------
Link Create(Link Head)
{
/*构造一个头节点*/
Head=(Link)new Node;
if(!Head)
{
cout"分配内存失败。"endl;
exit(-1);
}
Head-m_Name="";
Head-m_ID="";
Head-m_Chinese=0;
Head-m_Match=0;
Head-m_English=0;
Head-Next=NULL;
return Head;
}
Link Search(Link Head)
{
cout" 1.按姓名查询 2.按学号查询 "endl;
int select;
cinselect;
while(cin.fail())
{
cout"请选择正确的菜单项:";
cin.clear();
fflush(stdin);
cinselect;
}
Link ptr;
ptr=Head;
if(select==1)
{
string name;
cout"请输入要查询的姓名:";
cinname;
while(ptr!=NULL)
{
if(ptr-m_Name==name)
{
Display_One(ptr);
return ptr;
}
ptr=ptr-Next;
}
cout"没找到,怎么办?"endl;
}
else if(select==2)
{
string ID;
cout"请输入要查询的学号:";
cinID;
while(ptr!=NULL)
{
if(ptr-m_ID==ID)
{
Display_One(ptr);
return ptr;
}
ptr=ptr-Next;
}
cout"没找到,怎么办?"endl;
}
return ptr;
}
Link Search_front(Link Head)
{//返回前驱节点。
cout" 1.按姓名删除 2.按学号删除 "endl;
int select;
cinselect;
while(cin.fail())
{
cout"请选择正确的菜单项:";
cin.clear();
fflush(stdin);
cinselect;
}
Link ptr;
Link front;
ptr=Head-Next;
front=Head;
if(select==1)
{
string name;
cout"请输入要删除的姓名:";
cinname;
while(ptr!=NULL)
{
if(ptr-m_Name==name)
{
Display_One(ptr);
return front;
}
ptr=ptr-Next;
front=front-Next;
}
cout"没找到,怎么办?"endl;
}
else if(select==2)
{
string ID;
cout"请输入要删除的学号:";
cinID;
while(ptr!=NULL)
{
if(ptr-m_ID==ID)
{
Display_One(ptr);
return front;
}
ptr=ptr-Next;
front=front-Next;
}
cout"没找到,怎么办?"endl;
}
return front;
}
void Release(Link Head)
{
Link ptr;
while(Head!=NULL)
{
ptr=Head;
Head=Head-Next;
delete ptr;
}
}
void Display(Link Head)
{
Link ptr;
ptr=Head-Next;
cout"----------------------------------------------------------------------"endl;
cout"---------------------------- 所有学生信息 --------------------------"endl;
cout"---姓名--------学号-----------语文-----------数学-----------英语------"endl;
while(ptr!=NULL)
{
coutsetw(15)leftptr-m_Name
setw(15)leftptr-m_ID
setw(15)leftptr-m_Chinese
setw(15)leftptr-m_Match
setw(15)leftptr-m_Englishendl;
ptr=ptr-Next;
}
}
void Display(Link Head,fstream ofile)
{
Link ptr;
ptr=Head-Next;
ofile"----------------------------------------------------------------------"endl;
ofile"---------------------------- 所有学生信息 --------------------------"endl;
ofile"---姓名--------学号-----------语文-----------数学-----------英语------"endl;
while(ptr!=NULL)
{
ofilesetw(15)leftptr-m_Name
setw(15)leftptr-m_ID
setw(15)leftptr-m_Chinese
setw(15)leftptr-m_Match
setw(15)leftptr-m_Englishendl;
ptr=ptr-Next;
}
}
void Display_One(Link Head)
{
Link ptr;
ptr=Head;
cout"----------------------------------------------------------------------"endl;
cout"---------------------------- 查询结果信息 --------------------------"endl;
cout"---姓名--------学号-----------语文-----------数学-----------英语------"endl;
coutsetw(15)leftptr-m_Name
setw(15)leftptr-m_ID
setw(15)leftptr-m_Chinese
setw(15)leftptr-m_Match
setw(15)leftptr-m_Englishendl;
}
Link AddInfo(Link Head)
{
Link ptr;
ptr=Head;
while(ptr-Next!=NULL)
{
ptr=ptr-Next;
}
Link ptr2;
char again;
do
{
ptr2=(Link)new Node;
if(!ptr2)
{
cout"内存分配失败!"endl;
exit(-1);
}
//数据域
string Name,ID;
short int Chinese,Match,English;
cout"输入姓名:";
cinName;
coutendl"输入学号:";
cinID;
coutendl"语文成绩:";
cinChinese;
coutendl"数据成绩:";
cinMatch;
coutendl"英语成绩:";
cinEnglish;
ptr2-m_Name=Name;
ptr2-m_ID=ID;
ptr2-m_Chinese=Chinese;
ptr2-m_Match=Match;
ptr2-m_English=English;
//指针域
ptr2-Next=NULL;//作为尾节点。
ptr-Next=ptr2;//连接入链表。
ptr=ptr2;//将ptr2作为下一次产生的节点的前驱节点.
cout"是否继续输入?(Y/N) ";
cinagain;
}while(again=='Y'||again=='y');
return Head;
}
Link DelInfo(Link Head)
{
Link ptr;
Link ptr2;
ptr=Head;
Link f_ptr;//前驱节点。
f_ptr=Search_front(ptr);
ptr2=f_ptr-Next;
f_ptr-Next=f_ptr-Next-Next;
delete ptr2;
return Head;
}
Link Modify(Link Head)
{
Link ptr;
ptr=Head;
ptr=Search(ptr);
cout"修改前信息为:"endl;
Display_One(ptr);
//cout"请选择你要修改的选项:A:姓名 B:学号 C:语文成绩 D:数学成绩 E:英语成绩"endl;
string name,ID;
float Chinese,Match,English;
cout"输入新姓名:";
cinname;
coutendl"输入新学号:";
cinID;
coutendl"输入新语文成绩:";
cinChinese;
coutendl"输入新数学成绩:";
cinMatch;
coutendl"输入新英语成绩:";
cinEnglish;
ptr-m_Name=name;
ptr-m_ID=ID;
ptr-m_Chinese=Chinese;
ptr-m_Match=Match;
ptr-m_English=English;
coutendl"修改后信息为:"endl;
Display_One(ptr);
return Head;
}
void Grade_Stat(Link Head)
{//成绩统计。
Link ptr;
ptr=Head;
cout"请输入你要查询的课程名(chinese|match|english)和一个分数范围[min,max]."endl;
string name;
short int min,max;
int SwitchNum;
cout"课程名:";
cinname;
coutendl"分数下限:";
cinmin;
coutendl"分数上限:";
cinmax;
if(name=="chinese")
SwitchNum=1;
else if(name=="match")
SwitchNum=2;
else if(name=="english")
SwitchNum=3;
else
{
cout"请输入一个正确的课程名:"endl;
return;
}
while(ptr!=NULL)
{
switch(SwitchNum)
{
case 1:
if(ptr-m_Chinese=maxptr-m_Chinese=min)
Display_One(ptr);
break;
case 2:
if(ptr-m_Match=maxptr-m_Match=min)
Display_One(ptr);
break;
case 3:
if(ptr-m_English=maxptr-m_English=min)
Display_One(ptr);
}
}
}
Link Sort(Link Head)
{//我创建的是带头节点的链表。用直接插入法。
cout"请输入你想排序的课程名(用中文):";
string course_name;
cincourse_name;
if((Head-Next==NULL)||(Head-Next-Next==NULL))//此步条件判断非常有价值。
{
cout"数据节点数少于2个,不用排序!"endl;
return Head;
}
//-----------第二步;
Link ptr;
Link ptr_F;
Link ptr_N;
ptr=Head-Next-Next;
ptr_F=Head;
Head-Next-Next=NULL;//到此,分成了两个链表。
//第三步。
while(ptr)
{
ptr_N=ptr-Next;
ptr_F=Head;//ptr_F的归位。
while(ptr_F-Next)
{
if(course_name=="语文")
{
if(ptr-m_Chineseptr_F-Next-m_Chinese)
{
ptr-Next=ptr_F-Next;
ptr_F-Next=ptr;
break;
}//if
else
{
ptr_F=ptr_F-Next;
}
}
if(course_name=="数学")
{
if(ptr-m_Matchptr_F-Next-m_Match)
{
ptr-Next=ptr_F-Next;
ptr_F-Next=ptr;
break;
}//if
else
{
ptr_F=ptr_F-Next;
}
}
if(course_name=="英语")
{
if(ptr-m_Englishptr_F-Next-m_English)
{
ptr-Next=ptr_F-Next;
ptr_F-Next=ptr;
break;
}//if
else
{
ptr_F=ptr_F-Next;
}
}
}//while(ptr_F-Next)
if(ptr_F-Next==NULL)
{
ptr-Next=ptr_F-Next;
ptr_F-Next=ptr;//表示插到有序链表的最后面了。
}
ptr=ptr_N;//归位,准备下一次排序。
}//while(ptr)
cout"从高到低,排序成功!"endl;
return Head;
}
//----------主函数----------------------
int main()
{
fstream ofile;
ofile.open("e:\\student.txt",ios_base::out);
if(!ofile)
{
cout"文件打开失败。"endl;
exit(-1);
}
Link head=0;
head=Create(head);
while(1)
{
cout"*****************************************************"endl;
cout"*** 1.添加信息 2.修改信息 3.删除信息 4.信息查询 ***"endl;
cout"*** 5.成绩统计 6.排 序 7.显示/保存 0.退 出 ***"endl;
cout"*****************************************************"endl;
cout"请选择正确的菜单项:";
int sel;
cinsel;
while(cin.fail())
{
cout"请选择正确的菜单项:";
cin.clear();
fflush(stdin);
cinsel;
}
switch(sel)
{
case 0:
exit(0);
case 1:
head=AddInfo(head);
break;
case 2:
head=Modify(head);
break;
case 3:
head=DelInfo(head);
break;
case 4:
Search(head);
break;
case 5:
Grade_Stat(head);
break;
case 6:
Sort(head);
break;
case 7:
Display(head);//在标准显示器上显示。
Display(head,ofile);//在文件中显示。
break;
default:
break;
}
}
Release(head);
return 0;
}
换一下汉字就好了
用C语言写一个 学生选课系统
#includestdio.h
#includestdlib.h
int N1,N2,kk1,kk2,kk3;
struct couse * head1;
struct student * head2;
struct couse//课程信息结构体
{
int num1;
char name1[20];
int score;
int nelepeo;//课程已选人数
int Melepeo;//课程人数上限
struct couse * next;
};
struct student//学生信息结构体
{
int num2;
char name2[20];
int nelenum[50];//已选课程编号
int nelen;//已选课程数量
struct student * next;
};
void Ms()
{
for(kk1=0;kk11100;kk1++)
for(kk2=0;kk21200;kk2++)
for(kk3=0;kk31200;kk3++);
}
void keyboardc()//录入课程子函数(从键盘录入)
{
struct couse *p1,*p2;
N1=0;
p1=p2=(struct couse*)malloc(sizeof(struct couse));
printf("课程编号\t课程名称\t学分\t课程人数上限\n");
scanf("%d%s%d%d",p1-num1,p1-name1,p1-score,p1-Melepeo);
p1-nelepeo=0;
head1=NULL;
while(p1-num1!=0)
{
N1=N1+1;
if(N1==1)head1=p1;
else p2-next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
scanf("%d%s%d%d",p1-num1,p1-name1,p1-score,p1-Melepeo);
p1-nelepeo=0;
}
p2-next=NULL;
}
void filec()//录入键盘子函数(从文件录入)
{
FILE * fp;
char filepath[20];
struct couse *p1,*p2;
N1=0;
printf("输入要读入的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct couse*)malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",p1-num1,p1-name1,p1-score,p1-nelepeo,p1-Melepeo);
head1=NULL;
while(!feof(fp))
{
N1=N1+1;
if(N1==1)head1=p1;
else p2-next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",p1-num1,p1-name1,p1-score,p1-nelepeo,p1-Melepeo);
}
p2-next=NULL;
}
void inputc()//录入课程主函数
{
int i;
printf("\t\t\t录入课程信息\n");
printf("\n1.从键盘录入\n");
printf("2.从文件录入\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",i);
switch(i)
{
case(1):keyboardc();break;
case(2):filec();break;
case(3):break;
}
}
void insertc(struct couse *incouse)//课程管理子函数(增加课程)
{
struct couse *p0,*p1,*p2;
p1=head1;
p0=incouse;
if(head1==NULL)
{
head1=p0;
p0-next=NULL;
}
else
{
while((p0-num1 p1-num1) (p1-next!=NULL))
{
p2=p1;
p1=p1-next;
}
if(p0-num1 = p1-num1)
{
if(head1==p1) head1=p0;
else p2-next=p0;
p0-next=p1;
}
else
{
p1-next=p0;
p0-next=NULL;
}
}
N1=N1+1;
}
void delc(int num1)//课程管理子函数(删除课程)
{
struct couse *p1,*p2;
if(head1==NULL)
{
printf("\n没有课程,无法删除!\n");
goto end;
}
p1=head1;
while(num1!=p1-num1 p1-next!=NULL)
{
p2=p1;
p1=p1-next;
}
if(num1==p1-num1)
{
if(p1==head1) head1=p1-next;
else p2-next=p1-next;
printf("已删除该编号课程!\n");
N1=N1-1;
}
else printf("无该编号的课程!\n");
end:;
}
void managementc()//课程管理主函数
{
struct couse * incouse;
int i,num1;
printf("\t\t\t课程管理\n");
printf("1.新增课程\n");
printf("2.删除课程\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",i);
switch(i)
{
case(1):
{
incouse=(struct couse *)malloc(sizeof(struct couse));
printf("课程编号\t课程名称\t学分\t课程人数上限\n");
scanf("%d%s%d%d",incouse-num1,incouse-name1,incouse-score,incouse-Melepeo);
incouse-nelepeo=0;
insertc(incouse);
break;
}
case(2):
{
printf("请输入要删除课程的编号:\n");
scanf("%d",num1);
delc(num1);
break;
}
case(3):break;
}
}
void keyboards()//录入学生信息子函数(从键盘录入)
{
int i;
struct student *p1,*p2;
N2=0;
p1=p2=(struct student *)malloc(sizeof(struct student));
printf("学生学号\t学生姓名\n");
scanf("%d%s",p1-num2,p1-name2);
p1-nelen=0;
for(i=0;i20;i++) p1-nelenum[i]=0;
head2=NULL;
while(p1-num2!=0)
{
N2=N2+1;
if(N2==1)head2=p1;
else p2-next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
scanf("%d%s",p1-num2,p1-name2);
p1-nelen=0;
for(i=0;i20;i++) p1-nelenum[i]=0;
}
p2-next=NULL;
}
void files()//录入学生信息子函数(从文件录入)
{
int i=0;
FILE * fp;
char filepath[20];
struct student *p1,*p2;
N2=0;
printf("输入要读入的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct student*)malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
head2=NULL;
while(!feof(fp))
{
i=0;
N2=N2+1;
if(N2==1)head2=p1;
else p2-next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
}
p2-next=NULL;
}
void inputs()//录入学生信息主函数
{
int i;
printf("\t\t\t录入学生信息\n");
printf("\n1.从键盘录入\n");
printf("2.从文件录入\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",i);
switch(i)
{
case(1):keyboards();break;
case(2):files();break;
case(3):break;
}
}
void inserts(struct student * incouse)//学生信息管理子函数(填加学生信息)
{
struct student *p0,*p1,*p2;
p1=head2;
p0=incouse;
if(head2==NULL)
{
head2=p0;
p0-next=NULL;
}
else
{
while((p0-num2 p1-num2) (p1-next!=NULL))
{
p2=p1;
p1=p1-next;
}
if(p0-num2 = p1-num2)
{
if(head2==p1) head2=p0;
else p2-next=p0;
p0-next=p1;
}
else
{
p1-next=p0;
p0-next=NULL;
}
}
N2=N2+1;
}
void dels(int num2)//学生信息管理子函数(删除学生信息)
{
struct student *p1,*p2;
if(head2==NULL)
{
printf("\n没有该学生信息,无法删除!\n");
goto end;
}
p1=head2;
while(num2!=p1-num2 p1-next!=NULL)
{
p2=p1;
p1=p1-next;
}
if(num2==p1-num2)
{
if(p1==head2) head2=p1-next;
else p2-next=p1-next;
printf("已删除该学生信息!\n");
N2=N2-1;
}
else printf("无该学号的学生!\n");
end:;
}
void managements()//学生信息管理主函数
{
struct student * incouse;
int i,num2;
printf("\t\t\t学生信息管理\n");
printf("1.新增学生信息\n");
printf("2.删除学生信息\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",i);
switch(i)
{
case(1):
{
incouse=(struct student *)malloc(sizeof(struct student));
incouse-nelen=0;
incouse-nelenum[0]=0;
printf("学生学号\t学生姓名\n");
scanf("%d%s",incouse-num2,incouse-name2);
inserts(incouse);
break;
}
case(2):
{
printf("请输入要删除学生的学号:\n");
scanf("%d",num2);
dels(num2);
break;
}
case(3):break;
}
}
void elect(struct student * s)//选课
{
struct couse * p;
int num1,i;
printf("请输入要选课的编号:\n");
scanf("%d",num1);
for(i=0;s-nelenum[i]!=0;i++);
s-nelenum[i]=num1;
(s-nelen)++;
p=head1;
while(p-num1!=num1) p=p-next;
(p-nelepeo)++;
}
void cheak()//学生选课子函数(查询可选课程)
{
char e;
struct couse * c;
struct student * s;
int num2,i,j=0,t=0;
printf("请输入你的学号:");
scanf("%d",num2);
s=head2;
while(s-num2!=num2 s-next!=NULL) s=s-next;
if(s-num2!=num2)
{
printf("不存在你的信息,请进入主菜单录入你的信息!\n");
goto end;
}
c=head1;
printf("你的可选课程编号:\n");
while(c!=NULL)
{
for(t=0,i=0;s-nelenum[i]!=0;i++)
{
if(c-num1==s-nelenum[i]) t=1;
}
if(t==0 (c-nelepeo!=c-Melepeo))
{
printf("%d\n",c-num1);
j++;
}
c=c-next;
}
if(j==0)
{
printf("你已选完所有课程,无法再多选!\n");
goto end;
}
printf("选课(y/n)?:\n");
getchar();
e=getchar();
i=0;
while(e=='y')
{
elect(s);
printf("继续选课(y/n)?:\n");
getchar();
e=getchar();
}
end:;
}
void back(struct student * p)//退课
{
struct couse * p1;
int num1,i,j;
printf("请输入你要退掉的课程编号:\n");
scanf("%d",num1);
p1=head1;
while(p1-num1!=num1) p1=p1-next;
for(i=0;p-nelenum[i]!=num1;i++);
for(j=i;p-nelenum[j]!=0;j++) p-nelenum[j]=p-nelenum[j+1];
p-nelenum[--j]=0;
(p1-nelepeo)--;
printf("退课成功!\n");
}
void hcheak()//学生选课子函数(查询已选课程)
{
char c;
struct couse * p0;
struct student * p;
int num2,i,f=0;
printf("请输入学号:\n");
scanf("%d",num2);
p=head2;
while(p-num2!=num2 p!=NULL) p=p-next;
if(p==NULL)
{
printf("不存在你的信息,请回主菜单录入信息:\n");
goto end;
}
printf("已选课程编号:\n");
if(p-nelenum[0]==0)
{
printf("你还没选课!\n");
goto end;
}
for(i=0;p-nelenum[i]!=0;i++)
{
printf("%d\n",p-nelenum[i]);
p0=head1;
while(p0-num1!=p-nelenum[i]) p0=p0-next;
f=f+p0-score;
}
printf("总学分:%d\n",f);
printf("是否进行退课(y/n)?");
getchar();
c=getchar();
while(c=='y')
{
back(p);
printf("继续退课(y/n)?");
getchar();
c=getchar();
(p-nelen)--;
}
end:;
}
void elective()//学生选课主函数
{
int i;
printf("\t\t\t学生选课\n");
printf("1.查询可选课程\n");
printf("2.查询已选课程\n");
printf("3.返回主菜单\n");
printf("请输入(1~3):\n");
scanf("%d",i);
switch(i)
{
case(1):cheak();break;
case(2):hcheak();break;
case(3):break;
}
}
void listc()//输出课程信息
{
struct couse * p;
p=head1;
printf("课程编号 课程名称 学分 课程已选人数 课程人数上限\n");
while(p!=NULL)
{
printf("%-8d%10s%6d%8d%12d\n",p-num1,p-name1,p-score,p-nelepeo,p-Melepeo);
p=p-next;
}
}
void lists()//输出学生信息
{
struct student * p;
p=head2;
printf("学生学号 学生姓名 已选课程数量\n");
while(p!=NULL)
{
printf("%-4d %10s %6d\n",p-num2,p-name2,p-nelen);
p=p-next;
}
}
void intoc()//存储课程信息
{
FILE * fp;
struct couse * p;
char filepath[30];
printf("输入课程信息要保存的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!");
exit(0);
}
p=head1;
while(p!=NULL)
{
fprintf(fp,"%d %s %d %d %d\n",p-num1,p-name1,p-score,p-nelepeo,p-Melepeo);
p=p-next;
}
fclose(fp);
printf("课程信息已保存在%s中!\n",filepath);
}
void intos()//存储学生信息
{
FILE * fp;
struct student * p;
char filepath[30];
printf("输入学生信息要保存的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!");
exit(0);
}
p=head2;
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p-next;
}
fclose(fp);
printf("学生信息已保存在%s中!\n",filepath);
}
void into()//存储信息
{
int i;
printf("1.存储课程信息\n");
printf("2.存储学生信息\n");
printf("3.返回主菜单\n");
printf("请输入(1~3)\n");
scanf("%d",i);
switch(i)
{
case(1):intoc();break;
case(2):intos();break;
case(3):break;
}
}
void store()//信息主函数
{
int i;
printf("\t\t系统信息查看及存储\n");
printf("1.查看课程信息\n");
printf("2.查看学生信息\n");
printf("3.存储信息\n");
printf("4.返回主菜单\n");
printf("请输入(1~4):\n");
scanf("%d",i);
switch(i)
{
case(1):listc();break;
case(2):lists();break;
case(3):into();break;
case(4):break;
}
}
int main()//主函数
{
int i;
start:
printf("\n\t\t\t欢迎使用学生选课系统!\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请输入菜单选项(1~7):\n");
scanf("%d",i);
if(i1 || i7)
{
printf("输入错误,请重输:\n");
goto start;
}
switch(i)
{
case(1):
{
system("cls");
inputc();
goto start;
break;
}
case(2):
{
system("cls");
managementc();
goto start;
break;
}
case(3):
{
system("cls");
inputs();
goto start;
break;
}
case(4):
{
system("cls");
managements();
goto start;
break;
}
case(5):
{
system("cls");
elective();
goto start;
break;
}
case(6):
{
system("cls");
store();
goto start;
break;
}
case(7):
{
system("cls");
printf("感谢使用本系统!\n\n再见!\n");
}
}
return(0);
}
怎样做一个C语言课程信息管理系统
首先 要定义机构体
然后就是设计函数 也就是系统功能 录入 查询 删除 修改等
switch语句设计菜单
#include stdio.h
#include stdlib.h
#define NULL 0
typedef struct student
{
char clas[20];
char name[20];
char number[20];
int math;
int english;
int computer;
float sum;
float ave;
struct student *next;
}XSSJ;
void freerecord(XSSJ *p)
{
XSSJ *q;
while(p!=NULL)
{
q=p;
p=p-next;
free(q);
}
}
XSSJ *addrecord(XSSJ *p)
{
XSSJ head,*q;
head.next=p;
p=head;
while(p-next!=NULL)
p=p-next;
while(1)
{
char text[80];
q=(XSSJ *)malloc(sizeof(XSSJ));
if(q==NULL)
return(head.next);
q-next=NULL;
printf("\n请输入学生的班级、姓名、学号和数学、英语、计算机成绩:");
gets(text);
if(text[0]=='\0')
break;
sscanf(text,"%s%s%s%d%d%d",q-clas,q-name,q-number,q-math,q-english,q-computer);
p-next=q;
p=q;
}
return(head.next);
}
XSSJ *createrecord(XSSJ *p)
{
freerecord(p);
return(addrecord(NULL));
}
XSSJ *deleterecord(XSSJ *p)
{
char number[10];
XSSJ *q,head;
printf("\n请输入你要删除的学生学号:\n");
gets(number);
for(head.next=p,q=head;p!=NULL;p=p-next)
{
if(strcmp(p-number,number)!=0)
q=p;
else
{
q-next=p-next;
free(p);
printf("\n学号为%s的学生成绩已经删除。\n",number);
return(head.next);
}
}
printf("\n没有学号为%s的学生成绩。\n",number);
return(head.next);
}
void searchrecord(XSSJ *p)
{
char number[10];
printf("\n请输入你要查询的学生学号\n");
gets(number);
for(;p!=NULL;p=p-next)
{
if(strcmp(p-number,number)==0)
{
printf("\n班级%s\t姓名%s\t学号%s\t数学%d\t英语%d\t计算机%d\n",p-clas,p-name,p-number,p-math,p-english,p-computer);
}
}
printf("\n没有你要查询的成绩\n");
}
void displayrecord(XSSJ *p)
{
printf("\n班级\t姓名\t学号\t数学\t英语\t计算机\t\n");
for(;p!=NULL;p=p-next)
printf("\n%s\t%s\t%s\t%d\t%d\t%d\n",p-clas,p-name,p-number,p-math,p-english,p-computer);
printf("\n");
}
void displaymenu() //显示菜单
{
printf("\n\n______________菜单___________________\n");
printf("1:创建新纪录\t");
printf("2:添加新纪录\n");
printf("3:删除纪录 \t");
printf("4:查询纪录 \n");
printf("5:显示纪录 \t");
printf("0:退出系统 \n");
printf("\n请选择:");
}
int choiceitem(void)
{
int choice;
char line[80];
do
{
displaymenu();
gets(line);
choice=atoi(line);
}
while(choice0||choice6);
return(choice);
}
void main()
{
XSSJ *head=NULL;
int choice;
do
{
choice=choiceitem();
switch(choice)
{
case 1: head=createrecord(head);
break;
case 2: head=addrecord(head);
break;
case 3: head=deleterecord(head);
break;
case 4: searchrecord(head);
break;
case 5: displayrecord(head);
break;
}
}
while(choice!=0);
printf("\n\nEND!");
freerecord(head);
}
hhxy 11tx 06(这个是我的标 不是程序)
这个是我做的 没有名次排序的功能 我没有做出来呢 我也刚学这个 希望对你有帮助
c语言学生选修课程管理系统
#include stdio.h
#include stdlib.h
#include string.hstruct student
{
char name[60];
char ID[7];
int score;
};int dq(struct student st[]);
void xianshi();
void bc(struct student st[]);
void add();
void select();
void zz();
void chazhao();
void xhcz();
void xmcz();
void del();
void xmsc();
void xhsc();
void tj();
void px();
void bjg();
void xg();
void xhxg();
void xmxg();
void bca();
void fh();
struct student st[300]; //这个数组用来保存所有的学生信息 和文件里面的一致
int Number=0; //记录总的学生人数 也就是数组/文件里面的学生人数
void main()
{
int choose=0;
FILE *fp=NULL;
char yesorno;
if((fp=fopen("C://student.dat","rb"))==NULL)
{
printf("\n=========提示:文件不存在,是否要创建一个?(y/n)\n");
scanf("%c",yesorno);
if(yesorno=='y'||yesorno=='Y')
{
//这里仅为了建立文件
fp=fopen("C://student.dat","wb");
fclose(fp);
}
else
exit(0);
}
else
{
Number=dq(st); //要是文件只能够已经有数据 将数据初始化到数组中
}
system("cls");
while(true)
{
xianshi();
printf("\t\t====请选择:");
scanf("%d",choose);
system("cls");
switch(choose)
{
case 0: exit(0);
//退出
break;
case 1: add();
fh();//增加学生成绩
break;
case 2: select();
fh();//查看学生成绩
break;
case 3: chazhao();
fh();// 查找
break;
case 4: del();
fh();//删除
break;
case 5: tj();
fh();//统计
break;
case 6: px();
fh();//排序
break;
case 7: bjg();
fh();//输出不及格
break;
case 8: xg();
fh();//修改
break;
case 9:zz();
fh();//作者
break;
case 10:bca();
fh();//保存
break;
default:
break;
}
fflush(stdin);
getchar();
system("cls");
}
}
void bca()
{
printf("\t=====程序在运行时已自动保存.....\n");
}
void fh()
{
printf("\t===按Enter键返回主菜单\n");
}
void xg() //修改学生信息
{
int way=0;
printf("请选择修改查找方式\n");
printf("1 按姓名查找修改\n");
printf("2 按学号查找修改\n");
scanf("%d",way);
switch(way)
{
case 1: xmxg();
break;
case 2: xhxg();
break;
default: printf("输入有误,结束!\n");
break;
}
}
//按姓名修改
void xmxg()
{
FILE *fp=NULL;
char name[60];
int i=0;
int changeIndex=0;
int index=0;
printf("请输入要修改的学生姓名:");
scanf("%s",name);
for (i=0;iNumber;i++)
{
if (strcmp(name,st[i].name))
{
changeIndex=i; //保存要修改的人的下标
}
break;
}
printf("\t姓名\t学号\t成绩\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("学号:");
scanf("%s",st[changeIndex].ID);
printf("成绩:");
scanf("%d",st[changeIndex].score); //信息修改后重新更新文件里面的数据 以保持数据一致性
fp=fopen("C://student.dat","wb");
for (i=0;iNumber;i++)
{
fwrite(st[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
void xhxg()//按学号修改
{
FILE *fp=NULL;
char id[60];
int i=0;
int changeIndex=0;
int index=0;
printf("请输入要修改的学生学号:");
scanf("%s",id);
for (i=0;iNumber;i++)
{
if (strcmp(id,st[i].ID))
{
changeIndex=i; //保存要修改的人的下标
}
break;
}
printf("\t姓名\t学号\t成绩\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("学号:");
scanf("%s",st[changeIndex].ID);
printf("成绩:");
scanf("%d",st[changeIndex].score);
//信息修改后重新更新文件里面的数据 以保持数据一致性
fp=fopen("C://student.dat","wb");
for (i=0;iNumber;i++)
{
fwrite(st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("\t=======修改成功\n");
}void bjg() //输出不及格人数
{
int i=0;
printf("以下是不及格:\n");
printf("\t姓名\t学号\t成绩\n");
for (i=0;iNumber;i++)
{
if (st[i].score60)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void px()//排序
{
struct student temp;
int wantNUmber=0;
int i=0;
int j=0;
for(i=0;iNumber-1;i++)
{
for(j=i;jNumber-1;j++)
{
if(st[j].scorest[j+1].score)
{
temp=st[j];
st[j]=st[j+1];
st[j+1]=temp;
}
}
}
printf("你想输出前几名的成绩:");
scanf("%d",wantNUmber);
if (wantNUmberNumber)
{
wantNUmber=Number;
} printf("\t姓名\t学号\t成绩\n");
for(i=0;iwantNUmber;i++)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
void tj()//统计
{
int i=0;
double sum=0.0;
for(i=0;iNumber;i++)
{
sum+=st[i].score;
}
printf("全班总分为:%f\n",sum);
printf("平均分为:%f\n",sum/Number);
}
void del()//删除
{
int n=0;
printf("1 按姓名删除\n");
printf("2 按学号删除\n");
scanf("%d",n);
switch(n)
{
case 1: xmsc();
break;
case 2: xhsc();
break;
}
}
void xmsc()//按姓名删除
{
FILE *fp=NULL;
char name[60];
int i=0;
int j=0;
printf("请输入要删除的学生姓名:");
scanf("%s",name);
for(i=0;iNumber;i++)
{
if (strcmp(name,st[i].name)==0) //如果查找到就删除
{
for (j=i;jNumber-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
} //将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了
fp=fopen("C://student.dat","wb");
for (i=0;iNumber;i++)
{
fwrite(st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("删除成功;\n");
}
void xhsc()//按学号删除
{
FILE *fp=NULL;
char id[60];
int i=0;
int j=0;
printf("请输入要删除的学生学号:");
scanf("%s",id);
for(i=0;iNumber;i++)
{
if (strcmp(id,st[i].ID)==0) //如果查找到就删除
{
for (j=i;jNumber-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
}
//将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了
fp=fopen("C://student.dat","wb");
for (i=0;iNumber;i++)
{
fwrite(st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("删除成功;\n");
}
void chazhao()//查找学生
{
int n=0;
printf("1 按姓名查找\n");
printf("2 按学号查找\n");
scanf("%d",n);
switch(n)
{
case 1: xmcz();
break;
case 2: xhcz();
break;
default: printf("输入有误,结束!\n");
break;
}
}
void xhcz()//按学号查找
{
char id[7];
int i=0;
printf("请输入要查找学生学号:");
scanf("%s",id);
system("cls");
printf("\t姓名\t学号\t成绩\n");
for (i=0;iNumber;i++)
{
if (strcmp(id,st[i].ID)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void xmcz()//按姓名查找
{
char name[7];
int i=0;
printf("请输入要查找学生姓名:");
scanf("%s",name);
system("cls");
printf("\t姓名\t学号\t成绩\n");
for (i=0;iNumber;i++)
{
if (strcmp(name,st[i].name)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void zz()
{
printf("\t**********************************************************\n\n");
printf("\t^^^^^^^^^^ 武汉工程大学邮电与信息工程学院 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 07网络与安全管理2班 ^^^^^^^^^\n\n");
printf("\t^^^^^^^^ 易樊制作 ^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 禁止CTRL+C 谢谢合作 ^^^^^^^^^\n\n");
printf("\t^^^^^^^^^^ QQ:895115828\n\n");
printf("\t**********************************************************\n\n");
}
void select()//查看学生
{
int i=0;
printf("以下是全部学生成绩\n");
printf("\t姓名\t学号\t成绩\n");
for(i=0;iNumber;i++)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
void add()//增加学生
{
int numberTemp=0;
int i=0;
struct student temp; //临时保存信息
printf("请输入要增加学生成绩个数:");
scanf("%d",numberTemp);
for(i=0;inumberTemp;i++)
{
printf("输入第%d个同学信息\n",i+1);
printf("姓名:");
scanf("%s",temp.name);
printf("学号:");
scanf("%s",temp.ID);
printf("成绩:");
scanf("%d",temp.score);
st[Number++]=temp; //将刚添加的写入到数组
bc(temp); //将刚添加的写入到文件 }
printf("添加成功\n");
}
void bc(struct student *st)
{
FILE *fp=NULL;
fp=fopen("C://student.dat","ab+");
fwrite(st,sizeof(struct student),1,fp);
fclose(fp);
}
int dq(struct student st[])
{
FILE *fp=NULL;
int i=0;
fp=fopen("C://student.dat","rb");
while(fread(st[i],sizeof(struct student),1,fp))
i++;
fclose(fp);
return i;
}
void xianshi()
{
printf("\t*****************************************************************\n");
printf("\t* *\n");
printf("\t* 学生成绩管理系统 *\n");
printf("\t* *\n");
printf("\t* [1] 增加学生成绩 [2] 查看学生成绩 *\n");
printf("\t* [3] 查找学生成绩 [4] 删除学生成绩 *\n");
printf("\t* [5] 统计(总成绩和平均分) [6] 输出前N名学生成绩 *\n");
printf("\t* [7] 输出不及格人数 [8] 修改学生信息 *\n");
printf("\t* [9] 关于作者 [10] 保存数据 *\n");
printf("\t* [0] 退出系统 *\n");
printf("\t*****************************************************************\n");
}运行成功,请你下去后慢慢研究下这个程序,很简单的,祝你成功!~
求采纳为满意回答。