c语言课程设计作业.docx

上传人:b****8 文档编号:9381547 上传时间:2023-02-04 格式:DOCX 页数:15 大小:18.15KB
下载 相关 举报
c语言课程设计作业.docx_第1页
第1页 / 共15页
c语言课程设计作业.docx_第2页
第2页 / 共15页
c语言课程设计作业.docx_第3页
第3页 / 共15页
c语言课程设计作业.docx_第4页
第4页 / 共15页
c语言课程设计作业.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

c语言课程设计作业.docx

《c语言课程设计作业.docx》由会员分享,可在线阅读,更多相关《c语言课程设计作业.docx(15页珍藏版)》请在冰豆网上搜索。

c语言课程设计作业.docx

c语言课程设计作业

C语言课程设计第二节课作业

通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?

1从文件操作角度分析。

1)进入主界面:

要求输入密码,输入三次错误系统锁定。

2)输入记录:

将学生的基本信息包括学号,姓名,性别,地区,分数等数据作为一个记录写入文件。

3)显示记录:

显示学生的各项信息。

4)增加记录:

增加多个学生的基本信息,位于之前的学生后面。

5)删除记录:

删除学生信息。

6)修改记录:

可以修改学生的任何一项基本信息。

7)查找记录:

可以根据学生的学号查找并显示出学生的信息。

8)统计记录:

统计全班通过情况和不及格情况。

9)退出系统

2从结构化程序和函数角度分析。

1)enter()定义进入函数

2)input()定义输入函数

3)display()定义显示函数

4)add()定义增加函数

5)delet()定义删除函数

6)amend()定义修改函数

7)preside()定义统计函数

8)fint()定义查找函数

9)output()定义退出函数

3结构体的作用和应用。

在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。

显然不能用一个数组来存放这一组数据。

因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。

为了解

决这个问题,C语言中给出了另一种构造数据类型——“结构(structure)”或叫“结构体”。

4如果设计一个产品管理系统,如何来设计。

1、系统以菜单方式工作,密码登陆。

2、商品信息的录入功能(增加数据)。

用数组数据类型赋初值的方法把商品信息送到各个数组中(但注意要是合法数据),然后把它们输出显示。

3、商品信息的删除(删除数据)。

任意输入一个商品的编号,将它所有的信息从组数中删除。

4、商品信息的浏览功能(查找数据)。

任意输入一个商品的编号,打印出他的所有数据。

要求能多次查找。

5、商品信息的删除(修改数据)。

任意输入一个商品的编号,打印出所有相关信息后,可对某一项信息进行修改并保存。

6、商品信息的计算并排序。

计算所有商品的总价格及平均价格(aver,单精度,输出一位小数),将包括所有数据的数组元素按价格从低到高的顺序排序打印出来。

5把自己修改的产品管理(或者图书管理\职工管理等)系统的代码贴到博客中。

图书管理系统

#include

#include

#include

#include

structbooks_list

{

charauthor[20];/*作者名*/

charbookname[20];/*书名*/

charpublisher[20];/*出版单位*/

charpbtime[15];/*出版时间*/

charloginnum[10];/*登陆号*/

floatprice;/*价格*/

charclassfy[10];/*分类号*/

structbooks_list*next;/*链表的指针域*/

};

structbooks_list*Create_Books_Doc();/*新建链表*/

voidInsertDoc(structbooks_list*head);/*插入*/

voidDeleteDoc(structbooks_list*head,intnum);/*删除*/

voidPrint_Book_Doc(structbooks_list*head);/*浏览*/

voidsearch_book(structbooks_list*head);/*查询*/

voidinfo_change(structbooks_list*head);/*修改*/

voidsave(structbooks_list*head);/*保存数据至文件*/

/*新建链表头节点*/

structbooks_list*Create_Books_Doc()

{

structbooks_list*head;

head=(structbooks_list*)malloc(sizeof(structbooks_list));/*分配头节点空间*/

head->next=NULL;/*头节点指针域初始化,定为空*/

returnhead;

}

/*保存数据至文件*/

voidsave(structbooks_list*head)

