bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

C語(yǔ)言--課程管理信息系統(tǒng)-創(chuàng)新互聯(lián)

課程管理系統(tǒng)
  • 項(xiàng)目要求
  • 函數(shù)調(diào)用說(shuō)明
  • 一.設(shè)定結(jié)構(gòu)體
  • 二.主函數(shù):
  • 三.錄入信息
  • 四.瀏覽信息
  • 五.查詢信息
  • 六.修改信息
  • 七.刪除信息
  • 八.對(duì)文件的操作
  • 代碼運(yùn)行檢測(cè)及結(jié)果

創(chuàng)新互聯(lián)建站主營(yíng)薩迦網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),薩迦h5成都小程序開(kāi)發(fā)搭建,薩迦網(wǎng)站營(yíng)銷推廣歡迎薩迦等地區(qū)企業(yè)咨詢項(xiàng)目要求

課程管理系統(tǒng)
功能:假定有 n 門課程,每門課程有課程編號(hào),課程名稱,總學(xué)時(shí),學(xué)分,開(kāi)課學(xué)期
等信息。試設(shè)計(jì)一課程管理系統(tǒng),使之能提供以下功能:
1 對(duì)課程信息的錄入、修改、刪除功能;
2 按課程名排序后瀏覽;
3 按課程查詢、按學(xué)分查詢;

函數(shù)調(diào)用說(shuō)明

在這里插入圖片描述

一.設(shè)定結(jié)構(gòu)體

代碼如下:

struct info
{int number;//課程編號(hào)
char name[100];//課程名稱
int hours;//總學(xué)時(shí)
int credit;//學(xué)分
int semester;// 開(kāi)課學(xué)期
bool flag;//數(shù)據(jù)有效標(biāo)記,
};

這個(gè)結(jié)構(gòu)體是用以保存數(shù)據(jù),由整型變量 number 存儲(chǔ)課程編號(hào);大小為 100 字節(jié)的字符數(shù)組 name 存儲(chǔ)課程名稱;由整型變量 hours 存儲(chǔ)總學(xué)時(shí);由整型變量 credit 存儲(chǔ)學(xué)分;由整型變量 semester 存儲(chǔ)開(kāi)課學(xué)期;由布爾整型變量 flag 存儲(chǔ)數(shù)據(jù)有效標(biāo)記。

還有以下一些實(shí)現(xiàn)功能的結(jié)構(gòu)體:

struct info temp;//臨時(shí)中轉(zhuǎn)
struct info a[20];//數(shù)據(jù)存儲(chǔ)
struct info newdata; //modify 中,修改的數(shù)據(jù)存儲(chǔ)
struct info original;//del 中,刪除數(shù)據(jù)的判據(jù)
二.主函數(shù):

代碼如下:

int main(void)//true
{long long t = 0;
	FILE* fp;
	if ((fp = fopen("info.dat", "rb+")) != NULL)
	{fpos_t pos;//定義pos
		fgetpos(fp, &pos);//獲取文件指針,寫入pos
		fseek(fp, 0, SEEK_END);//文件指針指向末尾
		t = ftell(fp);//獲取文件指針到文件頭部的字節(jié)大小
		fsetpos(fp, &pos);//文件指針還原
		fclose(fp);//釋放文件
	}
	n = t / size;
	//以上實(shí)現(xiàn)了有效數(shù)據(jù)條數(shù)n的獲取
	printf("有效數(shù)據(jù):%d條\n", n);
	char c;//選項(xiàng)代碼
	while (1)
	{printf("\n\n\n\n");
		printf(" student course management system \n");
		printf("-----------------------------------------------------------------");
		printf("\n\n");
		printf(" 1 錄入信息 2 瀏覽所有信息(排序后) 3 查詢信息(名稱) \n");
		printf(" 4 修改信息 5 刪除信息 6 查詢信息(學(xué)分) \n");
		printf(" 0 exit system \n");
		printf(" \n\n");
		printf("------------------------------------------------------------------");
		printf("\n please select:");
		c = getchar();
		switch (c)
		{	case '0'://exit system
			{		return 0;
			}
			case '1':
			{		input();//1 錄入信息
				getchar();
				break;
			}
			case '2':
			{		look();//2 瀏覽所有信息(排序后)
				getchar();
				break;
			}
			case '3':
			{		QueryName();//3 查詢信息(名稱)
				getchar();
				break;
			}
			case '4':
			{		modify();//4 修改信息
				getchar();
				break;
			}
			case '5':
			{		getchar();
				del();//5 刪除信息
				getchar();//防止功能失效
				break;
			}
			case '6':
			{		QueryCredit();//6 查詢信息(學(xué)分)
				getchar();
				break;
			}
			default:
			{		getchar();
				printf("\ninput error,please try again:\n");
				break;
			}
		} 
	}
	return 0;
}
  • 函數(shù)的原型聲明:int main(void)
  • 函數(shù)功能及參數(shù)說(shuō)明
    這個(gè)函數(shù)是整個(gè)程序的 main 函數(shù),用于顯示主菜單與用戶交互,并依據(jù)用戶的選擇
    調(diào)用不同的函數(shù)來(lái)實(shí)現(xiàn)具體的功能。這個(gè)函數(shù)沒(méi)有返回值,沒(méi)有傳遞參數(shù)。
  • 函數(shù)中使用的關(guān)鍵變量說(shuō)明
  1. Int size:用于表示一條數(shù)據(jù)所占用的字節(jié)數(shù),即 struct info 類型所占用的空間。
  2. long long t:用于表示文件的大小,從與 int size 一起確定有效數(shù)據(jù) n 的值。
  3. char c:用于存儲(chǔ)用戶的選項(xiàng)編號(hào)。
  4. int n:用于存儲(chǔ)有效數(shù)據(jù)的條數(shù)
