日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

c语言教材系统管理课设

發(fā)布時間:2023/12/20 windows 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言教材系统管理课设 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?教材管理系統c語言課設

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct stunode
{
?? ?char no[20];
?? ?char name[10];
?? ?int score;
?? ?char title[10];
?? ?char syzy;
?? ?char zy;
?? ?char cbs;
?? ?char cbrq ;
?? ?struct stunode *next;?? ? } STU;/*定義鏈表節(jié)點的結構體類型struct stunode,取別名STU*/?
?STU head;/*定義頭結點head*/
?STU *findNode(char *on);
?int getIndex(char *on);
?void showMenu( );
?void createList( );
?void printList( );
?void insertAt( );
?void deleteNode( );
?void modify( );
?void freeList( );
?void showData( );
?int main ( )
?{
??? ?int select;
??? ?head.next=NULL;/*將頭結點next置為NULL*/?
??? ?while(1)
?? ? {
?? ? ?? ?showMenu( );
?? ? ?? ?printf("請選擇需要的操作: ");?
?? ??? ?scanf("%d",&select);
?? ??? ?fflush(stdin);/*清除鍵盤緩沖區(qū)*/
?? ??? ?switch(select) ?/*根據用戶選擇,調用相應的函數完成操作*/
?? ??? ?{
?? ??? ??? ?case 1:createList( );break;
?? ??? ??? ?case 2:printList( );break;
?? ??? ??? ?case 3:insertAt( );break;
?? ??? ??? ?case 4:deleteNode( );break;
?? ??? ??? ?case 5:modify( );break;
?? ??? ??? ?case 6:showData( );break;
?? ??? ??? ?case 0:freeList( );exit(0);
?? ??? ??? ?default:printf("請輸入錯誤!\n");?
?? ??? ??? ?
?? ??? ? ?} ?
?? ??? ? ?? ? ?? ?system("pause");
?? ? ?? ?
?? ? }
??? ?return 0;?? ?
??? ?
?}
?/*函數功能;根據查找功能:按多種方式查找并顯示至少實現 2 種,比如按照出版社或者作者等)查找存放信息的結點。若找到,則返回該結點,否則返回NULLL */
?STU* findNode(char *no)
?{
??? ?STU *p;
??? ?p=head.next;/*p指向第一個結點*/?
??? ?while(p!=NULL)/*當p不為NULL*/
?? ? {
?? ? ?? ?
?? ? ?? ?if(strcmp(p->no,no)==0)break;/*如果相等,結束循環(huán)*/
?? ??? ? p=p->next;/*p指向下一個結點*/?? ??? ?
?? ? ?}?
??? ?return p;
}
/*函數功能;根據教材名稱獲取存放該教材的信息的結點的序號,若找到,則返回該結點序號,否則返回0*/
int getIndex(char *no)
{
?? ?int index=1;
?? ?STU *p;
?? ?p=head.next;/*p指向第一個結點*/?
?? ?while(p!=NULL)/*當p不為NULL*/?
?? ?{
?? ??? ?if(strcmp(p->no,no)==0)break;/*如果相等結束循環(huán)*/?
?? ??? ?p=p->next;/*p指向下一個結點*/?
? ? ?? ?index++;/*序號加一*/ ?? ?
?? ?}
?? ?if(p==NULL)
?? ? return 0;
?? ? else
?? ? return index;?? ?
?}?


