📄 programe.c
字号:
#define NULL 0
#include<stdio.h>
#include<malloc.h>
#include<math.h>
#define LEN sizeof(struct WORKER)
#include<conio.h>
#include<string.h>
#include<graphics.h>
#include<dos.h>
/*段磊(组长)*/
typedef struct node
{ int num;
char name[9];
int money;
int english;
int math;
int computer;
int average;
struct node *next;
}student_info;
/*该程序的界面*/
char menu()
{
char menu[]={"*******段磊学生管理系统 2006贺岁版********\n\n"
"******************************************\n"
"| |\n"
"| 1.显示学生的基本情况 |\n"
"| 2.添加一个学生记录 |\n"
"| 3.删除一个学生的记录(按学号) |\n"
"| 4.排序并显示学生的平均成绩 |\n"
"| 5.修改一个学生的资料 |\n"
"| 6.保存信息到磁盘 |\n"
"| 7.按学号查询学生情况 |\n"
"| 0.退出系统 |\n"
"| |\n"
"******************************************\n"
"请输入您的选择(0--7):\n"};
char ch;
clrscr();
puts(menu);
ch=getch();
printf("您选择了 %c.\n\n",ch);
if(ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5'&&ch!='6'&&ch!='7'&&ch!='0')
return '8';
else return ch;
}
/*学生的基本情况显示出来*/
void showInfo(student_info *p)
{
student_info *stu;
stu=p->next;
if(stu==NULL)
{
printf("无资料!...");
return;
}
while(stu)
{
printf("**********\n");
printf("学号:%d\n姓名:%s\n奖学金:%d\n英语成绩:%d\n数学成绩:%d\n计算机成绩:%d\n平均成绩:%d\n",stu->num,stu->name,stu->money,stu->english,stu->math,stu->computer,stu->average);
printf("**********\n");
stu=stu->next;
printf("按任意键查看下一个\n");
getch();
}
}
/*添加一个学生的情况*/
void addInfo(student_info *p)
{
student_info *stu,*t;
stu=(student_info *)malloc(sizeof(student_info));
printf("请输入学生信息:\n");
printf("学号:");scanf("%d",&stu->num);
printf("姓名:");scanf("%s",stu->name);
printf("奖学金:");scanf("%d",&stu->money);
printf("英语成绩:");scanf("%d",&stu->english);
printf("数学成绩:");scanf("%d",&stu->math);
printf("计算机成绩:");scanf("%d",&stu->computer);
stu->average=(stu->english+stu->math+stu->computer)/3;
t=p->next;
if(t==NULL)
{
p->next=stu;
stu->next=NULL;
}
else
{
p->next=stu;
stu->next=t;
}
}
/*删除一个学生的资料(按学号)*/
void deleInfo(student_info *p)
{
student_info * stu,*t;
int i,mark=0;
char ch;
t=p;
stu=t->next;
if(stu==NULL)
{
printf("无资料!...");
return;
}
printf("请输入学号:\n");
scanf("%d",&i);
while(stu)
{
if(stu->num==i)
{
printf("确认删除?(确认请按 \"Y\"):\n");
ch=getch();
if(ch=='Y'||ch=='y')
{
printf("请稍等......\n");
t->next=stu->next;
free(stu);
mark=1;
printf("删除学生信息成功!");
}
else return;
}
else
{
t=t->next;
stu=stu->next;
}
}
if(mark==0)
printf("此学号不存在!");
}
/*更新一个学生的基本资料*/
void update(student_info *p)
{
char ch;
clrscr();
printf("您想更新哪项数据:\n");
printf("1.学号||2.姓名||3.奖学金||4.英语成绩||5.数学成绩||6.计算机成绩(1--6)\n(退出0)\n");
while ((ch=getch())!='0')
{
switch(ch)
{
case '1':
printf("请输入新学号:\n");
scanf("%d",&p->num);
printf("您想更新哪项数据:\n");
break;
case '2':
printf("请输入新姓名:\n");
scanf("%s",p->name);
printf("您想更新哪项数据:\n");
break;
case '3':
printf("请输入新奖学金数额:\n");
scanf("%d",&p->money);
printf("您想更新哪项数据:\n");
break;
case '4':
printf("请输入新英语成绩:\n");
scanf("%d",&p->english);
printf("您想更新哪项数据:\n");
break;
case '5':
printf("请输入新数学成绩\n");
scanf("%d",&p->math);
printf("您想更新哪项数据:\n");
break;
case '6':
printf("请输入新计算机成绩:\n");
scanf("%d",&p->computer);
printf("您想更新哪项数据:\n");
break;
default:
printf("您的输入错误!");
break;
}
}
}
void updateInfo(student_info *p)
{
student_info * stu,*t;
int i,mark=0;
t=p;
stu=t->next;
if(stu==NULL)
{
printf("无资料!...");
return;
}
printf("请输入学号:\n");
scanf("%d",&i);
while(stu)
{
if(stu->num==i)
{
update(stu);
mark=1;
return;
}
else
{
t=t->next;
stu=stu->next;
}
}
if(mark==0)
printf("此学号不存在!");
}
/*排序并显示学生的平均成绩*/
void sortInfo(student_info *p)
{
int i=1;
student_info *stu,*t1,*t2;
stu=p;
if(stu->next==NULL)
{
printf("无学生信息!");
return;
}
t1=stu->next;
t2=t1->next;
while(t1)
{
while(t2)
{
if(t1->average<t2->average)
{
stu->next=t2;
t1->next=t2->next;
t2->next=t1;
}
t2=t2->next;
}
t1=t1->next;
stu=stu->next;
}
stu=p->next;
while(stu)
{
printf("--------\n");
printf("第 %d 名为:\n学号:%d\n姓名:%s\n平均成绩:%d\n",i,stu->num,stu->name,stu->average);
printf("--------\n");
stu=stu->next;
i++;
printf("按任意键查看下一个\n");
getch();
}
}
/*保存整个链表信息到文件中*/
void saveInfo(student_info *p)
{
student_info *stu;
FILE *fp;
stu=p->next;
if(stu==NULL)
{
printf("无资料!");
return;
}
fp=fopen("student.txt","wt");
if(fp==NULL)
{
printf("打开文件错误!");
return;
}
if(stu==NULL)
{
printf("无资料!");
fputc('#',fp);
fclose(fp);
return;
}
printf("请稍等......\n");
while(stu)
{
fputc('*',fp);
fprintf(fp,"%d\n%s\n%d\n%d\n%d\n%d\n%d\n",stu->num,stu->name,stu->money,stu->english,stu->math,stu->computer,stu->average);
stu=stu->next;
}
fputc('#',fp);
fclose(fp);
printf("成功保存为文件!\n");
}
/*释放整个链表*/
void freeInfo(student_info *p)
{
student_info *stu,*t;
stu=p->next;
while(stu)
{
t=stu;
stu=stu->next;
free(t);
}
free(p);
}
/*函数从文件中调数据上来*/
void show_file(student_info *stu)
{
FILE *fp;
student_info *p,*q;
char ch;
int i=0;
q=stu;
fp=fopen("student.txt","r");
if(fp==NULL)
{
printf("文件错误!\n按任意键退出!...");
getch();
main();
}
ch=fgetc(fp);
while(ch!='#')
{
p=(student_info *)malloc(sizeof(student_info)); fscanf(fp,"%d\n%s\n%d\n%d\n%d\n%d\n%d\n",&p->num,p->name,&p->money,&p->english,&p->math,&p->computer,&p->average);
q->next=p;
i++;
q=p;
p++;
ch=fgetc(fp);
}
if(i==0)
{
printf("空文件!\n按任意键继续...");
getch();
return;
}
else
{
q->next=NULL;
printf("共有 %d 个学生信息!\n按任意键继续...",i);
getch();
return;
}
}
/*按学号查找学生数据*/
void seleInfo(student_info *p)
{
int i;
printf("请输入学号:\n");
scanf("%d",&i);
while(i!=p->num&&p->next!=NULL)
{
p=p->next;
}
if(i==p->num)
{
printf("**********\n");
printf("学号:%d\n姓名:%s\n奖学金:%d\n英语成绩:%d\n数学成绩:%d\n计算机成绩:%d\n平均成绩:%d\n",p->num,p->name,p->money,p->english,p->math,p->computer,p->average);
printf("**********\n");
getch();
}
else printf("此学号不存在\n");
}
/*退出整个系统*/
char exitSys()
{
char ch;
printf("确认退出?(Y 或 N):");
ch=getchar();
if(ch=='Y'||ch=='y') return '1';
else return '0';
}
/*主函数*/
void Duanlei()
{
char ch,mark;
student_info *p;
p=(student_info *)malloc(sizeof(student_info));
p->next=NULL;
printf("****欢迎进入段磊学生管理系统 2006贺岁版***\n");
show_file(p);
while (ch=menu())
{
switch(ch)
{
case '8':
printf("输入错误!按任意键继续...");
getch();
break;
case '1':
showInfo(p);
printf("\n按任意键继续!...");
getch();
break;
case '2':
addInfo(p);
printf("\n按任意键继续!...");
getch();
break;
case '3':
deleInfo(p);
printf("\n按任意键继续!...");
getch();
break;
case '4':
sortInfo(p);
printf("\n按任意键继续!...");
getch();
break;
case '5':
updateInfo(p);
printf("\n按任意键继续!...");
getch();
break;
case '6':
saveInfo(p);
printf("\n按任意键继续!...");
getch();
break;
case '7':
seleInfo(p);
printf("\n按任意键继续!...");
case '0':
mark=exitSys();
if(mark=='1')
{
saveInfo(p);
freeInfo(p);
main();
}
else break;
}
}
}
/*陈新峰*/
int seat=0;int i;
char *c="next flight leaves in 3 hours\n下一趟班机在三小时以后\n";
Chenxinfeng()
{
char ch;
void outbilla();
void outbillb();
textbackground(1);
printf("\n\n\n 欢迎您使用该软件,本软件为免费软件;如果您对该软件有任何建议请按下列方式联系作者;\n\n");
getch();
clrscr();
for(;seat<10;)
{
textcolor(2);
cprintf("***************************************************************************");printf("\n");
textcolor(128+3);
cprintf("-------------------欢迎进入飞机订票管理系统--------------------------------"); printf("\n");
cprintf("--------------------welcome to this system---------------------------------"); printf("\n");
textcolor(4);
cprintf("***************************************************************************");printf("\n");
textcolor(seat+2);
cprintf("请问您是否吸烟:如果吸烟请键入1;不吸烟请键入2;退出请键入0");printf("\n");
cprintf("smoking---please type 1;nonsmoking---please type 2;");printf("\n");
cprintf("请键入:");
cprintf("please key in:");
scanf("%c",&ch);printf("\n\n");
if(ch=='1') outbilla();
else if(ch=='2') outbillb();
else if(ch=='0') main();
else
{
printf(" 输入出错!!!\n");
printf(" fault!!!");
}
printf("\n\n\n\n\n\n\n");
printf(" 谢谢乘坐此次班机;祝您一路顺风!");
printf("\n");
printf(" good luck to you!!! ");
scanf("%c",&ch);
scanf("%c",&ch);
clrscr();
}
if(seat==10) printf("%s\n\n",c);
main();
}
void outbilla()
{
static int k1=0;
if(k1<5)
{
k1++;seat++;textcolor(k1+10);
cprintf(" 烟区%d号 smoking seat %d",k1,k1);printf("\n");
}
else
{
printf("抱歉,本区人员已满.您是否愿意到无烟区?\n若愿意请键入0.请键入:");printf("\n");
printf("would you like to nonsmoking?if you like,please key in 0\n.please key in:");
scanf("%d",&i);
if(i==0)
{
printf("thank you !!!\n");
outbillb();
}
else printf("%s",c);
}
}
void outbillb()
{
static int k2=5;
if(k2<10)
{
k2++;seat++;textcolor(k2+5);
cprintf(" 无烟区%d号 nonsmoking seat %d",k2,k2);printf("\n");
}
else
{
printf("抱歉,本区人员已满.您是否愿意到烟区?\n若愿意请键入0.请键入:"); printf("\n");
printf("would you like to smoking?if you like,please key in 0.\nplease key in:");
scanf("%d",&i);
if(i==0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -