c语言大学生医疗信息系统,C语言(学员管理系统)

这是一个C语言编写的学员管理系统,具备管理员和普通用户两种登录模式。管理员可以进行学员信息的录入、修改、删除、排序、查找和保存,而普通用户只能浏览学员信息。系统实现了对学员学号、姓名、三门成绩及平均成绩的管理,并提供了降序和升序排列功能。
摘要由CSDN通过智能技术生成

7eb3e0672a919999a084342368b079a6.png

0cc6569450afffd4f975b5309e397c0a.png

0cc6569450afffd4f975b5309e397c0a.png

0cc6569450afffd4f975b5309e397c0a.png

0cc6569450afffd4f975b5309e397c0a.png

0cc6569450afffd4f975b5309e397c0a.png

0cc6569450afffd4f975b5309e397c0a.png

ed8fc638cd806b02029203b45a148a24.png

C语言(学员管理系统)

2014-10-10

/**************************************************************************

北大青鸟学员管理系统。。

此程序可实现以管理员方式操作学员的学号,姓名,三门成绩,以及平均成绩的录入,

读取,删除,排序,查找,保存功能。并提供普通帐户对学员信息的浏览。

***************************************************************************/

#include

#include

#include

int count=0,flag;           //定义两个全局变量,count为总录入人数。flag为一个标记

char ch;             //定义一个全局字符变量,为程序经常执行“是否继续”输入

struct student            //声明一个结构体,并作为全局变量。

{

char num[5];           //学号

char name[30];           //姓名

float score[3];           //三门课程成绩

float pinjun;           //平均成绩

}stu[50];             //声明结构数组可存放50名学生

void denglu();            //选择登录函数

void administrator();          //管理员界面

void guess();            //普通帐户界面

void input();            //录入函数

void charu();            //插入函数

void xiugai();            //修改函数

void del();             //删除函数

void output();            //显示函数

void jiang();            //降序排列函数

void sheng();            //升序排列函数

void find();            //查找函数

void exit1();            //退出函数

void jilu();            //读取上次记录

void read_count();           //读取总人数值

void save_count();           //保存总人数值

void read();            //读取学员信息

void save();            //保存学员信息

void main()             //主函数

{

denglu();            //主函数中调用登录函数

}

void denglu()            //登录函数

{

char admin[30],pass[20];        //字符数组分别用于存放用户名,密码

char pass1[20]="123456";        //字符串用于存放默认密码

int i,j;            //统计数组下标

/***********************************登录前界面***********************************************/

printf("\n\n\n\n\t\t\t★★★★★★★★★★★★★★★");

printf("\n\n\t\t\t★    学 员 管 理 系 统     ★\n\n\t\t\t★★★★★★★★★★★★★★★\t\t\t\t\n\n\n");

printf("\t﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉\n");

getch();

do{

printf("\n\n\t\t\t1:管理员帐户\n\t\t\t2:普通帐户\n\t\t\t0:退出程序\n\n\t\t\t");

printf("\n\t\t\t请选择登录类型:");

fflush(stdin);

ch = getchar();

switch(ch)            //分支实现用户输入的功能

{

case '1':          //选择管理员登录

printf("\n\t\t\t请输入用户名:");

fflush(stdin);

gets(admin);

fflush(stdin);

printf("\n\t\t\t请输入密码:");

i=0;

/*以下用于输入密码,从键盘得到一个符并赋给字符数组。同时打印一个*号。直到遇\n结束。*/

do{

fflush(stdin);

ch=getch();

pass=ch;

if(ch!=13)

{

printf("*");

}

i++;

}while(ch!=13);

/* 以下用于判断密码是否为管理员密码,将用户输入密码串与系统内设密码相比,

相等则继续,否则跳出  ,同时返回一个j的值                                           */

for(j=0;j<6;j++)

{

if(pass[j]==pass1[j])

continue;

else

break;

}

if((j==6)&&(strcmp(admin,"admin")==0)&&(i==7))  //判断用户名,密码是否为管理员。

{

printf("\n\t\t\t登录中请稍等");

for(i=0;i<6;i++)

{

Sleep(500);

printf(".");

}

system("cls");        //系统清屏

printf("\n登录成功,当前是管理员账户."); //成功登录

administrator();       //调用管理员界面函数

}

if((strcmp(pass,pass1)!=0)||(strcmp(admin,"admin")!=0))  //用户名,密码错误,则跳出重新选择

{

printf("\n\t\t\t用户名或密码错误,请重新选择");

break;

}

case '2':               //分支实现用户输入的功能:游客

printf("\n\t\t\t将以普通帐户登录");

for(i=0;i<6;i++)           //循环控制输出系统等待时间

{

Sleep(500);

printf(".");

}

system("cls");            //清屏

printf("\n登录成功,当前是普通帐户.");

guess();             //调用普通帐户界面函数

case '0':               //分支实现用户输入的功能:退出

/******************************退出时显示界面***********************************************/

system("cls");

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

printf("\n\t\t\t关于学员成绩管理系统\n");

Sleep(800);

printf("\n\t\t\t作者 赛思特组\n");

Sleep(800);

printf("\n\t\t\t组员:汪波 王勃 张小惠 李承檬 田庆康\n");

Sleep(800);

printf("\n\t\t\t特别鸣谢:北大青鸟清河中心\n");

Sleep(800);

printf("\n\t\t\t北大青鸟TS111班 2008-5-19\n");

Sleep(800);

printf("\n\t\t\tCopyright(C)2008\n");

Sleep(800);

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

printf("正在退出请稍候");

for(i=0;i<6;i++)            //循环控制退出等待时间

{

Sleep(500);

printf(".");

};

system("cls");             //清屏

printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t成功退出!\n\n\t\t\t\t谢谢使用!\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

exit(0);              //终止程序

default:               //若用户输入错误。则跳出继续循环。

{

printf("\n\t\t\t输入错误!");

continue;

}

}

}while(ch!='1'||ch!='2');              //判断用户输入不为1或者2时执行循环

}

