求学生成绩管理系统源代码

huang1317402 2009-09-10 07:39:13
设计一个程序,统计一个班(最多有35人)的学生成绩,要求能实现如下四个功能:
(1) 由键盘输入每个学生的学号和四门课程的成绩。
(2) 计算每个学生的平均分和总分。
(3) 按总分从高到低排出名次,并按名次输出每个学生的情况,包括学号、各科成绩、平均分和总分。
(4) 根据用户要求输出某门课程(由键盘输入课程号)成绩在90分以上(含90分)且总分在前五名的学生情况,包括:学号、各科成绩、平均分和总分。
具体要求如下:
(1)每个功能为一个独立的函数。
(2)所有的输入之前都要有提示。
...全文
5821 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
锁了。
wenhuahetao 2009-09-24
  • 打赏
  • 举报
回复
在看一下通不通过
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "conio.h"
#define LEN sizeof(struct student)
typedef struct student
{
char num[10];
char name[10];
int math,english,computer,yuwen;
int total;
struct student *next;
}student, *LinkList;
void Login();
void weixiu();
void menu() ;
int Open(LinkList L);
void printstart() ;
void Wrong() ;
void Nofind() ;
void printc();
void getinf(LinkList L);
void orderbyzongfen(LinkList L);
void deleteall(LinkList L);
void Developer();
void Sort(LinkList L);
void Save(LinkList L);
LinkList dingwei(LinkList L,char findmess[],char nameornum[]);
LinkList L;
int main(void)
{


Login();



return 0;
}

/*---------------------------------------------------输入学生成绩并计算-----------------------------------------------------*/
void getinf(LinkList L)
{
LinkList r,s;
r=(LinkList )malloc(LEN);
printf("请输入学号:");
scanf("%s",r->num);
printf("请输入名字");
scanf("%s",r->name);
printf("请输入语文成绩:");
scanf("%d",&r->yuwen);
printf("请输入数学成绩:");
scanf("%d",&r->math);
printf("请输入英语成绩:");
scanf("%d",&r->english);
printf("请输入电脑成绩:");
scanf("%d",&r->computer);
r->total=r->math+r->english+r->computer+r->yuwen;

s=L->next;
L->next=r;
r->next=s;
printf("追加记录成功!\n");
}


/*------------------------------该函数用于定位连表中符合要求的接点,并返回该指针---------------------------*/
LinkList dingwei(LinkList L,char findmess[],char nameornum[])
{
LinkList r;
if(strcmp(nameornum,"num")==0)
{
r=L->next;
while(r!=NULL)
{
if(strcmp(r->num,findmess)==0)
return r;
r=r->next;
}
r=NULL;
return r;
}
else if(strcmp(nameornum,"name")==0)
{
r=L->next;
while(r!=NULL)
{
if(strcmp(r->name,findmess)==0)
return r;
r=r->next;
}
r=NULL;
return r;
}
else return 0;
}


/*---------------------------------------------删除记录--------------------------------------------------*/
void deleteall(LinkList L)
{

char ch;



printf("确定您要清除文件里所有学生的信息,这样就无法恢复数据了( Y or N )\n");
getchar();
scanf("%c",&ch);
if(ch == 'y' || ch == 'Y')
{
L->next = NULL;
printf("文件里学生成绩信息已经被清除!\n");
}
else return;


}

/*-------------------------------------------------排序记录------------------------------------------------------------*/
void Sort(LinkList L)
{
LinkList p,r,s;
p = L;

r = p ->next;
s = p ->next->next;
while(s != NULL)
{
while(s ->total < p ->next->total)
p = p ->next;
if(p ->next == s)
{
printf("排序已完成!\n");return;
}
else
{
r ->next = s ->next;
s ->next = p ->next;
p ->next = s;
s = r ->next;
p = L;
}
}
printf("排序成功!\n");




}
/*--------------------------------------------------------- 排名---------------------------------------------------*/

void orderbyzongfen(LinkList L)

{
LinkList p;


p=L;
if(p->next!=NULL)
{
printstart();
printc();
for (p=p->next;p!=NULL;p=p->next)
printf("%3s\t%7d\t\t%5d\t\t%5d\t%7d\t%10d\n",p->num,p->yuwen,p->math,p->english,p->computer,p->total);
printstart();}
else Nofind();
}


