ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:69.84KB ,
资源ID:3978026      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3978026.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(班级成绩管理系统C课程设计任务书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

班级成绩管理系统C课程设计任务书.docx

1、班级成绩管理系统C课程设计任务书课 程 设 计 报 告课程名称 C语言程序设计 课题名称 班级成绩管理系统 专 业 通信工程 班 级 0801班 学 号 2008030201010 姓 名 殷燕玲 指导教师 雷晓、乔汇东、谭小兰 2009年6月25日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 班级成绩管理系统 专业班级 通信工程0801 学生姓名 殷燕玲 学 号 200803020109 指导老师 雷晓、乔汇东、谭小兰 审 批 任务书下达日期 2009 年 6 月 4 日任务完成日期 2007 年 6 月 25 日一、设计内容与设计要求1设计内容:问题描述:通过该系

2、统实现对通讯录信息进行录入、显示、修改、删除、插入、排序、保存等操作的管理。功能要求:、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:编号、姓名、电话号码、地址。、本系统显示这样的菜单:请选择系统功能项:a、 通讯信息录入b、 通讯信息显示c、 通讯信息保存d、 通讯信息删除e、 通讯信息修改f、 通讯信息查询、按编号查询、按姓名查询、按电话号码查询g、 退出系统、执行一个具体的功能之后,程序将重新显示菜单。、将通讯信息保存到文件中。算法提示:、数据结构:结构体类型数组。、数据库结构:下表构成该系统的基本数据库。 编号姓名电话号码地址charchar Charchar测试数据

3、:纪录数20其它对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。2设计要求:1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,结构清晰。4)设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。5)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.6)上机演示。3分组及安排所选题目根据学生学号确定,学号模4加1,即(学号%4+1)。如你的学号为17,则所选题目号为:17%4+1(题目2)。4成绩评定程序设计方案是否合理;程序设计是否正确;调试结果;设计说明书的质量高低;答辩时回答问题情况;课程设计周表现情况;总评成绩记入“课程设计成绩

4、评分表”。二、进度安排第 17 周 星期二 08:0012:00了解这次课程设计的内容和要求,通过网上查找相关资料,与书本知识相结合,清楚掌握一些所要用到的文件及函数等,然后把整个程序设计的总体框架和所涉及的各模快的流程图板书出来,并进行书面程序设计。星期日 08:0012:00 14:0018:30上机进行程序编辑,调整程序结构,熟知程序中所出现的错误,并找到错误出现的根源并加以改正,使源代码满足课程设计的要求和实现课程设计的基本功能。第 18 周 星期一 08:0012:00完善程序内容,修改、编辑、调整程序。不断改正错误,保证程序能成功编译成目标文件,且能链接成功,使之成为可执行文件,再

5、运行能显示出所需要的信息,这样才能算已经完成了本课题的基本功能。星期日 08:0012:00 14:0018:30撰写课程设计报告,将报告内容进行排版,并进一步完善。之后,进行程序演示,完成课程设计答辩,完成并打印课程设计报告。 目 录一、 课题的主要功能 7二、课题的功能模块的划分 81、程序数据类型的定义 82、程序的模块组成: 83、各函数的主要功能描述如下 9三、主要功能的实现 9四、程序调试 11五、总结 12六、附录 13评分表 18一、 课题的主要功能本程序利用数组和指针完成对通讯记录的动态管理,其基本功能模块图如图所示: 基 本 功 能 模 块、本系统采用一个包含N个数据的结构

6、体数组,每个数据的结构应当包括:编号、姓名、电话号码、地址。、本系统显示这样的菜单:请选择系统功能项:a、 通讯信息录入b、 通讯信息显示c、 通讯信息保存d、 通讯信息删除e、 通讯信息修改f、 通讯信息查询、按编号查询、按姓名查询、按电话号码查询g、 退出系统、执行一个具体的功能之后,程序将重新显示菜单。、将通讯信息保存到文件中。二、课题的功能模块的划分1、程序数据类型的定义struct student long num; char name20; long tel_num; char add40; struct student *next;stu;2、程序的模块组成:a) 主函数main

7、()b) 初始化函数struct student* init()c) 菜单选择函数int menu_select()d) 输入函数struct student* creat()e) 显示通讯信息函数void print(struct student *head)f) 保存数据到文件函数void save(struct student *head)g) 删除通讯信息函数struct student* del(struct student *head,long num) h) 修改通讯信息函数struct student* change(struct student *head,long num)

8、i) 查询通讯信息函数1. 编号查询通讯信息函数void search_1(struct student *head,long num)2. 姓名查询通讯信息函数void search_2(struct student *head,char* name) 3. 电话号码查询通讯信息函数void search_3(struct student *head,long tel_num) main函数实现总的控制台界面,struct student* init(),int menu_select(),struct student* creat(),void print(struct student *

9、head), void save(struct student *head) struct student* del(struct student *head,long num) struct student* change(struct student *head,long num), void * search_1(struct student *head,long num), void search_2(struct student *head,char* name) , void search_3(struct student *head,long tel_num)调用函数实现各种用户

