学生选课系统 c语言
- /*********************************
- *主题:学生选修课程系统设计
- *
- *设计要求:
- *1.添加功能:程序能够任意添加课程和学生记录,可提供选择界面供用户选择所需要添加的类别,要求编号要唯一,如果添加了重复编号的记录是,则提示数据添加重复并取消添加。
- *2.查询功能:可根据编号、姓名等信息对已添加的同学和课程记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
- *3.显示功能:可显示当前系统中所有学生和课程的记录,每条记录占据一行。
- *4.编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
- *5.删除功能:主要实现对已添加的学生和课程记录进行删除。如果当前系统中没有对应的记录,则提示“记录为空!”并返回操作。
- *6.统计功能:能根据多种参数进行统计。能统计学生人数、课程门数、选修某门课程的学生的相关信息。
- *
- *********************************/
- /*
- * Verson:2.0(basic)
- *
- * History: 完成课程信息的录入,查询等操作;完成选课功能(2017-05-05 20:30:00-01:20:00)
- *
- * Author:universes
- *
- *
- *********************************/
- /*
- * Verson:1.9
- *
- * History:完成了学生信息的查询操作 (2017-05-04 22:00:32-01:11:00)
- *
- * Author:universes
- *
- *
- ********************************/
- /*
- * Verson:1.5
- *
- * HIstory2:添加查重功能 (2017-05-02 23:39:19-01:06:05)
- * History1:完成了用户对课程和学生信息的添加操作(没有查重功能)(2017-05-02 22:06:13-23:39:19)
- *
- * Author:universes
- *
- *
- ********************************/
- /*
- * Verson:1.0
- *
- * History:完成了用户的选择功能框架(2017-04-19 22:06:13-22:40:47)
- *
- * Author:universes
- *
- *
- ********************************/
- #include <stdio.h>
- #include <malloc.h>
- #include <stdlib.h>
- #include <string.h>
- #define SIZE_STU 10
- #define SIZE_COU 10
- #define SIZE_SEL 10
- //////////////函数声明部分
- void home(void);
- void stu_operate(void);
- void cou_operate(void);
- void statistic(void);
- void choose(void);
- void delete_sel(int);
- //--学生信息部分:
- void input_stu(void);
- void search_stu(void);
- void search_stu_id(void);
- void search_stu_name(void);
- void show_stu(void);
- void edit_stu(void);
- void renew_stu(void);
- void delete_stu(void);
- //--课程信息部分:
- void input_cou(void);
- void search_cou(void);
- void search_cou_id(void);
- void search_cou_name(void);
- void show_cou(void);
- void edit_cou(void);
- void renew_cou(void);
- void delete_cou(void);
- /*学生信息结构体*/
- struct student_info {
- char stu_ID[];
- char stu_name[];
- char sex[];
- char age[];
- char collage[];
- char grade[];
- char contact[];
- }stu[SIZE_STU];
- /*课程信息结构体*/
- struct course_info {
- char course_ID[];
- char course_name[];
- char property[];
- char period[];
- char credit[];
- char time[];
- int people;
- }cou[SIZE_COU];
- /*选课记录结构体*/
- struct select {
- int s;//存放学生信息的数组下标
- int c;//存放课程信息的数组下标
- }sel[SIZE_SEL];
- //全局变量i,j,x分别是学生,课程,选课信息数组下标
- int i = -;
- int j = -;
- int x = -;
- int main(void){
- //进入欢迎界面
- home();
- return ;
- }
- //欢迎界面
- void home(void) {
- printf("\n-------------------------欢迎进入选课系统!----------------------");
- int h;
- printf("\n\n 请选择你要进行的操作:");
- printf("\n\n 1.学生操作");
- printf("\n 2.课程操作");
- printf("\n 3.开始选课");
- printf("\n 4.选课统计");
- printf("\n 5.退出系统");
- printf("\n ");
- printf("\n 请输入:");
- scanf("%d",&h);
- system("cls");
- switch(h){
- case :
- stu_operate();
- break;
- case :
- cou_operate();
- break;
- case :
- choose();
- break;
- case :
- statistic();
- break;
- default:
- system("cls");
- printf("BYE!");
- break;
- }
- }
- /*开始选课*/
- void choose(void){
- char stu_id[],cou_id[];
- printf("\n-------------------------欢迎进入选课系统!----------------------");
- //输入选课学生信息
- printf("\n\n 请输入选课人学号:");
- fflush(stdin);
- scanf("%s",stu_id);
- int h,flag = ;
- for(h = ;h <= i;h++){
- if(strcmp(stu[h].stu_ID,stu_id)==){
- flag = ;
- break;
- } else {
- flag = ;
- }
- }
- if(flag||i==-){
- printf("\n 不存在此学号\n");
- system("pause");
- system("cls");
- home();
- }
- //录入姓名信息
- x++;
- sel[x].s = h;
- //输入课程信息
- printf("\n\n 请输入选修课程号:");
- fflush(stdin);
- scanf("%s",cou_id);
- flag = ;
- for(h = ;h <= j;h++){
- if(strcmp(cou[h].course_ID,cou_id)==){
- flag = ;
- break;
- } else {
- flag = ;
- }
- }
- if(flag||j==-){
- printf("\n 不存在此课程号\n");
- x--;
- system("pause");
- system("cls");
- home();
- }
- //录入课程信息
- sel[x].c = h;
- cou[h].people++;
- printf("\n 录入成功!\n");
- system("pause");
- system("cls");
- home();
- }
- /*删除选课记录*/
- void delete_sel(int q){//删除第q+1条记录
- /*注意!本函数没有将x减1,请在函数外手动减1(考虑外层函数循环的需要)*/
- int h;
- cou[sel[q].c].people--;
- for(h = q;q < x;h++){
- q++;
- sel[h].c = sel[q].c;
- sel[h].s = sel[q].s;
- }
- }
- //对学生记录进行操作
- void stu_operate(void) {
- printf("\n-------------------------欢迎进入选课系统!----------------------");
- printf("\n\n 请选择你要对学生记录进行的操作:");
- printf("\n\n 1.添加");
- printf("\n 2.查询");
- printf("\n 3.显示");
- printf("\n 4.返回主页面");
- printf("\n ");
- printf("\n 请输入:");
- int i;
- scanf("%d",&i);
- system("cls");
- switch(i){
- case ://添加学生信息
- input_stu();
- break;
- case ://查询学生信息
- search_stu();
- break;
- case ://显示所有学生信息
- show_stu();
- break;
- case :
- home();
- break;
- }
- }
- //对课程记录进行操作
- void cou_operate(void) {
- printf("\n-------------------------欢迎进入选课系统!----------------------");
- printf("\n\n 请选择你要对课程记录进行的操作:");
- printf("\n\n 1.添加");
- printf("\n 2.查询");
- printf("\n 3.显示");
- printf("\n 4.返回主页面");
- printf("\n ");
- printf("\n 请输入:");
- int i;
- scanf("%d",&i);
- system("cls");
- switch(i){
- case :
- input_cou();
- break;
- case :
- search_cou();
- break;
- case :
- show_cou();
- case :
- home();
- break;
- }
- }
- //选课信息统计记录
- void statistic(void){
- printf("\n-------------------------欢迎进入选课系统!----------------------");
- printf("\n\n 共有学生信息:%d 条",i+);
- printf("\n 共有课程信息:%d 条",j+);
- if(x == -){
- printf("\n 选课记录:0 条");
- printf("\n\n ");
- system("pause");
- system("cls");
- home();
- } else {
- printf("\n\n 选课记录 %d 条:",x+);
- int m;
- for(m = ;m <= x;m++){
- printf("\n ================");
- printf("\n 第%d条",m+);
- printf("\n 学生学号:%s",stu[sel[m].s].stu_ID);
- printf("\n 学生姓名:%s",stu[sel[m].s].stu_name);
- printf("\n 课程号:%s",cou[sel[m].c].course_ID);
- printf("\n 课程名:%s",cou[sel[m].c].course_name);
- }
- printf("\n\n ");
- system("pause");
- system("cls");
- home();
- }
- }
- //--------------------------------------学生信息插入--------------------------------------
- void input_stu(void){
- char flag;
- FILE * fp;
- //--判断文件是否为空
- fp = fopen("student.txt","r+");
- flag = fgetc(fp);
- if(flag==EOF){
- fprintf(fp,"学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式\n");
- }
- fclose(fp);
- //--
- fp = fopen("student.txt","a+");
- if(fp == NULL){
- printf("打开文件失败!");
- system("cls");
- stu_operate();
- }
- printf("学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式\n");
- while(){
- i++;
- scanf("%s %s %s %s %s %s %s",&stu[i].stu_ID,&stu[i].stu_name,&stu[i].sex,&stu[i].age,&stu[i].collage,&stu[i].grade,&stu[i].contact);
- //--数据查重
- int h;
- for(h = ;h < i;h++){
- if(i == ) break;//第一条数据不需要查重
- if (strcmp(stu[h].stu_ID,stu[i].stu_ID)==) {
- printf("该学号已存在,请重新输入!\n");
- scanf("\n%s %s %s %s %s %s %s",&stu[i].stu_ID,&stu[i].stu_name,&stu[i].sex,&stu[i].age,&stu[i].collage,&stu[i].grade,&stu[i].contact);
- h = -;
- }
- }
- //--
- fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].stu_ID,stu[i].stu_name,stu[i].sex,stu[i].age,stu[i].collage,stu[i].grade,stu[i].contact);
- printf("\n录入成功,继续录入输入y,返回上一级请按任意键:");
- fflush(stdin);
- scanf("%c",&flag);
- fclose(fp);
- if(flag!='y'&&'Y') break;
- fp = fopen("student.txt","a");
- }
- renew_stu();
- system("cls");
- stu_operate();
- }
- /*查询学生信息*/
- void search_stu(void){
- system("cls");
- printf("\n请选择查询方式:");
- printf("\n 1.学号查询");
- printf("\n 2.姓名查询");
- printf("\n请选择:");
- int h;
- scanf(" %d",&h);
- switch(h){
- case :
- search_stu_id();
- break;
- case :
- search_stu_name();
- break;
- }
- }
- /*学号查询*/
- void search_stu_id(void){
- system("cls");
- char id[];
- printf("\n输入学生的学号:");
- fflush(stdin);
- scanf("%s",id);
- int h;
- for(h = ;h <= i;h++){
- if(strcmp(stu[h].stu_ID,id)==){
- system("cls");
- printf("查找成功!");
- printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
- printf("\n\t-----------------------------------------------------------------");
- printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
- system("pause");
- system("cls");
- stu_operate();
- }
- }
- system("cls");
- printf("没有此学号!\n");
- system("pause");
- system("cls");
- stu_operate();
- }
- /*姓名查询*/
- void search_stu_name(void){
- system("cls");
- char name[];
- printf("\n输入学生的姓名:");
- fflush(stdin);
- scanf("%s",name);
- int h;
- for(h = ;h <= i;h++){
- if(strcmp(stu[h].stu_name,name)==){
- system("cls");
- printf("查找成功!");
- printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
- printf("\n\t---------------------------------------------------------");
- printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
- system("pause");
- system("cls");
- stu_operate();
- }
- }
- system("cls");
- printf("没有此姓名!");
- system("pause");
- system("cls");
- stu_operate();
- }
- /*显示所有学生信息*/
- void show_stu(void){
- int h;
- if(i == -){
- printf("\n还没有录入信息!\n");
- system("pause");
- system("cls");
- stu_operate();
- }
- system("cls");
- printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
- printf("\n\t---------------------------------------------------------");
- for(h = ;h <= i;h++){
- printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
- }
- //
- fflush(stdin);
- printf("\n\t1.修改");
- printf("\n\t2.删除");
- printf("\n\t3.返回");
- printf("\n\n 选择要进行的操作:");
- int flag;
- fflush(stdin);
- scanf("%d",&flag);
- switch(flag){
- case :
- edit_stu();
- break;
- case :
- delete_stu();
- break;
- default:
- system("cls");
- stu_operate();
- break;
- }
- }
- /*编辑学生信息*/
- void edit_stu(void){
- printf("\n输入需要编辑的学生的学号:");
- char id[];
- getchar();
- scanf("%s",id);
- int h;
- for(h = ;h <= i;h++){
- if(strcmp(stu[h].stu_ID,id)==){//找到需要编辑的行
- system("cls");
- printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
- printf("\n\t---------------------------------------------------------");
- printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
- printf("\n这是修改前的数据,请依次输入修改值:\n\t");
- fflush(stdin);
- scanf("%s %s %s %s %s %s %s",&stu[h].stu_ID,&stu[h].stu_name,&stu[h].sex,&stu[h].age,&stu[h].collage,&stu[h].grade,&stu[h].contact);
- int k;
- for(k = ;k <= i;k++){
- if(strcmp(stu[k].stu_ID,stu[h].stu_ID)==){
- if(k==h){
- continue;
- } else {//学号不唯一
- printf("\n此学号已存在!重新输入学号:");
- fflush(stdin);
- scanf("%s",&stu[h].stu_ID);
- k = -;
- }
- }
- }
- /*将修改信息写入文件*/
- //思想:将原文件重新写入一遍
- renew_stu();
- system("cls");
- printf("修改成功!\n");
- system("pause");
- system("cls");
- stu_operate();
- }
- }
- printf("\n此学号不存在!\n");
- system("pause");
- system("cls");
- stu_operate();
- }
- /*删除学生信息*/
- void delete_stu(void){
- printf("\n输入需要编辑的学生的学号:");
- char id[];
- getchar();
- scanf("%s",id);
- int h;
- for(h = ;h <= i;h++){
- if(strcmp(stu[h].stu_ID,id)==){//找到需要编辑的行
- system("cls");
- //检查他/她是否选课了
- int a;
- for(a = ;a <= x;a++){
- if(h==sel[a].s){//选课了则将对应课程记录减1,以及选课数组减1
- delete_sel(a);
- a = -;
- x--;
- continue;
- }
- }
- //如果只有一条记录
- if(i==){
- i = -;
- renew_stu();
- printf("修改成功!\n");
- system("pause");
- system("cls");
- stu_operate();
- }
- int k;
- for(k = h+;k <= i;k++,h++){//将数组直接向前移动
- strcpy(stu[h].stu_ID,stu[k].stu_ID);
- strcpy(stu[h].stu_name,stu[k].stu_name);
- strcpy(stu[h].sex,stu[k].sex);
- strcpy(stu[h].grade,stu[k].grade);
- strcpy(stu[h].contact,stu[k].contact);
- strcpy(stu[h].collage,stu[k].collage);
- strcpy(stu[h].age,stu[k].age);
- }
- /*将修改信息写入文件*/
- //思想:将原文件重新写入一遍
- renew_stu();
- i--;
- system("cls");
- printf("修改成功!\n");
- system("pause");
- system("cls");
- stu_operate();
- }
- }
- printf("\n此学号不存在!\n");
- system("pause");
- system("cls");
- stu_operate();
- }
- //--------------------------------------课程信息插入--------------------------------------
- void input_cou(void){
- char flag;
- FILE * fp;
- //--判断文件是否为空
- fp = fopen("course.txt","r+");
- flag = fgetc(fp);
- if(flag==EOF){
- fprintf(fp,"代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数\n");
- }
- fclose(fp);
- //--
- fp = fopen("course.txt","a+");
- if(fp == NULL){
- printf("打开文件失败!");
- system("cls");
- cou_operate();
- }
- printf("代码\t名称\t性质\t总学时\t学分\t开课学期\n");
- while(){
- j++;
- scanf("%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);
- //--数据查重
- int h;
- for(h = ;h < j;h++){
- if(j == ) break;//第一条数据不需要查重
- if (strcmp(cou[h].course_ID,cou[j].course_ID)==) {
- printf("该课程号已存在,请重新输入!\n");
- scanf("\n%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);
- h = -;
- }
- }
- //--
- fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[j].course_ID,cou[j].course_name,cou[j].property,cou[j].period,cou[j].credit,cou[j].time,cou[j].people);
- printf("\n录入成功,继续录入输入y,返回上一级请按任意键:");
- fflush(stdin);
- scanf("%c",&flag);
- fclose(fp);
- if(flag!='y'&&'Y') break;
- fp = fopen("course.txt","a");
- }
- renew_cou();
- system("cls");
- cou_operate();
- }
- /*查询课程信息*/
- void search_cou(void){
- system("cls");
- printf("\n请选择查询方式:");
- printf("\n 1.课程号查询");
- printf("\n 2.课程名查询");
- printf("\n请选择:");
- int h;
- scanf(" %d",&h);
- switch(h){
- case :
- search_cou_id();
- break;
- case :
- search_cou_name();
- break;
- }
- }
- /*课程号查询*/
- void search_cou_id(void){
- system("cls");
- char id[];
- printf("\n输入课程号:");
- fflush(stdin);
- scanf("%s",id);
- int h;
- for(h = ;h <= j;h++){
- if(strcmp(cou[h].course_ID,id)==){
- system("cls");
- printf("查找成功!");
- printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
- printf("\n\t-----------------------------------------------------------------");
- printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
- system("pause");
- system("cls");
- cou_operate();
- }
- }
- system("cls");
- printf("没有此课程号!\n");
- system("pause");
- system("cls");
- cou_operate();
- }
- /*课程名查询*/
- void search_cou_name(void){
- system("cls");
- char name[];
- printf("\n输入课程名:");
- fflush(stdin);
- scanf("%s",name);
- int h;
- for(h = ;h <= j;h++){
- if(strcmp(cou[h].course_name,name)==){
- system("cls");
- printf("查找成功!");
- printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
- printf("\n\t---------------------------------------------------------");
- printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
- system("pause");
- system("cls");
- cou_operate();
- }
- }
- system("cls");
- printf("没有此课程名!");
- system("pause");
- system("cls");
- cou_operate();
- }
- /*显示所有课程信息*/
- void show_cou(void){
- int h;
- if(j == -){
- printf("\n还没有录入信息!\n");
- system("pause");
- system("cls");
- cou_operate();
- }
- system("cls");
- printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
- printf("\n\t-------------------------------------------------------------");
- for(h = ;h <= j;h++){
- printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
- }
- //
- fflush(stdin);
- printf("\n\t1.修改");
- printf("\n\t2.删除");
- printf("\n\t3.返回");
- printf("\n\n 选择要进行的操作:");
- int flag;
- fflush(stdin);
- scanf("%d",&flag);
- switch(flag){
- case :
- edit_cou();
- break;
- case :
- delete_cou();
- break;
- default:
- system("cls");
- cou_operate();
- break;
- }
- }
- /*编辑课程信息*/
- void edit_cou(void){
- printf("\n输入需要编辑的课程号:");
- char id[];
- getchar();
- scanf("%s",id);
- int h;
- for(h = ;h <= j;h++){
- if(strcmp(cou[h].course_ID,id)==){//找到需要编辑的行
- system("cls");
- printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期");
- printf("\n\t-------------------------------------------------------------");
- printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time);
- printf("\n这是修改前的数据,请依次输入修改值:\n\t");
- fflush(stdin);
- scanf("%s %s %s %s %s %s",&cou[h].course_ID,&cou[h].course_name,&cou[h].property,&cou[h].period,&cou[h].credit,&cou[h].time);
- int k;
- for(k = ;k <= j;k++){
- if(strcmp(cou[k].course_ID,cou[h].course_ID)==){
- if(k==h){
- continue;
- } else {//课程号不唯一
- printf("\n此课程号已存在,重新输入:");
- fflush(stdin);
- scanf("%s",&cou[h].course_ID);
- k = -;
- }
- }
- }
- /*将修改信息写入文件*/
- //思想:将原文件重新写入一遍
- renew_cou();
- system("cls");
- printf("修改成功!\n");
- system("pause");
- system("cls");
- cou_operate();
- }
- }
- printf("\n此课程号不存在!\n");
- system("pause");
- system("cls");
- cou_operate();
- }
- /*删除课程信息*/
- void delete_cou(void){
- printf("\n输入需要编辑的课程号:");
- char id[];
- getchar();
- scanf("%s",id);
- int h;
- for(h = ;h <= j;h++){
- if(strcmp(cou[h].course_ID,id)==){//找到需要编辑的行
- system("cls");
- //如果只有一条记录
- if(j==){
- j = -;
- renew_cou();
- printf("修改成功!\n");
- system("pause");
- system("cls");
- cou_operate();
- }
- //查看是否有人选课
- if(cou[h].people!=){//有人选课时
- int a;
- for(a = ;a <= x;a++){
- if(sel[a].c == h){
- delete_sel(a);
- a = -;
- x--;
- continue;
- }
- }
- }
- int k;
- for(k = h+;k <= j;k++,h++){//将数组直接向前移动
- strcpy(cou[h].course_ID,cou[k].course_ID);
- strcpy(cou[h].course_name,cou[k].course_name);
- strcpy(cou[h].property,cou[k].property);
- strcpy(cou[h].period,cou[k].period);
- strcpy(cou[h].credit,cou[k].credit);
- strcpy(cou[h].time,cou[k].time);
- }
- /*将修改信息写入文件*/
- //思想:将原文件重新写入一遍
- renew_cou();
- j--;
- system("cls");
- printf("修改成功!\n");
- system("pause");
- system("cls");
- cou_operate();
- }
- }
- printf("\n此课程号不存在!\n");
- system("pause");
- system("cls");
- cou_operate();
- }
- //--功能函数
- /*更新系统数据至文件*/
- void renew_stu(void){
- FILE * fp;
- fp = fopen("student.txt","w+");
- if(fp == NULL){
- printf("\n打开文件失败,无法保存至文件。\n");
- fclose(fp);
- return ;
- }
- fprintf(fp,"学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式\n");
- if(i == -){
- fclose(fp);
- return;
- }
- int h;
- for(h = ;h <= i;h++){
- fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
- }
- fclose(fp);
- }
- void renew_cou(void){
- FILE * fp;
- fp = fopen("course.txt","w+");
- if(fp == NULL){
- printf("\n打开文件失败,无法保存至文件。\n");
- fclose(fp);
- return ;
- }
- fprintf(fp,"代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数\n");
- if(j == -){
- fclose(fp);
- return;
- }
- int h;
- for(h = ;h <= j;h++){
- fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t\t%s\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people); }
- fclose(fp);
- }
第一次发博客,挺激动的。写的是学生选课系统,也算是自己的第二个小项目,第一个是算术表达式,不怕丢人哈哈,写的过程中都是非常艰难,经常写到一半就写不下去了,因为一开始的构思就是错误的。当然,也谈不上什么构思,就是简单的想了一下大体的方向。所以到后面越来越难做,只好重新修改一遍。包括这次也是如此。以后这方面要小心,一定要先认真的构思一下。也有一部分原因是好久没有写c了,好几个月了,结构体和指针的一些知识都还给老师了,所以这次也算是边写边学了吧,哈哈~
我编程的时间不长,所以这里面肯定有一些错误,或者存在更好的解决方案,欢迎上课!谢谢!
ps:寻找一起学习的小伙伴!
学生选课系统 c语言的更多相关文章
- JAVA | 学生选课系统
这里使用JAVA语言编写的简易的学生选课系统,展现的都是这个系统核心代码. 其中有不足欢迎批评和指正! 链接数据库的代码 package connection;//连接数据库student impor ...
- python开发项目:学生选课系统
程序要求:1.创建北京.上海两所学校(分析:通过学校类实例化两个学校实例) 2.创建Linux.python.go三个课程,Linux\go在北京开,Linux在上海开(创建Linux.python. ...
- 学生选课系统v1.0
最近两天写了下老师课上留的作业:学生选课系统.感觉自己写的特别麻烦,思路特别不清晰,平常自己总会偷懒,一些太麻烦细节的功能就不去实现了,用简单的功能来替代,直到自己这回写完这个系统(但自己写的比较lo ...
- python基础-10 程序目录结构 学生选课系统面向对象练习
一 程序目录结构 1 bin文件夹 二进制文件.代码程序 2 conf 配置文件 3 帮助文档 4 头文件库文件等 二 学生选课系统部分代码 未完待续 1 包内的__init__.py文件 在包 ...
- java web知识点复习,重新编写学生选课系统的先关操作。
为了复习之前学习的相关的html,javaweb等知识.自己有重新编写了一遍学生选课系统. 下面主要展示登录界面的代码,以及各个大的主页面的相关jsp. <%@ page language=&q ...
- 学生选课系统(Java语言期末前测试)
测试具体要求: 2.系统要求与功能设计 2.1 页面要求 (1)能够在Tomcat服务器中正确部署,并通过浏览器查看: (2)网站页面整体风格统一: (3)首页(登录页)要求实现不同用户登录后,进 ...
- 从零开始学Python06作业思路:学生选课系统
一,作业要求 选课系统: 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 学生:用户名.密码.性别.年龄.选课列表[].上课记录{课程1:[di,a,]} ...
- python实现学生选课系统 面向对象的应用:
一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...
- python--面向对象编程之学生选课系统练习
1.系统目录结构 文件夹注解: bin--系统管理员和学生的主程序代码 config--系统的配置文件 db--系统的数据文件 admin--管理员的数据文件 student--学生的数据文件 lib ...
随机推荐
- URL在Tomcat服务器端的servlet解析过程
servlet 是Java中用于运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层. proto ...
- 二维条码扫描模组在肯德基KFC的无纸化点餐解决方案
在如今提倡节约资源的环境下,肯德基在品牌发展中,逐渐实现无纸化点餐,不仅节约了纸质点餐单,而且还具有节约资源的示范作用.而其中二维码扫描模组是这套无纸化点餐方案的重点,在整套设备中,加入二维码扫描模组 ...
- redis的两种安装方法
原:https://www.cnblogs.com/caokai520/p/4409712.html C# Redis 概念 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦 ...
- 基于TensorFlow的手写中文识别(版本一)
具体效果实现: 第一次由于设备问题所以只训练了是一些个简单的字: 第二选了23个字训练了3000在字迹清晰下能够识别: 类似于默,鼠,鼓,这类文字也能识别,由于训练数据的问题,在测试的时候应尽量写在正 ...
- [Python]CentOS - ImportError: No module named '_curses'
网上搜了不少答案, 基本都是说Windows环境下curses包不适用的问题. 作为碰到这个问题的linux用户,实在感到无奈. 起因是在CentOS上部署uwsgi,想要使用uwsgitop来监控. ...
- windows本地用户及组的区别
Administrators(超级管理员组) 用来管理注册用户或者具有一定权限的其他管理员,维护网站的运行. Administrators中的用户对计算机/域有不受限制的完全访问权,分配给该组的默认权 ...
- 全志a20安卓电视盒子安装可道云kodexplorer服务-编译安装php7.3+nginx
可道云真的很强大,安装包很小,功能却很齐全,还可以自定义轻应用如果有手机客户端就更好了 研究了一下,可道云根目录放到外置存储设备(移动硬盘)会更合适,改路径的方法下面有提到上传文件时一个文件会在用户目 ...
- java代码编译与C/C++代码编译的区别
Java编译原理 1.Java编译过程与c/c++编译过程不同 Java编译程序将java源程序编译成jvm可执行代码--java字节码. Java在编译过程中一般会按照以下过程进行: (1)JDK根 ...
- tyflow birth节点
0-50帧,持续出生5颗粒子,若范围为0-0,5颗粒子将在第一帧全部出生 每一帧出生5颗粒子,直到50帧结束 连续发射,在0-500帧范围内,每5颗粒子出生后,继续出生5颗 5颗粒子出生后持续50帧, ...
- ubuntu显卡驱动安装
1.确定显卡型号 网上有些使用lspci | grep -i nvidia可以查看显卡型号,但是我的好像查不到具体型号,如下图. 但是后来我知道了安装的是1080Ti,所以也就明确了型号.驱动在(ht ...