/*-----------------------------------------------------------打开文件--------------------------------------------------------*/
int Open(LinkList L)
{
FILE *fp;
LinkList p1,p2;
char choose;
int count=0;

p1=L;
p1->next=NULL;
fp=fopen("E:\\student_score","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n");
scanf("%c",&choose);
if(choose=='y'||choose=='Y')
{
fp=fopen("E:\\student_score","wb");
printf("文件已创建,请按回车键关闭,然后重新打开软件\n");getchar();getchar();exit(0);
}
else exit(0);
}

p2=(LinkList)malloc(LEN);
while(fread(p2,LEN,1,fp))
{
p2->next=NULL;
p1->next=p2;
p1=p2;
p2=(LinkList)malloc(LEN);
count++;
}
p2->next=NULL;
fclose(fp);

return 1;
}
/*-----------------------------------------------------保存文件----------------------------------------------------*/
void Save(LinkList L)
{
FILE *fp;
LinkList p1;
char choose;
if(L ->next == NULL)
{printf("没有可以保存的信息!\n");
return;}
printf("确认保存?(y/n)\n");
getchar();
scanf("%c",&choose);
getchar();
if(choose == 'y' || choose == 'Y')
{
fp=fopen("E:\\student_score","wb");
p1=L;
p1=p1->next;

while(p1)
{
if(fwrite(p1,LEN,1,fp)==1)
{
p1=p1->next;
}
else
break;

}
fclose(fp);
printf("保存成功!\n");
}
else printf("没有保存!\n");
}

void weixiu()
{
printf("\n\n\n");
printf("\n **************************************************************");
printf("\n ");
printf("\n 欢迎使用成绩管理系统.本系统尚在试用阶段,有问题请与我联系! ");
printf("\n ");

printf("\n 我的qq是 810097972 ");
printf("\n **************************************************************");
}

/*----------------------------------------------------界面函数-------------------------------------------*/
void Login()
{
system("color 5f");
char ch[23];
int i=0;
char mima[45];
L=(LinkList)malloc(LEN);
int sel,count=0;
weixiu();
printf("\n\n\n");
printf("\n请选择您的登陆方式( 1 :管理员 2 :普通用户 )");
scanf("%d",&i);
switch(i)
{
case 1:

system("cls");
weixiu();
printf("\t\t\t\t用户名:");
scanf("%s",ch);
printf("\t\t密码:");
scanf("%s",mima);
if(strcmp(mima,"123456")==0 && strcmp(ch,"何涛")==0)
{
getchar();printf("\n按回车返回主菜单\n");getchar();
system("cls");
}
else
{
printf("您的用户名或密码有误,无法登陆!\n");
exit(0);

}
menu();
Open(L);

for (scanf("%d",&sel);sel!=0;system("cls"),menu(),scanf("%d",&sel))
{
switch (sel)
{
case 1:
getinf(L);
count++;Save(L);getchar();printf("\n按回车返回主菜单\n");getchar();
break;
case 2:Sort(L);orderbyzongfen(L);getchar();printf("\n按回车返回主菜单\n");getchar();
break;

case 3:
deleteall(L);getchar();printf("\n按回车返回主菜单\n");getchar();
count--;
break;

case 4:
Developer();getchar();printf("\n按回车返回主菜单\n");getchar();
break;
case 5:
printf("谢谢使用 !有问题可以与我联系\n\t\tqq810097972\n");
exit(0);
break;
default:
Wrong();getchar();printf("\n按回车返回主菜单\n");getchar();
}
}
break;

case 2:
system("cls");
Open(L);
printf("\n\t\t\t\t1:按高分排序并显示\n\t\t\t\t2:制作人员\n\t\t\t\t3:退出系统\n");
printf("请选择你要的操作:");

for (scanf("%d",&sel);sel!=0;system("cls"),menu(),scanf("%d",&sel))
{
switch (sel)
{

case 1:Sort(L);orderbyzongfen(L);getchar();printf("\n按回车返回主菜单\n");getchar();
break;



case 2:
Developer();getchar();printf("\n按回车返回主菜单\n");getchar();
break;
case 3:
printf("谢谢使用 !有问题可以与我联系\n\t\tqq810097972\n");
exit(0);
break;
default:
Wrong();getchar();printf("\n按回车返回主菜单\n");getchar();
}
}
break;
break;
}

printf("\n |************************************************************|");




}
void menu()
{
printf("\n\t\t\t\t欢迎进入成绩管理系统\t\t\t\n\n\t\t1:输入学生成绩并计算\n\t\t2:按高分排序并显示\n\t\t3:删除数据\n\t\t4:制作人员\n\t\t5:退出系统\n\n选择您要进入的菜单,请输入功能号(0~5):") ; //主界面)

}
void printstart()
{
printf("\n-------------------------------------------------------------------\n");
}
void Wrong()
{
printf("提示:输入错误!\n");
}
void Nofind()
{
printf("提示:没有找到该学生!\n");
}