10、功能要求。3、各函数的主要功能描述如下struct student*init():使链表初始化,使head的值为NULL.int menu_select():主要实现“功能选择”的界面。struct student* creat() :,用来执行通讯记录的输入,当通讯记录编号为0时停止输入,函数结束后,带回一个指向链表头的指针head。void print(struct student*head):这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部销售记录的输出。struct student* del (struct student* head):这是一个有参函数,形参为“链表头的

11、指针”,先输入要删除通讯信息记录的编号,找到后显示该通讯信息记录信息,然后进行删除。 void save(struct student* head) :这是一个不返回值的有参函数,形参为“链表头的指针”,可以把通讯信息记录保存在电脑上由自己任意命名的二进制文件。void * search_1(struct student *head,long num):这是一个有参函数,形参为“链表头的指针”,先输入要查找的通讯信息的编号,找到后显示该通讯信息信息。void search_2(struct student *head,char* name) :这是一个有参函数,形参为“链表头的指针”,先输入要

12、查找的通讯信息的姓名,找到后显示该通讯信息信息。void search_3(struct student *head,long tel_num) :这是一个有参函数,形参为“链表头的指针”,先输入要查找的通讯信息的电话号码,找到后显示该通讯信息记录信息。三、主要功能的实现各个函数的设计说明如下:(1)主函数 main() 利用无限次for(;)循环和switch()循环实现各函数的调用,系统根据输入的字母选项来调用相应的函数(2) 初始化函数 struct student* init() 这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使head的值为NULL。比如:没有这个函数的

13、话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码! (3)菜单选择函数 int menu_select(); 这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现! (4)输入记录函数 struct student* creat()这是一个无参函数,用来执行通讯信息的输入,当通讯人员编号为0时停止输入,函数结束后,带回一个指向链表头的指针head。算法:先声明一个首节点head,并将head设为NULL。每输入一个数据就声明一个新节点,把p2-nex

14、t设为NULL,并且链接到之前列表的尾端。struct student* creat()函数流程图开辟一个新结点,并使p1、p2指向它读入一个数据给p1所指的结点 head=NULL,n=0当读入的p1-num不是零n=n+1真 n 等 于1 ? 假head=p1(把p1所指的结点作为第一个结点)p2-next=p1(把p1所指的结点连接到表尾)p2=p1(p2移到表尾)再开辟一个新结点,并使p1指向它读入一个数据给p1所指的结点表尾结点的指针变量置NULL (5) 删除记录函数 struct student* del (struct student* head)这是一个有参函数,形参为“链表

15、头的指针”,先输入要删除的通讯信息的通讯人员编号,找到后显示该销售员信息,等确认后便可按“Y”进行删除。算法:从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的那个编号。如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。(6)保存数据到文件函数 void save(struct student* head)这是一个不返回值的有参函数,形参为“链表头的指针”,可以把通讯保信息存在电脑上由自己任意命名的二进制文件。 (7) 显示全部记录函数 void print(struct student *head)这是一个不返回值的有参函数,形参为

16、“链表头的指针”,负责对全部通讯信息的输出。算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。然后再将p结点的指针指向p指针的指针(即下一结点),将p结点(即第一结点)的数据输出。重复执行此步聚直到p指针指向NULL为止。四、程序调试1.在比较输入姓名与通信信息中的姓名是否一致时,调用strcmp函数时需要extern对函数作申明,在头文件中引用字符串函数,就可以解决这一问题。2.在输入函数中设了一个无限循环,可以输入无数个销售员记录信息,但课设要求没那么多数据,当用指针时当输入的编号为0的时候则停止输入。3.在输入选项时不能输入数字,否则会死循环,建议不要乱输字母4.

17、用scanf函数输入数据时,输入列表项中在p1-name前添加”&”符号,运行时出现错误。因为p1-name是字符数组名,本身代表地址,因而前没有”&”符号。修改后的结果:主界面:五、总结这次课题设计有几个要求:要能录入新的信息,要能删除不需要的信息,要能按照关键字查找已有的信息,以及保存文件等功能。完成这个课程设计需要用用链表的结构来存储数据。这就需要建立动态链表。建立链表时,要熟悉它的删除操作、插入操作输入输出等操作。应知道设计程序时所要用到的算法和数据结构。 编程时有了程序的算法和程序的结构是最基本的,但你有了的算法、思路和程序的基本结构还是不能写出好多程序来的。你会发觉你在编写程序的时