void administrator()                //管理员函数

{

char sel;                  //字符变量,控制选择降序或者升序

int i;

jilu();                   //调用函数,询问用户是否读取上次操作记录。

do{

/************************管理员主界面*******************************/

printf("\n\n\t\t\t〖\t学 员 管 理 系 统\t〗\t\n");

printf("\n\t\t≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈\n");                //提示信息

printf("\n\t\t︴\t\t1: 录入新学员信息\t\t︴");

printf("\n\n\t\t︴\t\t2: 插入新学员信息\t\t︴");

printf("\n\n\t\t︴\t\t3: 修改学员信息  \t\t︴");

printf("\n\n\t\t︴\t\t4: 删除学员信息  \t\t︴");

printf("\n\n\t\t︴\t\t5: 查看学员信息  \t\t︴");

printf("\n\n\t\t︴\t\t6: 顺序排列学员  \t\t︴");

printf("\n\n\t\t︴\t\t7: 查找学员      \t\t︴");

printf("\n\n\t\t︴\t\t8: 保存所有信息  \t\t︴");

printf("\n\n\t\t︴\t\t0: 退出          \t\t︴\n");

printf("\n\t\t≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈\n");

printf("\n请选择您要进行的操作(0-8): ");        //操作选择

fflush(stdin);

ch = getchar();

switch(ch)                //分支实现各项功能

{

case '1': system("cls");input();system("cls");continue;   //调用记录函数 并清屏

case '2': system("cls");charu();system("cls");continue;   //调用插入函数 并清屏

case '3': system("cls");xiugai();system("cls");continue;  //调用修改函数 并清屏

case '4': system("cls");del();system("cls");continue;   //调用删除函数 并清屏

case '5':

system("cls");

output();            //调用显示函数 并清屏

system("cls");

continue;

case '6':

system("cls");

printf("\n程序将按成绩排序:\n\na:降序\t\tb:升序\n\n请选择:");

fflush(stdin);

sel = getchar();

if(sel=='a'||sel=='A')            //选择成绩降序,则调用降序函数

{

jiang();

output();

}

else if(sel=='b'||sel=='B')           //选择成绩升序,则调用降序函数

{

sheng();

output();

}

system("cls");

continue;

case '7': system("cls");find();system("cls");continue;   //调用查找函数

case '8':

system("cls");

printf("\n正在保存,请稍候!");

for(i=0;i<6;i++)         //循环控制输出系统等待。。。。。。

{

Sleep(500);

printf(".");

}

save();              //调用保存函数

printf("\n保存成功。\n");

printf("\n任意键继续!");

fflush(stdin);

ch = getch();

continue;

case '0':

printf("是否保存当前更改?(y/n)");

fflush(stdin);

ch = getchar();

if(ch=='y'||ch=='Y')

{

printf("\n正在保存,请稍候!");

for(i=0;i<6;i++)         //循环控制输出系统等待。。。。。。

{

Sleep(500);

printf(".");

}

save();

printf("\n保存成功。\n");

exit1();

system("cls");

}

else{

exit1();

system("cls");

}

continue;            //退出函数

default:

{

printf("\n输入错误!请重新输入\n");      //提示选择错误的信息

flag=1;             //使标记值为真并跳出switch 执行下次循环

break;

}

}

}while(1);

}

