您的位置:首页 > 其它

学生管理系统源码

2015-10-17 17:18 330 查看
学生管理系统源代码

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define LEN sizeof(struct teacher)

struct admin

{

char name[20];

char pw[20];

}admin1,admin2;

struct teacher

{

int id;

int age;

struct teacher *next;

};

//管理员注册函数

int zhuce()

{

FILE *fp;

printf("\t\t请注册管理员\n");

printf("请输入您的注册账户:\n");

scanf("%s",admin1.name);

printf("请输入您的注册密码: \n");

system("stty-echo");

scanf("%s",admin1.pw);

system("sttyecho");

if((fp=fopen("fileguanli.txt","wb"))==NULL)

{

printf("da kai cuowu");

}

if(fwrite(&admin1,sizeof(structadmin),1,fp ) !=1 )

printf("xie ru cuowu\n");

fclose(fp);

return 0;

}

//管理员读取登录函数

int duqu()

{ int i;

FILE *fp;

char name2[20];

char pw2[20];

int ret1=0;

int ret2=0;

int result=0;

if((fp=fopen("fileguanli.txt","rb"))==NULL)

{

printf("请先注册管理员!\n");

}

if(fread(&admin2,sizeof(structadmin),1,fp)!=1)

{

printf("du qu cuo wu\n");

}

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

{

printf("请输入管理员名称:");

scanf("%s",name2);

printf("请输入管理员密码:");

system("stty-echo");

scanf("%s",pw2);

system("stty echo");

ret1 =strcmp(name2,admin2.name);

ret2 =strcmp(pw2,admin2.pw);

if((ret1==0) &&(ret2==0))

{

result = 1;

printf("登录成功\n");

zhujiemian();

break;

}

else

{

result = 0;

printf("帐号或密码错误,请重新输入\n");

}

}

if(i==3)

{

printf("输入次数超过3次,程序退出\n");

exit(0);

}

fclose(fp);

return 0;

}

//管理员操作函数

int admin_operate()