/*函數功能: 顯示菜單*/?
?void showMenu( )
?{
??? ?system("cls");/*清屏*/
?? ?printf("******教材庫信息管理系統*******\n");
?? ?printf("\t 1.創(chuàng)建教材管理鏈表\n");?
??? ?printf("\t 2.顯示教材全部記錄\n " );
??? ?printf("\t 3.在指定位置插入一條或多條記錄\n" );
??? ?printf("\t 4.按教材編號刪除\n");
??? ?printf("\t 5.按教材功能進行修改\n");
??? ?printf("\t 6.輸出出版社或者作者查找教材信息\n");?
??? ?printf("\t 0.退出\n");
??? ?return; ?? ?
?}
?/*函數功能: 創(chuàng)建儲存n個教材管理列表。*/
?void createList( )
?{
??? ?int i,n;
??? ?STU *p,*tail;
??? ?if(head.next!=NULL)
?? ? {
?? ? ?? ?printf("教材管理列表已經創(chuàng)建! \n");
?? ? ?? ?return;
?? ??? ? ?} ?? ?
??? ? tail=&head;/*初始建立鏈表tail指向頭結點head*/
??? ? printf("請輸入教材個數: ");?
??? ? scanf("%d",&n);
??? ? for(i=1;i<=n;i++)/*輸入n個教材信息保存到鏈表中*/
?? ? ?{
?? ? ??? ?p=(STU *)malloc(sizeof(STU));/*新建一個結點*/
?? ??? ? ?if (p==NULL)
?? ??? ? ?{
?? ??? ? ??? ?printf("建立鏈表時內存分配失敗!\n");
?? ??? ? ??? ?return; ?? ?
?? ??? ? ? }?
?? ? ??? ?scanf("%s%s%d",p->no,p->name,&p->score);
?? ? ??? ?/*將結點添加到鏈表尾部*/
?? ??? ? ?tail->next=p;
?? ??? ? ?p->next=NULL;
?? ??? ? ?tail=p;?? ?
?? ? ? }?
?? ? ? return;
?}
/*函數功能; 輸出鏈表中儲存的所有教材的信息*/
void printList() ??
?? ? ? {
?? ? ? ?? ?STU *p;
?? ? ? ?? ?if(head.next==NULL)?? ? ? ?? ?
?? ? ? ?? ?{
?? ? ? ?? ??? ?printf("未創(chuàng)建教材管理列表!\n");
?? ? ? ?? ??? ?return;
?? ??? ? ? }
?? ? ? ?? ?p=head.next;/*指針變量p指向第一個結點*/
?? ??? ? ? printf("編號\t\t名稱\t價格\n") ;
?? ??? ? ? while(p!=NULL)/*當p不為NULL時,說明還有結束需輸出*/?
?? ??? ? ? {
?? ??? ? ? ?? ?printf("%-16s%-10s%d\n",p->no,p->name,p->score);
?? ??? ? ? ?? ?p=p->next;/*指針p指向下一個結點*/?

?? ??? ? ? }
?? ? ? ?? ?return;?
?? ? ? }
? /*函數功能; 在指定位置插入一個一條記錄*/
void insertAt( )
? {
? ?? ?int n,i;
? ?? ?STU *pnew,*p;
? ?? ?if(head.next==NULL)
?? ? ?{
?? ? ??? ?printf("未創(chuàng)建教材管理列表!\n");
?? ? ??? ?return;
?? ? ??? ?
?? ??? ??? ?} ??? ?
?? ??? ??? ?
? ?? ?printf("請輸入要插入的位置\n");
? ?? ?scanf("%d",&n);
? ?? ?if(n<1)
? ?? ?{
? ?? ??? ?printf("插入的位置不能小于1!\n");
? ?? ??? ?return;
? ?? ??? ?
?? ? ?}
? ?? ?p=&head;
? ?? ?for(i=1;i<=n-1;i++);/*循環(huán)結束后,p指向第n-1個結點*/
?? ? ?{
?? ? ??? ?if(p==NULL)
?? ?
?? ??? ?p=p->next;?? ?
?? ? ? }?
? ?? ?if(p==NULL)
? ?? ?{
? ?? ??? ?printf("插入位置太大!\n");
? ?? ??? ?return;
? ?? ??? ?
?? ? ?}
? ?? ?
? ?? ?pnew=(STU*)malloc(sizeof(STU));/*新建結點*/
?? ? ?if(pnew==NULL)
?? ? ?{
?? ? ??? ?
?? ? ??? ?printf("動態(tài)內存分配失敗! ");
?? ? ??? ?return;
?? ? ? }?
? ?? ?printf("請輸入教材編號、名稱、價格、數量: \n");
? ?? ?scanf("%s%s%d",pnew->no,pnew->name,&pnew->score);
? ?? ?pnew->next=p->next;/*將p點指結點的next賦給新的結點的next*/
?? ? ?p->next=pnew;/*將新結點的地址賦給p所指結點的next*/
?? ? ?printf("插入成功!\n");
?? ? ?return;
?? ? ??
? ?}?
? ?/*函數功能;在鏈表中按教材編號進行刪除*/
? ?void deleteNode( )
? ?{
? ??? ?int n,i;
? ??? ?char no[20],select;
? ??? ?STU *p,*pre;
? ??? ?if(head.next==NULL)
? ??? ?{
? ??? ??? ?printf("未創(chuàng)建教材管理鏈表!\n");
? ??? ??? ?return;
?? ?
?? ? ? }
?? ? ? printf("請輸入要刪除教材的編號!\n");
?? ? ? gets(no);
?? ? ? n=getIndex(no);
?? ? ? if(n==0)/*若n為0表示要刪除的編號的教材不存在*/
?? ? ? {
?? ? ? ?? ?printf("教材信息不存在X!\n");
?? ? ? ?? ?return;

?? ??? ?}?
?? ??? ?pre=&head;/*指針變量pre指向頭結點*/
?? ??? ?for(i=1;i<=n-1;i++)/*循環(huán)結束后,pre指向第一個n-1個結點*/
?? ??? ?{
?? ??? ??? ?pre=pre->next;?

?? ??? ?}
?? ??? ? p=pre->next;
?? ??? ? printf("該教材的編號為;\n");
?? ??? ? printf("%-16s%d\n",p->name,p->score);
?? ??? ? fflush(stdin);
?? ??? ? printf("是否確認刪除(Y/X)?");/*確認是否刪除結點*/
?? ??? ? select=getchar();
?? ??? ? if(select=='Y'||select=='y')
?? ??? ? {
?? ??? ? ?? ?pre->next=p->next;/*將p點所指向的結點從鏈表中刪除*/
?? ??? ??? ? free(p);
?? ??? ??? ? printf("刪除成功!\n");
?? ?
?? ??? ? ?}?
?? ??? ? else
?? ??? ? ? ? printf("刪除取消!\n");
?? ??? ? return;
?? ??? ? ? ??
? ??? ?
? ?}
? ?/*函數功能; ?按教材編號進行修改*/
? ?void modify( )
? ?{
? ??? ?STU *p;
? ??? ?char no[20];
? ??? ?if(head.next==NULL)
? ??? ?{
? ??? ??? ?printf("未創(chuàng)建教材管理鏈表!\n");
? ??? ??? ?return;

?? ? ? }
? ??? ?printf("請輸入需要修改的教材的編號;\n");
? ??? ?gets(no);
? ??? ?p=findNode(no);/*查找no對應的結點地址*/
?? ?if(p==NULL) /*如果沒有找到*/?
?? ?{
?? ??? ?printf("該教材的信息不存在!\n");
?? ??? ?return;?? ?
?? ?}
? ??? ?printf("該教材的名稱和編號:\n");
? ??? ?printf("%-16s%d\n",p->name,p->score);
? ??? ?printf("請輸入修改后的編號:\n");
? ??? ?scanf("%d",&p->score);
? ??? ?printf("修改成功!\n");
? ??? ?return;
?? ?}?
?void showData( )
?{
??? ?char no[20];
??? ?STU *p;
??? ?if(head.next==NULL)
??? ?{
??? ??? ?printf("未創(chuàng)建教材管理鏈表!\n");
??? ??? ?return;
?? ? }
??? ?printf("請輸入需要查詢的編號; \n");
??? ?gets(no);
??? ?p=findNode(no);/*查找*/
?? ?if(p==NULL)
?? ? printf("教材信息不存在! \n");
?? ? else
?? ? {
?? ? ?? ?printf("編號;%s\n",p->no);
?? ? ?? ?printf("名稱;%s\n",p->name);
?? ? ?? ?printf("成績;%d\n",p->score);
?? ? ?}?
??? ?return;
??? ?
?}

?/*函數功能; 將鏈表中所有信息存放教材信息的結點。*/
?void freeList( )
?{
??? ?STU *p;
??? ?p=head.next;/*從第一個結點開始釋放*/
?? ? while(p!=NULL)/*循環(huán)釋放列表中的每個結點的空間*/
?? ? {
?? ? ?head.next=p->next;
?? ? ?free(p);/*釋放p指向的結點空間*/?
?? ? ?p=head.next;?? ? ?? ?/*指針變量p指向下一個帶釋放的結點*/?
?? ? ?}?
??? ?return;

}?

??

總結

以上是生活随笔為你收集整理的c语言教材系统管理课设的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。