——学生成绩简单管理程序二。
姓名: 学号:
学院: 1.程序功能;
(1)create()含函数(建立有序单项链表)
从键盘上输入一个学生的姓名和成绩,以姓名为序建立有序链表。插入一条记录后,显示提示确认是否输入下一条记录,如确定,继续输入,否则,退出输入功能。
2) display all record(显示所有结点记录)
按顺序显示链表中所有记录,每屏显示10条记录。每显示10条,按键继续显示下一屏。
3)insert a record (插入一条结点记录)
在以姓名为序排列的链表中插入一条记录,插入后,链表仍有序。输出插入成功的信息。
4)delete a record ( 按姓名查找,删除一条结点记录)
输入待删除记录的姓名,显示提示信息,让用户再次确定是否要删除。确定后,将该姓名的记录删除。
5) query (查找并显示一个结点记录)
输入姓名,查找该记录,并显示该同学的成绩‘
6) add records from text file(从正文文件中添加数据到链表中)
用户可事前建立一个正文文件存放多个待加入的记录。提示输入正文文件的文件名,然后从该文件中一次性加入多条学生记录,文件格式如下:
wangxiao 95
liulin 87
(7) write to a text file
将链表中的全部记录写入文件要求文件格式和文件相同。
1) quit (退出学生成绩管理程序)
释放链表存储空间。
2.题目分析。
1)建立有序链表,可以用书上的创建有序链表函数structure node *create_sort()。
2) 输出链表数据,这个可以借用书上的 void printf()函数。但是它还要求10条一屏显示,这就要在输出时限制输出的条数。
3) 结点的有序插入。
先编写student *insert_a_record()函数,在次函数中输入学生的姓名和成绩,在调用insert()函数插入。
4) 结点删除。
先编写delete_a_record()函数,输入要删除的学生姓名,在调用delete()函数删除。这函数,可借鉴书上的delete_one_node()函数。
5)结点数据查找。
先在函数query_a_record()中输入待查找的姓名,在调用函数query()进行查找。可以借鉴书上的search()函数。
6) 从文件中整批输入数据。
7) 将链表结点记录写入到文件中。
从以上的函数来看,大部分函数都可以在书上找到相关的函数,这编写起来比较容易,虽然课设中有新的要求,但这问题不大。总的来说时比较好做的。
3.感想心得。
选择这个课设题目的原因时因为,有许多函数可以在书上找到,会比较容易。虽然,书上都有。但是编写起来还时遇到了许多麻烦。
有时是一个小错误,一个符号的错误,很难发现,就会和花时间。在遇到问题时,很难一个人解决,大部分问题都时找同学一起解决的。还有如果书上没有有关的函数,自己一个人时很难编写出来的。
也发现了,自己在编写时,有时很粗心,导致一些难发现的错误。
4.源程序。
#include<>
#include<>
#include<>
struct stud
char name[20]; 姓名*/
int score; /分数*/
struct stud *next; /指向下一结点的指针*/
typedef struct stud student;
int menu_select();菜单函数*/
struct stud *creat();建立有序列表*/
struct stud *insert();插入结点*/
struct stud *display();显示所有结点记录*/
struct stud *insert_a_record();插入新的姓名分数*/
struct stud *delete();删除信息*/
struct stud *delete_a_record();删除信息*/
struct stud *query();查找信息*/
struct stud *query_a_record(student *head);/查找信息并显示其信息*/
struct stud *addfromtext();从正文文件中添加数据到链表中*/
void writetotext();把链表中的数据写入文件*/
void quit();退出程序*/
void main()/主函数*/
struct stud *head;/*定义头指针*/
student stud;
char name[10];
for( ;
int menu_select()/菜单函数*/
char c;
dowhile(c<'0' |c>'9');
return(c-'0');
student *creat()/创建链表函数*/
student *p, *head;
char str[10];int score;
head=null;
printf("creat an increasing list...n");
printf("please input a student's name and score((-1)stop):
scanf("%s%d",str,&score); 输入学生信息*/
while(score!=-1) /循环输入,当输入的分数是-1时,停止*/
return(head);/返回链表头指针*/
student *insert(student *head,student *p)/*insert()函数,有序的插入,是链表保持有序*/
student *p1, *p2;
if(head==null)/*插入前为空链表*/
p2=p1=head;
while(strcmp(p->name,p1->name)>0&&p1->next!=null)
{ p2=p1;p1=p1->next; /指向后一个结点,p2指向的结点在p1指向的结点之前*/
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...