100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 第一次c语言课程设计——学生选课管理系统

第一次c语言课程设计——学生选课管理系统

时间:2019-08-14 10:31:23

相关推荐

第一次c语言课程设计——学生选课管理系统

本次课程设计是实现了一个简单的学生选课系统,里面分为了学生,老师,管理员三个角色,分别可以通过各自的账号进入各自的系统,执行各自的功能。比如学生只能查询课程信息,查看成绩,根据学分查询,而老师可以录入,修改,打印学生的成绩,还能查看学生信息,管理员则是录入学生、选课、课程信息。

该系统的账号密码,学生信息,选课信息,课程信息全都采用文件保存,且系统只能添加或查询信息,删除则需要自己进入文件删除,并且自己创建文件并和代码放在同一个文件夹下。

下面展示代码

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct sysuser//账号结构

{

char username [20];

char password [8];

};

struct course//课程信息

{

char num[10];/*课程号*/

char name [30];/*课程名*/

int credit;/*学分*/

};

struct student//学生信息

{

char num[12];/*学号*/

char name [10];/*姓名*/

char sex [2];/*性别*/

char subject [30];/*专业*/

};

struct Ccourse//选课信息

{

char num[10];/*课程号*/

char Snum[12];/*学号*/

int grade;/*成绩*/

};

int checkuser (struct sysuser *psu);//检查账户函数

void Students();//学生系统函数

void Teacher();//教师系统函数

void Admin();//管理员系统函数

void rcourse();//查询课程信息函数

void rstudent();//查询成绩函数

void rcredit();//按学分查询函数

void wsg();//录入成绩函数

void resg();//修改成绩函数

void psg();//打印成绩函数

void aws();//录入学生信息函数

void awc();//录入课程信息函数

void ars();//查询学生信息函数

void awCc();//录入选课信息函数

int main()

{

int n,w=1;

int n1;

struct sysuser su;

do//循环实现重复登入

{

system("cls");//清屏

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

printf("\t\t1.登入\n");

printf("\t\t2.退出程序\n\t\t");

scanf("%d",&n1);

if(n1==1)

{

system("cls");

puts("\n\n\t\t**********请登入**********\n\n");

printf("\t\t账号:");

scanf("%s",su.username);//保存账号

printf("\t\t密码:");

scanf("%s",su.password);//保存密码

n=checkuser(&su);

switch(n)

{

case 0:

system("cls");

printf("\n\n\t\t用户不存在或密码错误!\n");

printf("\t\t按任意键返回登入界面\n\t\t");

system("pause");

break;

case 1://进入学生系统

Students();

break;

case 2://进入教师系统

Teacher();

break;

case 3://进入管理员系统

Admin();

break;

}

}

else

{

break;//结束循环

}

}

while(w==1);

return 0;

}

int checkuser (struct sysuser *psu)//检查账户函数

{

FILE *fp;

char usr [30],usr1 [30],pwd [10];

int i,check=0;

strcpy(usr,psu->username);/*储存账号*/

strcpy(pwd,psu->password);/*储存密码*/

strcat(usr," ");strcat(usr,pwd);strcat(usr,"\n");/*连接账号与密码,用于在文件中匹配*/

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

{

if(i==1)

{

if((fp=fopen("stu.txt","a+"))==NULL)/*打开学生密码数据库*/

{

printf("打开文件时发生错误!\n");

exit(0);

}

}

else if(i==2)

{

if((fp=fopen("teacher.txt","a+"))==NULL)/*打开教师密码数据库*/

{

printf("打开文件时发生错误!\n");

exit(0);

}

}

else

{

if((fp=fopen("admin.txt","a+"))==NULL)/*打开管理员密码数据库*/

{

printf("打开文件时发生错误!\n");

exit(0);

}

}

while(!feof(fp))/*遍历判断账号是否合法*/

{

fgets(usr1,30,fp);/*读入一行账户数据字符串到usr1*/

if(strcmp(usr,usr1)==0)/*比较判断usr与usr1是否相同*/

{

check=i;/*储存用户类型数据*/

break;

}

}

if(check!=0)

{

break;

}

fclose(fp);

}

fclose(fp);//关闭文件

return check;//返回用户类型(1:学生,2:教师,3:管理员,0:用户不存在或密码错误)

}