void Developer()
{
printf("\n\n\n\t\t\t\t\t制作人员:\n\t\t\t\t\t\t ------何涛\n\n\n");
}

void printc()
{
printf("学号\t语文成绩 数学成绩 英语成绩 电脑成绩 总分\n");
}
w19881990312 2009-09-22
  • 打赏
  • 举报
回复
是呀!
亚细亚 2009-09-22
  • 打赏
  • 举报
回复
两个字:学习!
wxsxiaoK 2009-09-21
  • 打赏
  • 举报
回复
就这个小程序能学到很多东西滴,用别人的是自己的损失~
a6324789 2009-09-21
  • 打赏
  • 举报
回复
经过本人用VC++6.0、win-TC和TC2.0测试,六楼那代码好像通不过啊!
a6324789 2009-09-21
  • 打赏
  • 举报
回复
为了挽回在校大学生的颜面,特发此段代码:
#include<stdio.h>
#include<graphics.h>

#define DOWN 0x5000
#define UP 0x4800
#define ENTER 0x1c0d
#define STU_NUM 10
#define SENTENCE " Number Name English Math Computer History sum average\n"
#define FORMAT "No.%8d%15s%8d%6d%10d%9d%5d%9.2f\n"

struct score
{
int English;
int Math;
int Computer;
int History;
};

struct student
{
int number;
char name[15];
struct score sco;
int sum;
float average;
};

struct Ball
{
int x;
int y;
int direction;
};

typedef struct student STU;

int Menu(void);
void AppendScore(STU *head,int m);
void TotalScore(STU *head,int m);
void PrintScore(STU *head,int m);
void SortScore(STU *head,int m);
void FailScore(STU *head,int m);
void SearchScore(STU *head,int m);
int SearchNum(STU *head,int num,int m);
void Drawball(int x,int y,int color);
void drawmat(char *mat,int matsize,int x,int y,int color);

main()
{
int m,No;
STU stu[STU_NUM];
printf("Input student number(m<=10):");
scanf("%d",&m);
while(1)
{
No=Menu();
switch(No)
{
case 1:AppendScore(stu,m);
TotalScore(stu,m);
break;
case 2:PrintScore(stu,m);
getch();
break;
case 3:FailScore(stu,m);
getch();
break;
case 4:SortScore(stu,m);
PrintScore(stu,m);
getch();
break;
case 5:SearchScore(stu,m);
getch();
break;
case 6:exit(0);
printf("End of program!");
break;
default:printf("Input error!");
break;
}
}
}