{

structbooks_list*p;

FILE*fp;

p=head;

fp=fopen("data.txt","w+");/*以写方式新建并打开data.txt文件*/

fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n");/*向文件输出表格*/

fprintf(fp,"┃登录号┃书名┃作者┃出版单位┃出版时间┃分类号┃价格┃\n");

fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");

/*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/

while(p->next!

=NULL)

{

p=p->next;

fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price);

}

fprintf(fp,"┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");

fclose(fp);

printf("已将图书数据保存到data.txt文件\n");

}

/*插入*/

voidInsertDoc(structbooks_list*head)

{

/*定义结构体指针变量s指向开辟的新结点首地址p为中间变量*/

structbooks_list*s,*p;

charflag='Y';/*定义flag,方便用户选择重复输入*/

p=head;

/*遍历到尾结点,p指向尾结点*/

while(p->next!

=NULL)

{

p=p->next;

}

/*开辟新空间,存入数据,添加进链表*/

while(flag=='Y'||flag=='y')

{

s=(structbooks_list*)malloc(sizeof(structbooks_list));

printf("\n请输入图书登陆号:

");

fflush(stdin);

scanf("%s",s->loginnum);

printf("\n请输入图书书名:

");

fflush(stdin);

scanf("%s",s->bookname);

printf("\n请输入图书作者名:

");

fflush(stdin);

scanf("%s",s->author);

printf("\n请输入图书出版社:

");

fflush(stdin);

scanf("%s",s->publisher);

printf("\n请输入图书出版时间:

");

fflush(stdin);

scanf("%s",s->pbtime);

printf("\n请输入图书分类号:

");

fflush(stdin);

scanf("%s",s->classfy);

printf("\n请输入图书价格:

");

fflush(stdin);

scanf("%f",&s->price);

printf("\n");

p->next=s;/*将新增加的节点添加进链表*/

p=s;/*p指向尾节点,向后移*/

s->next=NULL;

printf("━━━━添加成功!

━━━━");

printf("\n继续添加?

(Y/N):

");

fflush(stdin);

scanf("%c",&flag);

printf("\n");

if(flag=='N'||flag=='n')

{break;}

elseif(flag=='Y'||flag=='y')

{continue;}

}

save(head);/*保存数据至文件*/

return;

}

/*查询操作*/

voidsearch_book(structbooks_list*head)

{

structbooks_list*p;

chartemp[20];

p=head;

if(head==NULL||head->next==NULL)/*判断数据库是否为空*/

{

printf("━━━━图书库为空!

━━━━\n");

}

else

{

printf("请输入您要查找的书名:

");

fflush(stdin);

scanf("%s",temp);

/*指针从头节点开始移动,遍历至尾结点,查找书目信息*/

while(p->next!

=NULL)

{

p=p->next;

if(strcmp(p->bookname,temp)==0)

{

printf("\n图书已找到!

\n");

printf("\n");

printf("登录号:

%s\t\n",p->loginnum);

printf("书名:

%s\t\n",p->bookname);

printf("作者名:

%s\t\n",p->author);

printf("出版单位:

%s\t\n",p->publisher);

printf("出版时间:

%s\t\n",p->pbtime);

printf("分类号:

%s\t\n",p->classfy);

printf("价格:

%.2f\t\n",p->price);

}

if(p->next==NULL)

{

printf("\n查询完毕!

\n");

}

}

}

return;

}

/*浏览操作*/

voidPrint_Book_Doc(structbooks_list*head)

{

structbooks_list*p;

if(head==NULL||head->next==NULL)/*判断数据库是否为空*/

{

printf("\n━━━━没有图书记录!

━━━━\n\n");

return;

}

p=head;

printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n");

printf("┃登录号┃书名┃作者┃出版单位┃出版时间┃分类号┃价格┃\n");

printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");

/*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/

while(p->next!

=NULL)

{

p=p->next;

printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price);/*循环输出表格*/

}

printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");

printf("\n");

}

/*修改操作*/

voidinfo_change(structbooks_list*head)

{

structbooks_list*p;

intpanduan=0;/*此变量用于判断是否找到书目*/

chartemp[20];

p=head;

printf("请输入要修改的书名:

");

scanf("%s",temp);

while(p->next!

=NULL)

{

p=p->next;

if(strcmp(p->bookname,temp)==0)

{

printf("\n请输入图书登陆卡号:

");

fflush(stdin);

scanf("%s",p->loginnum);

printf("\n请输入图书书名:

");

fflush(stdin);

scanf("%s",p->bookname);

printf("\n请输入图书作者名:

");

fflush(stdin);

scanf("%s",p->author);

printf("\n请输入图书出版社:

");

fflush(stdin);

scanf("%s",p->publisher);

printf("\n请输入图书出版时间:

");

fflush(stdin);

scanf("%s",p->pbtime);

printf("\n请输入图书分类号:

");

fflush(stdin);

scanf("%s",p->classfy);

printf("\n请输入图书价格:

");

fflush(stdin);

scanf("%f",&p->price);

printf("\n");

panduan=1;

}

}

if(panduan==0)

{

printf("\n━━━━没有图书记录!

━━━━\n\n");

}

return;

}

/*删除操作*/

voidDeleteDoc(structbooks_list*head)

{

structbooks_list*s,*p;/*s为中间变量,p为遍历时使用的指针*/

chartemp[20];

intpanduan;/*此变量用于判断是否找到了书目*/

panduan=0;

p=s=head;

printf("[请输入您要删除的书名]:

");

scanf("%s",temp);

/*遍历到尾结点*/

while(p!

=NULL)

{

if(strcmp(p->bookname,temp)==0)

{

panduan++;

break;

}

p=p->next;

}

if(panduan==1)

{

for(;s->next!

=p;)/*找到所需删除卡号结点的上一个结点*/

{

s=s->next;

}

s->next=p->next;/*将后一节点地址赋值给前一节点的指针域*/

free(p);

printf("\n━━━━删除成功!

━━━━\n");

}

else/*未找到相应书目*/

{

printf("您输入的书目不存在,请确认后输入!

\n");

}

return;

}

intmain(void)

{

structbooks_list*head;

charchoice;

head=NULL;

for(;;)/*实现反复输入选择*/

{

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("请选择:

");

fflush(stdin);

scanf("%c",&choice);

if(choice=='1')

{

if(head==NULL)

{

head=Create_Books_Doc();

}

InsertDoc(head);

}

elseif(choice=='2')

{

Print_Book_Doc(head);

}

elseif(choice=='3')

{

search_book(head);

}

elseif(choice=='4')

{

info_change(head);

}

elseif(choice=='5')

{

DeleteDoc(head);

}

elseif(choice=='6')

{

printf("\n");

printf("━━━━━━━━感谢使用图书管理系统━━━━━━━━\n");

break;

}

else

{

printf("━━━━输入错误,请重新输入!

━━━━");

break;

}

}

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1