void Students()//学生系统函数

{

int w=1;

char n;

char CH;

do//循环使功能结束后返回菜单

{

system("cls");

printf("\n\n\t\t**********学生菜单**********\n\n");

printf("\t\t1.查询课程信息\n");

printf("\t\t2.查询成绩\n");

printf("\t\t3.按学分查询课程\n");

printf("\t\t4.返回登入界面\n");

CH=getchar();

scanf("%c",&n);

if(n=='1')

{

rcourse();//查询课程函数

}

else if(n=='2')

{

rstudent();//查询成绩函数

}

else if(n=='3')

{

rcredit();//按学分查询函数

}

else

{

break;//结束循环

}

system("pause");

}

while(w==1);

}

void Teacher()//教师系统函数

{

int w=1;

char n;

char CH;

do//循环使功能结束后返回菜单

{

system("cls");

printf("\n\n\t\t**********教师菜单**********\n\n");

printf("\t\t1.录入学生成绩\n");

printf("\t\t2.修改学生成绩\n");

printf("\t\t3.打印学生成绩单\n");

printf("\t\t4.返回登入界面\n\t\t");

CH=getchar();

scanf("%c",&n);

if(n=='1')

{

wsg();//录入成绩函数

}

else if(n=='2')

{

resg();//修改成绩函数

}

else if(n=='3')

{

psg();//打印成绩函数

}

else

{

break;//结束循环

}

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

system("pause");

}

while(w==1);

}

void Admin()//管理员系统

{

int w=1;

char n;

char CH;

do//循环使功能结束后返回菜单

{

system("cls");

printf("\n\n\t\t**********管理员菜单**********\n\n");

printf("\t\t1.录入学生信息\n");

printf("\t\t2.录入课程信息\n");

printf("\t\t3.查询学生信息\n");

printf("\t\t4.录入选课信息\n");

printf("\t\t5.返回登入界面\n\t\t");

CH=getchar();

scanf("%c",&n);

if(n=='1')

{

aws();//录入学生信息函数

}

else if(n=='2')

{

awc();//录入课程信息函数

}

else if(n=='3')

{

ars();//查询学生信息函数

}

else if(n=='4')

{

awCc();//录入选课信息函数

}

else

{

break;//结束循环

}

}

while(w==1);

}

void rcourse()//查询课程信息函数

{

FILE *fp1,*fp2;

struct Ccourse a1;

struct course a2;

int CN1,CN2;

char snum[12];

CN1=CN2=0;/*检查结果变量,初始化为0*/

fp1=fopen("Ccourse.txt","ab+");/*二进制打开文件“Ccourse.txt”读入*/

fp2=fopen("course.txt","ab+");/*二进制打开文件“course.txt”读入*/

system("cls");

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

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

scanf("%s",snum);

while(!feof(fp1))//遍历文件

{

fscanf(fp1,"%s %s %d",a1.num,a1.Snum,&a1.grade);

if(strcmp(a1.Snum,snum)==0)//判断

{

CN1=1;

break;

}

}

if(CN1==1)

{

while(!feof(fp2))//遍历文件寻找对应信息

{

fscanf(fp2,"%s %s %d",a2.name,a2.num,&a2.credit);

if(strcmp(a1.num,a2.num)==0)

{

CN2=1;

break;

}

}

if(CN2==1)

{

printf("\t\t课程名:%s\n\t\t课程号:%s\n\t\t学分:%d\n\t\t",a2.name,a2.num,a2.credit);

}

else

{

printf("\t\t查无课程信息\n\t\t");

}

}

else

{

printf("\t\t查无课程信息\n\t\t");

}

fclose(fp1);

fclose(fp2);

}

void rstudent()//查询成绩函数

{

FILE *fp1;

char snum[12];

int CN1=0;

struct Ccourse a1;

fp1=fopen("Ccourse.txt","rb");

system("cls");

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

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

scanf("%s",snum);

while(!feof(fp1))//遍历文件

{

fscanf(fp1,"%s %s %d\n",a1.num,a1.Snum,&a1.grade);

if(strcmp(a1.Snum,snum)==0)

{

CN1=1;

break;

}

}

if(CN1==1)

{

printf("\t\t你的成绩:%d\n\t\t",a1.grade);

}

else

{

printf("\t\t查无成绩\n\t\t");

}

fclose(fp1);

}