int Menu(void)
{
int key,No=1;

struct Ball ball;

char xue16S[]={
0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,
0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,
0x00,0x80,0x7F,0xFE,0x00,0x80,0x00,0x80,
0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00,
};
char sheng16S[]={
0x00,0x80,0x10,0xC0,0x10,0x80,0x10,0x88,
0x1F,0xFC,0x20,0x80,0x20,0x80,0x40,0x88,
0x9F,0xFC,0x00,0x80,0x00,0x80,0x00,0x80,
0x00,0x80,0x00,0x84,0x7F,0xFE,0x00,0x00,
};
char cheng16S[]={
0x00,0xA0,0x00,0x90,0x00,0x80,0x3F,0xFE,
0x20,0x80,0x20,0x80,0x3E,0x88,0x22,0x8C,
0x22,0x48,0x22,0x50,0x22,0x20,0x2A,0x60,
0x44,0x92,0x41,0x0A,0x86,0x06,0x00,0x02,
};
char ji16S[]={
0x10,0x40,0x17,0xFC,0x20,0x40,0x23,0xF8,
0x48,0x40,0xF7,0xFE,0x10,0x00,0x23,0xF8,
0x42,0x08,0xFA,0x48,0x02,0x48,0x02,0x48,
0x18,0xA0,0xE0,0x90,0x01,0x08,0x02,0x08,
};
char guan16S[]={
0x20,0x80,0x3E,0xFC,0x51,0x20,0x8A,0x10,
0x01,0x00,0x7F,0xFE,0x40,0x04,0x1F,0xE0,
0x10,0x20,0x1F,0xE0,0x10,0x00,0x1F,0xF0,
0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
};
char li16S[]={
0x00,0x00,0x03,0xFC,0xFA,0x44,0x22,0x44,
0x23,0xFC,0x22,0x44,0xFA,0x44,0x23,0xFC,
0x22,0x44,0x20,0x40,0x23,0xFC,0x38,0x40,
0xC0,0x40,0x00,0x40,0x0F,0xFE,0x00,0x00,
};
char xi16S[]={
0x00,0x7C,0x3F,0x80,0x02,0x20,0x04,0x20,
0x08,0x40,0x1F,0x80,0x03,0x20,0x0C,0x10,
0x3F,0xF8,0x10,0x8C,0x04,0xA0,0x08,0x90,
0x10,0x88,0x20,0x84,0x42,0x84,0x01,0x00,
};
char tong16S[]={
0x10,0x40,0x10,0x20,0x23,0xFE,0x20,0x40,
0x44,0x40,0xF8,0x88,0x09,0x04,0x13,0xFE,
0x20,0x94,0x7C,0x90,0x00,0x90,0x00,0x90,
0x1D,0x12,0xE1,0x12,0x02,0x0E,0x04,0x00,
};

char str1[]="1.Append record";
char str2[]="2.Total the sum and average";
char str3[]="3.Print the data of the fail";
char str4[]="4.Sort Score in descending order by sum";
char str5[]="5.Search record";
char str0[]="0.Exit";

int driver=VGA,mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(1);
setcolor(4);

setviewport(110,120,529,359,1);
rectangle(0,0,419,239);
setfillstyle(1,14);
floodfill(1,1,14);
setcolor(1);
line(20,50,400,50);
line(20,52,400,52);

drawmat(xue16S,16,139,30,1);
drawmat(sheng16S,16,159,30,1);
drawmat(cheng16S,16,179,30,1);
drawmat(ji16S,16,199,30,1);
drawmat(guan16S,16,219,30,1);
drawmat(li16S,16,239,30,1);
drawmat(xi16S,16,259,30,1);
drawmat(tong16S,16,279,30,1);

settextstyle(1,0,1);
outtextxy(50,80,str1);
outtextxy(50,100,str2);
outtextxy(50,120,str3);
outtextxy(50,140,str4);
outtextxy(50,160,str5);
outtextxy(50,180,str0);

ball.x=30;
ball.y=90;
circle(ball.x,ball.y,10);
setfillstyle(1,1);
floodfill(ball.x,ball.y,1);

while(1)
{
key=bioskey(0);
if(key==UP&&ball.y>100)
{
Drawball(ball.x,ball.y,14);
ball.y-=20;
Drawball(ball.x,ball.y,1);
No--;
}
else if(key==DOWN&&ball.y<180)
{
Drawball(ball.x,ball.y,14);
ball.y+=20;
Drawball(ball.x,ball.y,1);
No++;
}
if(key==ENTER)
{
closegraph();
break;
}
}
return No;
}

void AppendScore(STU *head,int m)
{
STU *p;

printf("Please Input students' data");
for(p=head;p<head+m;p++)
{
printf("\nInput number:");
scanf("%d",&p->number);
printf("Input name:");
scanf("%s",p->name);
printf("Input English:");
scanf("%d",&p->sco.English);
printf("Input Math:");
scanf("%d",&p->sco.Math);
printf("Input Computer:");
scanf("%d",&p->sco.Computer);
printf("Input History:");
scanf("%d",&p->sco.History);
}
}