三.錄入信息

代碼如下:

void input(void)//1 錄入信息 true
{char ch;
	while (1)
	{printf("課程編號(hào)");
		scanf("%d", &temp.number);
		printf("課程名稱");
		scanf("%s", &temp.name);
		printf("總學(xué)時(shí)");
		scanf("%d", &temp.hours);
		printf("學(xué)分");
		scanf("%d", &temp.credit);
		printf("開(kāi)課學(xué)期");
		scanf("%d", &temp.semester);
		temp.flag = 1;
		n++;//有效數(shù)據(jù)增加1條
		copy3(n - 1);//由temp中寫入數(shù)組中
		getchar();//接受換行符
		printf("是否繼續(xù)錄入?[y/n]\n");
		ch = getchar();
		if (ch == 'n' || ch == 'N')
		break;
	}
		writeToFile();//統(tǒng)一寫入文件info.dat
}
四.瀏覽信息
void look(void)//2 瀏覽所有信息(排序后) true 
{load();
	//sort
	for (int i = 0; i< n - 1; i++) {int k = i;// 最小元素的下標(biāo)
	for (int j = i + 1; j< n; j++)
	if (strcmp(a[k].name, a[j].name) >0)//從小到大排序
	k = j;//如果a[k]>a[j],即有元素比我們認(rèn)為的最小元素更小,那就更新最小元素的下標(biāo)
	if (k != i)
	{//等效于三步交換法
		copy1(i);
		copy2(i, k);
		copy3(k);
	} 
}
display_header();//表頭
display_all();//內(nèi)容
display_end();//表尾
}
五.查詢信息
  1. 查詢名稱
void QueryName(void)//3 查詢信息(名稱)true
{char ch;
	char CName[100];//用于存儲(chǔ)課程的名稱
	while (1)
	{printf("請(qǐng)輸入課程名稱:");
		scanf("%s", CName);
		getchar();
		load();
		display_header();
		for (int i = 0; i< n; i++)
		{// printf("%d\n",i);
		if (strcmp(a[i].name, CName) == 0)
		{	printf("ture.\n");
			copy1(i);
			display();
		} 
	}
	display_end();
	printf("是否繼續(xù)查詢?[y/n]\n");
	scanf("%c", &ch);
	if (ch == 'n' || ch == 'N')
		break;
	} 
}
  1. 查詢學(xué)分
