文档库 最新最全的文档下载
当前位置:文档库 › C语言学生选课管理系统

C语言学生选课管理系统

本程序所有代码均由我们组的学霸手工打造,不存在与其他代码相同的情况。

代码是由C语言写成的,多用于后三章的内容,

数据的保存用的是文件录入的方式(就是创建文本文件保存数据)
优点是开关机后数据仍在,(即使答辩的时候换机器,只要把事前创建好的文件拷贝过去就行了,数据仍在)

课程数据和学生登录密码的数据存放在不同的文件夹内,
具体文件路径如下:
本程序所有代码均由我们组的学霸手工打造,不存在与其他代码相同的情况。

代码是由C语言写成的,多用于后三章的内容,

数据的保存用的是文件录入的方式(就是创建文本文件保存数据)
优点是开关机后数据仍在,(即使答辩的时候换机器,只要把事前创建好的文件拷贝过去就行了,数据仍在)

课程数据和学生登录密码的数据存放在不同的文件夹内,
具体文件路径如下:
课程信息(包括管理员输入的课程信息和浏览、查询用的信息)
F:\\file\\file.txt(之所以用\\而不是\,是因为在C中\ 代表转义字符,要输出一个\就必须用\\)
学生登录密码(管理员的密码程序设定好的123,学生帐号1001也是程序设定好的)
F:\\file\\file1.txt(这个密码需要在代码运行前设置好,就相当于初始密码,否则登录不进来)
学生选课信息(学生选课的情况查询模块)
F:\\file\\file4.txt(所有课程信息都是在程序运行时录入的,不需提前设置)

文件的路径可以在代码中进行更改,但同时记得提前在设置的路径创建好文件。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define size 2
struct course
{
char code[10];
char name[10];
char type[10];
char total[10];
char cla[10];
char experi[10];
char credict[10];
char term[10];
}cour[size];

struct student
{
char number[10];
char course[10];
char code[10];
}student[2]={"1001"};


void save() //存入文件
{
FILE*fp; //定义指向一个文件的指针
int i;
if((fp=fopen("F:\\file\\file.txt","wb"))==NULL)
{
printf("无法打开此文件\n");
exit(0);
}

for(i=0;i<size;i++)
if(fwrite(&cour[i],sizeof(struct course),1,fp)!=1)
printf("error\n");
fclose(fp);
}