void rcredit()//按学分查询函数

{

FILE *fp1;

int credit;

int CN1=0;

struct course a1;

fp1=fopen("course.txt","rb");

system("cls");

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

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

scanf("%d",&credit);

while(!feof(fp1))//遍历文件

{

fscanf(fp1,"%s %s %d\n",a1.name,a1.num,&a1.credit);

if(credit==a1.credit)

{

CN1=1;

break;

}

}

if(CN1==1)

{

printf("\t\t课程:%s\n\t\t",a1.name);

}

else

{

printf("\t\t查无课程\n\t\t");

}

fclose(fp1);

}

void wsg()//录入学生成绩函数

{

system("cls");

char Snum[12];

FILE *fp1,*fp2;

int n;

int CN1=0;

char grade[3];

struct Ccourse a1;

printf("\n\n\t\t**********录入成绩**********\n\n\t\t");

printf("1.按学号录入\n\t\t");;

printf("2.返回教师菜单\n\t\t");

scanf("%d",&n);

if(n==1)

{

system("cls");

fp1=fopen("Ccourse.txt","rb+");

printf("\n\n\t\t**********录入成绩**********\n\n\t\t");

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

scanf("%s",&Snum);

while(!feof(fp1))//遍历文件

{

fscanf(fp1,"%s %s %d\n",a1.num,a1.Snum,&a1.grade);

if(strcmp(a1.Snum,Snum)==0)//比较找出对应信息

{

CN1=1;

break;

}

}

if(CN1==1)

{

system("cls");

printf("\n\n\t\t**********录入成绩**********\n\n\t\t");

printf("学号:%s\n",Snum);

printf("\t\t课程号:%s\n",a1.num);

printf("\t\t请输入成绩:");

scanf("%s",grade);

fseek(fp1,-10L,1);

fprintf(fp1,"%s %s %s\n",a1.num,a1.Snum,grade);//写入文件

printf("\t\t已录入");

}

else

{

system("cls");

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

printf("学号不存在");

}

fclose(fp1);

}

}

void resg()//修改学生成绩

{

system("cls");

char Snum[12];

char grade[3];

struct Ccourse a1;

FILE *fp1;

int CN1=0;

fp1=fopen("Ccourse.txt","rb+");

printf("\n\n\t\t**********修改成绩**********\n\n\t\t");

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

scanf("%s",&Snum);

while(!feof(fp1))//遍历文件

{

fscanf(fp1,"%s %s %d\n",a1.num,a1.Snum,&a1.grade);

if(strcmp(a1.Snum,Snum)==0)//找出对应账号

{

CN1=1;

break;

}

}

if(CN1==1)

{

system("cls");

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

printf("学号:%s\n",Snum);

printf("\t\t课程号:%s\n",a1.num);

printf("\t\t当前成绩:%d\n",a1.grade);

printf("\t\t请输入修改后成绩:");

scanf("%s",grade);

fseek(fp1,-10L,1);

fprintf(fp1,"%s %s %s\n",a1.num,a1.Snum,grade);//写入文件

printf("\t\t已修改");

}

else

{

system("cls");

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

printf("学号不存在");

}

fclose(fp1);

}

void psg()//打印学生成绩

{

system("cls");

char Snum[12];

struct Ccourse a1;

struct student a2;

FILE *fp1,*fp2;

int CN1,CN2;

CN1=CN2=0;

fp1=fopen("Ccourse.txt","rb");

fp2=fopen("student.txt","rb");

printf("\n\n\t\t**********打印学生成绩**********\n\n\t\t");

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

scanf("%s",&Snum);

while(!feof(fp1))

{

fscanf(fp1,"%s %s %d",a1.num,a1.Snum,&a1.grade);

if(strcmp(a1.Snum,Snum)==0)

{

CN1=1;

break;

}

}

if(CN1==1)

{

while(!feof(fp2))

{

fscanf(fp2,"%s %s %s %s\n",a2.name,a2.num,a2.sex,a2.subject);

if(strcmp(a1.Snum,a2.num)==0)

{

CN2=1;

break;

}

}

if(CN2==1)

{

system("cls");

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

printf("姓名:%s\n",a2.name);

printf("\t\t学号:%s\n",Snum);

printf("\t\t课程号:%s\n",a1.num);

printf("\t\t成绩:%d\n",a1.grade);

}

else

{

printf("\n查无成绩信息\n\t\t");

}

}

else

{

printf("\n查无成绩信息\n\t\t");

}

fclose(fp1);

fclose(fp2);

}

