⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 programe.c

📁 这是我2005年寒假开学时的C语言程序实践项目,其中包括学生管理系统,员工管理系统,通讯录,图书馆管理系统,机场售票系统五个C程序合成在一起.
💻 C
📖 第 1 页 / 共 4 页
字号:
#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 + -