void input_infor() //输入信息
{ void save();
void main_menu();
int i;

system("cls");
printf("information:\n课程编号 课程名称 课程类型 总学时 授课学时 上机学时 学分 开课学期\n");

for(i=0;i<size;i++)
{
scanf("%s%s%s%s%s%s%s%s",cour[i].code,cour[i].name,cour[i].type,cour[i].total,cour[i].cla,cour[i].experi,cour[i].credict,cour[i].term);


}
save();
system("cls");
printf("\n\n\n\n 录入信息成功!\n");
printf("
***********************");
printf("\n\n\n\n\n按任意键跳转到主菜单:");
getch();
system("cls");

}



void look_infor() //浏览信息
{
FILE*fp;
int i;
system("cls");
if((fp=fopen("F:\\file\\file.txt","rb"))==NULL)
{
printf("error\n");
exit(0);
}
printf("课程编号 课程名称 课程类型 总学时 授课学时 上机学时 学分 开课学期\n");
for(i=0;i<size;i++)

{
fread(&cour[i],sizeof(struct course),1,fp);


printf("%-4s %10s %10s %8s %8s %8s %8s %8s\n",cour[i].code,cour[i].name,cour[i].type,cour[i].total,cour[i].cla,cour[i].experi,cour[i].credict,cour[i].term);
}
fclose(fp);
printf("\n\n\n\n\n按任意键跳转到主菜单:");
getch(); //暂停程序,按任意键继续
system("cls");

}



void menu_1()
{
printf("\n\n");
printf("\t 欢 迎 进 入 学 生 选 课 系 统 \t\t\n");
printf("\t *********************************************************\t\t\n\n\n\n\n\n");
printf("\t 1 - 管 理 者 进 入 \t\t\n\n");
printf("\t 2 - 学 生 进 入 \n\n\n");
printf("\t 3 - 退 出 系 统 \n\n\n\n ");
}

void menu_2()
{
printf("\n\n\n 管理者界面\n");
printf(" ****************\n\n\n\n\n\n");
printf("\t\t 1- 信 息 输 入 \n\n");
printf("\t\t 2- 信 息 浏 览 \n\n\n");
printf("\t\t 3- 信 息 查 询 \n\n");
printf("\t\t 4- 退 出 系 统 \n\n\n");

}

void menu_3()
{
printf("\n\n\n 学生界面\n");
printf(" ******************\n\n\n\n\n");
printf("\t\t 1 - 信 息 浏 览 2 - 信 息 查 询 \n\n\n");
printf("\t\t 3 - 学 生 选 课 4-学生选课情况浏览 \n\n\n");
printf("\t\t 5 - 修 改 密 码 6- 退 出 系 统 \n\n\n");
}




void change_code()
{
FILE*fp;
char code[10],newcode[10];
int a;
int x=0,int i=3,int y=0;
loop4: printf("*请输入原来的密码:");
x=0;
while((code[x]=getch())!='\r')
{if(code[x]=='\b')
{printf("\b \b");
x--;}
else {putchar('*');
x++;}
}

code[x]='\0';
printf("\n*请输入你的新密码:");
y=0;
while((newcode[y]=getch())!='\r')
{if(newcode[y]=='\b')
{printf("\b \b");
y--;}
else {putchar('*');

y++;}
}

newcode[y]='\0';

if(strcmp(code,student[0].code)==0)
{
strcpy(student[0].code,newcode);


if((fp=fopen("F:\\file\\file1.txt","wb"))==NULL) //将修改后的密码存入文件
{
printf("无法打开此文件\n");
exit(0);
}
fwrite(&student[0].code,sizeof(struct student),1,fp);

fclose(fp);



system("c
ls");
printf("\n\n\n密码修改成功!\n");
printf("****************\n\n\n\n\n\n");
printf("按任意键返回主菜单\n");
getch();
system("cls");
}

else
{
system("cls");
printf("原密码输入不正确!\n");
printf("*********************");

printf("\n\n\n\n\n继续修改请输入1\n");
printf("退出返回主菜单请输入2\n\n\n\n");

printf("请输入你的操作:");
scanf("%d",&a);
switch(a)
{
case 1:system("cls");goto loop4;
case 2:system("cls");
}
}
}









void search() //课程信息查询
{ void put_infor();
int a;
int i;
char min[10],kind[10],grade[10],no[10],date[10];

system("cls");

L1: printf("\n\n\t\t**********请选择查询方式*************\n");
printf("\n\t\t\t1---按课程编号查找\n");
printf("\n\t\t\t2---按课程名称查找\n");
printf("\n\t\t\t3---按课程性质查找\n");
printf("\n\t\t\t4---按课程学分查找\n");
printf("\n\t\t\t5---按开课学期查找\n");
printf("\n\t\t\t6---退出查找\n");
printf("\n\n\t\t**************************************\n");
printf("\n\nChoose your number(1-6):[ ]\b\b");
scanf("%d",&a);

switch(a)
{
case 1:system("cls");
printf("输入要查找的课程的编号:");
scanf("%s",no);
put_infor();
printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n");
for(i=0;i<size;i++)
{
if(cour[i].code!=NULL&&strcmp(no,cour[i].code)==0)
{
printf("%-4s %10s %10s %8s %8s %8s %8s %8s\n",cour[i].code,cour[i].name,cour[i].type,cour[i].total,cour[i].cla,cour[i].experi,cour[i].credict,cour[i].term);
}
}
getch();
system("cls");
goto L1;

case 2:system("cls");
printf("请输入要查找的课程的名称:");
scanf("%s",min);
put_infor();
printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n");
for(i=0;i<size;i++)
{
if(cour[i].name!=NULL&&strcmp(min,cour[i].name)==0)
{
printf("%-4s %10s %10s %8s %8s %8s %8s %8s\n",cour[i].code,cour[i].name,cour[i].type,cour[i].total,cour[i].cla,cour[i].experi,cour[i].credict,cour[i].term);
}
}
getch();


system("cls");
goto L1;

case 3:system("cls");
printf("请输入要查找的课程的性质:");
scanf("%s",kind);
put_infor();
printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n");
for(i=0;i<size;i++)
{
if(cour[i].type!=NULL&&strcmp(kind,cour[i].type)==0)
{
printf("%-4s %10s %10s %8s %8s %8s %8s %8s\n",cour[i].code,cour[i].name,cour[i].type,cour[i].total,cour[i].cla,cour[i].experi,cour[i].credict,cour[i].term);
}
}


getch();
system("cls");
goto L1;

case 4:system("cls");
printf("输入要查找的课程的学分:");
scanf("%s",grade);
put_infor();
printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n");
for(i=0;i<size;i++)
{
if(cour[i].credict!=NULL&&strcmp(grade,cour[i].credict)==0)
{
printf("%-4s %10s %10s %8s %8s %8s %8s %8s\n",cour[i].code,cour[i].name,cour[i].type,cour[i].total,cour[i].cla,cour[i].experi,cour[i].credict,cour[i].term);
}
}

getch();
system("cls");
goto L1;


case 5:system("cls");
printf("输入要查找的课程的开课学期:");
scanf("%s",date);
put_infor();
printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n");
for(i=0;i<size;i++)
{
if(cour[i].term!=NULL&&strcmp(date,cour[i].term)==0)
{
printf("%-4s %10s %10s %8s %8s %8s %8s %8s\n",cour[i].code,cour[i].name,cour[i].type,cour[i].total,cour[i].cla,cour[i].experi,cour[i].credict,cour[i].term);
}
}

getch();
system("cls");
goto L1;

case 6:system("cls");break;
}
}


void put_infor() // 从文件中导出信息
{
FILE*fp;
int i;
if((fp=fopen("F:\\file\\file.txt","rb"))==NULL)
{
printf("error\n");
exit(0);
}
for(i=0;i<size;i++)

{
fread(&cour[i],sizeof(struct course),1,fp);
}

fclose(fp);
}


void choose() //选课
{
FILE*fp;
char n[10];
int i;

printf("请输入要选课程的编号:");
scanf("%s",n);
put_infor();

for(i=0;i<size;i++)
{
if(strcmp(n,cour[i].code)==0)
{

printf("\t\t\n*****选修成功!****\n");


printf("你的选修课程信息如下:\n");

printf("\n课程编号 课程名称 课程类别 总学时 授课学时 上机学时 学分 开课学期\n");

printf("%-4s %10s %10s %8s %8s %8s %8s %8s\n",cour[i].code,cour[i].name,cour[i].type,cour[i].total,cour[i].cla,cour[i].experi,cour[i].credict,cour[i].term);

if((fp=fopen("F:\\file\\file4.txt","wb"))==NULL)
{
printf("无法打开此文件\n");
exit(0);
}
if(fw

rite(&cour[i],sizeof(struct course),1,fp)!=1)
printf("error\n");
fclose(fp);
}
}

getch();
system("cls");
}


void course()
{
FILE*fp;
int i;
system("cls");
if((fp=fopen("F:\\file\\file4.txt","rb"))==NULL)
{
printf("error\n");
exit(0);
}

printf("\n\n\n你的选修课如下:\n");
printf("*******************\n\n\n\n\n");

printf("课程编号 课程名称 课程类型 总学时 授课学时 上机学时 学分 开课学期\n");

fread(&cour[i],sizeof(struct course),1,fp);

printf("%-4s %10s %10s %8s %8s %8s %8s %8s
\n",cour[i].code,cour[i].name,cour[i].type,cour[i].total,cour[i].cla,cour[i].experi,cour[i].credict,cour[i].term);

fclose(fp);
printf("\n\n\n\n\n按任意键跳转到主菜单:");
getch(); //暂停程序,按任意键继续
system("cls");

}




void main()
{
FILE*fp;
int n,n1,n2;
int x=0;
int i=3;
char a[10],b[10]={'1','2','3'};

loop1: menu_1();

printf("请输入你的操作:");
scanf("%d",&n1);

switch(n1)
{
case 1:system("cls");
printf("\n\n\n*请输入你的密码:");


loop5: x=0;
while((a[x]=getch())!='\r')
{if(a[x]=='\b')
{printf("\b \b");
x--;}
else {putchar('*');
x++;}
}

a[x]='\0';
//getch();
if(strcmp(a,b)==0)
{
loop2: system("cls");
menu_2();
printf("\n\n\n\n请输入你的操作:");
scanf("%d",&n2);
switch(n2)
{
case 1:input_infor();goto loop2;
case 2:look_infor();goto loop2;
case 3:search();goto loop2;
case 4:system("cls");printf("\n\n\n\n\n 谢 谢 使 用 该 系 统 !\n ********************************\n\n\n");exit(0);

}
}
else
{if(i>1)
{
system("cls");
printf("\n\nError! You only have %d times! Enter again:\n",i-1);
i--;

goto loop5; }
else
system("cls");
{printf("you have Enter 3 times!\n"); //输入密码超过了3次!!
exit(0); //自动退出}
}

}

case 2: system("cls");
loop4: printf("\n\n\n\n 请登录:\n");
printf(" *************");
printf("\n\n\n\n\n 请输入你的学号:");
scanf("%s",student[1].number);
printf("\n\n\n\n\n 请输入你的密码:");


if((fp=fopen("F:\\file\\file1.txt","rb"))==NULL)
{
printf("error\n");
exit(0);
}

fread(&student[0].code,sizeof(struct student),1,fp);

fclose(fp);
x=0;
while((student[1].code[x]=getch())!='\r')
{
if(student[1].code[x]=='\b')
{
printf("\b \b");
x--;
}
else
{
putchar('*

9;);
x++;
}
}
student[1].code[x]='\0';

if(strcmp(student[1].code,student[0].code)==0)
{
system("cls");

loop3: menu_3();

printf("\n\n请输入你的操作:\n");
scanf("%d",&n);
system("cls");


switch(n)
{

case 1:look_infor();goto loop3;

case 2:search();goto loop3;


case 3:choose();goto loop3;

case 4:course();goto loop3;

case 5:change_code();goto loop3;

case 6:system("cls");printf("\n\n\n\n\n 谢 谢 使 用 该 系 统 !\n ********************************\n\n\n");exit(0);

}
}
else
{
if(i>1)
{
system("cls");
printf("\n\nError! You only have %d times! Enter again:\n",i-1);
i--;
goto loop4;
}
else
{
// system("cls");
printf("\n\n\n\n\n\nyou have Enter 3 times!\n");//输入密码超过了3次!!
printf("***************************\n\n\n\n\n\n");
exit(0); //自动退出}
}
}
case 3:system("cls");printf("\n\n\n\n\n 谢 谢 使 用 该 系 统 !\n ********************************\n\n\n");exit(0);

}
}









相关文档
相关文档 最新文档