计算机综合大作业C语言选课系统.docx
- 文档编号:10889232
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:46
- 大小:215.72KB
计算机综合大作业C语言选课系统.docx
《计算机综合大作业C语言选课系统.docx》由会员分享,可在线阅读,更多相关《计算机综合大作业C语言选课系统.docx(46页珍藏版)》请在冰豆网上搜索。
计算机综合大作业C语言选课系统
东北石油大学
综合应用(c)作业
课程计算机综合应用
题目课程管理系统
院系石油工程学院
专业班级
学生姓名
2014年10月25日
1.系统的功能
(一)管理员:
1.添加功能:
管理员对用户的用户名、密码、用户类型,进行添加工作。
2.修改功能:
管理员对用户的用户名、密码、用户类型,进行修改工作。
3.删除功能:
管理员对用户的用户名、密码、用户类型,进行删除工作。
(二)老师:
1.)添加功能:
老师对课程的添加工作。
2)查询功能:
a.查询全部课程。
b.按照课程的性质(必修或者选修)进行查找并显示。
c.按照课程的编号进行查找并显示。
d.按照课程的学分进行查找并显示。
(三)学生:
1)查询功能:
a查询全部课程。
b.按照课程的性质(必修或者选修)进行查找并显示。
c.按照课程的编号进行查找并显示。
d.按照课程的学分进行查找并显示。
2)选课功能:
必修课学生必选,学生对选修课进行选课。
且选修课学分加必修课学分不少于30分。
已选的选修课放入文件中。
3)退选功能:
学生只能对选修课进行退选,必修课不能退选。
(四)退出系统。
2.界面设计和函数的使用
(1)main函数。
(2)check函数:
检验所输入的类别,用户名和密码是否正确。
(3)she【管理员函数】
管理员调用函数.add,del,edits:
管理员对用户进行添加,删除,编辑的操作。
(4)teacher【教师函数】
教师调用函数addkc;kccxtea【kcxxtea,kccxtea1,kccxtea2,kccxtea3,】依次为教师添加课程,教师查询课程(包括查询全部课程,按照课程名称查询,按照课程性质查询,按照学分查询)
(5),student【学生函数】
学生调用函数
1查询课程函数kccx【kcxx,kccx1,kccx2,kccx3,】
学生查询课程(包括查询全部课程,按照课程名称查询,按照课程性质查询,按照学分查询)
2选课函数choose【调用choosexuanxiu】
必修课学生必选,学生对选修课进行选课。
且选修课学分加必修课学分不少于40分。
已选的选修课放入文件中。
3退课函数tuixuan
学生只能对选修课进行退选,必修课不能退选。
登录界面
管理员界面
教师界面
录入课程界面
查询课程界面
退出系统界面
学生界面
主界面
查询界面
选课界面
查询退课界面
退课界面
3.成员分工
:
choose,choosexuanxiu,tuixuan,cxxx,addkc函数。
:
kccx,kccxtea,kccx2,kccx2tea,kccx3,kcxs函数。
:
kccx1,kccx1tea,kcxs,kcxstea,kccx3tea,kcxstea函数。
:
add,edits,check,del函数及美化工作。
:
main,student,teacher函数及整合工作。
4.程序中的数据结构
1.存放课程信息的结构体
structcouse
{
intnum1;
charname1[20];
intscore;
chartype[20];
};
2.存放用户信息的结构体
structyh
{charname[20];
charpass[10];
intf;
};
5.源代码
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
intM=0;
structcouse//课程信息结构体
{
intnum1;
charname1[20];
intscore;
chartype[20];
};
voidadd()//添加用户
{
charusname[20];
charuspw[10];
intclas;
FILE*fp;
if((fp=fopen("uhn.txt","a"))==NULL)
{
printf("不能打开文件\n");
exit(0);
}
printf("请输入用户名,密码和类别");
gets(usname);
gets(uspw);
scanf("%d",&clas);
getchar();
fprintf(fp,"%s%s%d\n",usname,uspw,clas);
fclose(fp);
}
voiddel(charname[])//删除用户
{structyh
{charname[20];
charpass[10];
intf;
}stdl[100];
FILE*fp;
inti=0,n;
if((fp=fopen("uhn.txt","r"))==NULL)
{printf("不能打开文件\n");
exit(0);
}
while(!
feof(fp))
{fscanf(fp,"%s%s%d",stdl[i].name,stdl[i].pass,&stdl[i].f);
if(strcmp(name,stdl[i].name)!
=0)i++;
}
fclose(fp);
if((fp=fopen("uhn.txt","w"))==NULL)
{printf("不能打开文件\n");
exit(0);
}
for(n=0;n
fprintf(fp,"%s%s%d\n",stdl[n].name,stdl[n].pass,stdl[n].f);
fclose(fp);
}
voidedits(charname[])//修改用户
{structyh
{charname[20];
charpass[10];
intf;
}std1[100];
FILE*fp;
inti=0,n,lb;
charyhm[20],pw[10];
printf("输入修改后的用户名,密码和类别");
gets(yhm);
gets(pw);
scanf("%d",&lb);
if((fp=fopen("uhn.txt","r"))==NULL)
{printf("不能打开文件\n");
exit(0);
}
while(!
feof(fp))
{fscanf(fp,"%s%s%d",std1[i].name,std1[i].pass,&std1[i].f);
if(strcmp(name,std1[i].name)==0)
{strcpy(std1[i].name,yhm);strcpy(std1[i].pass,pw);std1[i].f=lb;}
i++;
}
fclose(fp);
if((fp=fopen("uhn.txt","w"))==NULL)
{printf("不能打开文件\n");
exit(0);
}
for(n=0;n fprintf(fp,"%s%s%d\n",std1[n].name,std1[n].pass,std1[n].f); fclose(fp); } voidshe()//管理员函数 { intsele,mark; charusername[20]; charpassword[10]; printf("\n\t************\n管理员系统\n************\n\n"); printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); printf("┃┃用户管理┃┃\n"); printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf("┃●[1]添加用户┃\n"); printf("┃┃\n"); printf("┃●[2]删除用户┃\n"); printf("┃┃\n"); printf("┃●[3]修改用户┃\n"); printf("┃┃\n"); printf("┃●[0]退出系统┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("请选择: "); do { printf("0-3\n"); scanf("%d",&sele);getchar(); switch(sele) {case1: printf("输入添加用户的信息\n");add();break; case2: printf("输入要删除的用户的信息\n");gets(username);del(username);break; case3: printf("输入要修改的用户信息\n");gets(username);edits(username);break; case0: exit(0); default: printf("0~4\n"); } }while (1); } intcheck(charna[],charpa[],intcl) { charfname[20]; charfpass[10]; FILE*fp; intfound=0,fclas; if((fp=fopen("uhn.txt","r"))==NULL) { printf("不能打开文件\n"); exit(0); } while(! feof(fp)) {fscanf(fp,"%s%s%d",fname,fpass,&fclas); if(strcmp(fname,na)==0&&strcmp(fpass,pa)==0&&fclas==cl) {found=1;break;} } fclose(fp); returnfound; } //添加课程函数 voidaddkc() { FILE*fp;voidteacher(); inti=0,n; structcouses[100]; printf("请输入要录入的课程数\n"); scanf("%d",&n); if((fp=fopen("kecheng.dat","ab+"))==NULL) { printf("不能打开文件\n"); exit(0); } for(i=0;i { printf("\n\t请输入课程编号: "); scanf("%4d",&s[i].num1); printf("\n\t请输入课程名称: "); scanf("%s",s[i].name1); printf("\n\t请输入课程学分: "); scanf("%4d",&s[i].score); printf("\n\t请输入课程课程性质: "); scanf("%s",s[i].type); fwrite(&s[i],sizeof(structcouse),1,fp); } fclose(fp); printf("\t\t\t继续录入课程请按1返回上一页面请按2\t\n"); scanf("%d",&i); switch(i) { case1: addkc();break; case2: teacher();break; } } voidteacher()//教师主页面 {inti; voidaddkc();voidkccxtea(); printf("\n\t************\n老师课程系统\n************\n\n"); printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); printf("┃┃教师管理┃┃\n"); printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf("┃●[1]录入课程┃\n"); printf("┃┃\n"); printf("┃●[2]查询课程┃\n"); printf("┃┃\n"); printf("┃●[3]退出系统┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("请选择: "); scanf("%d",&i); switch(i) { case1: addkc();;break; case2: kccxtea();break; case3: exit(0); } } voidstudent()//学生主页面 {intm,i; voidkccx();voidchoosexuanxiu();voidkcxs();voidtuixuan();voidchoose();voidcxxx(); printf("\n\t************\n学生课程系统\n************\n\n"); printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); printf("┃┃学生主页面┃┃\n"); printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf("┃●[1]课程信息┃\n"); printf("┃┃\n"); printf("┃●[2]查询课程┃\n"); printf("┃┃\n"); printf("┃●[3]学生选课┃\n"); printf("┃┃\n"); printf("┃●[4]查询已选课┃\n"); printf("┃┃\n"); printf("┃●[5]学生退课┃\n"); printf("┃┃\n"); printf("┃●[6]退出系统┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("请选择: "); scanf("%d",&i); switch(i) { case1: kcxs();break; case2: kccx();break; case3: choose();break; case4: cxxx();break; case5: tuixuan();break; case6: exit(0); } } voidkcxstea()//显示所有课程 { FILE*fp; structcousecou; intm; if((fp=fopen("kecheng.dat","rb"))==NULL) {printf("cannotopenthisfile.\n"); exit(0);} while(fread(&cou,sizeof(cou),1,fp)==1) {/*每读取一个结构体数据,分别输出4个成员*/ printf("课程编号: %d",cou.num1); printf("课程名称: %s",cou.name1); printf("课程学分: %ld",cou.score); printf("课程类型: %s\n",cou.type);} fclose(fp); printf("按任何数字返回上一界面\n"); scanf("%d",&m); getchar(); teacher(); } voidkcxs()//显示所有课程 { FILE*fp; structcousecou; intm; if((fp=fopen("kecheng.dat","rb"))==NULL) {printf("cannotopenthisfile.\n"); exit(0);} while(fread(&cou,sizeof(cou),1,fp)==1) {/*每读取一个结构体数据,分别输出4个成员*/ printf("课程编号: %d",cou.num1); printf("课程名称: %s",cou.name1); printf("课程学分: %ld",cou.score); printf("课程类型: %s\n",cou.type);} fclose(fp); printf("按任意数字返回上一界面\n"); scanf("%d",&m); getchar(); student(); } voidkccxtea()//老师课程查询主页面 { inti,m; voidkccx1tea();voidkccx2tea();voidteacher();voidkccx3tea();voidkcxstea(); printf("\n\t************\n老师课程系统\n************\n\n"); printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); printf("┃┃查询主页面┃┃\n"); printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf("┃●[0]查询所有课程┃\n"); printf("┃┃\n"); printf("┃●[1]按课程名称查询┃\n"); printf("┃┃\n"); printf("┃●[2]按课程性质查询┃\n"); printf("┃┃\n"); printf("┃●[3]按课程学分查询┃\n"); printf("┃┃\n"); printf("┃●[4]返回到上一页面┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("请选择: "); scanf("%d",&i); switch(i) { case0: kcxstea();break; case1: kccx1tea();break; case2: kccx2tea();break; case3: kccx3tea();break; case4: teacher();break; } } voidkccx()//学生课程查询主页面 { inti,m; voidkccx1();voidkccx2();voidstudent();voidkccx3();voidkcxs(); printf("\n\t************\n学生课程系统\n************\n\n"); printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); printf("┃┃查询主页面┃┃\n"); printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf("┃●[1]按课程名称查询┃\n"); printf("┃┃\n"); printf("┃●[2]按课程性质查询┃\n"); printf("┃┃\n"); printf("┃●[3]按课程学分查询┃\n"); printf("┃┃\n"); printf("┃●[4]返回到上一页面┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("请选择: "); scanf("%d",&i); switch(i) { case0: kcxs();break; case1: kccx1();break; case2: kccx2();break; case3: kccx3();break; case4: student();break; } } voidkccx1tea()//老师按课程名称查询 { FILE*fp; voidkccxtea(); structcouses[100]; charfeature[10];inti=0,t=0,inp; printf("\n\t************\n老师课程系统\n************\n\n"); printf("请输入所查询的课程名称: "); getchar(); gets(feature); if((fp=fopen("kecheng.dat","rb"))==NULL) { printf("未输入任何信息,请返回进行课程信息录入! "); exit(0); } do { fread(&s[i],sizeof(structcouse),1,fp); if(strcmp(s[i].name1,feature)==0) {t=1; printf("课程编号: %d",s[i].num1); printf("课程名称: %s",s[i].name1); printf("学分: %d",s[i].score); printf("课程性质: %s\n",s[i].type); }i++; }while(! feof(fp)); if(t==0)printf("Nosuchcourse\n"); fclose(fp); printf("\n\t************\n老师课程系统\n************\n\n"); printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); printf("┃┃课程页面┃┃\n"); printf("┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf("┃●[1]返回课程查询页面┃\n"); printf("┃┃\n"); printf("┃●[2]退出程序┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("请选择: "); scanf("%d",&inp); switch(inp) { case1: { kccxtea();break;}//返回的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 综合 作业 语言 选课 系统