void TotalScore(STU *head,int m)
{
STU *p;
for(p=head;p<head+m;p++)
{
p->sum=p->sco.English+p->sco.Math+p->sco.Computer+p->sco.History;
p->average=(float)p->sum/4;
}
}

void PrintScore(STU *head,int m)
{
STU *p;

printf(SENTENCE);
for(p=head;p<head+m;p++)
{
printf(FORMAT,p->number,p->name,p->sco.English,p->sco.Math,p->sco.Computer,p->sco.History,p->sum,p->average);
}
}

void SortScore(STU *head,int m)
{
int i,j;
STU temp;

for(i=0;i<m-1;i++)
{
for(j=0;j<m-1-i;j++)
{
if((head+j)->sum<(head+j+1)->sum)
{
temp=*(head+j);
*(head+j)=*(head+j+1);
*(head+j+1)=temp;
}
}
}
}

void FailScore(STU *head,int m)
{
int findNo,flag,i;

flag=0;
for(i=0;i<m;i++)
{
if((head+i)->sco.English<60||(head+i)->sco.Math<60||(head+i)->sco.Computer<60||(head+i)->sco.History<60)
{
findNo=i;
PrintScore(head+findNo,1);
flag=1;
}
}
if(flag==0)
printf("Not found!");
}

void SearchScore(STU *head,int m)
{
int number,findNo;

printf("Please Input the number you want to search:");
scanf("%d",&number);
findNo=SearchNum(head,number,m);
if(findNo==-1)
{
printf("\nNot found!\n");
}
else
{
PrintScore(head+findNo,1);
}
}

int SearchNum(STU *head,int num,int m)
{
int i;

for(i=0;i<m;i++)
{
if((head+i)->number==num) return i;
}
return -1;
}

void Drawball(int x,int y,int color)
{
setcolor(color);
circle(x,y,10);
setfillstyle(1,color);
floodfill(x,y,color);
}

void drawmat(char *mat,int matsize,int x,int y,int color)
{int i,j,k,n;
n=(matsize-1)/8+1;
for(j=0;j<matsize;j++)
for(i=0;i<n;i++)
for(k=0;k<8;k++)
if(mat[j*n+i]&(0x80>>k))
putpixel(x+i*8+k,y+j,color);
}
JK0803_lijixiang 2009-09-15
  • 打赏
  • 举报
回复
好好学习
gx168853 2009-09-15
  • 打赏
  • 举报
回复
六楼强哦!!
huang1317402 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jk0803_lijixiang 的回复:]
好好学习
[/Quote]会的~~
huang1317402 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yeluofanhua 的回复:]
怎么这么多作业呀?!
[/Quote]程序设计哎
yeluofanhua 2009-09-14
  • 打赏
  • 举报
回复
怎么这么多作业呀?!
huang1317402 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 theone11 的回复:]
引用 11 楼 huang1317402 的回复:
引用 9 楼 nwpulei 的回复:
wuyu
WHY?


见4楼的回复吧.课程设计周开始,csdn就一堆求代码的,然后同时又有迷茫求方向,求工作的,在大学里面都不干有意义的事情么?
[/Quote]你知道我自己没有写吗?我只是想看看CSDN上有多少好心人,不要以为求代码的就是不学习的,希望你打破这个思维定势~~
theone11 2009-09-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 huang1317402 的回复:]
引用 9 楼 nwpulei 的回复:
wuyu
WHY?

[/Quote]
见4楼的回复吧.课程设计周开始,csdn就一堆求代码的,然后同时又有迷茫求方向,求工作的,在大学里面都不干有意义的事情么?
huang1317402 2009-09-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 nwpulei 的回复:]
wuyu
[/Quote]WHY?
wenhuahetao 2009-09-11
  • 打赏
  • 举报
回复
注意登陆时
用户名:何涛
密码:123456
nwpulei 2009-09-11
  • 打赏
  • 举报
回复
wuyu
huang1317402 2009-09-11
  • 打赏
  • 举报
回复
非常感谢~~
wenhuahetao 2009-09-11
  • 打赏
  • 举报
回复
我是仓促间完成的
有些功能还来不及
以后帮你补上啊
wenhuahetao 2009-09-11
  • 打赏
  • 举报