18、候会出现很多的错误和漏洞,这会让你对你有的那些基础出现不同的看法,所以这也是一门很细心的一门课程,不得马虎,程序是不允许一丁点的错的。一步错误会导致一个程序全部都错误。当程序错误时,得需有耐心的好好检查程序,它会告诉你它错在哪里,但不会告诉你为什么错了,只有自己去检查,自己去修改,这也是让自己锻炼自己检查程序错误的时候,把自己编写程序准确率能力提升的最好方法。经过几周的上机操作,让我认识到自己的操作能力的不足。不能很快的调试好程序,我想这与缺乏实际操作,以后要多实践课本知识,“孰能生巧”,用得多了,遇到的问题多了,自然就有了经验,一旦总结了经验,以后程序调试就容易很多。六、附录#include

19、 #include /*动态地址分配函数*/#include #define NULL 0#define FORMAT %ld%s%ld%sn#define LEN sizeof(struct student)#define size 20struct student long num; char name20; long tel_num; char add40; struct student *next;stu;void print(struct student *head);void save(struct student *head);struct student* del(struct

20、 student *head,long num);struct student *change(struct student *head,long num);void search_1(struct student *head,long num);void search_2(struct student *head,char* name);void search_3(struct student *head,long tel_num);*/ int n; /*n为全局变量,本文机件模块中各函数均可使用它*/ struct student* creat() /*定义函数,此函数带回一个指向链表头

21、的指针*/ struct student *head; struct student *p1,*p2; n=0; p1=p2=(struct student *)malloc(LEN); /*开辟一个新单元*/ scanf(FORMAT,&p1-num,p1-name,&p1-tel_num,p1-add); head=NULL; while(p1-num!=0) n=n+1; if(n=1)head=p1; else p2-next=p1; p2=p1; p1=(struct student *)malloc(LEN); scanf(FORMAT,&p1-num,p1-name,&p1-te

22、l_num,p1-add); p2-next=NULL; return(head);void print(struct student *head) /*显示通讯信息函数*/ struct student *p; printf(n编号 姓名 电话号码 地址n); p=head; if(head!=NULL) do printf(FORMAT,p-num,p-name,p-tel_num,p-add); p=p-next; while(p!=NULL);void save(struct student *head) /*保存数据到文件*/ FILE *fp; int n; if(fp=fopen

23、(yinyanling,wb)=NULL) /*为输入打开一个二进制文件夹 */ printf(cannot open infilen); return; for(n=0;nnum&p1-next=NULL) /*否则将下一接点地址赋给前一接点地址*/ p2=p1;p1=p1-next; /*p1后移一个接点*/ if(num=p1-num) if(p1=head) head=p1-next; /*若指向的是首接点,把第二个接点地址赋予head*/ else p2-next=p1-next; printf(FORMAT,p1-num,p1-name,p1-tel_num,p1-add); n=

24、n-1; else printf(%ld not been found!n,num); /*找不到该接点*/ return(head);struct student *change(struct student *head,long num) /*通讯信息修改*/ struct student *p1,*p2; p1=head; scanf(%ld,&num); while(num!=p1-num&p1-next=NULL) p2=p1; p1=p1-next; if(num=p1-num) /*找到了要修改的编号*/ if(p1=head) head=p1-next; else p2-nex

25、t=p1-next; printf(%ld,num); n=n-1; return(head);void search_1(struct student *head,long num) /*编号查询通讯信息函数*/ struct student *p1,*p2; if(head!=NULL) printf(n list null!n); p1=head; while(num!=p1-num&p1-next=NULL) p2=p1;p1=p1-next; if(num=p1-num) if(p1=head) head=p1-next; else p2-next=p1-next; printf(F

26、ORMAT,p1-num,p1-name,p1-tel_num,p1-add); n=n-1; else printf(%ld not been found!n,num);void search_2(struct student *head,char* name) /*姓名查询通讯信息函数*/ struct student *p1,*p2; if(head!=NULL) printf(n list null!n); p1=head; while(strcmp(name,p1-name)!=0&p1-next=NULL) p2=p1;p1=p1-next; if(strcmp(name,p1-n

27、ame)=0) if(p1=head) head=p1-next; else p2-next=p1-next; printf(FORMAT,p1-num,p1-name,p1-tel_num,p1-add); n=n-1; else printf(%s not been found!n,name);void search_3(struct student *head,long tel_num) /*电话号码查询通讯信息函数*/ struct student *p1,*p2; if(head!=NULL) printf(n list null!n); p1=head; while(tel_num

28、!=p1-num&p1-next=NULL) p2=p1;p1=p1-next; if(tel_num=p1-tel_num) if(p1=head) head=p1-next; else p2-next=p1-next; printf(FORMAT,p1-num,p1-name,p1-tel_num,p1-add); n=n-1; else printf(%ld not been found!n,tel_num);void main() /*主函数*/ struct student* head; char i,j; for(;) printf(Press any key to enther the menun); printf( 欢迎进入查询系统! n); printf(*MENU*n); printf(a、 通讯信息录入n); printf(b、 通讯信息显示n); printf(c、 通讯信息保存n); printf(d、 通讯信息删除n); printf(e、 通讯

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

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