void guess()                  //普通帐户函数

{

int flag=1;                  //定义检查标记

char sel;                  //字符变量,控制选择降序或者升序

printf("\n\n\n\n\t\t\t〖\t学 员 管 理 系 统\t〗\t\n");

do{

/*****************************普通帐户主界面**********************************/

printf("\n\n\t\t≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈\n");                //提示信息

printf("\n\t\t︴\t\t1: 查看学员信息  \t\t︴");

printf("\n\n\t\t︴\t\t2: 顺序排列学员  \t\t︴");

printf("\n\n\t\t︴\t\t3: 查找学员      \t\t︴");

printf("\n\n\t\t︴\t\t0: 退出          \t\t︴\n");

printf("\n\t\t≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈\n");

printf("\n\n\n请选择您要进行的操作(0-3): "); //操作选择

fflush(stdin);

ch = getchar();

printf("\n--------------------------------------\n");

switch(ch)                  //分支实现用户输入各项功能

{

case '1': system("cls");output();system("cls");continue;    //调用显示函数

case '2':                //实现排序

system("cls");

{

printf("\n程序将按成绩排序:\n\na:降序\t\tb:升序\n\n请选择:");

fflush(stdin);

sel = getchar();

if(sel=='a')             //选a则实现降序

{

jiang();

output();             //调用降序函数后调用显示函数

}

else if(sel=='b')            //选b则实现升序

{

sheng();

output();             //调用降序函数后调用显示函数

}

system("cls");

continue;

}

case '3': system("cls");find();system("cls");continue;     //调用查找函数

case '0': exit1();system("cls");continue;        //退出

default:

{

printf("\n输入错误!请重新输入\n");        //提示选择错误的信息

flag=1;               //使标记值为真并跳出switch

system("cls");

continue;

}

}

}while(flag=1);

}

void input()                   //录入函数