{ void search(struct teacher*head);

struct teacher *creat(int n);

struct teacher *xiugai(structteacher *head);

void cunpan( struct teacher*head);

struct teacher*duquteacher(void);

void xianshi(void);

void duquxianshi();

struct teacher *head;

struct teacher *delete(struct teacher*head,int id);

void print(structteacher *head);

int select = 0;

int n;

while(1)

{

printf("\t\t1:添加老师信息\t\t2:删除老师信息\n\t\t3:修改老师信息\t\t

4:查询老师信息\n\t\t5:显示文件信息\t\t6:保存教师信息\n\t\t7:显示当前信息\t\t8:管理员退出\n");

printf("请选择操作选项:");

scanf("%d",&select);

switch(select)

{

case 1:

printf("请输入添加教师信息的数量:\n");

scanf("%d",&n);

struct teacher*head;

head=creat(n);

break;

case 2:

printf("删除教师信息\n");

struct teacher

{

int id;

int age;

struct teacher*next;

};

int id;

printf("请输入要删除的教师id\n");

scanf("%d",&id);

head=delete(head,id);

break;

case 3:

head=xiugai(head);

printf("修改教师信息\n");

break;

case 4:

search(head);

printf("查找教师信息\n");

break;

case 5:

printf("显示教师信息\n");

duquxianshi();

break;

case 6:

cunpan(head);

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

break;

case 7:

print(head);

break;

case 8:

printf("返回主菜单\n");

return 8;

default:

break;

printf("modifystudent\n");

break;

case 9:

printf("searchstudent\n");

break;

case 10:

break;

}//switch

}//while

}

//主界面函数

int zhujiemian()

{

int select = 0;

int login_retval = 0;

int operate_retval = 0;

system("clear");

while(1)

{ printf("\n");

printf("\n");

printf("\n");

printf("\t\t***********欢迎使用学生管理系统***********\n");

printf("\t\t||\t\t1:管理员操作\t\t||\n\t\t||\t\t

2:教师操作\t\t||\n\t\t||\t\t3:学生操作\t\t||\n\t\t||\t\t4:退出\t\t\t||\n");

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

// system("clear");

printf("\t\t请选择操作选项:");

scanf("%d",&select);

switch(select)

{

case 1:

operate_retval =admin_operate();

break;

case 2:

printf("teacher\n");

break;

case 3:

printf("student\n");

break;

case 4:

printf("系统已经成功退出,谢谢使用!\n");

exit(0);

break;

default:

break;

}//switch

}//while

return 0;

}

// 创建教师链表

struct teacher *creat(int n)

{

int i;

struct teacher *head,*p1,*p2;

head=NULL;

head=p2=(struct teacher * )malloc(LEN);

printf("请输入编号,年龄(按回车键结束输入)\n");

scanf("%d,%d",&p2->id,&p2->age);

for(i=2;i<=n;i++)

{

p1=(struct teacher * )malloc(LEN);

printf("请输入编号,年龄(按回车结束输入)\n");

scanf("%d,%d",&p1->id,&p1->age);

p2->next=p1;

p2=p1;

}

p2->next=NULL;

return(head);

}

//存盘函数

void cunpan( struct teacher *head)

{

FILE *fp;

struct teacher *p;

if((fp=fopen("fileteacher","wb"))==NULL)

{

printf("bu neng da kai wen jian \n");

}

p=head;

while(p!=NULL)

{

if(fwrite(p,LEN,1,fp)!=1)

{

printf("xie ru chu cu\n ");

return;

}

p=p->next;

}

fclose(fp);

}

//打印链表

void print(struct teacher *head)

{

struct teacher *p;

p=head;

printf("\t\t\t\t编号 年龄\n");

while(p!=NULL)

{

printf("\t\t\t\t%d %d\n",p->id,p->age);

p=p->next;

}

}

// 查找函数

void search(struct teacher *head)

{

int id=0;

struct teacher *p=NULL;

struct teacher *q=NULL;

q=p=head;

printf("\t\t\t请输入需要查询的教师ID:");

scanf("%d",&id);

while(p!=NULL)

{

if(p->id==id)

{

printf("\t\t\t编号 年龄\n");

printf("\t\t\t%d %d\n",p->id,p->age);

break;

}

else

{

p=p->next;

}

}

if(p==NULL)

{

printf("\t\t\t\t\t\t\t\t该ID不存在!\n");

}

}

//修改函数

struct teacher *xiugai(struct teacher *head)

{

int select=0;

int age;

struct teacher *p=NULL;

int id=0;

char judge=NULL;

int flag=0;

p=head;

if(head==NULL)

{

printf("\t教师链表为空\n");

return head;

}

p=head;

while(1)

{

printf("\t请输入修改的教师ID:");

scanf("%d",&id);

while(p!=NULL)

{

if(p->id==id)

{

break;

}

p=p->next;

}

if(p==NULL)

{

printf("\t没有这个老师");

}

else

{

while(1)

{

printf("\t编号\t\t年龄\n");

printf("\t\t%d\t%d\n",p->id,p->age);

printf("\t1:编号 2:年龄 3:退出\n");

printf("\t请选择修改的内容");

scanf("%d",&select);

switch(select)

{

case 1:

printf("\t请输入新的编号:");

scanf("%d",&p->id);

break;

case 2:

printf("\t请输入新的年龄:");

scanf("%d",&p->age);

break;

case 3:

flag=1;

break;

default:

break;

}

if(flag)

{

break;

}

printf("\t继续修改(y),退出(n):");

while(getchar()!='\n');

scanf("%c",&judge);

if(judge == 'n')

{

break;

}

else

{

continue;

}

}//while

}

printf("\t是否继续修改新的教师信息(y),退出(n):");

while(getchar()!='\n');

scanf("%c",&judge);

if(judge == 'n')

{

break;

}

else

{

continue;

}

}//while

return head;

}

//读取文件里的 教师信息 并且显示

void duquxianshi()

{

struct teacher *head;

struct teacher *s;

struct teacher *p;

s=NULL;

p=NULL;

FILE *fp;

if ((fp = fopen ("fileteacher","r+")) == NULL)

{

printf ("\t\t\t\t打开教师文件失败!\n");

}

printf("\t\t\t\t正在读取文件...\n");

s=malloc (LEN);

fread (s, LEN, 1, fp);

if (s == NULL)

{

printf ("\t\t\t\t教师文件为空!\n");

head = NULL;

}

head = p = s;

s=s->next;

printf("编号 年龄\n");

printf("%d %d\n",head->id,head->age);

while (!feof (fp))

{

s = malloc (LEN);

if (fread (s,LEN, 1, fp) !=1)

{

free (s);

break;

}

printf("%d %d\n",s->id,s->age);

p->next = s;

p->next = malloc (LEN);

p = s;

}

p->next = NULL;

fclose (fp);

printf("\t\t\t\t已读取教师文件!\n");

}

//删除教师信息

struct teacher *delete(struct teacher *head,int id)

{ int n;

struct teacher *p1,*p2;

if(head==NULL)

{

printf("list isnull\n");

return head;

}

p1=head;

while(id!=p1->id&&p1->next!=NULL)

{

p2=p1;

p1=p1->next;

}

if(id==p1->id)

{

if(p1==head)

{head==p1->next; }

else

p2->next=p1->next;

printf("请输入要删除的编号:%d\n",id);

n=n-1;

}

else printf("%d zhao budao\n",id);

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

return (head);

}

//主函数

int main()

{

int a;

int b;

int select;

system("clear");

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

while(1)

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

printf("\t\t1.注册管理员 2.管理员登录 3.
退出程序 \n");

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

printf("\t\t请选择操作选项:");

scanf("%d",&select);

switch(select)

{

case 1:zhuce();

printf("注册成功!\n");

break;

case 2:duqu();

break;

case 3:

default :

break;

}

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: