C語(yǔ)言實(shí)現(xiàn)學(xué)生選修課程系統(tǒng)設(shè)計(jì)
本文實(shí)例為大家分享了C語(yǔ)言學(xué)生選修課程系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
我編程的時(shí)間不長(zhǎng),所以這里面肯定有一些錯(cuò)誤,或者存在更好的解決方案,歡迎大神上課!謝謝!
ps:尋找一起學(xué)習(xí)的小伙伴!
代碼:
/*********************************
*主題:學(xué)生選修課程系統(tǒng)設(shè)計(jì)
*
*設(shè)計(jì)要求:
*1.添加功能:程序能夠任意添加課程和學(xué)生記錄,可提供選擇界面供用戶選擇所需要添加的類別,要求編號(hào)要唯一,如果添加了重復(fù)編號(hào)的記錄是,則提示數(shù)據(jù)添加重復(fù)并取消添加。
*2.查詢功能:可根據(jù)編號(hào)、姓名等信息對(duì)已添加的同學(xué)和課程記錄進(jìn)行查詢,如果未找到,給出相應(yīng)的提示信息,如果找到,則顯示相應(yīng)的記錄信息。
*3.顯示功能:可顯示當(dāng)前系統(tǒng)中所有學(xué)生和課程的記錄,每條記錄占據(jù)一行。
*4.編輯功能:可根據(jù)查詢結(jié)果對(duì)相應(yīng)的記錄進(jìn)行修改,修改時(shí)注意編號(hào)的唯一性。
*5.刪除功能:主要實(shí)現(xiàn)對(duì)已添加的學(xué)生和課程記錄進(jìn)行刪除。如果當(dāng)前系統(tǒng)中沒(méi)有對(duì)應(yīng)的記錄,則提示“記錄為空!”并返回操作。
*6.統(tǒng)計(jì)功能:能根據(jù)多種參數(shù)進(jìn)行統(tǒng)計(jì)。能統(tǒng)計(jì)學(xué)生人數(shù)、課程門數(shù)、選修某門課程的學(xué)生的相關(guān)信息。
*
*********************************/
/*
* Verson:2.0(basic)
*
* History: 完成課程信息的錄入,查詢等操作;完成選課功能(2017-05-05 20:30:00-01:20:00)
*
* Author:universes
*
*
*********************************/
/*
* Verson:1.9
*
* History:完成了學(xué)生信息的查詢操作 (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:完成了用戶對(duì)課程和學(xué)生信息的添加操作(沒(méi)有查重功能)(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
//////////////函數(shù)聲明部分
void home(void);
void stu_operate(void);
void cou_operate(void);
void statistic(void);
void choose(void);
void delete_sel(int);
//--學(xué)生信息部分:
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);
/*學(xué)生信息結(jié)構(gòu)體*/
struct student_info {
char stu_ID[9];
char stu_name[5];
char sex[9];
char age[9];
char collage[9];
char grade[9];
char contact[9];
}stu[SIZE_STU];
/*課程信息結(jié)構(gòu)體*/
struct course_info {
char course_ID[9];
char course_name[9];
char property[9];
char period[9];
char credit[9];
char time[9];
int people;
}cou[SIZE_COU];
/*選課記錄結(jié)構(gòu)體*/
struct select {
int s;//存放學(xué)生信息的數(shù)組下標(biāo)
int c;//存放課程信息的數(shù)組下標(biāo)
}sel[SIZE_SEL];
//全局變量i,j,x分別是學(xué)生,課程,選課信息數(shù)組下標(biāo)
int i = -1;
int j = -1;
int x = -1;
int main(void){
//進(jìn)入歡迎界面
home();
return 0;
}
//歡迎界面
void home(void) {
printf("\n-------------------------歡迎進(jìn)入選課系統(tǒng)!----------------------");
int h;
printf("\n\n 請(qǐng)選擇你要進(jìn)行的操作:");
printf("\n\n 1.學(xué)生操作");
printf("\n 2.課程操作");
printf("\n 3.開(kāi)始選課");
printf("\n 4.選課統(tǒng)計(jì)");
printf("\n 5.退出系統(tǒng)");
printf("\n ");
printf("\n 請(qǐng)輸入:");
scanf("%d",&h);
system("cls");
switch(h){
case 1:
stu_operate();
break;
case 2:
cou_operate();
break;
case 3:
choose();
break;
case 4:
statistic();
break;
default:
system("cls");
printf("BYE!");
break;
}
}
/*開(kāi)始選課*/
void choose(void){
char stu_id[10],cou_id[10];
printf("\n-------------------------歡迎進(jìn)入選課系統(tǒng)!----------------------");
//輸入選課學(xué)生信息
printf("\n\n 請(qǐng)輸入選課人學(xué)號(hào):");
fflush(stdin);
scanf("%s",stu_id);
int h,flag = 0;
for(h = 0;h <= i;h++){
if(strcmp(stu[h].stu_ID,stu_id)==0){
flag = 0;
break;
} else {
flag = 1;
}
}
if(flag||i==-1){
printf("\n 不存在此學(xué)號(hào)\n");
system("pause");
system("cls");
home();
}
//錄入姓名信息
x++;
sel[x].s = h;
//輸入課程信息
printf("\n\n 請(qǐng)輸入選修課程號(hào):");
fflush(stdin);
scanf("%s",cou_id);
flag = 0;
for(h = 0;h <= j;h++){
if(strcmp(cou[h].course_ID,cou_id)==0){
flag = 0;
break;
} else {
flag = 1;
}
}
if(flag||j==-1){
printf("\n 不存在此課程號(hào)\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條記錄
/*注意!本函數(shù)沒(méi)有將x減1,請(qǐng)?jiān)诤瘮?shù)外手動(dòng)減1(考慮外層函數(shù)循環(huán)的需要)*/
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;
}
}
//對(duì)學(xué)生記錄進(jìn)行操作
void stu_operate(void) {
printf("\n-------------------------歡迎進(jìn)入選課系統(tǒng)!----------------------");
printf("\n\n 請(qǐng)選擇你要對(duì)學(xué)生記錄進(jìn)行的操作:");
printf("\n\n 1.添加");
printf("\n 2.查詢");
printf("\n 3.顯示");
printf("\n 4.返回主頁(yè)面");
printf("\n ");
printf("\n 請(qǐng)輸入:");
int i;
scanf("%d",&i);
system("cls");
switch(i){
case 1://添加學(xué)生信息
input_stu();
break;
case 2://查詢學(xué)生信息
search_stu();
break;
case 3://顯示所有學(xué)生信息
show_stu();
break;
case 4:
home();
break;
}
}
//對(duì)課程記錄進(jìn)行操作
void cou_operate(void) {
printf("\n-------------------------歡迎進(jìn)入選課系統(tǒng)!----------------------");
printf("\n\n 請(qǐng)選擇你要對(duì)課程記錄進(jìn)行的操作:");
printf("\n\n 1.添加");
printf("\n 2.查詢");
printf("\n 3.顯示");
printf("\n 4.返回主頁(yè)面");
printf("\n ");
printf("\n 請(qǐng)輸入:");
int i;
scanf("%d",&i);
system("cls");
switch(i){
case 1:
input_cou();
break;
case 2:
search_cou();
break;
case 3:
show_cou();
case 4:
home();
break;
}
}
//選課信息統(tǒng)計(jì)記錄
void statistic(void){
printf("\n-------------------------歡迎進(jìn)入選課系統(tǒng)!----------------------");
printf("\n\n 共有學(xué)生信息:%d 條",i+1);
printf("\n 共有課程信息:%d 條",j+1);
if(x == -1){
printf("\n 選課記錄:0 條");
printf("\n\n ");
system("pause");
system("cls");
home();
} else {
printf("\n\n 選課記錄 %d 條:",x+1);
int m;
for(m = 0;m <= x;m++){
printf("\n ================");
printf("\n 第%d條",m+1);
printf("\n 學(xué)生學(xué)號(hào):%s",stu[sel[m].s].stu_ID);
printf("\n 學(xué)生姓名:%s",stu[sel[m].s].stu_name);
printf("\n 課程號(hào):%s",cou[sel[m].c].course_ID);
printf("\n 課程名:%s",cou[sel[m].c].course_name);
}
printf("\n\n ");
system("pause");
system("cls");
home();
}
}
//--------------------------------------學(xué)生信息插入--------------------------------------
void input_stu(void){
char flag;
FILE * fp;
//--判斷文件是否為空
fp = fopen("student.txt","r+");
flag = fgetc(fp);
if(flag==EOF){
fprintf(fp,"學(xué)號(hào)\t姓名\t性別\t年齡\t系別\t班級(jí)\t聯(lián)系方式\n");
}
fclose(fp);
//--
fp = fopen("student.txt","a+");
if(fp == NULL){
printf("打開(kāi)文件失??!");
system("cls");
stu_operate();
}
printf("學(xué)號(hào)\t姓名\t性別\t年齡\t系別\t班級(jí)\t聯(lián)系方式\n");
while(1){
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);
//--數(shù)據(jù)查重
int h;
for(h = 0;h < i;h++){
if(i == 0) break;//第一條數(shù)據(jù)不需要查重
if (strcmp(stu[h].stu_ID,stu[i].stu_ID)==0) {
printf("該學(xué)號(hào)已存在,請(qǐng)重新輸入!\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 = -1;
}
}
//--
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錄入成功,繼續(xù)錄入輸入y,返回上一級(jí)請(qǐng)按任意鍵:");
fflush(stdin);
scanf("%c",&flag);
fclose(fp);
if(flag!='y'&&'Y') break;
fp = fopen("student.txt","a");
}
renew_stu();
system("cls");
stu_operate();
}
/*查詢學(xué)生信息*/
void search_stu(void){
system("cls");
printf("\n請(qǐng)選擇查詢方式:");
printf("\n 1.學(xué)號(hào)查詢");
printf("\n 2.姓名查詢");
printf("\n請(qǐng)選擇:");
int h;
scanf(" %d",&h);
switch(h){
case 1:
search_stu_id();
break;
case 2:
search_stu_name();
break;
}
}
/*學(xué)號(hào)查詢*/
void search_stu_id(void){
system("cls");
char id[9];
printf("\n輸入學(xué)生的學(xué)號(hào):");
fflush(stdin);
scanf("%s",id);
int h;
for(h = 0;h <= i;h++){
if(strcmp(stu[h].stu_ID,id)==0){
system("cls");
printf("查找成功!");
printf("\n\n\t學(xué)號(hào)\t姓名\t性別\t年齡\t系別\t班級(jí)\t聯(lián)系方式");
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("沒(méi)有此學(xué)號(hào)!\n");
system("pause");
system("cls");
stu_operate();
}
/*姓名查詢*/
void search_stu_name(void){
system("cls");
char name[9];
printf("\n輸入學(xué)生的姓名:");
fflush(stdin);
scanf("%s",name);
int h;
for(h = 0;h <= i;h++){
if(strcmp(stu[h].stu_name,name)==0){
system("cls");
printf("查找成功!");
printf("\n\n\t學(xué)號(hào)\t姓名\t性別\t年齡\t系別\t班級(jí)\t聯(lián)系方式");
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("沒(méi)有此姓名!");
system("pause");
system("cls");
stu_operate();
}
/*顯示所有學(xué)生信息*/
void show_stu(void){
int h;
if(i == -1){
printf("\n還沒(méi)有錄入信息!\n");
system("pause");
system("cls");
stu_operate();
}
system("cls");
printf("\n\n\t學(xué)號(hào)\t姓名\t性別\t年齡\t系別\t班級(jí)\t聯(lián)系方式");
printf("\n\t---------------------------------------------------------");
for(h = 0;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 選擇要進(jìn)行的操作:");
int flag;
fflush(stdin);
scanf("%d",&flag);
switch(flag){
case 1:
edit_stu();
break;
case 2:
delete_stu();
break;
default:
system("cls");
stu_operate();
break;
}
}
/*編輯學(xué)生信息*/
void edit_stu(void){
printf("\n輸入需要編輯的學(xué)生的學(xué)號(hào):");
char id[10];
getchar();
scanf("%s",id);
int h;
for(h = 0;h <= i;h++){
if(strcmp(stu[h].stu_ID,id)==0){//找到需要編輯的行
system("cls");
printf("\n\n\t學(xué)號(hào)\t姓名\t性別\t年齡\t系別\t班級(jí)\t聯(lián)系方式");
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這是修改前的數(shù)據(jù),請(qǐng)依次輸入修改值:\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 = 0;k <= i;k++){
if(strcmp(stu[k].stu_ID,stu[h].stu_ID)==0){
if(k==h){
continue;
} else {//學(xué)號(hào)不唯一
printf("\n此學(xué)號(hào)已存在!重新輸入學(xué)號(hào):");
fflush(stdin);
scanf("%s",&stu[h].stu_ID);
k = -1;
}
}
}
/*將修改信息寫入文件*/
//思想:將原文件重新寫入一遍
renew_stu();
system("cls");
printf("修改成功!\n");
system("pause");
system("cls");
stu_operate();
}
}
printf("\n此學(xué)號(hào)不存在!\n");
system("pause");
system("cls");
stu_operate();
}
/*刪除學(xué)生信息*/
void delete_stu(void){
printf("\n輸入需要編輯的學(xué)生的學(xué)號(hào):");
char id[10];
getchar();
scanf("%s",id);
int h;
for(h = 0;h <= i;h++){
if(strcmp(stu[h].stu_ID,id)==0){//找到需要編輯的行
system("cls");
//檢查他/她是否選課了
int a;
for(a = 0;a <= x;a++){
if(h==sel[a].s){//選課了則將對(duì)應(yīng)課程記錄減1,以及選課數(shù)組減1
delete_sel(a);
a = -1;
x--;
continue;
}
}
//如果只有一條記錄
if(i==0){
i = -1;
renew_stu();
printf("修改成功!\n");
system("pause");
system("cls");
stu_operate();
}
int k;
for(k = h+1;k <= i;k++,h++){//將數(shù)組直接向前移動(dòng)
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此學(xué)號(hào)不存在!\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性質(zhì)\t總學(xué)時(shí)\t學(xué)分\t開(kāi)課學(xué)期\t選修人數(shù)\n");
}
fclose(fp);
//--
fp = fopen("course.txt","a+");
if(fp == NULL){
printf("打開(kāi)文件失??!");
system("cls");
cou_operate();
}
printf("代碼\t名稱\t性質(zhì)\t總學(xué)時(shí)\t學(xué)分\t開(kāi)課學(xué)期\n");
while(1){
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);
//--數(shù)據(jù)查重
int h;
for(h = 0;h < j;h++){
if(j == 0) break;//第一條數(shù)據(jù)不需要查重
if (strcmp(cou[h].course_ID,cou[j].course_ID)==0) {
printf("該課程號(hào)已存在,請(qǐng)重新輸入!\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 = -1;
}
}
//--
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錄入成功,繼續(xù)錄入輸入y,返回上一級(jí)請(qǐng)按任意鍵:");
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請(qǐng)選擇查詢方式:");
printf("\n 1.課程號(hào)查詢");
printf("\n 2.課程名查詢");
printf("\n請(qǐng)選擇:");
int h;
scanf(" %d",&h);
switch(h){
case 1:
search_cou_id();
break;
case 2:
search_cou_name();
break;
}
}
/*課程號(hào)查詢*/
void search_cou_id(void){
system("cls");
char id[9];
printf("\n輸入課程號(hào):");
fflush(stdin);
scanf("%s",id);
int h;
for(h = 0;h <= j;h++){
if(strcmp(cou[h].course_ID,id)==0){
system("cls");
printf("查找成功!");
printf("\n\n\t代碼\t名稱\t性質(zhì)\t總學(xué)時(shí)\t學(xué)分\t開(kāi)課學(xué)期\t選修人數(shù)");
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("沒(méi)有此課程號(hào)!\n");
system("pause");
system("cls");
cou_operate();
}
/*課程名查詢*/
void search_cou_name(void){
system("cls");
char name[9];
printf("\n輸入課程名:");
fflush(stdin);
scanf("%s",name);
int h;
for(h = 0;h <= j;h++){
if(strcmp(cou[h].course_name,name)==0){
system("cls");
printf("查找成功!");
printf("\n\n\t代碼\t名稱\t性質(zhì)\t總學(xué)時(shí)\t學(xué)分\t開(kāi)課學(xué)期\t選修人數(shù)");
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("沒(méi)有此課程名!");
system("pause");
system("cls");
cou_operate();
}
/*顯示所有課程信息*/
void show_cou(void){
int h;
if(j == -1){
printf("\n還沒(méi)有錄入信息!\n");
system("pause");
system("cls");
cou_operate();
}
system("cls");
printf("\n\n\t代碼\t名稱\t性質(zhì)\t總學(xué)時(shí)\t學(xué)分\t開(kāi)課學(xué)期\t選修人數(shù)");
printf("\n\t-------------------------------------------------------------");
for(h = 0;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 選擇要進(jìn)行的操作:");
int flag;
fflush(stdin);
scanf("%d",&flag);
switch(flag){
case 1:
edit_cou();
break;
case 2:
delete_cou();
break;
default:
system("cls");
cou_operate();
break;
}
}
/*編輯課程信息*/
void edit_cou(void){
printf("\n輸入需要編輯的課程號(hào):");
char id[10];
getchar();
scanf("%s",id);
int h;
for(h = 0;h <= j;h++){
if(strcmp(cou[h].course_ID,id)==0){//找到需要編輯的行
system("cls");
printf("\n\n\t代碼\t名稱\t性質(zhì)\t總學(xué)時(shí)\t學(xué)分\t開(kāi)課學(xué)期");
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這是修改前的數(shù)據(jù),請(qǐng)依次輸入修改值:\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 = 0;k <= j;k++){
if(strcmp(cou[k].course_ID,cou[h].course_ID)==0){
if(k==h){
continue;
} else {//課程號(hào)不唯一
printf("\n此課程號(hào)已存在,重新輸入:");
fflush(stdin);
scanf("%s",&cou[h].course_ID);
k = -1;
}
}
}
/*將修改信息寫入文件*/
//思想:將原文件重新寫入一遍
renew_cou();
system("cls");
printf("修改成功!\n");
system("pause");
system("cls");
cou_operate();
}
}
printf("\n此課程號(hào)不存在!\n");
system("pause");
system("cls");
cou_operate();
}
/*刪除課程信息*/
void delete_cou(void){
printf("\n輸入需要編輯的課程號(hào):");
char id[10];
getchar();
scanf("%s",id);
int h;
for(h = 0;h <= j;h++){
if(strcmp(cou[h].course_ID,id)==0){//找到需要編輯的行
system("cls");
//如果只有一條記錄
if(j==0){
j = -1;
renew_cou();
printf("修改成功!\n");
system("pause");
system("cls");
cou_operate();
}
//查看是否有人選課
if(cou[h].people!=0){//有人選課時(shí)
int a;
for(a = 0;a <= x;a++){
if(sel[a].c == h){
delete_sel(a);
a = -1;
x--;
continue;
}
}
}
int k;
for(k = h+1;k <= j;k++,h++){//將數(shù)組直接向前移動(dòng)
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此課程號(hào)不存在!\n");
system("pause");
system("cls");
cou_operate();
}
//--功能函數(shù)
/*更新系統(tǒng)數(shù)據(jù)至文件*/
void renew_stu(void){
FILE * fp;
fp = fopen("student.txt","w+");
if(fp == NULL){
printf("\n打開(kāi)文件失敗,無(wú)法保存至文件。\n");
fclose(fp);
return ;
}
fprintf(fp,"學(xué)號(hào)\t姓名\t性別\t年齡\t系別\t班級(jí)\t聯(lián)系方式\n");
if(i == -1){
fclose(fp);
return;
}
int h;
for(h = 0;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打開(kāi)文件失敗,無(wú)法保存至文件。\n");
fclose(fp);
return ;
}
fprintf(fp,"代碼\t名稱\t性質(zhì)\t總學(xué)時(shí)\t學(xué)分\t開(kāi)課學(xué)期\t選修人數(shù)\n");
if(j == -1){
fclose(fp);
return;
}
int h;
for(h = 0;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);
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言通訊錄管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言銀行系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言圖書(shū)管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言實(shí)現(xiàn)學(xué)生選課系統(tǒng)
- 基于C語(yǔ)言實(shí)現(xiàn)學(xué)生選課系統(tǒng)
- C語(yǔ)言實(shí)現(xiàn)學(xué)生選課系統(tǒng)
相關(guān)文章
教你如何使用C++ 統(tǒng)計(jì)地鐵中站名出現(xiàn)的字的個(gè)數(shù)
通過(guò)本文教大家如何使用C++ 統(tǒng)計(jì)地鐵中站名出現(xiàn)的字的個(gè)數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-01-01
C語(yǔ)言中g(shù)etchar()的返回類型為什么是int詳解
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中g(shù)etchar()的返回類型為什么是int的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
淺談C#中List<T>對(duì)象的深度拷貝問(wèn)題
下面小編就為大家?guī)?lái)一篇淺談C#中List<T>對(duì)象的深度拷貝問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
詳解C++中構(gòu)造函數(shù),拷貝構(gòu)造函數(shù)和賦值函數(shù)的區(qū)別和實(shí)現(xiàn)
這篇文章主要介紹了C++中構(gòu)造函數(shù),拷貝構(gòu)造函數(shù)和賦值函數(shù)的區(qū)別和實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的易語(yǔ)言
在本篇內(nèi)容里小編給大家整理了一篇關(guān)于c語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的易語(yǔ)言的相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。2018-12-12
基于opencv實(shí)現(xiàn)車道線檢測(cè)
這篇文章主要為大家詳細(xì)介紹了基于opencv實(shí)現(xiàn)車道線檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-02-02
C++學(xué)習(xí)筆記std::vector底層原理及擴(kuò)容
這篇文章主要為大家介紹了C++學(xué)習(xí)之std::vector底層原理及擴(kuò)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