void QueryCredit(void)//6 查詢信息(學(xué)分) true
{char ch;
	int mark;//用于存儲(chǔ)課程的學(xué)分
	while (1)
	{printf("請(qǐng)輸入課程學(xué)分:");
		scanf("%d", &mark);
		getchar();
		load();
		display_header();
		for (int i = 0; i< n; i++)
		{if (mark == a[i].credit)
		{	copy1(i);
			display();
		} 
	}
	display_end();
	printf("是否繼續(xù)查詢?[y/n]\n");
	ch = getchar();
	if (ch == 'n' || ch == 'N')
		break;
	} 
}
六.修改信息
void modify(void)//4 修改信息
{struct info newdata;//modify中修改的數(shù)據(jù)存儲(chǔ)
	int num;
	load();//讀原文件info.dat
	look();
	printf("用課程編號(hào)來(lái)確定修改的數(shù)據(jù)行:");
	scanf("%d", &num);
	getchar();
	printf("\n\n");
	printf(" student course info \n");
	printf("------------------------------------------------------------------\n");
	printf("你想修改什么?\n");
	printf("1.課程名稱 2.總學(xué)時(shí) 3.學(xué)分\n");
	printf("4.開(kāi)課學(xué)期\n");
	printf("------------------------------------------------------------------");
	printf("\n please select:");
	char c = getchar();
	while (c >'4' || c< '1')
	{printf("\n輸入錯(cuò)誤,重試");
		c = getchar();
	}
	getchar();
	switch (c)
	{case '1'://1.課程名稱
	{printf("請(qǐng)輸入新名稱:");
	gets(newdata.name);
	for (int i = 0; i< n; i++)
		if (a[i].number == num)
			strcpy(a[i].name, newdata.name);
	break;
	}
	case '2'://2.總學(xué)時(shí)
	{printf("請(qǐng)輸入新總學(xué)時(shí):");
		scanf("%d", &newdata.hours);
		for (int i = 0; i< n; i++)
			if (a[i].number == num)
				a[i].hours = newdata.hours;
	break;
	}
	case '3'://3.學(xué)分
	{printf("請(qǐng)輸入新學(xué)分:");
		scanf("%d", &newdata.credit);
		for (int i = 0; i< n; i++)
			if (a[i].number == num)
			a[i].credit = newdata.credit;
	break;
	}
	case '4'://4.開(kāi)課學(xué)期
	{printf("請(qǐng)輸入新開(kāi)課學(xué)期:");
		scanf("%d", &newdata.semester);
		for (int i = 0; i< n; i++)
			if (a[i].number == num)
				a[i].semester = newdata.semester;
	break;
	}
	}
writeToFile();
}
七.刪除信息
void del(void)//5刪除信息
{struct info original;//刪除數(shù)據(jù)的判據(jù)
	long long t = 0;
	FILE* ftemp;
	load();//讀原文件info.dat
	printf("\n\n");
	printf(" student course info \n");
	printf("------------------------------------------------------------------\n");
	printf("你想通過(guò)哪種方式來(lái)查找需要?jiǎng)h除的記錄?\n");
	printf("1.課程編號(hào) 2.課程名稱 3.總學(xué)時(shí)\n");
	printf("4.學(xué)分 5.開(kāi)課學(xué)期\n");
	printf("-----------------------------------------------------------------");
	printf("\n please select:");
	char c = getchar();
	while (c >'5' || c< '1')
	{printf("\n輸入錯(cuò)誤,重試");
		c = getchar();
	}
	getchar();
	switch (c)
	{case '1'://1.課程編號(hào)
		{	printf("請(qǐng)輸入課程編號(hào):");
			scanf("%d", &original.number);
			for (int i = 0; i< n; i++)
				if (a[i].number == original.number)
					a[i].flag = false;
			break;
		}
		case '2'://2.課程名稱
		{	printf("請(qǐng)輸入課程名稱:");
			gets(original.name);
			for (int i = 0; i< n; i++)
				if (strcmp(a[i].name, original.name) == 0)
					a[i].flag = false;
			break;
		}
		case '3'://3.總學(xué)時(shí)
		{	printf("請(qǐng)輸入總學(xué)時(shí):");
			scanf("%d", &original.hours);
			for (int i = 0; i< n; i++)
				if (a[i].hours == original.hours)
					a[i].flag = false;
			break;
		}
		case '4'://4.學(xué)分
		{	printf("請(qǐng)輸入學(xué)分:");
			scanf("%d", &original.credit);
			for (int i = 0; i< n; i++)
				if (a[i].credit == original.credit)
					a[i].flag = false;
			break;
		}
		case '5'://5.開(kāi)課學(xué)期
		{	printf("請(qǐng)輸入開(kāi)課學(xué)期:");
			scanf("%d", &original.semester);
			for (int i = 0; i< n; i++)
				if (a[i].semester == original.semester)
					a[i].flag = false;
			break;
		}}
	if ((ftemp = fopen("temporary.dat", "wb")) == NULL)//寫打開(kāi)臨時(shí)文件temporary.dat
	{printf("Open the file failure...\n");
		exit(EXIT_SUCCESS);
	}
	for (int i = 0; i< n; i++)
		if (a[i].flag == false)
			continue;
		else
			fwrite(&a[i], size, 1, ftemp);//不是則將這寫入臨時(shí)文件temporary.dat
			fpos_t pos;//定義pos
			fgetpos(ftemp, &pos);//獲取文件指針,寫入pos
			fseek(ftemp, 0, SEEK_END);//文件指針指向末尾
			t = ftell(ftemp);//獲取文件指針到文件頭部的字節(jié)大小
			fsetpos(ftemp, &pos);//文件指針還原
			fclose(ftemp);
			n = t / size;//因?yàn)槲募淖儎?dòng),更新n的值
			
	int back1 = remove("info.dat");
	int back2 = rename("temporary.dat", "info.dat");//將臨時(shí)文件名改為原文件名
	if (!back1 && !back2)
		printf("成功!\n");
	else printf("%d %d\n失敗!\n", back1, back2);
}
八.對(duì)文件的操作
void writeToFile(void)//true
{FILE* fp;
	if ((fp = fopen("info.dat", "wb")) == NULL)
	{printf("無(wú)法打開(kāi)此文件\n");
		exit(EXIT_SUCCESS);
	}
	for (int i = 0; i< n; i++)
	{if (fwrite(&a[i], size, 1, fp) != 1)
			{		printf("file write error.\n");
			} 
	}
	fclose(fp);
}
代碼運(yùn)行檢測(cè)及結(jié)果

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享題目:C語(yǔ)言--課程管理信息系統(tǒng)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://vcdvsql.cn/article44/ppgee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站網(wǎng)站設(shè)計(jì)公司云服務(wù)器企業(yè)網(wǎng)站制作微信公眾號(hào)網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)