回复
完成了
以下为代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "conio.h"
#define LEN sizeof(struct student)
typedef struct student
{
char num[10];
char name[10];
int math,english,computer;
int total;
struct student *next;
}student, *LinkList;
void Login();
void weixiu();
void menu() ;
int Open(LinkList L);
void printstart() ;
void Wrong() ;
void Nofind() ;
void printc();
void getinf(LinkList L);
void orderbyzongfen(LinkList L);
void deleteall(LinkList L);
void Developer();
void Sort(LinkList L);
void Save(LinkList L);
LinkList dingwei(LinkList L,char findmess[],char nameornum[]);
LinkList L;
int main(void)
{


Login();



return 0;
}

/*---------------------------------------------------输入学生成绩并计算-----------------------------------------------------*/
void getinf(LinkList L)
{
LinkList r,s;
r=(LinkList )malloc(LEN);
printf("请输入学号:");
scanf("%s",r->num);
printf("请输入姓名:");
scanf("%s",r->name);
printf("请输入数学成绩:");
scanf("%d",&r->math);
printf("请输入英语成绩:");
scanf("%d",&r->english);
printf("请输入电脑成绩:");
scanf("%d",&r->computer);
r->total=r->math+r->english+r->computer;

s=L->next;
L->next=r;
r->next=s;
printf("追加记录成功!\n");
}





/*------------------------------该函数用于定位连表中符合要求的接点,并返回该指针---------------------------*/
LinkList dingwei(LinkList L,char findmess[],char nameornum[])
{
LinkList r;
if(strcmp(nameornum,"num")==0)
{
r=L->next;
while(r!=NULL)
{
if(strcmp(r->num,findmess)==0)
return r;
r=r->next;
}
r=NULL;
return r;
}
else if(strcmp(nameornum,"name")==0)
{
r=L->next;
while(r!=NULL)
{
if(strcmp(r->name,findmess)==0)
return r;
r=r->next;
}
r=NULL;
return r;
}
else return 0;
}




/*---------------------------------------------删除记录--------------------------------------------------*/
void deleteall(LinkList L)
{

char ch;



printf("确定您要清除文件里所有学生的信息,这样就无法恢复数据了( Y or N )\n");
getchar();
scanf("%c",&ch);
if(ch == 'y' || ch == 'Y')
{
L->next = NULL;
printf("文件里学生成绩信息已经被清除!\n");
}
else return;


}

/*-------------------------------------------------排序记录------------------------------------------------------------*/
void Sort(LinkList L)
{
LinkList p,r,s;
p = L;

r = p ->next;
s = p ->next->next;
while(s != NULL)
{
while(s ->total < p ->next->total)
p = p ->next;
if(p ->next == s)
{
printf("排序已完成!\n");return;
}
else
{
r ->next = s ->next;
s ->next = p ->next;
p ->next = s;
s = r ->next;
p = L;
}
}
printf("排序成功!\n");




}
/*--------------------------------------------------------- 排名---------------------------------------------------*/

void orderbyzongfen(LinkList L)

{
LinkList p;


p=L;
if(p->next!=NULL)
{
printstart();
printc();
for (p=p->next;p!=NULL;p=p->next)
printf("%3s\t%3s\t%5d\t%9d\t%5d\t%7d\n",p->num,p->name,p->math,p->english,p->computer,p->total);
printstart();}
else Nofind();
}


/*-----------------------------------------------------------打开文件--------------------------------------------------------*/
int Open(LinkList L)
{
FILE *fp;
LinkList p1,p2;
char choose;
int count=0;

p1=L;
p1->next=NULL;
fp=fopen("E:\\student_score","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n");
scanf("%c",&choose);
if(choose=='y'||choose=='Y')
{
fp=fopen("E:\\student_score","wb");
printf("文件已创建,请按回车键关闭,然后重新打开软件\n");getchar();getchar();exit(0);
}
else exit(0);
}

p2=(LinkList)malloc(LEN);
while(fread(p2,LEN,1,fp))
{
p2->next=NULL;
p1->next=p2;
p1=p2;
p2=(LinkList)malloc(LEN);
count++;
}
p2->next=NULL;
fclose(fp);