void aws()//录入学生信息函数

{

system("cls");

FILE *fp1;

int w=1;

struct student a1;

fp1=fopen("student.txt","ab+");

do

{

system("cls");

printf("\n\n\t\t**********录入学生信息**********\n\n\t\t");

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

scanf("%s",a1.num);

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

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

printf("\t\t请输入性别:");

scanf("%s",a1.sex);

printf("\t\t请输入课程名:");

scanf("%s",a1.subject);

fprintf(fp1,"%s %s %s %s\n",a1.name,a1.num,a1.sex,a1.subject);

printf("\t\t已录入\n\t\t1.继续录入\n\t\t2.结束录入\n\t\t");

scanf("%d",&w);

}

while(w==1);

fclose(fp1);

}

void awc()//录入课程信息函数

{

system("cls");

FILE *fp1;

int w=1;

struct course a1;

fp1=fopen("course.txt","ab+");

do

{

printf("\n\n\t\t**********录入课程信息**********\n\n\t\t");

printf("请输入课程名:");

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

printf("\t\t请输入课程号:");

scanf("%s",a1.num);

printf("\t\t请输入学分:");

scanf("%d",&a1.credit);

fprintf(fp1,"%s %s %d\n",a1.name,a1.num,a1.credit);

printf("\t\t已录入\n\t\t1.继续录入\n\t\t2.结束录入\n\t\t");

scanf("%d",&w);

}

while(w==1);

fclose(fp1);

}

void ars()//查询学生信息函数

{

system("cls");

FILE *fp1;

int w=1;

int CN1;

struct student a1;

char snum[12];

fp1=fopen("student.txt","ab+");

do

{

CN1=0;

system("cls");

printf("\n\n\t\t**********查询学生信息**********\n\n\t\t");

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

scanf("%s",snum);

while(!feof(fp1))

{

fscanf(fp1,"%s %s %s %s\n",a1.name,a1.num,a1.sex,a1.subject);

if(strcmp(a1.num,snum)==0)

{

CN1=1;

break;

}

}

if(CN1==1)

{

printf("\t\t姓名:%s\n",a1.name);

printf("\t\t学号:%s\n",a1.num);

printf("\t\t性别:%s\n",a1.sex);

printf("\t\t课程:%s\n",a1.subject);

}

else

{

printf("\t\t查无信息\n");

}

printf("\t\t已查询\n\t\t1.继续查询\n\t\t2.结束查询\n\t\t");

scanf("%d",&w);

rewind(fp1);

}

while(w==1);

fclose(fp1);

}

void awCc()//录入选课信息函数

{

FILE *fp1,*fp2,*fp3;

struct student a1;

struct course a2;

struct Ccourse a3;

fp1=fopen("student.txt","ab+");

fp2=fopen("course.txt","ab+");

fp3=fopen("Ccourse.txt","wb");

while(!feof(fp1))

{

fscanf(fp1,"%s %s %s %s\n",a1.name,a1.num,a1.sex,a1.subject);

while(!feof(fp2))

{

fscanf(fp2,"%s %s %d\n",a2.name,a2.num,&a2.credit);

if(strcmp(a1.subject,a2.name)==0)

{

strcpy(a3.Snum,a1.num);

strcpy(a3.num,a2.num);

fprintf(fp3,"%s %s %s\n",a3.num,a3.Snum,"000");

}

}

rewind(fp2);

}

fclose(fp1);

fclose(fp2);

fclose(fp3);

printf("\n\n\t\t已录入\n\t\t");

system("pause");

}

此为学习一学期C语言后写的程序,不能说很好,只能说也顺利的帮自己过了课程设计,也有些冗余,希望多多改进

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。