{

int i=0,j;                   //i控制结构数组元素,j 为标记

float s=0;

printf("\n请输入学员信息:\n");

do{

float s=0;                  //初始化总成绩为0

do{

printf("请输入学号:");

fflush(stdin);

gets(stu[count].num);              //接收用户输入学号

for(i=0;i

{

if(strcmp(stu.num,stu[count].num)==0)        //判断用户输入学号是否已经存在结构数组中

{

printf("\n学号已存在,请重新输入!\n");

j=1;               //标记为1

break;               //存在则跳出内循环。

}

else

j=0;                //否则标记为0

}

}while(j==1);                 //判断标记为1时执行循环

printf("请输入姓名:");

fflush(stdin);                 //接收输入姓名

gets(stu[count].name);

for(j=0;j<3;j++)                //循环接收三门课程成绩并累加和

{

fflush(stdin);

printf("请输入第%d门成绩:",j+1);

scanf("%f",&stu[count].score[j]);

s=s+stu[count].score[j];

}

stu[count].pinjun = s/3;              //求平均成绩

count++;

printf("是否继续录入?(y/n)");

fflush(stdin);

ch = getchar();

}while(ch=='y'||ch=='Y');               //循环是否继续

save();                    //执行录入完后保存

}

void charu()                   //插入函数

{

int i=0,j;                   //i,j控制下标

float s=0;                   //s存放累加和并初始化为0

printf("\n插入前学员信息:\n");              //显示插入前信息

output();                   //调用显示函数

printf("\n请插入学员信息:\n");              //执行插入

do{

float s=0;

do{

printf("请输入学号:");

fflush(stdin);

gets(stu[count].num);

for(i=0;i

{

if(strcmp(stu.num,stu[count].num)==0)        //判断学号是否已经存在,如存在,则跳出执行下次循环。

{

printf("\n学号已存在,请重新输入!\n");

flag=1;               //标记为1

break;

}

else

flag=0;                //否则标记为0

}

}while(flag==1);                //标记为1时继续循环

printf("请输入姓名:");

fflush(stdin);

gets(stu[count].name);

for(j=0;j<3;j++)               //循环控制三门成绩输入

{

fflush(stdin);

printf("请输入第%d门成绩:",j+1);

scanf("%f",&stu[count].score[j]);

s+=stu[count].score[j];             //累加和

}

stu[count].pinjun = s/3;              //求平均值

count++;                  //每插入一名学员,人数加1

printf("是否继续插入?(y/n)");

fflush(stdin);

ch = getchar();

}while(ch=='y'||ch=='Y');               //判断是否继续

printf("\n插入后学员信息:\n");              //显示插入后学员信息  --调用降序函数--调用显示函数

jiang();

output();                   //插入后显示

save();                    //保存

}

void xiugai()                  //修改函数

{

char xiu[5];                 //定义一个字符串,用于查找结构体学号成员

int i,j;

float s = 0;                 //总成绩S

do{

printf("\n请输入要修改的学员学号:");

fflush(stdin);

gets(xiu);

for(i=0;i<=count;i++)              //循环用于查找学号

{

if(strcmp(xiu,stu.num)==0)          //如果用户输入学号在结构体中查到。则执行

{                 //此时下标i正好指向要修改的元素

printf("\n 请选择要修改的部分\n");        //选择修改内容。

printf("\n 1: 学号");

printf("\n 2: 姓名");

printf("\n 3: 成绩");

printf("\n请选择: ");

fflush(stdin);

ch=getchar();

switch(ch)              //分支用于选择

{

case '1':

do{

printf("\n请输入新的学号: ");      //修改学号

fflush(stdin);

gets(stu.num);

for(j=0;j

{

if((ji)&&(strcmp(stu[j].num,stu.num)==0))  //判断学号是否已经存在,如存在,则跳出执行下次循环。

{

printf("\n学号已存在,请重新输入!\n");

flag=1;        //标记为1

break;

}

else

flag=0;         //否则标记为0

}

}while(flag==1);

break;

case '2':            //修改姓名

printf("\n请输入新的姓名: ");

fflush(stdin);

gets(stu.name);

break;

case '3':            //修改成绩并重新计算平均值

for(j=0,s=0;j<3;j++)

{

fflush(stdin);

printf("请输入第%d门成绩:",j+1);

scanf("%f",&stu.score[j]);

s+=stu.score[j];

}

stu.pinjun = s/3;

break;

default:

printf("\n没有此项操作!\n");

flag=1;           //标记

}

if(flag!=1)              //如果有操作,,则提示修改成功

{

printf("\n 修改成功!该学员修改后的信息如下\n");

printf("学号\t姓名\tc成绩\tj成绩\ts成绩\t平均成绩\n");

printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2],stu.pinjun);

break;

}

}

if(strcmp(xiu,stu.num)!=0)          //如果未找到学号,则继续执行循环

{

continue;

}

}

if(i>count)                 //如果下标越界,则未找。

{

printf("没找到此学号\n");

}

printf("是否继续修改?(y/n)");

fflush(stdin);

ch = getchar();

}while(ch=='Y'||ch=='y');              //循环是否继续

save();                   //保存

}

void del()                   //删除函数

{

char dell[5];                 //定义字符串,用于查找学号

int i;                   //i为下标

struct student temp;               //声明一个结构体。用于作容器

do{

printf("\n请输入要删除的学员学号:");

fflush(stdin);

gets(dell);

for(i=0;i<=count;i++)              //循环查找学员学号,找着则退出循环

{

if(strcmp(dell,stu.num)==0)

{

break;

}

}

if(i>count)                 //如果下标越界,则说明未找以。

{

printf("\n找不到这个学员!\n");

}

if(i<=count)                //提示找到, ,询问是否删除

{

printf("\n是否要删除%s号学员的信息(Y/N):",stu.num);

fflush(stdin);

ch = getchar();

if(ch=='Y'||ch=='y')

{

for(;i

{

temp = stu;          //删除某个学员,并把后面元素前移一位。

stu= stu;

stu= temp;

}

count--;             //总人数-1

printf("删除成功\n");

}

}

printf("是否继续删除?(y/n)");

fflush(stdin);

ch = getchar();

}while(ch=='Y'||ch=='y');              //判断是否继续

save();                   //保存

}

void output()                  //显示函数

{

int i;                   //定义I为下标

if(count>0)                  //如果 有录入记录,则显示相关信息

{

printf("\n\t\t\t学员信息:\n\n");

printf("学号\t姓名\tc成绩\tj成绩\ts成绩\t平均成绩\n");

for(i=0;i

{

printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2],stu.pinjun);

}

}

else                  //否则说明文件无记录

{

printf("\n文件中无任何信息!\n");

}

printf("\n任意键退出查看!");

fflush(stdin);

ch = getch();

}

void jiang()                  //降序函数

{

int i,j;                  //i控制大循环。j控制小循环

struct student temp;               //定义一个结构体容器

for(i=0;i

{

for(j=0;j

{

if(stu[j].pinjun

{

temp = stu[j];

stu[j] = stu[j+1];

stu[j+1] = temp;

}

}

}

}

void sheng()                  //升序函数

{

int i,j;                  //i控制大循环。j控制小循环

struct student temp;               //定义一个结构体容器

for(i=0;i

{

for(j=0;j

{

if(stu[j].pinjun>stu[j+1].pinjun)        //如果第一个元素大于第二个,则交换位置,然后下标后移一位

{

temp = stu[j];

stu[j] = stu[j+1];

stu[j+1] = temp;

}

}

}

}

void find()                   //查找函数

{

char s[5];                  //定义一个数组,用于查找学号

int i;

printf("\n请输入要查找的学员学号:");

fflush(stdin);

gets(s);

for(i=0;i

{

if(strcmp(s,stu.num)==0)            //如果学号一样,则显示输出。

{

printf("该学员信息如下:\n");

printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");

printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2],stu.pinjun);

break;

}

}

if(i>=count)                 //如果下标越界未找着相同的,则显示没找到。

{

printf("没找到该学号\n");

}

printf("\n\n按任意键返回\n");

fflush(stdin);

ch = getch();                 //控制画面停顿

}

void exit1()                  //退出函数

{

int i;                   //i 为计数器

printf("\n\n正在退出,请稍等");

for(i=0;i<6;i++)                //循环控制输出系统等待。。。。。。

{

Sleep(500);

printf(".");

}

system("cls");                 //清屏

printf("\n\t\t\t\t\t成功退出");

denglu();                  //返回登录界面

}

void read_count()                 //读取总人数值

{

FILE *reade_Count;

if((reade_Count=fopen("count.txt","r"))!=NULL)

{

fscanf(reade_Count,"%d",&count);

}

fclose(reade_Count);

}

void save_count()                 //保存总人数值

{

FILE *write_count;

write_count = fopen("count.txt","w");

fprintf(write_count,"%d",count);

fclose(write_count);

}

void read()                   //读取学员信息

{

struct student stu1;

FILE *fp;

int i;

if((fp=fopen("student.txt","r"))==NULL)

{

printf("文件中无记录,按任意键新建\n");

fflush(stdin);

ch=getch();

}

else

{

printf("\n读取成功,正在进入");

for(i=0;i<6;i++)         //循环控制输出系统等待。。。。。。

{

Sleep(500);

printf(".");

}

read_count();

for(i=0;i

{

fscanf(fp,"%s%s%f%f%f%f",stu.num,stu.name,&stu.score[0],&stu.score[1],&stu.score[2],&stu.pinjun);

}

fclose(fp);

}

}

void save()                   //保存学员信息

{

FILE *fp;                  /*FILE4个字母都要大写*/

int i;

fp=fopen("student.txt","w");

for(i=0;i<50;i++)

{

fprintf(fp,"%s %s %f %f %f %f ",stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2],stu.pinjun);

}

fclose(fp);

save_count();

}

void jilu()

{

int i;

FILE *fp;

if((fp=fopen("student.txt","r"))!=NULL)

{

printf("\n\n是否读取上次记录?(y/n)");

fflush(stdin);

ch = getchar();

if(ch=='Y'||ch=='y')

{

printf("\n读取中,请稍候");

for(i=0;i<6;i++)         //循环控制输出系统等待。。。。。。

{

Sleep(500);

printf(".");

}

read();

}

}

else

{

return;

}

}

赞赏

f1f51b96aec10983863b826c21c20ae3.png

f1f51b96aec10983863b826c21c20ae3.png

f1f51b96aec10983863b826c21c20ae3.png

f1f51b96aec10983863b826c21c20ae3.png

共11人赞赏

本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值