return 1;
}
/*-----------------------------------------------------保存文件----------------------------------------------------*/
void Save(LinkList L)
{
FILE *fp;
LinkList p1;
char choose;
if(L ->next == NULL)
{printf("没有可以保存的信息!\n");
return;}
printf("确认保存?(y/n)\n");
getchar();
scanf("%c",&choose);
getchar();
if(choose == 'y' || choose == 'Y')
{
fp=fopen("E:\\student_score","wb");
p1=L;
p1=p1->next;

while(p1)
{
if(fwrite(p1,LEN,1,fp)==1)
{
p1=p1->next;
}
else
break;

}
fclose(fp);
printf("保存成功!\n");
}
else printf("没有保存!\n");
}

void weixiu()
{
printf("\n\n\n");
printf("\n **************************************************************");
printf("\n ");
printf("\n 欢迎使用成绩管理系统.本系统尚在试用阶段,有问题请与我联系! ");
printf("\n ");

printf("\n 我的qq是 810097972 ");
printf("\n **************************************************************");
}

/*----------------------------------------------------界面函数-------------------------------------------*/
void Login()
{
system("color 5f");
char ch[23];
int i=0;
char mima[45];
L=(LinkList)malloc(LEN);
int sel,count=0;
weixiu();
printf("\n\n\n");
printf("\n请选择您的登陆方式( 1 :管理员 2 :普通用户 )");
scanf("%d",&i);
switch(i)
{
case 1:

system("cls");
weixiu();
printf("\t\t\t\t用户名:");
scanf("%s",ch);
printf("\t\t密码:");
scanf("%s",mima);
if(strcmp(mima,"123456")==0 && strcmp(ch,"何涛")==0)
{
getchar();printf("\n按回车返回主菜单\n");getchar();
system("cls");
}
else
{
printf("您的用户名或密码有误,无法登陆!\n");
exit(0);

}
menu();
Open(L);

for (scanf("%d",&sel);sel!=0;system("cls"),menu(),scanf("%d",&sel))
{
switch (sel)
{
case 1:
getinf(L);
count++;Save(L);getchar();printf("\n按回车返回主菜单\n");getchar();
break;
case 2:Sort(L);orderbyzongfen(L);getchar();printf("\n按回车返回主菜单\n");getchar();
break;

case 3:
deleteall(L);getchar();printf("\n按回车返回主菜单\n");getchar();
count--;
break;

case 4:
Developer();getchar();printf("\n按回车返回主菜单\n");getchar();
break;
case 5:
printf("谢谢使用 !有问题可以与我联系\n\t\tqq810097972\n");
exit(0);
break;
default:
Wrong();getchar();printf("\n按回车返回主菜单\n");getchar();
}
}
break;

case 2:
system("cls");
Open(L);
printf("\n\t\t\t\t1:按高分排序并显示\n\t\t\t\t2:制作人员\n\t\t\t\t3:退出系统\n");
printf("请选择你要的操作:");

for (scanf("%d",&sel);sel!=0;system("cls"),menu(),scanf("%d",&sel))
{
switch (sel)
{

case 1:Sort(L);orderbyzongfen(L);getchar();printf("\n按回车返回主菜单\n");getchar();
break;



case 2:
Developer();getchar();printf("\n按回车返回主菜单\n");getchar();
break;
case 3:
printf("谢谢使用 !有问题可以与我联系\n\t\tqq810097972\n");
exit(0);
break;
default:
Wrong();getchar();printf("\n按回车返回主菜单\n");getchar();
}
}
break;
break;
}

printf("\n |************************************************************|");




}
void menu()
{
printf("\n\t\t\t\t欢迎进入成绩管理系统\t\t\t\n\n\t\t1:输入学生成绩并计算\n\t\t2:按高分排序并显示\n\t\t3:删除数据\n\t\t4:制作人员\n\t\t5:退出系统\n\n选择您要进入的菜单,请输入功能号(0~5):") ; //主界面)

}
void printstart()
{
printf("\n-------------------------------------------------------------------\n");
}
void Wrong()
{
printf("提示:输入错误!\n");
}
void Nofind()
{
printf("提示:没有找到该学生!\n");
}

void Developer()
{
printf("\n\n\n\t\t\t\t\t制作人员:\n\t\t\t\t\t\t ------何涛\n\n\n");
}

void printc()
{
printf("学号\t姓名\t数学成绩 英语成绩 电脑成绩 总分\n");
}

加载更多回复(5)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